!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
+92 -54
View File
@@ -13,10 +13,18 @@
<a-col :lg="8">
<a-form-item name="measureResLeader">
<template #label><span title="措施责任领导">措施责任领导</span></template>
<SzDeptUserModal
v-model:value="queryParam.measureResLeader"
placeholder="请选择措施责任领导"
/>
<SzDeptUserModal v-model:value="queryParam.measureResLeader" placeholder="请选择措施责任领导" />
</a-form-item>
</a-col>
<a-col :lg="6">
<a-form-item name="completedStage" label="流程阶段">
<a-select v-model:value="completedStageFilter" placeholder="请选择" allow-clear @change="handleCompletedStageChange">
<a-select-option value="0">未发起巡视整改流程</a-select-option>
<a-select-option value="1">正在巡视整改流程</a-select-option>
<a-select-option value="2">巡视整改流程结束</a-select-option>
<a-select-option value="3">正在巡视整改销号流程</a-select-option>
<a-select-option value="4">巡视整改销号流程结束</a-select-option>
</a-select>
</a-form-item>
</a-col>
<template v-if="toggleSearchStatus">
@@ -72,7 +80,12 @@
</template>
<!--操作栏-->
<template #action="{ record }">
<TableAction :actions="getTableAction(record)" :dropDownActions="getDropDownAction(record)" />
<Dropdown :trigger="['hover']" :dropMenuList="getFlowMenuList(record)" popconfirm>
<a-button type="link" size="small">流程操作 <Icon icon="mdi-light:chevron-down" /></a-button>
</Dropdown>
<Dropdown :trigger="['hover']" :dropMenuList="getFormMenuList(record)" popconfirm>
<a-button type="link" size="small">表单操作 <Icon icon="mdi-light:chevron-down" /></a-button>
</Dropdown>
</template>
<!--字段回显插槽-->
<template v-slot:bodyCell="{ column, record, index, text }"> </template>
@@ -89,7 +102,8 @@
<script lang="ts" name="dqinspecttask-dqInspectTask" setup>
import { ref, reactive, computed, unref } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { BasicTable, useTable } from '/@/components/Table';
import { Dropdown } from '/@/components/Dropdown';
import { useListPage } from '/@/hooks/system/useListPage';
import { useModal } from '/@/components/Modal';
import DqInspectTaskModal from './components/DqInspectTaskModal.vue';
@@ -98,9 +112,11 @@
import { ledgerList, deleteOne, batchDelete, getImportUrl, getExportUrl, saveOrUpdate } from './DqInspectTask.api';
import { downloadFile } from '/@/utils/common/renderUtils';
import { useMessage } from '/@/hooks/web/useMessage';
import Icon from '/@/components/Icon/index';
import SzSelectDept from '/@/components/Form/src/jeecg/components/SzSelectDept.vue';
import SzDeptUserModal from '/@/components/semri/deptUserComponent/SzDeptUserModal.vue';
import { startProcessSchedules } from '/@/api/common/api';
import { dateUtil } from '/@/utils/dateUtil';
import FlowScheduleStartModal from './components/DqInspectTaskFlowScheduleStartModal.vue';
import BusinessProcessListModal from '/src/components/semri/process/BusinessProcessListModal.vue';
@@ -114,6 +130,7 @@
const feedbackViewModalRef = ref();
const flowScheduleModalRef = ref();
const businessProcessListModalRef = ref();
const completedStageFilter = ref();
const userStore = useUserStore();
const { createMessage } = useMessage();
//注册table数据
@@ -248,65 +265,72 @@
}
/**
* 操作栏
* 流程操作菜单
*/
function getTableAction(record) {
const actions = [
{
label: '查看反馈',
onClick: handleViewFeedback.bind(null, record),
},
];
if (record.bpmStatus == '1' || !record.bpmStatus) {
actions.push({
label: '发起流程',
onClick: handleProcess.bind(null, record),
});
}
if (record.bpmStatus && record.bpmStatus !== '1') {
actions.push({
label: '发起销号流程',
onClick: handleDeleteProcess.bind(null, record),
});
}
return actions;
function getFlowMenuList(record) {
const list: any[] = [];
// if ((record.bpmStatus == '1' || !record.bpmStatus) && record.completedStage === 0) {
list.push({ text: '发起巡视整改流程', icon: 'ant-design:play-circle-outlined', event: 'process', onClick: handleProcess.bind(null, record) });
// }
// if (record.bpmStatus && record.bpmStatus !== '1' && record.completedStage === 2) {
list.push({ text: '发起销号流程', icon: 'ant-design:stop-outlined', event: 'deleteProcess', onClick: handleDeleteProcess.bind(null, record) });
// }
list.push({
text: '查询督办流程',
icon: 'ant-design:search-outlined',
event: 'queryProcess',
divider: true,
onClick: handleQueryProcess.bind(null, record),
});
// if (!record.bpmStatus || record.bpmStatus == '1') {
list.push({
text: '调整为未发起巡视整改流程状态',
icon: 'ant-design:rollback-outlined',
event: 'adj0',
onClick: () => adjustCompletedStage(record, 0),
});
list.push({
text: '调整为未发起销号流程状态',
icon: 'ant-design:check-circle-outlined',
event: 'adj2',
onClick: () => adjustCompletedStage(record, 2),
});
list.push({
text: '调整为已完成销号流程状态',
icon: 'ant-design:check-circle-outlined',
event: 'adj4',
onClick: () => adjustCompletedStage(record, 4),
});
//}
return list;
}
/**
* 下拉操作栏
* 表单操作菜单
*/
function getDropDownAction(record) {
let dropDownAction = [
function getFormMenuList(record) {
return [
{ text: '查看反馈', icon: 'ant-design:eye-outlined', event: 'feedback', divider: true, onClick: handleViewFeedback.bind(null, record) },
{ text: '编辑', icon: 'ant-design:edit-outlined', event: 'edit', onClick: handleEdit.bind(null, record) },
{ text: '详情', icon: 'ant-design:file-text-outlined', event: 'detail', onClick: handleDetail.bind(null, record) },
{
label: '编辑',
onClick: handleEdit.bind(null, record),
},
{
label: '详情',
onClick: handleDetail.bind(null, record),
},
{
label: '删除',
popConfirm: {
title: '是否确认删除',
confirm: handleDelete.bind(null, record),
},
},
// {
// label: '审批进度',
// onClick: handlePreviewPic.bind(null, record),
// },
{
label: '查询督办流程',
onClick: handleQueryProcess.bind(null, record),
text: '删除',
icon: 'ant-design:delete-outlined',
event: 'delete',
popConfirm: { title: '是否确认删除', confirm: handleDelete.bind(null, record), placement: 'topLeft' },
},
];
return dropDownAction;
}
async function adjustCompletedStage(record, stage) {
await saveOrUpdate({ id: record.id, problemId: record.problemId, completedStage: stage }, true);
handleSuccess();
}
const FLOW_CODE = 'inspect_flow_create_01';
const FLOW_NAME = '巡视整改提升工作';
const BUSINESS_TABLE_NAME = 'dq_inspect_task';
const FORM_URL = 'dq/inspectTask/components/DqInspectTaskBPMForm?showProcessHandle=1&showFeedbackInfo=1';
const FORM_URL = 'dq/inspectTask/components/DqInspectTaskBPMForm?showFeedbackInfo=1';
const DELETE_FLOW_CODE = 'dq_delete_01';
const DELETE_FLOW_NAME = '巡视整改提升工作-销号';
const DELETE_FORM_URL = 'dq/inspectTask/components/DqInspectTaskBPMForm?showFeedbackInfo=1';
@@ -370,11 +394,14 @@
content: record.improveMeasure || '',
deptId: options.deptId || record.measureResDept || '',
deptLeaderId: record.measureResLeader || '',
requireFinishDate: record.deadline || undefined,
deadline: record.deadline || undefined,
},
};
await startProcessSchedules(params);
await saveOrUpdate({ id: record.id, problemId: record.problemId, bpmStatus: '2' }, true);
const nextStage = (record.completedStage || 0) + 1;
await saveOrUpdate({ id: record.id, problemId: record.problemId, bpmStatus: '2', completedStage: nextStage }, true);
createMessage.success('发起成功');
handleSuccess();
}
@@ -443,6 +470,8 @@
function searchReset() {
formRef.value.resetFields();
selectedRowKeys.value = [];
completedStageFilter.value = undefined;
delete queryParam.completedStage;
//刷新数据
reload();
}
@@ -452,6 +481,15 @@
* @param key
* @param value
*/
function handleCompletedStageChange(value) {
if (value != null) {
queryParam.completedStage = Number(value);
} else {
delete queryParam.completedStage;
}
reload();
}
function handleFormJoinChange(key, value) {
if (typeof value != 'string') {
queryParam[key] = value.join(',');