fix(xispeak): 修复经办人反馈流程deptHandlerName为空及反馈弹窗问题

- handleFlowScheduleConfirm从record.approveInfo直接取implUserNameList和approverId,不再错误查询反馈记录
- 反馈弹窗保存时不再覆盖反馈人和部门(移除handleOk中的applyCurrentUserFeedbackInfo)
- 反馈弹窗label样式对齐主表单
- 更新节点权限文档中的URL示例

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
wsm
2026-05-26 18:43:23 +08:00
co-authored by Claude Opus 4.7
parent 6703104e85
commit 326032c62b
3 changed files with 38 additions and 33 deletions
+5 -5
View File
@@ -212,7 +212,7 @@ showFeedbackInfo → 反馈信息区域(表格 + 表头)
* **jiJianFieldsReadonly** `0` —— 弹窗内纪检字段只读
* **showDeptFeedback** `0` —— 按部门过滤反馈
* **showJiJianFields** `1` —— 纪检字段列
* bg/xispeak/components/BgXiSpeakBPMForm?edit=1&showProcessHandle=1&showFeedbackInfo=1&showEditFeedback=1&showJiJianFields=1
* bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&showEditFeedback=1&showJiJianFields=1
---
### 节点: <督办部门经办人确认全部反馈事项>
@@ -239,9 +239,9 @@ showFeedbackInfo → 反馈信息区域(表格 + 表头)
* **showAddFeedback** `1` —— 新增反馈按钮
* **showEditFeedback** `1` —— 编辑/删除操作列
* **jiJianFieldsReadonly** `1` —— 弹窗内纪检字段只读
* **showDeptFeedback** `0` —— 按部门过滤反馈
* **showDeptFeedback** `1` —— 按部门过滤反馈
* **showJiJianFields** `1` —— 纪检字段列
* bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&showAddFeedback=1&showEditFeedback=1&jiJianFieldsReadonly=1&showJiJianFields=1
* bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&showAddFeedback=1&showEditFeedback=1&showDeptFeedback=1&jiJianFieldsReadonly=1&showJiJianFields=1
---
### 节点: <部门负责人审批>
@@ -254,9 +254,9 @@ showFeedbackInfo → 反馈信息区域(表格 + 表头)
* **showAddFeedback** `0` —— 新增反馈按钮
* **showEditFeedback** `0` —— 编辑/删除操作列
* **jiJianFieldsReadonly** `0` —— 弹窗内纪检字段只读
* **showDeptFeedback** `0` —— 按部门过滤反馈
* **showDeptFeedback** `1` —— 按部门过滤反馈
* **showJiJianFields** `1` —— 纪检字段列
* bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&showJiJianFields=1
* bg/xispeak/components/BgXiSpeakBPMForm?showProcessHandle=1&showFeedbackInfo=1&showDeptFeedback=1&showJiJianFields=1
---
### 节点: <督办经办人核查>
+5 -20
View File
@@ -637,28 +637,13 @@
return;
}
// 查询已有反馈记录,按部门获取处理人姓名
const deptHandlerMap = new Map<string, string>();
try {
const feedbackRes = await bgXiSpeakFeedbackList({ mainId: record.id, pageNo: 1, pageSize: 999 });
const feedbackRecords = feedbackRes?.records || feedbackRes?.result?.records || [];
for (const fb of feedbackRecords) {
const fbDeptIds = splitDeptValue(fb.responDeptid);
const handlerName = fb.responPersonname || '';
for (const fbDeptId of fbDeptIds) {
if (fbDeptId && handlerName && !deptHandlerMap.has(fbDeptId)) {
deptHandlerMap.set(fbDeptId, handlerName);
}
}
}
} catch (e) {
// 查询反馈失败则继续,deptHandlerName 留空
}
let successCount = 0;
const total = selectedDeptIds.length;
for (const deptId of selectedDeptIds) {
const deptDetail = record.approveInfo?.[deptId];
const implUserNameList: string[] = deptDetail?.implUserNameList || [];
const deptHandlerName = implUserNameList.join(',');
const params = {
intervalType: options.intervalType,
startCount: options.startCount,
@@ -678,8 +663,8 @@
content: record.implStatus,
urgencyLevel: record.completionStatus,
deptId: deptId,
deptLeaderId: deptId,
deptHandlerName: deptHandlerMap.get(deptId) || '',
deptLeaderId: deptDetail?.approverId || '',
deptHandlerName: deptHandlerName,
requireFinishDate: formatDate(record.time, 'YYYY-MM-DD'),
deadline: record.deadline || formatDate(record.time, 'YYYY-MM-DD'),
},
@@ -176,11 +176,15 @@
nextTick(() => formRef.value?.clearValidate?.());
}
function open(mainId: string, secretLevel?: string | number, bpmProcessId = '') {
function open(mainId: string, secretLevel?: string | number, bpmProcessId = '', defaultDeptId = '', defaultDeptName = '') {
resetForm(mainId, bpmProcessId);
isEdit.value = false;
uploadSecretLevel.value = normalizeSecretLevel(secretLevel);
void applyCurrentUserFeedbackInfo();
if (defaultDeptId) {
void applyCurrentUserFeedbackInfo(defaultDeptId, defaultDeptName);
} else {
void applyCurrentUserFeedbackInfo();
}
visible.value = true;
}
@@ -225,13 +229,18 @@
};
}
async function applyCurrentUserFeedbackInfo() {
async function applyCurrentUserFeedbackInfo(defaultDeptId = '', defaultDeptName = '') {
const userInfo = (userStore.getUserInfo || {}) as Record<string, any>;
formData.responPersonid = userInfo.id || userInfo.userId || '';
formData.responPersonname = userInfo.realname || '';
const departInfo = await getCurrentDepartInfo();
formData.responDeptid = departInfo.id;
formData.responDeptname = departInfo.departName;
if (defaultDeptId) {
formData.responDeptid = defaultDeptId;
formData.responDeptname = defaultDeptName || '';
} else {
const departInfo = await getCurrentDepartInfo();
formData.responDeptid = departInfo.id;
formData.responDeptname = departInfo.departName;
}
}
function handleDeptChange(value, row) {
@@ -252,7 +261,6 @@
}
saving.value = true;
try {
await applyCurrentUserFeedbackInfo();
if (!formData.id && uploadFileRef.value?.hasPendingFiles?.()) {
formData.id = buildUUID();
}
@@ -280,6 +288,18 @@
<style lang="less" scoped>
.bpm-feedback-modal-form {
padding: 12px 8px 0;
padding: 14px;
:deep(.ant-form-item-label) {
overflow: visible;
white-space: normal;
text-overflow: unset;
text-align: left;
> label {
justify-content: flex-start;
width: 100%;
}
}
}
</style>