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:
@@ -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
|
||||
---
|
||||
|
||||
### 节点: <督办经办人核查>
|
||||
|
||||
@@ -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);
|
||||
if (defaultDeptId) {
|
||||
void applyCurrentUserFeedbackInfo(defaultDeptId, defaultDeptName);
|
||||
} else {
|
||||
void applyCurrentUserFeedbackInfo();
|
||||
}
|
||||
visible.value = true;
|
||||
}
|
||||
|
||||
@@ -225,14 +229,19 @@
|
||||
};
|
||||
}
|
||||
|
||||
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 || '';
|
||||
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) {
|
||||
if (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>
|
||||
|
||||
Reference in New Issue
Block a user