From 24739d5efce387d4f5bd88230ebbd3d34b5f2c4d Mon Sep 17 00:00:00 2001 From: new_new_new <8454518+new-twice@user.noreply.gitee.com> Date: Mon, 1 Jun 2026 08:45:34 +0000 Subject: [PATCH] =?UTF-8?q?!15=20feat(xispeak):=20=E7=9D=A3=E5=8A=9E?= =?UTF-8?q?=E9=A2=86=E5=AF=BC=E5=88=97=E8=A1=A8=E7=BB=9F=E4=B8=80=E6=94=B9?= =?UTF-8?q?=E7=94=A8SzUserSelectByDeptRoleSecurityModal=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=E9=80=89=E4=BA=BA=EF=BC=8C=E5=AD=98=E5=82=A8use=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(xispeak): 督办领导列表统一改用SzUserSelectByDeptRoleSecurityModal弹窗选人,存储use… * feat(xispeak): 督办领导列表改用SzUserSelectByDeptRoleSecurityModal弹窗选人 * chore(xispeak): 更新 BPM_NODE_PERMISSIONS 节点权限配置 * feat(xispeak): 新增 showSelnextUser 权限控制,默认隐藏指定下一步操作人 * fix(xispeak): 修复是否报送上级报告字段显示0/1而非字典标签 * feat(xispeak): 新增 nonJiJianFieldsReadonly 权限控制,支持除纪检字段外全部只读 * fix(xispeak): 修复反馈表单标签对齐和网格布局问题 * fix(xispeak): 指定落实措施条数、措施已闭环数量、督办次数设为不可编辑 --- .../semri/process/FlowScheduleStartModal.vue | 71 ++++++++++++++- .../SzUserSelectByDeptRoleSecurityModal.vue | 39 +++++--- src/views/bg/xispeak/BPM_NODE_PERMISSIONS.md | 12 ++- src/views/bg/xispeak/BgXiSpeakList.vue | 2 + .../components/BgXiSpeakBPMFeedbackModal.vue | 15 ++-- .../xispeak/components/BgXiSpeakBPMForm.vue | 89 ++++++++++++++++--- .../components/BgXiSpeakFeedbackForm.vue | 17 +++- .../bg/xispeak/components/BgXiSpeakForm.vue | 72 +++++++++++++-- .../content/TaskHandleInnerContent.vue | 6 +- 9 files changed, 276 insertions(+), 47 deletions(-) diff --git a/src/components/semri/process/FlowScheduleStartModal.vue b/src/components/semri/process/FlowScheduleStartModal.vue index 6ffc007..9b937bd 100644 --- a/src/components/semri/process/FlowScheduleStartModal.vue +++ b/src/components/semri/process/FlowScheduleStartModal.vue @@ -36,7 +36,27 @@ - + + + + @@ -79,7 +99,9 @@ import JModal from '/src/components/Modal/src/JModal/JModal.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 SzUserSelectByDeptRoleSecurityModal from '/src/components/semri/userComponent/modal/SzUserSelectByDeptRoleSecurityModal.vue'; + import { SearchOutlined } from '@ant-design/icons-vue'; + import { getUserList } from '/src/api/common/api'; import { useMessage } from '/src/hooks/web/useMessage'; interface ModalPayload { @@ -89,6 +111,7 @@ showSuoleaderFields?: boolean; isNeedAppro?: string | number; supDeptleaderid?: string | string[]; + supDeptleaderName?: string; showDeadlineField?: boolean; deadline?: string | Date; } @@ -107,6 +130,44 @@ const deptOptions = ref([]); const showSuoleaderFields = ref(false); const showDeadlineField = ref(false); + + // 所党委领导选人弹窗 + const sdwLeaderModalOpen = ref(false); + const supDeptleaderName = ref(''); + const sdwLeaderDeptId = ref('2044677562460508161'); + const sdwLeaderRoleId = ref('2044676455280570370'); + const sdwLeaderSecurityValue = ref(5); + + function openSdwLeaderModal() { + if (String(formData.isNeedAppro) !== '1') return; + sdwLeaderModalOpen.value = true; + } + + function handleClearSdwLeader() { + formData.supDeptleaderid = ''; + supDeptleaderName.value = ''; + } + + function handleSdwLeaderConfirm(rows: Array<{ id: string; realname: string }>) { + if (rows && rows.length > 0) { + formData.supDeptleaderid = rows.map((r) => r.username).join(','); + supDeptleaderName.value = rows.map((r) => r.realname).join(','); + } else { + formData.supDeptleaderid = ''; + supDeptleaderName.value = ''; + } + } + + async function resolveSdwLeaderNames(ids: string) { + try { + const res = await getUserList({ username: ids, pageSize: 999 }); + const records = res?.records || res?.result?.records || []; + supDeptleaderName.value = records.map((u: any) => u.realname).join(','); + } catch { + supDeptleaderName.value = ''; + } + } + const formData = reactive({ triggerMode: 'immediate', intervalType: undefined as number | string | undefined, @@ -126,6 +187,7 @@ formData.deptIds = []; formData.isNeedAppro = '0'; formData.supDeptleaderid = ''; + supDeptleaderName.value = ''; formData.deadline = undefined; deptOptions.value = []; showSuoleaderFields.value = false; @@ -169,6 +231,10 @@ showSuoleaderFields.value = !!data.showSuoleaderFields; formData.isNeedAppro = String(data.isNeedAppro ?? '0'); formData.supDeptleaderid = data.supDeptleaderid || ''; + supDeptleaderName.value = data.supDeptleaderName || ''; + if (!supDeptleaderName.value && formData.supDeptleaderid) { + resolveSdwLeaderNames(formData.supDeptleaderid as string); + } showDeadlineField.value = !!data.showDeadlineField; formData.deadline = normalizeDeadlineValue(data.deadline); if (String(formData.isNeedAppro) !== '1') { @@ -228,6 +294,7 @@ (value) => { if (String(value) !== '1') { formData.supDeptleaderid = ''; + supDeptleaderName.value = ''; } } ); diff --git a/src/components/semri/userComponent/modal/SzUserSelectByDeptRoleSecurityModal.vue b/src/components/semri/userComponent/modal/SzUserSelectByDeptRoleSecurityModal.vue index f78a699..44f3810 100644 --- a/src/components/semri/userComponent/modal/SzUserSelectByDeptRoleSecurityModal.vue +++ b/src/components/semri/userComponent/modal/SzUserSelectByDeptRoleSecurityModal.vue @@ -1,6 +1,6 @@