!19 feat(dq): 新增整改任务BPM审批界面及extendUrlParams权限控制架构

* feat(dq): 新增整改任务BPM审批界面及extendUrlParams权限控制架构
* feat(dq): 整改任务列表新增查询督办流程按钮并清理未使用导入
* style(dq): 优化整改任务表单为双列分区布局参考BgXiSpeakForm样式
* feat(dq): 整改任务列表新增FlowScheduleStartModal流程调度和弹窗式反馈查看
* feat(dq): 新增反馈查看弹窗组件并在进展列表中集成查看反馈按钮
* fix(dq): 修正巡视工作进展反馈查询接口地址并与Controller对齐
* fix(dq): 修正巡视工作进展反馈API地址与后端Controller对齐
* feat(dq): 新增整改任务列表发起流程和查看反馈按钮
* feat(dq): 新增巡视工作进展反馈页面
This commit is contained in:
new_new_new
2026-06-04 12:26:17 +00:00
parent 54066922e7
commit ba564cffcf
13 changed files with 2610 additions and 296 deletions
@@ -0,0 +1,151 @@
<template>
<j-modal
:title="title"
:width="1000"
:visible="visible"
:okButtonProps="{ class: { 'jee-hidden': true } }"
@cancel="handleCancel"
cancelText="关闭"
>
<BasicTable
size="small"
rowKey="id"
:canResize="false"
:showIndexColumn="false"
:showActionColumn="false"
:showTableSetting="false"
:clickToRowSelect="false"
:columns="columns"
:dataSource="feedbackTableData"
:loading="loading"
:pagination="false"
:bordered="false"
>
<template #bodyCell="{ column, record }">
<template v-if="column.key === 'attachments'">
<SUploadFile
v-if="record.id"
class="feedback-view-attachment-list"
:bussiness-id="record.id"
:disabled="true"
:multiple="true"
/>
<span v-else>-</span>
</template>
</template>
</BasicTable>
</j-modal>
</template>
<script lang="ts" setup>
import { ref, computed, defineExpose } from 'vue';
import { BasicTable } from '/@/components/Table';
import type { BasicColumn } from '/@/components/Table';
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
import SUploadFile from '/@/components/semri/fileComponent/SUploadFile.vue';
import { list } from '../DqInspectProgress.api';
const visible = ref(false);
const loading = ref(false);
const feedbackTableData = ref<Recordable[]>([]);
const title = computed(() => {
const count = loading.value ? '加载中' : `${feedbackTableData.value.length}`;
return `反馈信息(${count}`;
});
const columns: BasicColumn[] = [
{
title: '反馈人',
dataIndex: 'feedbackPersonName',
align: 'center',
width: 100,
},
{
title: '反馈部门',
dataIndex: 'feedbackDeptName',
align: 'center',
width: 140,
},
{
title: '工作进展',
dataIndex: 'workProgress',
align: 'left',
ellipsis: true,
},
{
title: '实际完成时间',
dataIndex: 'actualTime',
align: 'center',
width: 120,
},
{
title: '进展状态',
dataIndex: 'bpmStatus_dictText',
align: 'center',
width: 100,
},
{
title: '附件',
dataIndex: 'id',
key: 'attachments',
align: 'left',
width: 280,
},
];
async function open(mainId: string) {
visible.value = true;
loading.value = true;
try {
const res = await list({ mainId, pageNo: 1, pageSize: 9999, column: 'createTime', order: 'desc' });
feedbackTableData.value = Array.isArray(res) ? res : res?.records || [];
} finally {
loading.value = false;
}
}
function handleCancel() {
visible.value = false;
}
defineExpose({ open });
</script>
<style lang="less" scoped>
.feedback-view-attachment-list {
min-width: 240px;
:deep(.file-list-wrapper) {
min-height: 40px;
max-height: 120px;
padding: 4px 8px;
}
:deep(.file-list-header) {
margin-bottom: 6px;
padding-bottom: 6px;
}
:deep(.file-list .file-item) {
padding: 8px;
margin-bottom: 6px;
}
:deep(.ant-empty) {
margin: 0;
padding: 4px 0;
.ant-empty-image {
display: none;
}
.ant-empty-description {
font-size: 12px;
color: #999;
padding: 0;
margin: 0;
}
}
}
</style>