yxk-20260509-党委会发起流程

发起流程的时候,还应该显示是否抄送所办领导,抄送所办领导字段,并且支持修改,修改后发起流程时需要带入到jsonData中
并且仅当前组件需要选择
This commit is contained in:
ye1023
2026-05-11 16:01:09 +08:00
parent 4a068c737e
commit 3048c7a63f
3 changed files with 67 additions and 5 deletions
@@ -27,6 +27,20 @@
/> />
</a-form-item> </a-form-item>
<template v-if="showSuoleaderFields">
<a-form-item label="是否抄送所办领导">
<j-switch v-model:value="formData.isNeedAppro" />
</a-form-item>
<a-form-item label="抄送所办领导">
<j-select-user
v-model:value="formData.supDeptleaderid"
:disabled="String(formData.isNeedAppro) !== '1'"
allow-clear
/>
</a-form-item>
</template>
<template v-if="formData.triggerMode === 'recurring'"> <template v-if="formData.triggerMode === 'recurring'">
<a-form-item label="重复周期"> <a-form-item label="重复周期">
<JDictSelectTag <JDictSelectTag
@@ -68,15 +82,20 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { reactive, ref } from 'vue'; import { reactive, ref, watch } from 'vue';
import JModal from '/src/components/Modal/src/JModal/JModal.vue'; import JModal from '/src/components/Modal/src/JModal/JModal.vue';
import JDictSelectTag from '/src/components/Form/src/jeecg/components/JDictSelectTag.vue'; import JDictSelectTag from '/src/components/Form/src/jeecg/components/JDictSelectTag.vue';
import JSwitch from '/src/components/Form/src/jeecg/components/JSwitch.vue';
import JSelectUser from '/src/components/Form/src/jeecg/components/JSelectUser.vue';
import { useMessage } from '/src/hooks/web/useMessage'; import { useMessage } from '/src/hooks/web/useMessage';
interface ModalPayload { interface ModalPayload {
title?: string; title?: string;
payload?: Record<string, any>; payload?: Record<string, any>;
deptOptions?: DeptOption[]; deptOptions?: DeptOption[];
showSuoleaderFields?: boolean;
isNeedAppro?: string | number;
supDeptleaderid?: string | string[];
} }
interface DeptOption { interface DeptOption {
@@ -91,12 +110,15 @@
const visible = ref(false); const visible = ref(false);
const contextData = ref<Record<string, any>>({}); const contextData = ref<Record<string, any>>({});
const deptOptions = ref<DeptOption[]>([]); const deptOptions = ref<DeptOption[]>([]);
const showSuoleaderFields = ref(false);
const formData = reactive({ const formData = reactive({
triggerMode: 'immediate', triggerMode: 'immediate',
intervalType: undefined as number | string | undefined, intervalType: undefined as number | string | undefined,
startCount: undefined as number | undefined, startCount: undefined as number | undefined,
intervalStartTime: undefined as string | undefined, intervalStartTime: undefined as string | undefined,
deptIds: [] as string[], deptIds: [] as string[],
isNeedAppro: '0',
supDeptleaderid: '' as string | string[],
}); });
function resetForm() { function resetForm() {
@@ -105,7 +127,10 @@
formData.startCount = undefined; formData.startCount = undefined;
formData.intervalStartTime = undefined; formData.intervalStartTime = undefined;
formData.deptIds = []; formData.deptIds = [];
formData.isNeedAppro = '0';
formData.supDeptleaderid = '';
deptOptions.value = []; deptOptions.value = [];
showSuoleaderFields.value = false;
} }
function normalizeDeptOptions(options: DeptOption[] = []) { function normalizeDeptOptions(options: DeptOption[] = []) {
@@ -129,6 +154,12 @@
contextData.value = data.payload || {}; contextData.value = data.payload || {};
deptOptions.value = normalizeDeptOptions(data.deptOptions || []); deptOptions.value = normalizeDeptOptions(data.deptOptions || []);
formData.deptIds = deptOptions.value.map((item) => item.value); formData.deptIds = deptOptions.value.map((item) => item.value);
showSuoleaderFields.value = !!data.showSuoleaderFields;
formData.isNeedAppro = String(data.isNeedAppro ?? '0');
formData.supDeptleaderid = data.supDeptleaderid || '';
if (String(formData.isNeedAppro) !== '1') {
formData.supDeptleaderid = '';
}
visible.value = true; visible.value = true;
} }
@@ -165,11 +196,22 @@
intervalStartTime: formData.triggerMode === 'recurring' ? formData.intervalStartTime : undefined, intervalStartTime: formData.triggerMode === 'recurring' ? formData.intervalStartTime : undefined,
deptId: formData.deptIds.join(','), deptId: formData.deptIds.join(','),
deptIds: [...formData.deptIds], deptIds: [...formData.deptIds],
isNeedAppro: showSuoleaderFields.value ? formData.isNeedAppro : undefined,
supDeptleaderid: showSuoleaderFields.value ? (String(formData.isNeedAppro) === '1' ? formData.supDeptleaderid : '') : undefined,
}, },
}); });
handleCancel(); handleCancel();
} }
watch(
() => formData.isNeedAppro,
(value) => {
if (String(value) !== '1') {
formData.supDeptleaderid = '';
}
}
);
defineExpose({ defineExpose({
open, open,
}); });
@@ -404,6 +404,9 @@
title: '发起流程', title: '发起流程',
payload: { record }, payload: { record },
deptOptions: getResponsibleDeptOptions(record), deptOptions: getResponsibleDeptOptions(record),
showSuoleaderFields: true,
isNeedAppro: record?.isNeedAppro,
supDeptleaderid: record?.supDeptleaderid,
}); });
} }
@@ -440,6 +443,11 @@
const formatDate = (value, format) => { const formatDate = (value, format) => {
return value ? dateUtil(value).format(format) : undefined; return value ? dateUtil(value).format(format) : undefined;
}; };
const flowJsonData = {
...record,
isNeedAppro: options.isNeedAppro ?? record.isNeedAppro ?? '',
supDeptleaderid: options.supDeptleaderid ?? record.supDeptleaderid ?? '',
};
const params = { const params = {
intervalType: options.intervalType, intervalType: options.intervalType,
@@ -452,7 +460,7 @@
flowCode: FLOW_CODE, flowCode: FLOW_CODE,
formUrl: FORM_URL, formUrl: FORM_URL,
flowName: FLOW_NAME, flowName: FLOW_NAME,
jsonData: record, jsonData: flowJsonData,
//台账相关字段 //台账相关字段
businessTablename: BUSINESS_TABLE_NAME, businessTablename: BUSINESS_TABLE_NAME,
businessId: record.id, businessId: record.id,
@@ -74,9 +74,9 @@
<j-switch v-model:value="formData.isNeedAppro" ></j-switch> <j-switch v-model:value="formData.isNeedAppro" ></j-switch>
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col v-if="showSupDeptLeader" :span="12">
<a-form-item label="所办领导" v-bind="validateInfos.supDeptleaderid" id="BgPartymatterForm-supDeptleaderid" name="supDeptleaderid"> <a-form-item label="所办领导" v-bind="validateInfos.supDeptleaderid" id="BgPartymatterForm-supDeptleaderid" name="supDeptleaderid">
<j-select-user v-model:value="formData.supDeptleaderid" allow-clear /> <j-select-user v-model:value="formData.supDeptleaderid" allow-clear />
</a-form-item> </a-form-item>
</a-col> </a-col>
<a-col :span="12"> <a-col :span="12">
@@ -120,7 +120,7 @@
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { ref, reactive, defineExpose, nextTick, defineProps, computed, onMounted } from 'vue'; import { ref, reactive, defineExpose, nextTick, defineProps, computed, onMounted, watch } from 'vue';
import { defHttp } from '/@/utils/http/axios'; import { defHttp } from '/@/utils/http/axios';
import { useMessage } from '/@/hooks/web/useMessage'; import { useMessage } from '/@/hooks/web/useMessage';
import JSwitch from '/@/components/Form/src/jeecg/components/JSwitch.vue'; import JSwitch from '/@/components/Form/src/jeecg/components/JSwitch.vue';
@@ -155,6 +155,7 @@
deadline: '', deadline: '',
urgencyLevel: '1', urgencyLevel: '1',
isNeedAppro: '', isNeedAppro: '',
supDeptleaderid: '',
isNeedSuoleader: '', isNeedSuoleader: '',
suoleaderid: '', suoleaderid: '',
delFlag: '', delFlag: '',
@@ -202,6 +203,17 @@
return props.formDisabled; return props.formDisabled;
}); });
const showSupDeptLeader = computed(() => String(formData.isNeedAppro) !== '0');
watch(
() => formData.isNeedAppro,
(value) => {
if (String(value) === '1') {
formData.supDeptleaderid = '';
}
}
);
onMounted(()=>{ onMounted(()=>{
initFormData(); initFormData();
}); });