From 56538e9b97f1ea17c322e11c00796bfc3e753122 Mon Sep 17 00:00:00 2001 From: wsm <8454518+new-twice@user.noreply.gitee.com> Date: Fri, 26 Jun 2026 07:58:06 +0000 Subject: [PATCH] =?UTF-8?q?!61=20feat(dqinspecttask):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E9=98=B6=E6=AE=B5=E7=AD=9B=E9=80=89=E3=80=81?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E7=8A=B6=E6=80=81=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E6=A0=8F=E6=8B=86=E5=88=86=E4=B8=BA=E6=B5=81?= =?UTF-8?q?=E7=A8=8B/=E8=A1=A8=E5=8D=95=E4=B8=A4=E4=B8=AA=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E8=8F=9C=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(dqinspecttask): 新增流程阶段筛选、调整状态功能,操作栏拆分为流程/表单两个下拉菜单 * chore(xispeak): 更新 BPM_NODE_PERMISSIONS 节点权限配置,反馈流程补充默认审批意见 * fix(dqinspecttask): 发起流程表单去掉多余的抄送tab * fix(dqinspecttask): 发起流程补充deadline和requireFinishDate字段 * feat(dqinspecttask): 发起流程和销号流程按钮按已完成阶段数控制可见性 * refactor(xispeak): 部门领导指派意见使用翻译后的真实姓名 * refactor(xispeak): 提升常用操作到行内,删除时同步清除关联流程 * refactor(xispeak): 替换牵头部门选部门组件为SzSelectDept --- src/views/bg/xispeak/BPM_NODE_PERMISSIONS.md | 16 +- src/views/bg/xispeak/BgXiSpeakList.vue | 39 ++--- .../xispeak/components/BgXiSpeakBPMForm.vue | 69 ++++++++- .../bg/xispeak/components/BgXiSpeakForm.vue | 4 +- .../dq/inspectTask/DqInspectTaskList.vue | 146 +++++++++++------- 5 files changed, 191 insertions(+), 83 deletions(-) diff --git a/src/views/bg/xispeak/BPM_NODE_PERMISSIONS.md b/src/views/bg/xispeak/BPM_NODE_PERMISSIONS.md index d744bbe..5c3b0ff 100644 --- a/src/views/bg/xispeak/BPM_NODE_PERMISSIONS.md +++ b/src/views/bg/xispeak/BPM_NODE_PERMISSIONS.md @@ -171,9 +171,9 @@ bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&sh * **showFeedbackInfo** `1` —— 反馈信息区域 * **showAddFeedback** `0` —— 新增反馈按钮 * **showEditFeedback** `0` —— 编辑/删除操作列 - * **showDeptFeedback** `0` —— 按部门过滤反馈 + * **showDeptFeedback** `1` —— 按部门过滤反馈 * **showJiJianFields** `0` —— 纪检字段列 -* bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&showEditFeedback=1&nonJiJianFieldsReadonly=1&showJiJianFields=1 +* bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&showEditFeedback=1&nonJiJianFieldsReadonly=1&showJiJianFields=1&showDeptFeedback=1 --- @@ -186,9 +186,9 @@ bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&sh * **showFeedbackInfo** `1` —— 反馈信息区域 * **showAddFeedback** `0` —— 新增反馈按钮 * **showEditFeedback** `0` —— 编辑/删除操作列 - * **showDeptFeedback** `0` —— 按部门过滤反馈 + * **showDeptFeedback** `1` —— 按部门过滤反馈 * **showJiJianFields** `0` —— 纪检字段列 -* bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1 +* bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&showDeptFeedback=1 --- ### 节点: <反馈流程纪检经办人监察> @@ -202,9 +202,9 @@ bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&sh * **showEditFeedback** `1` —— 编辑/删除操作列 * **jiJianFieldsReadonly** `0` —— 弹窗内纪检字段只读 * **nonJiJianFieldsReadonly** `1` —— 弹窗内非纪检字段只读 - * **showDeptFeedback** `0` —— 按部门过滤反馈 + * **showDeptFeedback** `1` —— 按部门过滤反馈 * **showJiJianFields** `1` —— 纪检字段列 -* bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&showEditFeedback=1&nonJiJianFieldsReadonly=1&showJiJianFields=1 +* bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&showEditFeedback=1&nonJiJianFieldsReadonly=1&showJiJianFields=1&showDeptFeedback=1 --- ### 节点: <反馈流程纪检负责人审批> @@ -217,9 +217,9 @@ bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&sh * **showAddFeedback** `0` —— 新增反馈按钮 * **showEditFeedback** `0` —— 编辑/删除操作列 * **jiJianFieldsReadonly** `0` —— 弹窗内纪检字段只读 - * **showDeptFeedback** `0` —— 按部门过滤反馈 + * **showDeptFeedback** `1` —— 按部门过滤反馈 * **showJiJianFields** `1` —— 纪检字段列 -* bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&showEditFeedback=0&showJiJianFields=1 +* bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&showEditFeedback=0&showJiJianFields=1&showDeptFeedback=1 --- ### 节点: <督办部门经办人确认全部反馈事项> diff --git a/src/views/bg/xispeak/BgXiSpeakList.vue b/src/views/bg/xispeak/BgXiSpeakList.vue index 8cd33cd..c7d4107 100644 --- a/src/views/bg/xispeak/BgXiSpeakList.vue +++ b/src/views/bg/xispeak/BgXiSpeakList.vue @@ -233,6 +233,14 @@ import { defHttp } from '/@/utils/http/axios'; registerModal.value.edit(record); } + /** + * 删除事件(含关联流程) + */ + async function handleDeleteWithProcess(record) { + await withDrawXiSpeak({ id: record.id }); + await deleteBgXiSpeak({ id: record.id }, success); + } + /** * 删除事件 */ @@ -472,6 +480,19 @@ import { defHttp } from '/@/utils/http/axios'; onClick: handleEdit.bind(null, record), auth: 'bg.xispeak:bg_xi_speak:edit', }, + { + label: '删除', + popConfirm: { + title: '确定删除吗? 将同时删除该记录关联的所有流程信息', + confirm: handleDeleteWithProcess.bind(null, record), + placement: 'topLeft', + }, + auth: 'bg.xispeak:bg_xi_speak:delete', + }, + { + label: '查看反馈', + onClick: handleViewFeedback.bind(null, record), + }, ]; } @@ -488,20 +509,6 @@ import { defHttp } from '/@/utils/http/axios'; label: '添加下级', onClick: handleAddSub.bind(null, { pid: record.id }), }, - { - label: '删除', - popConfirm: { - title: '确定删除吗?', - confirm: handleDelete.bind(null, record), - placement: 'topLeft', - }, - auth: 'bg.xispeak:bg_xi_speak:delete', - }, - // { - // label: '审批进度', - // onClick: handlePreviewPic.bind(null, record), - // ifShow: !!record.bpmStatus && record.bpmStatus !== '1', - // }, { label: '查询督办流程', onClick: handleQueryProcess.bind(null, record), @@ -515,10 +522,6 @@ import { defHttp } from '/@/utils/http/axios'; }, ifShow: !!record.bpmStatus && record.bpmStatus !== '1', }, - { - label: '查看反馈', - onClick: handleViewFeedback.bind(null, record), - }, ]; if (record.bpmStatus == '1' || !record.bpmStatus) { diff --git a/src/views/bg/xispeak/components/BgXiSpeakBPMForm.vue b/src/views/bg/xispeak/components/BgXiSpeakBPMForm.vue index 6eb96c5..662be6a 100644 --- a/src/views/bg/xispeak/components/BgXiSpeakBPMForm.vue +++ b/src/views/bg/xispeak/components/BgXiSpeakBPMForm.vue @@ -278,6 +278,7 @@ import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue'; import Icon from '/@/components/Icon/index'; import { bgXiSpeakFeedbackList, bgXiSpeakFeedbackListWithDept, bgXiSpeakFeedbackDelete, saveBpmForm, saveSubApprove } from '../BgXiSpeak.api'; + import { getUserList } from '/@/api/common/api'; import { usePermission } from '/@/hooks/web/usePermission'; import TaskHandleInnerContent from '/@/views/super/bpm/process/personalOffice/myHandleTask/content/TaskHandleInnerContent.vue'; import BgXiSpeakBPMFeedbackModal from './BgXiSpeakBPMFeedbackModal.vue'; @@ -318,6 +319,8 @@ import { PARTY_COMMITTEE_DEPT_ID, SDW_LEADER_ROLE_ID } from '/@/constant/supervi const showFeedbackDetail = ref(true); const feedbackList = ref([]); const subApproveUser = ref(''); + const subApproveUserNameText = ref(''); + const userResolveVersion = ref(0); const isEnd = ref(0); const mainForm = reactive>({ @@ -465,6 +468,14 @@ import { PARTY_COMMITTEE_DEPT_ID, SDW_LEADER_ROLE_ID } from '/@/constant/supervi Task_1v9ce78: buildDeptLeaderAssignReason, Task_1w4vxgc: buildApproveReason, Task_1wfkrvj: buildApproveReason, + // 反馈流程节点 + Task_005iiwi: buildApproveReason, + Task_06di2wf: buildApproveReason, + Task_0bahwr8: buildJiJianCheckReason, + Task_0sialna: buildDeptLeaderDirectFeedbackReason, + Task_12vdqzv: buildDeptHandlerFeedbackReason, + Task_13olnz1: buildSuperviseCheckReason, + Task_1l650tz: buildApproveReason, }; const defaultHandleReason = computed(() => { @@ -481,7 +492,7 @@ import { PARTY_COMMITTEE_DEPT_ID, SDW_LEADER_ROLE_ID } from '/@/constant/supervi } function buildDeptLeaderAssignReason() { - const userNameText = subApproveUser.value || ''; + const userNameText = normalizeDeptNames(subApproveUserNameText.value || subApproveUser.value); return userNameText ? `请${userNameText}办理。` : ''; } @@ -528,6 +539,14 @@ import { PARTY_COMMITTEE_DEPT_ID, SDW_LEADER_ROLE_ID } from '/@/constant/supervi { immediate: true } ); + watch( + subApproveUser, + (value) => { + resolveSubApproveUserName(value); + }, + { immediate: true } + ); + async function initFormData() { const dataId = props.formData?.dataId; if (!dataId) { @@ -724,6 +743,54 @@ import { PARTY_COMMITTEE_DEPT_ID, SDW_LEADER_ROLE_ID } from '/@/constant/supervi .join(','); } + function normalizeDeptNames(value: any) { + return splitDeptNames(value).join('、'); + } + + function splitDeptNames(value: any) { + return String(value || '') + .split(/[,,;;、]/) + .map((item) => item.trim()) + .filter(Boolean); + } + + async function resolveSubApproveUserName(value: any) { + const resolveVersion = ++userResolveVersion.value; + const usernames = normalizeUsernameList(value); + if (!usernames) { + subApproveUserNameText.value = ''; + return; + } + + subApproveUserNameText.value = normalizeDeptNames(usernames); + try { + const res = await getUserList({ username: usernames, isMultiTranslate: 'true', pageNo: 1, pageSize: 999 }); + if (resolveVersion !== userResolveVersion.value) { + return; + } + const records = res?.records || res?.result?.records || res || []; + const userNameMap = Array.isArray(records) + ? records.reduce((cache: Record, item: any) => { + const username = String(item?.username || '').trim(); + const realname = String(item?.realname || item?.name || '').trim(); + if (username && realname) { + cache[username] = realname; + } + return cache; + }, {}) + : {}; + const names = usernames + .split(',') + .map((username) => userNameMap[username] || username) + .filter(Boolean); + subApproveUserNameText.value = normalizeDeptNames(names.join(',')); + } catch { + if (resolveVersion === userResolveVersion.value) { + subApproveUserNameText.value = normalizeDeptNames(usernames); + } + } + } + function handleProcessSuccess() { emit('success'); } diff --git a/src/views/bg/xispeak/components/BgXiSpeakForm.vue b/src/views/bg/xispeak/components/BgXiSpeakForm.vue index 6290f67..6217dea 100644 --- a/src/views/bg/xispeak/components/BgXiSpeakForm.vue +++ b/src/views/bg/xispeak/components/BgXiSpeakForm.vue @@ -45,7 +45,7 @@ - + @@ -122,7 +122,7 @@ import { ref, reactive, defineExpose, nextTick, unref, defineProps, computed, onMounted } from 'vue'; import { defHttp } from '/@/utils/http/axios'; import { useMessage } from '/@/hooks/web/useMessage'; - import JSelectDept from '/@/components/Form/src/jeecg/components/JSelectDept.vue'; + import SzSelectDept from '/@/components/Form/src/jeecg/components/SzSelectDept.vue'; import DeptRoleUserSelectDropDown from '/@/components/semri/userComponent/DeptRoleUserSelectDropDown.vue'; import JTreeSelect from '/@/components/Form/src/jeecg/components/JTreeSelect.vue'; import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue'; diff --git a/src/views/dq/inspectTask/DqInspectTaskList.vue b/src/views/dq/inspectTask/DqInspectTaskList.vue index b4e0039..647ba17 100644 --- a/src/views/dq/inspectTask/DqInspectTaskList.vue +++ b/src/views/dq/inspectTask/DqInspectTaskList.vue @@ -13,10 +13,18 @@ - + + + + + + + 未发起巡视整改流程 + 正在巡视整改流程 + 巡视整改流程结束 + 正在巡视整改销号流程 + 巡视整改销号流程结束 + @@ -89,7 +102,8 @@