!61 feat(dqinspecttask): 新增流程阶段筛选、调整状态功能,操作栏拆分为流程/表单两个下拉菜单

* feat(dqinspecttask): 新增流程阶段筛选、调整状态功能,操作栏拆分为流程/表单两个下拉菜单
* chore(xispeak): 更新 BPM_NODE_PERMISSIONS 节点权限配置,反馈流程补充默认审批意见
* fix(dqinspecttask): 发起流程表单去掉多余的抄送tab
* fix(dqinspecttask): 发起流程补充deadline和requireFinishDate字段
* feat(dqinspecttask): 发起流程和销号流程按钮按已完成阶段数控制可见性
* refactor(xispeak): 部门领导指派意见使用翻译后的真实姓名
* refactor(xispeak): 提升常用操作到行内,删除时同步清除关联流程
* refactor(xispeak): 替换牵头部门选部门组件为SzSelectDept
This commit is contained in:
wsm
2026-06-26 07:58:06 +00:00
parent 7d8bb8da85
commit 56538e9b97
5 changed files with 191 additions and 83 deletions
@@ -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<any[]>([]);
const subApproveUser = ref('');
const subApproveUserNameText = ref('');
const userResolveVersion = ref(0);
const isEnd = ref(0);
const mainForm = reactive<Record<string, any>>({
@@ -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<string, string>, 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');
}