yxk-20260507-发起督办时,选择督办部门,默认是责任部门

This commit is contained in:
ye1023
2026-05-07 10:04:16 +08:00
parent a8cab9edbd
commit b610d3d0f8
3 changed files with 72 additions and 2 deletions
@@ -15,6 +15,18 @@
</a-radio-group>
</a-form-item>
<a-form-item v-if="deptOptions.length" label="被督办部门">
<a-select
v-model:value="formData.deptIds"
mode="multiple"
:options="deptOptions"
placeholder="请选择被督办部门"
allow-clear
style="width: 100%"
:getPopupContainer="(node) => node?.parentNode"
/>
</a-form-item>
<template v-if="formData.triggerMode === 'recurring'">
<a-form-item label="重复周期">
<JDictSelectTag
@@ -64,6 +76,12 @@
interface ModalPayload {
title?: string;
payload?: Record<string, any>;
deptOptions?: DeptOption[];
}
interface DeptOption {
label: string;
value: string;
}
const emit = defineEmits(['confirm']);
@@ -72,11 +90,13 @@
const title = ref('发起流程');
const visible = ref(false);
const contextData = ref<Record<string, any>>({});
const deptOptions = ref<DeptOption[]>([]);
const formData = reactive({
triggerMode: 'immediate',
intervalType: undefined as number | string | undefined,
startCount: undefined as number | undefined,
intervalStartTime: undefined as string | undefined,
deptIds: [] as string[],
});
function resetForm() {
@@ -84,12 +104,31 @@
formData.intervalType = undefined;
formData.startCount = undefined;
formData.intervalStartTime = undefined;
formData.deptIds = [];
deptOptions.value = [];
}
function normalizeDeptOptions(options: DeptOption[] = []) {
const optionMap = new Map<string, DeptOption>();
options.forEach((item) => {
const value = String(item?.value || '').trim();
if (!value || optionMap.has(value)) {
return;
}
optionMap.set(value, {
value,
label: item?.label || value,
});
});
return Array.from(optionMap.values());
}
function open(data: ModalPayload = {}) {
resetForm();
title.value = data.title || '发起流程';
contextData.value = data.payload || {};
deptOptions.value = normalizeDeptOptions(data.deptOptions || []);
formData.deptIds = deptOptions.value.map((item) => item.value);
visible.value = true;
}
@@ -112,6 +151,10 @@
return;
}
}
if (deptOptions.value.length && !formData.deptIds.length) {
createMessage.warning('请选择责任部门');
return;
}
emit('confirm', {
payload: contextData.value,
@@ -120,6 +163,8 @@
intervalType: formData.triggerMode === 'recurring' ? Number(formData.intervalType) : undefined,
startCount: formData.triggerMode === 'recurring' ? Number(formData.startCount) : undefined,
intervalStartTime: formData.triggerMode === 'recurring' ? formData.intervalStartTime : undefined,
deptId: formData.deptIds.join(','),
deptIds: [...formData.deptIds],
},
});
handleCancel();