!147 fix(xispeak): 督办状态列改为按关联流程实时推导
Merge pull request !147 from wsm/fix/xi_speak_sup_status
This commit is contained in:
@@ -229,6 +229,14 @@ export const queryFeedbackCounts = (params) => {
|
|||||||
return defHttp.get({ url: '/bg/xispeak/bgXiSpeak/queryFeedbackCounts', params });
|
return defHttp.get({ url: '/bg/xispeak/bgXiSpeak/queryFeedbackCounts', params });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询业务督办状态(由关联流程实时推导:无流程=未开始/有运行=督办中/全部结束=已完成)
|
||||||
|
* @param params { businessId }
|
||||||
|
*/
|
||||||
|
export const getBusinessStatus = (params) => {
|
||||||
|
return defHttp.get({ url: '/tasktask/taskTask/getBusinessStatus', params });
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 更新 task_task 的部门经办人姓名
|
* 更新 task_task 的部门经办人姓名
|
||||||
* @param params { processInstanceId, deptHandlerName }
|
* @param params { processInstanceId, deptHandlerName }
|
||||||
|
|||||||
@@ -125,8 +125,13 @@ export const columns: BasicColumn[] = [
|
|||||||
{
|
{
|
||||||
title: '督办状态',
|
title: '督办状态',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
dataIndex: 'bpmStatus_dictText',
|
dataIndex: 'bpmStatus',
|
||||||
width: 90,
|
width: 90,
|
||||||
|
customRender: ({ record }) => {
|
||||||
|
// 督办状态以关联流程实时推导结果为准(superviseStatus),未取到时才回退到存储值
|
||||||
|
const status = record?.superviseStatus ?? record?.bpmStatus;
|
||||||
|
return { '1': '未开始', '2': '督办中', '3': '已完成' }[status] ?? '';
|
||||||
|
},
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
// title: '层深(最顶层节点层深为0)',
|
// title: '层深(最顶层节点层深为0)',
|
||||||
|
|||||||
@@ -61,7 +61,7 @@
|
|||||||
:expandedRowKeys="expandedRowKeys"
|
:expandedRowKeys="expandedRowKeys"
|
||||||
@expand="handleExpand"
|
@expand="handleExpand"
|
||||||
@fetch-success="onFetchSuccess"
|
@fetch-success="onFetchSuccess"
|
||||||
:rowClassName="(r) => r.bpmStatus ? 'status-row-' + r.bpmStatus : ''"
|
:rowClassName="(r) => (r.superviseStatus || r.bpmStatus) ? 'status-row-' + (r.superviseStatus || r.bpmStatus) : ''"
|
||||||
>
|
>
|
||||||
<!--插槽:table标题-->
|
<!--插槽:table标题-->
|
||||||
<template #tableTitle>
|
<template #tableTitle>
|
||||||
@@ -174,6 +174,7 @@ import { PARTY_COMMITTEE_DEPT_ID, SDW_LEADER_ROLE_ID } from '/@/constant/supervi
|
|||||||
withDrawXiSpeak,
|
withDrawXiSpeak,
|
||||||
queryFeedbackCounts,
|
queryFeedbackCounts,
|
||||||
statusStats,
|
statusStats,
|
||||||
|
getBusinessStatus,
|
||||||
} from './BgXiSpeak.api';
|
} from './BgXiSpeak.api';
|
||||||
|
|
||||||
const FLOW_CODE = 'dev_bg_xi_speak_001';
|
const FLOW_CODE = 'dev_bg_xi_speak_001';
|
||||||
@@ -389,7 +390,7 @@ import { PARTY_COMMITTEE_DEPT_ID, SDW_LEADER_ROLE_ID } from '/@/constant/supervi
|
|||||||
result = result.records ? result.records : result;
|
result = result.records ? result.records : result;
|
||||||
if (result && result.length > 0) {
|
if (result && result.length > 0) {
|
||||||
record.children = getDataByResult(result);
|
record.children = getDataByResult(result);
|
||||||
await refreshFeedbackCounts(record.children);
|
await Promise.all([refreshFeedbackCounts(record.children), refreshSuperviseStatus(record.children)]);
|
||||||
// 触发表格重新渲染
|
// 触发表格重新渲染
|
||||||
updateTableDataRecord(record.id, { ...record });
|
updateTableDataRecord(record.id, { ...record });
|
||||||
} else {
|
} else {
|
||||||
@@ -472,14 +473,43 @@ import { PARTY_COMMITTEE_DEPT_ID, SDW_LEADER_ROLE_ID } from '/@/constant/supervi
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量刷新督办状态:以关联流程实时推导结果为准(无流程=未开始,有运行=督办中,全部结束=已完成)
|
||||||
|
*/
|
||||||
|
async function refreshSuperviseStatus(records) {
|
||||||
|
const ids = collectAllIds(records).filter((id) => !String(id).includes('loadChild'));
|
||||||
|
if (ids.length === 0) return;
|
||||||
|
try {
|
||||||
|
const results = await Promise.allSettled(ids.map((id) => getBusinessStatus({ businessId: id })));
|
||||||
|
const statusMap: Record<string, string> = {};
|
||||||
|
results.forEach((res, index) => {
|
||||||
|
if (res.status === 'fulfilled' && res.value && res.value.status) {
|
||||||
|
statusMap[ids[index]] = res.value.status;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const updateFn = (list) => {
|
||||||
|
if (!list) return;
|
||||||
|
for (const item of list) {
|
||||||
|
if (statusMap[item.id]) {
|
||||||
|
item.superviseStatus = statusMap[item.id];
|
||||||
|
}
|
||||||
|
if (item.children) updateFn(item.children);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
updateFn(records);
|
||||||
|
} catch (e) {
|
||||||
|
// 静默处理查询异常
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 接口请求成功后回调
|
* 接口请求成功后回调
|
||||||
*/
|
*/
|
||||||
async function onFetchSuccess(result) {
|
async function onFetchSuccess(result) {
|
||||||
getDataByResult(result.items) && loadDataByExpandedRows();
|
getDataByResult(result.items) && loadDataByExpandedRows();
|
||||||
if (result.items && result.items.length > 0) {
|
if (result.items && result.items.length > 0) {
|
||||||
await refreshFeedbackCounts(result.items);
|
await Promise.all([refreshFeedbackCounts(result.items), refreshSuperviseStatus(result.items)]);
|
||||||
// 触发表格重新渲染以显示更新后的 implCount / closedCount
|
// 触发表格重新渲染以显示更新后的 implCount / closedCount / 督办状态
|
||||||
setTableData([...getDataSource()]);
|
setTableData([...getDataSource()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -516,6 +546,9 @@ import { PARTY_COMMITTEE_DEPT_ID, SDW_LEADER_ROLE_ID } from '/@/constant/supervi
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
fn(getDataSource());
|
fn(getDataSource());
|
||||||
|
await refreshSuperviseStatus(records);
|
||||||
|
// 触发表格重新渲染以显示子节点督办状态
|
||||||
|
setTableData([...getDataSource()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user