yxk-20260527-巡视整改提升台账,任务清单新增
1、任务清单 dq_inspect_task.problem_id 必须关联 dq_inspect_problem.id,且被关联的问题节点 node_type = specific。 2、前端把当前手填“具体问题ID”改成树形选择,只允许选择“具体问题”节点。 后端在新增、编辑、导入时统一校验,防止绕过前端提交非法 problemId。
This commit is contained in:
@@ -13,6 +13,7 @@ enum Api {
|
||||
exportXls = '/dqinspecttask/dqInspectTask/exportXls',
|
||||
queryDataById = '/dqinspecttask/dqInspectTask/queryById',
|
||||
dqInspectProgressList = '/dqinspecttask/dqInspectTask/queryDqInspectProgressByMainId',
|
||||
specificProblemOptions = '/dqinspectproblem/dqInspectProblem/specificOptions',
|
||||
}
|
||||
/**
|
||||
* 导出api
|
||||
@@ -31,6 +32,11 @@ export const getImportUrl = Api.importExcel;
|
||||
*/
|
||||
export const queryDqInspectProgressListByMainId = (id) => defHttp.get({url: Api.dqInspectProgressList, params:{ id }});
|
||||
|
||||
/**
|
||||
* 查询整改任务可挂载的具体问题树
|
||||
*/
|
||||
export const specificProblemOptions = () => defHttp.get({url: Api.specificProblemOptions});
|
||||
|
||||
/**
|
||||
* 列表接口
|
||||
* @param params
|
||||
@@ -78,4 +84,3 @@ export const saveOrUpdate = (params, isUpdate) => {
|
||||
* @param params
|
||||
*/
|
||||
export const queryDataById = (id) => defHttp.get({url: Api.queryDataById, params:{ id }});
|
||||
|
||||
|
||||
@@ -7,9 +7,10 @@ import { getWeekMonthQuarterYear } from '/@/utils';
|
||||
//列表数据
|
||||
export const columns: BasicColumn[] = [
|
||||
{
|
||||
title: '具体问题ID',
|
||||
title: '具体问题',
|
||||
align:"center",
|
||||
dataIndex: 'problemId'
|
||||
dataIndex: 'problemId',
|
||||
customRender: ({ text, record }) => record.problemId_dictText || text,
|
||||
},
|
||||
{
|
||||
title: '密级',
|
||||
|
||||
@@ -5,8 +5,17 @@
|
||||
<a-form v-bind="formItemLayout" name="DqInspectTaskForm" ref="formRef">
|
||||
<a-row>
|
||||
<a-col :span="24">
|
||||
<a-form-item label="具体问题ID" v-bind="validateInfos.problemId" id="DqInspectTaskForm-problemId" name="problemId">
|
||||
<a-input v-model:value="formData.problemId" placeholder="请输入具体问题ID" allow-clear ></a-input>
|
||||
<a-form-item label="具体问题" v-bind="validateInfos.problemId" id="DqInspectTaskForm-problemId" name="problemId">
|
||||
<a-tree-select
|
||||
v-model:value="formData.problemId"
|
||||
:tree-data="problemTreeData"
|
||||
:loading="loadingProblemOptions"
|
||||
:disabled="disabled || loadingProblemOptions"
|
||||
placeholder="请选择具体问题"
|
||||
allow-clear
|
||||
tree-default-expand-all
|
||||
style="width: 100%"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="24">
|
||||
@@ -105,22 +114,22 @@
|
||||
</JFormContainer>
|
||||
|
||||
<!-- 子表单区域 -->
|
||||
<a-tabs v-model:activeKey="activeKey" animated style="overflow:hidden;">
|
||||
<a-tab-pane tab="工作进展反馈" key="dqInspectProgress" :forceRender="true">
|
||||
<j-vxe-table
|
||||
:keep-source="true"
|
||||
resizable
|
||||
ref="dqInspectProgressTableRef"
|
||||
:loading="dqInspectProgressTable.loading"
|
||||
:columns="dqInspectProgressTable.columns"
|
||||
:dataSource="dqInspectProgressTable.dataSource"
|
||||
:height="340"
|
||||
:disabled="disabled"
|
||||
:rowNumber="true"
|
||||
:rowSelection="true"
|
||||
:toolbar="true"/>
|
||||
</a-tab-pane>
|
||||
</a-tabs>
|
||||
<!-- <a-tabs v-model:activeKey="activeKey" animated style="overflow:hidden;">-->
|
||||
<!-- <a-tab-pane tab="工作进展反馈" key="dqInspectProgress" :forceRender="true">-->
|
||||
<!-- <j-vxe-table-->
|
||||
<!-- :keep-source="true"-->
|
||||
<!-- resizable-->
|
||||
<!-- ref="dqInspectProgressTableRef"-->
|
||||
<!-- :loading="dqInspectProgressTable.loading"-->
|
||||
<!-- :columns="dqInspectProgressTable.columns"-->
|
||||
<!-- :dataSource="dqInspectProgressTable.dataSource"-->
|
||||
<!-- :height="340"-->
|
||||
<!-- :disabled="disabled"-->
|
||||
<!-- :rowNumber="true"-->
|
||||
<!-- :rowSelection="true"-->
|
||||
<!-- :toolbar="true"/>-->
|
||||
<!-- </a-tab-pane>-->
|
||||
<!-- </a-tabs>-->
|
||||
<div v-if="showFlowSubmitButton" :span="24" style="width: 100%;text-align: center;margin-top: 10px">
|
||||
<a-button preIcon="ant-design:check-outlined" style="width: 126px" type="primary" @click="submitForm">提 交</a-button>
|
||||
</div>
|
||||
@@ -131,7 +140,7 @@
|
||||
import { defineComponent, ref, reactive, computed, toRaw, onMounted } from 'vue';
|
||||
import { defHttp } from '/@/utils/http/axios';
|
||||
import { useValidateAntFormAndTable } from '/@/hooks/system/useJvxeMethods';
|
||||
import { queryDqInspectProgressListByMainId, queryDataById, saveOrUpdate } from '../DqInspectTask.api';
|
||||
import { queryDqInspectProgressListByMainId, queryDataById, saveOrUpdate, specificProblemOptions } from '../DqInspectTask.api';
|
||||
import { JVxeTable } from '/@/components/jeecg/JVxeTable';
|
||||
import {dqInspectProgressColumns} from '../DqInspectTask.data';
|
||||
import JDictSelectTag from '/@/components/Form/src/jeecg/components/JDictSelectTag.vue';
|
||||
@@ -163,6 +172,8 @@
|
||||
const loading = ref(false);
|
||||
const formRef = ref();
|
||||
const dqInspectProgressTableRef = ref();
|
||||
const problemTreeData = ref<any[]>([]);
|
||||
const loadingProblemOptions = ref(false);
|
||||
const dqInspectProgressTable = reactive<Record<string, any>>({
|
||||
loading: false,
|
||||
columns: dqInspectProgressColumns,
|
||||
@@ -195,6 +206,7 @@
|
||||
|
||||
//表单验证
|
||||
const validatorRules = reactive({
|
||||
problemId: [{ required: true, message: '请选择具体问题' }],
|
||||
});
|
||||
const {resetFields, validate, validateInfos} = useForm(formData, validatorRules, {immediate: false});
|
||||
const dbData = {};
|
||||
@@ -216,6 +228,7 @@
|
||||
});
|
||||
|
||||
onMounted(()=>{
|
||||
loadSpecificProblemOptions();
|
||||
initFormData();
|
||||
});
|
||||
//渲染流程表单数据
|
||||
@@ -243,13 +256,27 @@
|
||||
return false
|
||||
});
|
||||
|
||||
/**
|
||||
* 整改任务只能选择具体问题,分类和面上问题由后端置灰用于分组展示。
|
||||
*/
|
||||
async function loadSpecificProblemOptions() {
|
||||
loadingProblemOptions.value = true;
|
||||
try {
|
||||
const data = await specificProblemOptions();
|
||||
problemTreeData.value = Array.isArray(data) ? data : data?.result || [];
|
||||
} finally {
|
||||
loadingProblemOptions.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
function add() {
|
||||
async function add() {
|
||||
resetFields();
|
||||
dqInspectProgressTable.dataSource = [];
|
||||
await loadSpecificProblemOptions();
|
||||
}
|
||||
|
||||
async function edit(row) {
|
||||
await loadSpecificProblemOptions();
|
||||
//主表数据
|
||||
await queryMainData(row.id);
|
||||
//子表数据
|
||||
@@ -292,7 +319,8 @@
|
||||
|
||||
async function submitForm() {
|
||||
const mainData = await getFormData();
|
||||
const subData = await getSubFormAndTableData();
|
||||
// 工作进展子表当前未渲染时 ref 为空,提交主表即可;后续恢复子表时仍走原校验取数逻辑。
|
||||
const subData = dqInspectProgressTableRef.value ? await getSubFormAndTableData() : {};
|
||||
const values = Object.assign({}, dbData, mainData, subData);
|
||||
console.log('表单提交数据', values)
|
||||
const isUpdate = values.id ? true : false
|
||||
@@ -322,6 +350,8 @@
|
||||
return {
|
||||
dqInspectProgressTableRef,
|
||||
dqInspectProgressTable,
|
||||
problemTreeData,
|
||||
loadingProblemOptions,
|
||||
validatorRules,
|
||||
validateInfos,
|
||||
activeKey,
|
||||
|
||||
Reference in New Issue
Block a user