diff --git a/apps/web-antd/src/views/bpm/oa/leave/create.vue b/apps/web-antd/src/views/bpm/oa/leave/create.vue index 3f7d1aee9..f5df0d528 100644 --- a/apps/web-antd/src/views/bpm/oa/leave/create.vue +++ b/apps/web-antd/src/views/bpm/oa/leave/create.vue @@ -22,7 +22,6 @@ import { useFormSchema } from './data'; const formLoading = ref(false); // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用 -// 审批相关:变量 const processDefineKey = 'oa_leave'; // 流程定义 Key const startUserSelectTasks = ref([]); // 发起人需要选择审批人的用户任务列表 const startUserSelectAssignees = ref({}); // 发起人选择审批人的数据 @@ -95,7 +94,6 @@ async function onSubmit() { key: 'action_process_msg', }); - // TODO @ziye、@jason:好像跳转不了? await router.push({ name: 'BpmOALeave', }); @@ -121,49 +119,44 @@ function onBack() { }); } -// ============================== 审核流程相关 ============================== - /** 审批相关:获取审批详情 */ async function getApprovalDetail() { - try { - const data = await getApprovalDetailApi({ - processDefinitionId: processDefinitionId.value, - // TODO 小北:可以支持 processDefinitionKey 查询 - activityId: BpmNodeIdEnum.START_USER_NODE_ID, - processVariablesStr: JSON.stringify({ - day: dayjs(formData.value?.startTime).diff( - dayjs(formData.value?.endTime), - 'day', - ), - }), // 解决 GET 无法传递对象的问题,后端 String 再转 JSON - }); + const data = await getApprovalDetailApi({ + processDefinitionId: processDefinitionId.value, + // TODO 小北:可以支持 processDefinitionKey 查询 + activityId: BpmNodeIdEnum.START_USER_NODE_ID, + processVariablesStr: JSON.stringify({ + day: dayjs(formData.value?.startTime).diff( + dayjs(formData.value?.endTime), + 'day', + ), + }), // 解决 GET 无法传递对象的问题,后端 String 再转 JSON + }); - if (!data) { - message.error('查询不到审批详情信息!'); - return; - } - // 获取审批节点,显示 Timeline 的数据 - activityNodes.value = data.activityNodes; + if (!data) { + message.error('查询不到审批详情信息!'); + return; + } + // 获取审批节点,显示 Timeline 的数据 + activityNodes.value = data.activityNodes; - // 获取发起人自选的任务 - startUserSelectTasks.value = data.activityNodes?.filter( - (node: BpmProcessInstanceApi.ApprovalNodeInfo) => - BpmCandidateStrategyEnum.START_USER_SELECT === node.candidateStrategy, - ); - // 恢复之前的选择审批人 - if (startUserSelectTasks.value?.length > 0) { - for (const node of startUserSelectTasks.value) { - startUserSelectAssignees.value[node.id] = - tempStartUserSelectAssignees.value[node.id] && - tempStartUserSelectAssignees.value[node.id].length > 0 - ? tempStartUserSelectAssignees.value[node.id] - : []; - } + // 获取发起人自选的任务 + startUserSelectTasks.value = data.activityNodes?.filter( + (node: BpmProcessInstanceApi.ApprovalNodeInfo) => + BpmCandidateStrategyEnum.START_USER_SELECT === node.candidateStrategy, + ); + // 恢复之前的选择审批人 + if (startUserSelectTasks.value?.length > 0) { + for (const node of startUserSelectTasks.value) { + startUserSelectAssignees.value[node.id] = + tempStartUserSelectAssignees.value[node.id] && + tempStartUserSelectAssignees.value[node.id].length > 0 + ? tempStartUserSelectAssignees.value[node.id] + : []; } - } finally { - // } } + /** 审批相关:选择发起人 */ function selectUserConfirm(id: string, userList: any[]) { startUserSelectAssignees.value[id] = userList?.map((item: any) => item.id); @@ -189,7 +182,6 @@ watch( }, ); -// ============================== 生命周期 ============================== onMounted(async () => { const processDefinitionDetail: any = await getProcessDefinition( undefined, diff --git a/apps/web-antd/src/views/bpm/oa/leave/data.ts b/apps/web-antd/src/views/bpm/oa/leave/data.ts index 9dab40f88..79140ef2f 100644 --- a/apps/web-antd/src/views/bpm/oa/leave/data.ts +++ b/apps/web-antd/src/views/bpm/oa/leave/data.ts @@ -6,7 +6,7 @@ import { h } from 'vue'; import { DICT_TYPE } from '@vben/constants'; import { getDictOptions } from '@vben/hooks'; -import { formatDateTime } from '@vben/utils'; +import { formatDate } from '@vben/utils'; import { DictTag } from '#/components/dict-tag'; import { getRangePickerDefaultProps } from '#/utils'; @@ -71,7 +71,7 @@ export function useFormSchema(): VbenFormSchema[] { } /** 列表的搜索表单 */ -export function GridFormSchema(): VbenFormSchema[] { +export function useGridFormSchema(): VbenFormSchema[] { return [ { fieldName: 'type', @@ -83,17 +83,26 @@ export function GridFormSchema(): VbenFormSchema[] { allowClear: true, }, }, + { + fieldName: 'createTime', + label: '创建时间', + component: 'RangePicker', + componentProps: { + ...getRangePickerDefaultProps(), + allowClear: true, + }, + }, { fieldName: 'status', label: '审批结果', component: 'Select', componentProps: { placeholder: '请选择审批结果', + allowClear: true, options: getDictOptions( DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS, 'number', ), - allowClear: true, }, }, { @@ -102,14 +111,7 @@ export function GridFormSchema(): VbenFormSchema[] { component: 'Input', componentProps: { placeholder: '请输入原因', - }, - }, - { - fieldName: 'createTime', - label: '创建时间', - component: 'RangePicker', - componentProps: { - ...getRangePickerDefaultProps(), + allowClear: true, }, }, ]; @@ -136,13 +138,13 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { field: 'startTime', title: '开始时间', minWidth: 180, - formatter: 'formatDateTime', + formatter: 'formatDate', }, { field: 'endTime', title: '结束时间', minWidth: 180, - formatter: 'formatDateTime', + formatter: 'formatDate', }, { field: 'type', @@ -188,12 +190,12 @@ export function useDetailFormSchema(): DescriptionItemSchema[] { { label: '开始时间', field: 'startTime', - render: (val) => formatDateTime(val) as string, + render: (val) => formatDate(val) as string, }, { label: '结束时间', field: 'endTime', - render: (val) => formatDateTime(val) as string, + render: (val) => formatDate(val) as string, }, { label: '原因', diff --git a/apps/web-antd/src/views/bpm/oa/leave/detail.vue b/apps/web-antd/src/views/bpm/oa/leave/detail.vue index dc09fe59c..9f2d0aa1a 100644 --- a/apps/web-antd/src/views/bpm/oa/leave/detail.vue +++ b/apps/web-antd/src/views/bpm/oa/leave/detail.vue @@ -1,4 +1,4 @@ -