🔨 表格字段.

This commit is contained in:
lijiahangmax
2025-03-22 00:58:15 +08:00
parent 4efd2b5ec2
commit 94ed071897
33 changed files with 458 additions and 72 deletions

View File

@@ -94,6 +94,11 @@
</template>
</a-button>
</a-popconfirm>
<!-- 调整 -->
<table-adjust :columns="logColumns"
:columns-hook="columnsHook"
:query-order="queryOrder"
@query="fetchTableData" />
</a-space>
</div>
</template>
@@ -102,7 +107,7 @@
row-key="id"
ref="tableRef"
:loading="loading"
:columns="logColumns"
:columns="tableColumns"
:row-selection="rowSelection"
:expandable="expandable"
:data="tableRenderData"
@@ -221,28 +226,33 @@
import useLoading from '@/hooks/loading';
import { logColumns } from '../types/table.columns';
import { ExecStatus, execStatusKey } from '@/components/exec/log/const';
import { useExpandable, useTablePagination, useRowSelection } from '@/hooks/table';
import { useExpandable, useTablePagination, useRowSelection, useTableColumns } from '@/hooks/table';
import { TableName } from '../types/const';
import { useDictStore, useUserStore } from '@/store';
import { dateFormat, formatDuration } from '@/utils';
import { reExecCommand } from '@/api/exec/exec-command';
import { interruptExecCommand } from '@/api/exec/exec-command-log';
import { useQueryOrder, DESC } from '@/hooks/query-order';
import UserSelector from '@/components/user/user/selector/index.vue';
import ExecCommandHostLogTable from './exec-command-host-log-table.vue';
import TableAdjust from '@/components/app/table-adjust/index.vue';
const emits = defineEmits(['viewCommand', 'viewParams', 'viewLog', 'openClear']);
const route = useRoute();
const router = useRouter();
const pagination = useTablePagination();
const rowSelection = useRowSelection();
const expandable = useExpandable();
const rowSelection = useRowSelection();
const pagination = useTablePagination();
const queryOrder = useQueryOrder(TableName, DESC);
const { tableColumns, columnsHook } = useTableColumns(TableName, logColumns);
const { loading, setLoading } = useLoading();
const { toOptions, getDictValue } = useDictStore();
const pullIntervalId = ref();
const tableRef = ref();
const selectedKeys = ref<number[]>([]);
const tableRenderData = ref<ExecLogQueryResponse[]>([]);
const selectedKeys = ref<Array<number>>([]);
const tableRenderData = ref<Array<ExecLogQueryResponse>>([]);
const formModel = reactive<ExecLogQueryRequest>({
id: undefined,
userId: undefined,
@@ -392,7 +402,7 @@
const doFetchTableData = async (request: ExecLogQueryRequest) => {
try {
setLoading(true);
const { data } = await getExecCommandLogPage(request);
const { data } = await getExecCommandLogPage(queryOrder.markOrderly(request));
tableRenderData.value = data.rows;
pagination.total = data.total;
pagination.current = request.page;

View File

@@ -1,2 +1,5 @@
// 表名称
export const TableName = 'exec-cmd-log';
// 最大清理数量
export const maxClearLimit = 1000;

View File

@@ -10,6 +10,7 @@ export const logColumns = [
width: 100,
align: 'left',
fixed: 'left',
default: true,
}, {
title: '执行描述',
dataIndex: 'description',
@@ -18,6 +19,7 @@ export const logColumns = [
width: 168,
ellipsis: true,
tooltip: true,
default: true,
}, {
title: '执行命令',
dataIndex: 'command',
@@ -25,6 +27,7 @@ export const logColumns = [
align: 'left',
ellipsis: true,
minWidth: 238,
default: true,
}, {
title: '执行用户',
dataIndex: 'username',
@@ -32,28 +35,32 @@ export const logColumns = [
align: 'left',
width: 118,
ellipsis: true,
default: true,
}, {
title: '执行状态',
dataIndex: 'status',
slotName: 'status',
align: 'left',
width: 118,
default: true,
}, {
title: '执行时间',
dataIndex: 'startTime',
slotName: 'startTime',
align: 'left',
width: 190,
default: true,
}, {
title: '操作',
slotName: 'handle',
width: 288,
align: 'center',
fixed: 'right',
default: true,
},
] as TableColumnData[];
// 主机列
// 主机表格
export const hostColumns = [
{
title: 'id',

View File

@@ -85,6 +85,11 @@
</template>
</a-button>
</a-popconfirm>
<!-- 调整 -->
<table-adjust :columns="columns"
:columns-hook="columnsHook"
:query-order="queryOrder"
@query="fetchTableData" />
</a-space>
</div>
</template>
@@ -93,7 +98,7 @@
row-key="id"
ref="tableRef"
:loading="loading"
:columns="columns"
:columns="tableColumns"
:row-selection="rowSelection"
:expandable="expandable"
:data="tableRenderData"
@@ -111,11 +116,13 @@
</template>
<!-- 任务名称 -->
<template #description="{ record }">
<span class="span-blue mr4 usn">
#{{ record.execSeq }}
</span>
<span :title="record.description">
{{ record.description }}
<span>
<span class="span-blue mr4 usn">
#{{ record.execSeq }}
</span>
<span :title="record.description">
{{ record.description }}
</span>
</span>
</template>
<!-- 执行命令 -->
@@ -231,18 +238,23 @@
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 } from '@/hooks/table';
import { useExpandable, useTablePagination, useRowSelection, useTableColumns } from '@/hooks/table';
import { TableName } from '../types/const';
import { useDictStore } from '@/store';
import { dateFormat, formatDuration } from '@/utils';
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 pagination = useTablePagination();
const rowSelection = useRowSelection();
const expandable = useExpandable();
const pagination = useTablePagination();
const queryOrder = useQueryOrder(TableName, DESC);
const { tableColumns, columnsHook } = useTableColumns(TableName, columns);
const { loading, setLoading } = useLoading();
const { toOptions, getDictValue } = useDictStore();
@@ -383,7 +395,7 @@
const doFetchTableData = async (request: ExecLogQueryRequest) => {
try {
setLoading(true);
const { data } = await getExecJobLogPage(request);
const { data } = await getExecJobLogPage(queryOrder.markOrderly(request));
tableRenderData.value = data.rows;
pagination.total = data.total;
pagination.current = request.page;

View File

@@ -1,2 +1,5 @@
// 表名称
export const TableName = 'exec-job-log';
// 最大清理数量
export const maxClearLimit = 1000;

View File

@@ -8,6 +8,7 @@ const columns = [
width: 100,
align: 'left',
fixed: 'left',
default: true,
}, {
title: '任务名称',
dataIndex: 'description',
@@ -15,13 +16,15 @@ const columns = [
align: 'left',
width: 188,
ellipsis: true,
default: true,
}, {
title: '执行命令',
dataIndex: 'command',
slotName: 'command',
align: 'left',
minWidth: 238,
ellipsis: true,
minWidth: 238,
default: true,
}, {
title: '执行用户',
dataIndex: 'username',
@@ -29,24 +32,28 @@ const columns = [
align: 'left',
width: 128,
ellipsis: true,
default: true,
}, {
title: '执行状态',
dataIndex: 'status',
slotName: 'status',
align: 'left',
width: 118,
default: true,
}, {
title: '执行时间',
dataIndex: 'startTime',
slotName: 'startTime',
align: 'left',
width: 190,
default: true,
}, {
title: '操作',
slotName: 'handle',
width: 218,
align: 'center',
fixed: 'right',
default: true,
},
] as TableColumnData[];

View File

@@ -77,6 +77,11 @@
</template>
</a-button>
</a-popconfirm>
<!-- 调整 -->
<table-adjust :columns="columns"
:columns-hook="columnsHook"
:query-order="queryOrder"
@query="fetchTableData" />
</a-space>
</div>
</template>
@@ -85,7 +90,7 @@
row-key="id"
ref="tableRef"
:loading="loading"
:columns="columns"
:columns="tableColumns"
:row-selection="rowSelection"
:data="tableRenderData"
:pagination="pagination"
@@ -215,20 +220,24 @@
import usePermission from '@/hooks/permission';
import useLoading from '@/hooks/loading';
import columns from '../types/table.columns';
import { ExecJobStatus, execJobStatusKey, execStatusKey } from '../types/const';
import { useTablePagination, useRowSelection } from '@/hooks/table';
import { TableName, ExecJobStatus, execJobStatusKey, execStatusKey } from '../types/const';
import { useTablePagination, useRowSelection, useTableColumns } from '@/hooks/table';
import { useCacheStore, useDictStore, useUserStore } from '@/store';
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';
const emits = defineEmits(['openAdd', 'openUpdate', 'openDetail', 'updateExecUser', 'testCron']);
const route = useRoute();
const cacheStore = useCacheStore();
const pagination = useTablePagination();
const rowSelection = useRowSelection();
const pagination = useTablePagination();
const queryOrder = useQueryOrder(TableName, DESC);
const { tableColumns, columnsHook } = useTableColumns(TableName, columns);
const { loading, setLoading } = useLoading();
const { hasPermission } = usePermission();
const { toOptions, getDictValue } = useDictStore();
@@ -313,7 +322,7 @@
const doFetchTableData = async (request: ExecJobQueryRequest) => {
try {
setLoading(true);
const { data } = await getExecJobPage(request);
const { data } = await getExecJobPage(queryOrder.markOrderly(request));
tableRenderData.value = data.rows;
pagination.total = data.total;
pagination.current = request.page;

View File

@@ -1,5 +1,8 @@
import type { TemplateParam } from '@/components/view/exec-editor/const';
// 表名称
export const TableName = 'exec-job';
// cron 下次执行次数
export const CronNextTimes = 5;

View File

@@ -9,6 +9,7 @@ const columns = [
width: 100,
align: 'left',
fixed: 'left',
default: true,
}, {
title: '任务名称',
dataIndex: 'name',
@@ -16,6 +17,7 @@ const columns = [
align: 'left',
width: 180,
ellipsis: true,
default: true,
}, {
title: 'cron',
dataIndex: 'expression',
@@ -24,6 +26,7 @@ const columns = [
width: 168,
ellipsis: true,
tooltip: true,
default: true,
}, {
title: '执行命令',
dataIndex: 'command',
@@ -31,6 +34,7 @@ const columns = [
align: 'left',
minWidth: 238,
ellipsis: true,
default: true,
}, {
title: '执行用户',
dataIndex: 'execUsername',
@@ -39,12 +43,14 @@ const columns = [
ellipsis: true,
tooltip: true,
width: 124,
default: true,
}, {
title: '任务状态',
dataIndex: 'status',
slotName: 'status',
align: 'center',
width: 112,
default: true,
}, {
title: '最近执行',
dataIndex: 'recentLog',
@@ -55,6 +61,17 @@ const columns = [
justifyContent: 'center'
},
width: 200,
default: true,
}, {
title: '创建时间',
dataIndex: 'createTime',
slotName: 'createTime',
align: 'center',
width: 180,
render: ({ record }) => {
return dateFormat(new Date(record.createTime));
},
default: false,
}, {
title: '修改时间',
dataIndex: 'updateTime',
@@ -64,12 +81,30 @@ const columns = [
render: ({ record }) => {
return dateFormat(new Date(record.updateTime));
},
default: true,
}, {
title: '创建人',
dataIndex: 'creator',
slotName: 'creator',
width: 148,
ellipsis: true,
tooltip: true,
default: false,
}, {
title: '修改人',
dataIndex: 'updater',
slotName: 'updater',
width: 148,
ellipsis: true,
tooltip: true,
default: false,
}, {
title: '操作',
slotName: 'handle',
width: 228,
align: 'center',
fixed: 'right',
default: true,
},
] as TableColumnData[];

View File

@@ -64,6 +64,11 @@
</template>
</a-button>
</a-popconfirm>
<!-- 调整 -->
<table-adjust :columns="columns"
:columns-hook="columnsHook"
:query-order="queryOrder"
@query="fetchTableData" />
</a-space>
</div>
</template>
@@ -72,7 +77,7 @@
row-key="id"
ref="tableRef"
:loading="loading"
:columns="columns"
:columns="tableColumns"
:row-selection="rowSelection"
:data="tableRenderData"
:pagination="pagination"
@@ -135,13 +140,18 @@
import { Message } from '@arco-design/web-vue';
import useLoading from '@/hooks/loading';
import columns from '../types/table.columns';
import { useTablePagination, useRowSelection } from '@/hooks/table';
import { TableName } from '../types/const';
import { useTablePagination, useRowSelection, useTableColumns } from '@/hooks/table';
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']);
const pagination = useTablePagination();
const rowSelection = useRowSelection();
const pagination = useTablePagination();
const queryOrder = useQueryOrder(TableName, DESC);
const { tableColumns, columnsHook } = useTableColumns(TableName, columns);
const { loading, setLoading } = useLoading();
const selectedKeys = ref<number[]>([]);
@@ -195,7 +205,7 @@
const doFetchTableData = async (request: ExecTemplateQueryRequest) => {
try {
setLoading(true);
const { data } = await getExecTemplatePage(request);
const { data } = await getExecTemplatePage(queryOrder.markOrderly(request));
tableRenderData.value = data.rows;
pagination.total = data.total;
pagination.current = request.page;

View File

@@ -0,0 +1,2 @@
// 表名称
export const TableName = 'exec-tpl';

View File

@@ -9,6 +9,7 @@ const columns = [
width: 100,
align: 'left',
fixed: 'left',
default: true,
}, {
title: '模板名称',
dataIndex: 'name',
@@ -16,12 +17,24 @@ const columns = [
align: 'left',
width: 200,
ellipsis: true,
default: true,
}, {
title: '模板命令',
dataIndex: 'command',
slotName: 'command',
align: 'left',
ellipsis: true,
default: true,
}, {
title: '创建时间',
dataIndex: 'createTime',
slotName: 'createTime',
align: 'center',
width: 180,
render: ({ record }) => {
return dateFormat(new Date(record.createTime));
},
default: true,
}, {
title: '修改时间',
dataIndex: 'updateTime',
@@ -31,12 +44,30 @@ const columns = [
render: ({ record }) => {
return dateFormat(new Date(record.updateTime));
},
default: true,
}, {
title: '创建人',
dataIndex: 'creator',
slotName: 'creator',
width: 148,
ellipsis: true,
tooltip: true,
default: false,
}, {
title: '修改人',
dataIndex: 'updater',
slotName: 'updater',
width: 148,
ellipsis: true,
tooltip: true,
default: false,
}, {
title: '操作',
slotName: 'handle',
width: 180,
align: 'center',
fixed: 'right',
default: true,
},
] as TableColumnData[];

View File

@@ -94,6 +94,11 @@
</template>
</a-button>
</a-popconfirm>
<!-- 调整 -->
<table-adjust :columns="columns"
:columns-hook="columnsHook"
:query-order="queryOrder"
@query="fetchTableData" />
</a-space>
</div>
</template>
@@ -102,7 +107,7 @@
row-key="id"
ref="tableRef"
:loading="loading"
:columns="columns"
:columns="tableColumns"
:row-selection="rowSelection"
:data="tableRenderData"
:pagination="pagination"
@@ -186,18 +191,22 @@
import { Message } from '@arco-design/web-vue';
import useLoading from '@/hooks/loading';
import columns from '../types/table.columns';
import { UploadTaskStatus, uploadTaskStatusKey } from '../types/const';
import { useTablePagination, useRowSelection } from '@/hooks/table';
import { TableName, UploadTaskStatus, uploadTaskStatusKey } from '../types/const';
import { useTablePagination, useRowSelection, useTableColumns } from '@/hooks/table';
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';
const emits = defineEmits(['openClear']);
const router = useRouter();
const pagination = useTablePagination();
const rowSelection = useRowSelection();
const pagination = useTablePagination();
const queryOrder = useQueryOrder(TableName, DESC);
const { tableColumns, columnsHook } = useTableColumns(TableName, columns);
const { loading, setLoading } = useLoading();
const { toOptions, getDictValue } = useDictStore();
@@ -292,7 +301,7 @@
const doFetchTableData = async (request: UploadTaskQueryRequest) => {
try {
setLoading(true);
const { data } = await getUploadTaskPage(request);
const { data } = await getUploadTaskPage(queryOrder.markOrderly(request));
tableRenderData.value = data.rows;
pagination.total = data.total;
pagination.current = request.page;

View File

@@ -1,3 +1,6 @@
// 表名称
export const TableName = 'upload-task';
// 上传任务状态
export const UploadTaskStatus = {
// 等待中

View File

@@ -9,6 +9,7 @@ const columns = [
width: 100,
align: 'left',
fixed: 'left',
default: true,
}, {
title: '上传用户',
dataIndex: 'username',
@@ -17,6 +18,7 @@ const columns = [
width: 118,
ellipsis: true,
tooltip: true,
default: true,
}, {
title: '上传描述',
dataIndex: 'description',
@@ -24,6 +26,7 @@ const columns = [
align: 'left',
ellipsis: true,
tooltip: true,
default: true,
}, {
title: '远程路径',
dataIndex: 'remotePath',
@@ -32,24 +35,28 @@ const columns = [
ellipsis: true,
tooltip: true,
minWidth: 238,
default: true,
}, {
title: '上传状态',
dataIndex: 'status',
slotName: 'status',
align: 'center',
width: 138,
default: true,
}, {
title: '文件数量',
dataIndex: 'fileCount',
slotName: 'fileCount',
width: 98,
align: 'center',
default: true,
}, {
title: '主机数量',
dataIndex: 'hostCount',
slotName: 'hostCount',
width: 98,
align: 'center',
default: true,
}, {
title: '上传时间',
dataIndex: 'createTime',
@@ -59,12 +66,14 @@ const columns = [
render: ({ record }) => {
return dateFormat(new Date(record.createTime));
},
default: true,
}, {
title: '操作',
slotName: 'handle',
width: 180,
align: 'center',
fixed: 'right',
default: true,
},
] as TableColumnData[];