feat(sj_1.0.0): 完成工作流批次展示

This commit is contained in:
opensnail 2024-05-01 11:25:10 +08:00
parent 64a4e77ddf
commit ed9503217c
7 changed files with 115 additions and 67 deletions

View File

@ -7,7 +7,8 @@ export * from './system-manage';
export * from './notify';
export * from './group';
export * from './retry-task';
export * from './retry';
export * from './retry-scene';
export * from './retry-log';
export * from './retry-dead-letter';
export * from './workflow';
export * from './job';

View File

@ -0,0 +1,35 @@
import { request } from '../request';
/** get retry log list */
export function fetchRetryLogPageList(params?: Api.RetryLog.RetryLogSearchParams) {
return request<Api.RetryLog.RetryLogList>({
url: '/retry-task-log/list',
method: 'get',
params
});
}
/** get retry log list */
export function fetchRetryLogById(id: string) {
return request<Api.RetryLog.RetryLog>({
url: `/retry-task-log/${id}`,
method: 'get'
});
}
/** delete retry log */
export function fetchDeleteRetryLog(id: number) {
return request<boolean>({
url: `/retry-task-log/${id}`,
method: 'delete'
});
}
/** delete retry log */
export function fetchBatchDeleteRetryLog(ids: number[]) {
return request<boolean>({
url: `/retry-task-log/ids`,
method: 'delete',
data: ids
});
}

View File

@ -43,37 +43,3 @@ export function fetchUpdateSceneStatus(id: string, status: Api.Common.EnableStat
method: 'put'
});
}
/** get retry log list */
export function fetchRetryLogPageList(params?: Api.RetryLog.RetryLogSearchParams) {
return request<Api.RetryLog.RetryLogList>({
url: '/retry-task-log/list',
method: 'get',
params
});
}
/** get retry log list */
export function fetchRetryLogById(id: string) {
return request<Api.RetryLog.RetryLog>({
url: `/retry-task-log/${id}`,
method: 'get'
});
}
/** delete retry log */
export function fetchDeleteRetryLog(id: number) {
return request<boolean>({
url: `/retry-task-log/${id}`,
method: 'delete'
});
}
/** delete retry log */
export function fetchBatchDeleteRetryLog(ids: number[]) {
return request<boolean>({
url: `/retry-task-log/ids`,
method: 'delete',
data: ids
});
}

View File

@ -34,3 +34,17 @@ export function fetchGetWorkflowBatchList(params?: Api.WorkflowBatch.WorkflowBat
params
});
}
export function fetchUpdateWorkflowStatus(id: string) {
return request({
url: `/workflow/update/status/${id}`,
method: 'put'
});
}
export function fetchDelWorkflow(id: string) {
return request({
url: `/workflow/${id}`,
method: 'delete'
});
}

View File

@ -59,7 +59,8 @@ const { columns, columnChecks, data, getData, loading, mobilePagination, searchP
width: 80,
render: row => {
const fetchFn = async (groupStatus: Api.Common.EnableStatusNumber, callback: () => void) => {
const { error } = await fetchUpdateGroupStatus({ groupName: row.groupName, groupStatus: row.groupStatus });
const status = row.groupStatus === 1 ? 0 : 1;
const { error } = await fetchUpdateGroupStatus({ groupName: row.groupName, groupStatus: status });
if (!error) {
row.groupStatus = groupStatus;
window.$message?.success($t('common.updateSuccess'));

View File

@ -1,9 +1,10 @@
<script setup lang="tsx">
import { NButton, NPopconfirm } from 'naive-ui';
import { NButton, NPopconfirm, NTag } from 'naive-ui';
import { fetchGetWorkflowBatchList } from '@/service/api';
import { $t } from '@/locales';
import { useAppStore } from '@/store/modules/app';
import { useTable, useTableOperate } from '@/hooks/common/table';
import { operationReasonRecord, taskBatchStatusRecord } from '@/constants/business';
import WorkflowBatchSearch from './modules/workflow-batch-search.vue';
const appStore = useAppStore();
@ -53,13 +54,38 @@ const { columns, columnChecks, data, getData, loading, mobilePagination, searchP
key: 'taskBatchStatus',
title: $t('page.workflowBatch.taskBatchStatus'),
align: 'left',
minWidth: 120
minWidth: 120,
render: row => {
if (!row.taskBatchStatus) {
return null;
}
const tagMap: Record<number, NaiveUI.ThemeColor> = {
1: 'info',
2: 'success',
3: 'warning',
4: 'error',
5: 'error',
6: 'warning'
};
const label = $t(taskBatchStatusRecord[row.taskBatchStatus!]);
return <NTag type={tagMap[row.taskBatchStatus]}>{label}</NTag>;
}
},
{
key: 'operationReason',
title: $t('page.workflowBatch.operationReason'),
align: 'left',
minWidth: 120
minWidth: 120,
render: row => {
if (!row.operationReason) {
return null;
}
const label = $t(operationReasonRecord[row.operationReason!]);
return <NTag type="warning">{label}</NTag>;
}
},
{
key: 'createDt',
@ -94,9 +120,6 @@ const { columns, columnChecks, data, getData, loading, mobilePagination, searchP
});
const {
drawerVisible,
operateType,
editingData,
handleAdd,
handleEdit,
checkedRowKeys,
@ -139,6 +162,7 @@ function edit(id: string) {
v-model:columns="columnChecks"
:disabled-delete="checkedRowKeys.length === 0"
:loading="loading"
:show-delete="false"
@add="handleAdd"
@delete="handleBatchDelete"
@refresh="getData"
@ -156,12 +180,6 @@ function edit(id: string) {
:pagination="mobilePagination"
class="sm:h-full"
/>
<WorkflowBatchOperateDrawer
v-model:visible="drawerVisible"
:operate-type="operateType"
:row-data="editingData"
@submitted="getData"
/>
</NCard>
</div>
</template>

View File

@ -1,11 +1,18 @@
<script setup lang="tsx">
import { NButton, NPopconfirm, NTag } from 'naive-ui';
import { useRouter } from 'vue-router';
import { fetchGetWorkflowPageList, fetchTriggerWorkflow } from '@/service/api';
import {
fetchDelWorkflow,
fetchGetWorkflowPageList,
fetchTriggerWorkflow,
fetchUpdateWorkflowStatus
} from '@/service/api';
import { $t } from '@/locales';
import { useAppStore } from '@/store/modules/app';
import { useTable, useTableOperate } from '@/hooks/common/table';
import { enableStatusNumberRecord, triggerTypeRecord } from '@/constants/business';
import { triggerTypeRecord } from '@/constants/business';
import StatusSwitch from '@/components/common/status-switch.vue';
import { tagColor } from '@/utils/common';
import WorkflowSearch from './modules/workflow-search.vue';
const router = useRouter();
@ -23,11 +30,11 @@ const { columns, columnChecks, data, getData, loading, mobilePagination, searchP
workflowStatus: null
},
columns: () => [
{
type: 'selection',
align: 'center',
width: 48
},
// {
// type: 'selection',
// align: 'center',
// width: 48
// },
{
key: 'index',
title: $t('common.index'),
@ -69,12 +76,16 @@ const { columns, columnChecks, data, getData, loading, mobilePagination, searchP
align: 'left',
minWidth: 120,
render: row => {
if (!row.workflowStatus) {
return null;
}
const fetchFn = async (workflowStatus: Api.Common.EnableStatusNumber, callback: () => void) => {
const { error } = await fetchUpdateWorkflowStatus(row.id!);
if (!error) {
row.workflowStatus = workflowStatus;
window.$message?.success($t('common.updateSuccess'));
}
callback();
};
const label = $t(enableStatusNumberRecord[row.workflowStatus!]);
return <NTag type="primary">{label}</NTag>;
return <StatusSwitch v-model:value={row.workflowStatus} onFetch={fetchFn} />;
}
},
{
@ -88,7 +99,7 @@ const { columns, columnChecks, data, getData, loading, mobilePagination, searchP
}
const label = $t(triggerTypeRecord[row.triggerType!]);
return <NTag type="primary">{label}</NTag>;
return <NTag type={tagColor(row.triggerType)}>{label}</NTag>;
}
},
{
@ -147,8 +158,7 @@ const { columns, columnChecks, data, getData, loading, mobilePagination, searchP
const {
checkedRowKeys,
onBatchDeleted,
onDeleted
onBatchDeleted
// closeDrawer
} = useTableOperate(data, getData);
@ -159,11 +169,13 @@ async function handleBatchDelete() {
onBatchDeleted();
}
function handleDelete(id: string) {
async function handleDelete(id: string) {
// request
console.log(id);
onDeleted();
const { error } = await fetchDelWorkflow(id!);
if (!error) {
window.$message?.success($t('common.deleteSuccess'));
getData();
}
}
function edit(id: string) {
@ -210,6 +222,7 @@ async function execute(id: string) {
v-model:columns="columnChecks"
:disabled-delete="checkedRowKeys.length === 0"
:loading="loading"
:show-delete="false"
@add="handleAdd"
@delete="handleBatchDelete"
@refresh="getData"