🎉 重构页面代码.

This commit is contained in:
lijiahangmax
2025-06-25 14:50:25 +08:00
parent aa8b380289
commit 5ed513f472
43 changed files with 666 additions and 230 deletions

View File

@@ -87,7 +87,11 @@
return props.fileList;
},
set(e) {
emits('update:fileList', e);
if (e) {
emits('update:fileList', e);
} else {
emits('update:fileList', []);
}
}
});

View File

@@ -47,7 +47,7 @@
<template #handle="{ record }">
<div class="table-handle-wrapper">
<!-- 命令 -->
<a-button v-permission="['asset:exec-command-log:query']"
<a-button v-permission="['exec:exec-command-log:query']"
type="text"
size="mini"
:disabled="record.status === ExecHostStatus.WAITING"
@@ -56,7 +56,7 @@
命令
</a-button>
<!-- 参数 -->
<a-button v-permission="['asset:exec-command-log:query']"
<a-button v-permission="['exec:exec-command-log:query']"
type="text"
size="mini"
:disabled="record.status === ExecHostStatus.WAITING"
@@ -75,7 +75,7 @@
position="left"
type="warning"
@ok="interruptedHost(record)">
<a-button v-permission="['asset:exec-command-log:interrupt']"
<a-button v-permission="['exec:exec-command-log:interrupt']"
type="text"
size="mini"
status="danger"
@@ -88,7 +88,7 @@
position="left"
type="warning"
@ok="deleteRow(record)">
<a-button v-permission="['asset:exec-command-log:delete']"
<a-button v-permission="['exec:exec-command-log:delete']"
type="text"
size="mini"
status="danger">

View File

@@ -62,7 +62,7 @@
<div class="table-right-bar-handle">
<a-space>
<!-- 执行命令 -->
<a-button v-permission="['asset:exec-command:exec']"
<a-button v-permission="['exec:exec-command:exec']"
type="primary"
@click="router.push({ name: 'execCommand' })">
执行命令
@@ -71,7 +71,7 @@
</template>
</a-button>
<!-- 清空 -->
<a-button v-permission="['asset:exec-command-log:management:clear']"
<a-button v-permission="['exec:exec-command-log:management:clear']"
status="danger"
@click="openClear">
清空
@@ -84,7 +84,7 @@
position="br"
type="warning"
@ok="deleteSelectedRows">
<a-button v-permission="['asset:exec-command-log:delete']"
<a-button v-permission="['exec:exec-command-log:delete']"
type="primary"
status="danger"
:disabled="selectedKeys.length === 0">
@@ -153,7 +153,7 @@
position="left"
type="warning"
@ok="doReExecCommand(record)">
<a-button v-permission="['asset:exec-command:exec']"
<a-button v-permission="['exec:exec-command:exec']"
type="text"
size="mini">
重新执行
@@ -166,7 +166,7 @@
命令
</a-button>
<!-- 日志 -->
<a-button v-permission="['asset:exec-command-log:query', 'asset:exec-command:exec']"
<a-button v-permission="['exec:exec-command-log:query', 'exec:exec-command:exec']"
type="text"
size="mini"
title="ctrl + 左键新页面打开"
@@ -178,7 +178,7 @@
position="left"
type="warning"
@ok="doInterruptExecCommand(record)">
<a-button v-permission="['asset:exec-command-log:interrupt']"
<a-button v-permission="['exec:exec-command-log:interrupt']"
type="text"
size="mini"
status="danger"
@@ -191,7 +191,7 @@
position="left"
type="warning"
@ok="deleteRow(record)">
<a-button v-permission="['asset:exec-command-log:delete']"
<a-button v-permission="['exec:exec-command-log:delete']"
type="text"
size="mini"
status="danger">

View File

@@ -3,7 +3,7 @@
<!-- 表头 -->
<div class="panel-header">
<h3>执行命令</h3>
<span v-permission="['asset:exec-template:query']"
<span v-permission="['exec:exec-template:query']"
class="span-blue usn pointer"
@click="emits('openTemplate')">
从模板中选择

View File

@@ -172,11 +172,11 @@
};
// 从执行模板设置
const setWithTemplate = async ({ id }: ExecTemplateQueryResponse) => {
const setWithTemplate = async (record: ExecTemplateQueryResponse) => {
setLoading(true);
try {
// 查询模板信息
const { data } = await getExecTemplateWithAuthorized(id);
const { data } = await getExecTemplateWithAuthorized(record.id);
formModel.value = {
...formModel.value,
description: data.name,

View File

@@ -47,7 +47,7 @@
<template #handle="{ record }">
<div class="table-handle-wrapper">
<!-- 命令 -->
<a-button v-permission="['asset:exec-job-log:query']"
<a-button v-permission="['exec:exec-job-log:query']"
type="text"
size="mini"
:disabled="record.status === ExecHostStatus.WAITING"
@@ -56,7 +56,7 @@
命令
</a-button>
<!-- 参数 -->
<a-button v-permission="['asset:exec-job-log:query']"
<a-button v-permission="['exec:exec-job-log:query']"
type="text"
size="mini"
:disabled="record.status === ExecHostStatus.WAITING"
@@ -75,7 +75,7 @@
position="left"
type="warning"
@ok="interruptedHost(record)">
<a-button v-permission="['asset:exec-job-log:interrupt']"
<a-button v-permission="['exec:exec-job-log:interrupt']"
type="text"
size="mini"
status="danger"
@@ -88,7 +88,7 @@
position="left"
type="warning"
@ok="deleteRow(record)">
<a-button v-permission="['asset:exec-job-log:delete']"
<a-button v-permission="['exec:exec-job-log:delete']"
type="text"
size="mini"
status="danger">

View File

@@ -62,7 +62,7 @@
<div class="table-right-bar-handle">
<a-space>
<!-- 清空 -->
<a-button v-permission="['asset:exec-job-log:management:clear']"
<a-button v-permission="['exec:exec-job-log:management:clear']"
status="danger"
@click="openClear">
清空
@@ -75,7 +75,7 @@
position="br"
type="warning"
@ok="deleteSelectedRows">
<a-button v-permission="['asset:exec-job-log:delete']"
<a-button v-permission="['exec:exec-job-log:delete']"
type="primary"
status="danger"
:disabled="selectedKeys.length === 0">
@@ -116,14 +116,14 @@
</template>
<!-- 任务名称 -->
<template #description="{ record }">
<span>
<div>
<span class="span-blue mr4 usn">
#{{ record.execSeq }}
</span>
<span :title="record.description">
{{ record.description }}
</span>
</span>
</div>
</template>
<!-- 执行命令 -->
<template #command="{ record }">
@@ -179,7 +179,7 @@
命令
</a-button>
<!-- 日志 -->
<a-button v-permission="['asset:exec-job-log:query']"
<a-button v-permission="['exec:exec-job-log:query']"
type="text"
size="mini"
title="ctrl + 左键新页面打开"
@@ -191,7 +191,7 @@
position="left"
type="warning"
@ok="doInterruptExecJob(record)">
<a-button v-permission="['asset:exec-job-log:interrupt']"
<a-button v-permission="['exec:exec-job-log:interrupt']"
type="text"
size="mini"
status="danger"
@@ -204,7 +204,7 @@
position="left"
type="warning"
@ok="deleteRow(record)">
<a-button v-permission="['asset:exec-job-log:delete']"
<a-button v-permission="['exec:exec-job-log:delete']"
type="text"
size="mini"
status="danger">
@@ -238,20 +238,20 @@
import { Message } from '@arco-design/web-vue';
import useLoading from '@/hooks/loading';
import columns from '../types/table.columns';
import { DESC, useQueryOrder } from '@/hooks/query-order';
import { ExecStatus, execStatusKey, ExecMode } from '@/components/exec/log/const';
import { useExpandable, useTablePagination, useRowSelection, useTableColumns } from '@/hooks/table';
import { TableName } from '../types/const';
import { useExpandable, useTablePagination, useRowSelection, useTableColumns } from '@/hooks/table';
import { useDictStore } from '@/store';
import { dateFormat, formatDuration } from '@/utils';
import { useQueryOrder, DESC } from '@/hooks/query-order';
import ExecJobHostLogTable from './exec-job-host-log-table.vue';
import UserSelector from '@/components/user/user/selector/index.vue';
import TableAdjust from '@/components/app/table-adjust/index.vue';
const emits = defineEmits(['viewCommand', 'viewParams', 'viewLog', 'openClear']);
const rowSelection = useRowSelection();
const expandable = useExpandable();
const rowSelection = useRowSelection();
const pagination = useTablePagination();
const queryOrder = useQueryOrder(TableName, DESC);
const { tableColumns, columnsHook } = useTableColumns(TableName, columns);
@@ -276,45 +276,6 @@
emits('openClear', { ...formModel, id: undefined, description: undefined });
};
// 删除当前行
const deleteRow = async (record: ExecLogQueryResponse) => {
try {
setLoading(true);
// 调用删除接口
await deleteExecJobLog(record.id);
Message.success('删除成功');
// 重新加载
reload();
} catch (e) {
} finally {
setLoading(false);
}
};
// 删除选中行
const deleteSelectedRows = async () => {
try {
setLoading(true);
// 调用删除接口
await batchDeleteExecJobLog(selectedKeys.value);
Message.success(`成功删除 ${selectedKeys.value.length} 条数据`);
selectedKeys.value = [];
// 重新加载
reload();
} catch (e) {
} finally {
setLoading(false);
}
};
// 重新加载
const reload = () => {
// 重新加载数据
fetchTableData();
};
defineExpose({ reload });
// 中断执行
const doInterruptExecJob = async (record: ExecLogQueryResponse) => {
try {
@@ -391,6 +352,45 @@
});
};
// 删除当前行
const deleteRow = async (record: ExecLogQueryResponse) => {
try {
setLoading(true);
// 调用删除接口
await deleteExecJobLog(record.id);
Message.success('删除成功');
// 重新加载
reload();
} catch (e) {
} finally {
setLoading(false);
}
};
// 删除选中行
const deleteSelectedRows = async () => {
try {
setLoading(true);
// 调用删除接口
await batchDeleteExecJobLog(selectedKeys.value);
Message.success(`成功删除 ${selectedKeys.value.length} 条数据`);
selectedKeys.value = [];
// 重新加载
reload();
} catch (e) {
} finally {
setLoading(false);
}
};
// 重新加载
const reload = () => {
// 重新加载数据
fetchTableData();
};
defineExpose({ reload });
// 加载数据
const doFetchTableData = async (request: ExecLogQueryRequest) => {
try {

View File

@@ -107,7 +107,7 @@
:hide-label="true"
:help="'使用 @{{ xxx }} 来替换参数, 输入_可以获取全部变量'">
<template #extra>
<span v-permission="['asset:exec-template:query']"
<span v-permission="['exec:exec-template:query']"
class="span-blue usn pointer"
@click="emits('openTemplate')">
从模板中选择

View File

@@ -54,7 +54,7 @@
<div class="table-right-bar-handle">
<a-space>
<!-- 新增 -->
<a-button v-permission="['asset:exec-job:create']"
<a-button v-permission="['exec:exec-job:create']"
type="primary"
@click="emits('openAdd')">
新增
@@ -67,7 +67,7 @@
position="br"
type="warning"
@ok="deleteSelectedRows">
<a-button v-permission="['asset:exec-job:delete']"
<a-button v-permission="['exec:exec-job:delete']"
type="primary"
status="danger"
:disabled="selectedKeys.length === 0">
@@ -122,7 +122,7 @@
<!-- 任务状态 -->
<template #status="{ record }">
<!-- 状态开关 可编辑 -->
<a-switch v-if="hasPermission('asset:exec-job:update-status')"
<a-switch v-if="hasPermission('exec:exec-job:update-status')"
type="round"
:default-checked="record.status === ExecJobStatus.ENABLED"
:checked-text="getDictValue(execJobStatusKey, ExecJobStatus.ENABLED)"
@@ -164,7 +164,7 @@
position="left"
type="warning"
@ok="triggerJob(record.id)">
<a-button v-permission="['asset:exec-job:trigger']"
<a-button v-permission="['exec:exec-job:trigger']"
type="text"
size="mini">
手动触发
@@ -175,7 +175,7 @@
position="left"
type="warning"
@ok="deleteRow(record)">
<a-button v-permission="['asset:exec-job:delete']"
<a-button v-permission="['exec:exec-job:delete']"
type="text"
size="mini"
status="danger">
@@ -189,12 +189,12 @@
</a-button>
<template #content>
<!-- 修改任务 -->
<a-doption v-permission="['asset:exec-job:update']"
<a-doption v-permission="['exec:exec-job:update']"
@click="emits('openUpdate', record.id)">
<span class="more-doption normal">修改任务</span>
</a-doption>
<!-- 修改执行用户 -->
<a-doption v-permission="['asset:exec-job:update-exec-user']"
<a-doption v-permission="['exec:exec-job:update-exec-user']"
@click="emits('updateExecUser', record)">
<span class="more-doption normal">修改执行用户</span>
</a-doption>
@@ -223,10 +223,10 @@
import { TableName, ExecJobStatus, execJobStatusKey, execStatusKey } from '../types/const';
import { useTablePagination, useRowSelection, useTableColumns } from '@/hooks/table';
import { useCacheStore, useDictStore, useUserStore } from '@/store';
import { useQueryOrder, DESC } from '@/hooks/query-order';
import { useRoute } from 'vue-router';
import { copy } from '@/hooks/copy';
import { dateFormat } from '@/utils';
import { DESC, useQueryOrder } from '@/hooks/query-order';
import UserSelector from '@/components/user/user/selector/index.vue';
import TableAdjust from '@/components/app/table-adjust/index.vue';

View File

@@ -46,8 +46,8 @@
import { CronNextTimes, dictKeys } from './types/const';
import ExecJobTable from './components/exec-job-table.vue';
import ExecJobFormDrawer from './components/exec-job-form-drawer.vue';
import ExecUserUpdateModal from './components/exec-user-update-modal.vue';
import ExecJobDetailDrawer from './components/exec-job-detail-drawer.vue';
import ExecUserUpdateModal from './components/exec-user-update-modal.vue';
import AuthorizedHostModal from '@/components/asset/host/authorized-host-modal/index.vue';
import ExecTemplateModal from '@/components/exec/template/modal/index.vue';
import CronNextModal from '@/components/meta/cron/next-modal/index.vue';

View File

@@ -41,7 +41,7 @@
<div class="table-right-bar-handle">
<a-space>
<!-- 新增 -->
<a-button v-permission="['asset:exec-template:create']"
<a-button v-permission="['exec:exec-template:create']"
type="primary"
@click="emits('openAdd')">
新增
@@ -54,7 +54,7 @@
position="br"
type="warning"
@ok="deleteSelectedRows">
<a-button v-permission="['asset:exec-template:delete']"
<a-button v-permission="['exec:exec-template:delete']"
type="primary"
status="danger"
:disabled="selectedKeys.length === 0">
@@ -96,14 +96,14 @@
<!-- 操作 -->
<template #handle="{ record }">
<div class="table-handle-wrapper">
<a-button v-permission="['asset:exec-command:exec']"
<a-button v-permission="['exec:exec-command:exec']"
type="text"
size="mini"
@click="emits('openExec', record.id)">
执行
</a-button>
<!-- 修改 -->
<a-button v-permission="['asset:exec-template:update']"
<a-button v-permission="['exec:exec-template:update']"
type="text"
size="mini"
@click="emits('openUpdate', record.id)">
@@ -114,7 +114,7 @@
position="left"
type="warning"
@ok="deleteRow(record)">
<a-button v-permission="['asset:exec-template:delete']"
<a-button v-permission="['exec:exec-template:delete']"
type="text"
size="mini"
status="danger">
@@ -140,10 +140,10 @@
import { Message } from '@arco-design/web-vue';
import useLoading from '@/hooks/loading';
import columns from '../types/table.columns';
import { TableName } from '../types/const';
import { useTablePagination, useRowSelection, useTableColumns } from '@/hooks/table';
import { TableName } from '../types/const';
import { useQueryOrder, DESC } from '@/hooks/query-order';
import { copy } from '@/hooks/copy';
import { DESC, useQueryOrder } from '@/hooks/query-order';
import TableAdjust from '@/components/app/table-adjust/index.vue';
const emits = defineEmits(['openAdd', 'openUpdate', 'openExec']);
@@ -154,8 +154,8 @@
const { tableColumns, columnsHook } = useTableColumns(TableName, columns);
const { loading, setLoading } = useLoading();
const selectedKeys = ref<number[]>([]);
const tableRenderData = ref<ExecTemplateQueryResponse[]>([]);
const selectedKeys = ref<Array<number>>([]);
const tableRenderData = ref<Array<ExecTemplateQueryResponse>>([]);
const formModel = reactive<ExecTemplateQueryRequest>({
id: undefined,
name: undefined,

View File

@@ -62,7 +62,7 @@
<div class="table-right-bar-handle">
<a-space>
<!-- 上传 -->
<a-button v-permission="['asset:upload-task:upload']"
<a-button v-permission="['exec:upload-task:upload']"
type="primary"
@click="router.push({ name: 'batchUpload' })">
上传
@@ -71,7 +71,7 @@
</template>
</a-button>
<!-- 清空 -->
<a-button v-permission="['asset:upload-task:management:clear']"
<a-button v-permission="['exec:upload-task:management:clear']"
status="danger"
@click="openClear">
清空
@@ -84,7 +84,7 @@
position="br"
type="warning"
@ok="deleteSelectedRows">
<a-button v-permission="['asset:upload-task:delete']"
<a-button v-permission="['exec:upload-task:delete']"
type="primary"
status="danger"
:disabled="selectedKeys.length === 0">
@@ -142,7 +142,7 @@
<template #handle="{ record }">
<div class="table-handle-wrapper">
<!-- 详情 -->
<a-button v-permission="['asset:upload-task:query']"
<a-button v-permission="['exec:upload-task:query']"
type="text"
size="mini"
@click="router.push({ name: 'batchUpload', query: { id: record.id } })">
@@ -154,7 +154,7 @@
position="left"
type="warning"
@ok="doCancel(record)">
<a-button v-permission="['asset:upload-task:upload']"
<a-button v-permission="['exec:upload-task:upload']"
type="text"
size="mini">
取消
@@ -165,7 +165,7 @@
position="left"
type="warning"
@ok="deleteRow(record)">
<a-button v-permission="['asset:upload-task:delete']"
<a-button v-permission="['exec:upload-task:delete']"
type="text"
size="mini"
status="danger">
@@ -193,10 +193,10 @@
import columns from '../types/table.columns';
import { TableName, UploadTaskStatus, uploadTaskStatusKey } from '../types/const';
import { useTablePagination, useRowSelection, useTableColumns } from '@/hooks/table';
import { useQueryOrder, DESC } from '@/hooks/query-order';
import { useRouter } from 'vue-router';
import { useDictStore } from '@/store';
import { copy } from '@/hooks/copy';
import { useRouter } from 'vue-router';
import { DESC, useQueryOrder } from '@/hooks/query-order';
import UserSelector from '@/components/user/user/selector/index.vue';
import TableAdjust from '@/components/app/table-adjust/index.vue';
@@ -211,8 +211,8 @@
const { toOptions, getDictValue } = useDictStore();
const pullIntervalId = ref();
const selectedKeys = ref<number[]>([]);
const tableRenderData = ref<UploadTaskQueryResponse[]>([]);
const selectedKeys = ref<Array<number>>([]);
const tableRenderData = ref<Array<UploadTaskQueryResponse>>([]);
const formModel = reactive<UploadTaskQueryRequest>({
id: undefined,
userId: undefined,
@@ -278,6 +278,8 @@
fetchTableData();
};
defineExpose({ reload });
// 加载状态
const pullTaskStatus = async () => {
const unCompleteIdList = tableRenderData.value