!47 style(inspectProgress): 进展表单对齐BPM表单样式
* style(inspectProgress): 进展表单对齐BPM表单样式 * style(xispeak): 反馈表单对齐BPM表单样式 * perf(xispeak): 反馈统计查询由逐条请求改为批量接口
This commit is contained in:
@@ -112,7 +112,7 @@
|
||||
updateLaunchType,
|
||||
saveOrUpdateDict,
|
||||
withDrawXiSpeak,
|
||||
bgXiSpeakFeedbackList,
|
||||
queryFeedbackCounts,
|
||||
} from './BgXiSpeak.api';
|
||||
|
||||
const FLOW_CODE = 'dev_bg_xi_speak_001';
|
||||
@@ -348,27 +348,18 @@
|
||||
const ids = collectAllIds(records);
|
||||
if (ids.length === 0) return;
|
||||
try {
|
||||
// 并行加载所有记录的反馈数据
|
||||
const results = await Promise.all(
|
||||
ids.map((id) =>
|
||||
bgXiSpeakFeedbackList({
|
||||
mainId: id,
|
||||
pageNo: 1,
|
||||
pageSize: 9999,
|
||||
column: 'createTime',
|
||||
order: 'desc',
|
||||
}).catch(() => null)
|
||||
)
|
||||
);
|
||||
// 构建 id -> { total, closed } 映射
|
||||
const res = await queryFeedbackCounts({ ids: ids.join(',') });
|
||||
const data = Array.isArray(res) ? res : res?.records || res?.result || [];
|
||||
const countsMap: Record<string, { total: number; closed: number }> = {};
|
||||
ids.forEach((id, index) => {
|
||||
const res = results[index];
|
||||
const list = Array.isArray(res) ? res : res?.records || [];
|
||||
const total = list.length;
|
||||
const closed = list.filter((item: any) => item.completionStatus == 1).length;
|
||||
countsMap[id] = { total, closed };
|
||||
});
|
||||
for (const item of data) {
|
||||
const id = item.mainId || item.id || item.main_id;
|
||||
if (id) {
|
||||
countsMap[id] = {
|
||||
total: item.total ?? item.implCount ?? 0,
|
||||
closed: item.closed ?? item.closedCount ?? 0,
|
||||
};
|
||||
}
|
||||
}
|
||||
const updateFn = (list) => {
|
||||
if (!list) return;
|
||||
for (const item of list) {
|
||||
|
||||
@@ -2,21 +2,21 @@
|
||||
<a-spin :spinning="confirmLoading">
|
||||
<JFormContainer :disabled="disabled">
|
||||
<template #detail>
|
||||
<a-form class="antd-modal-form" labelAlign="left" :labelCol="formItemLayout.labelCol" :wrapperCol="formItemLayout.wrapperCol" ref="formRef" :model="formData" :rules="validatorRules" name="BgXiSpeakFeedbackForm">
|
||||
<a-form class="antd-modal-form" labelAlign="left" :labelCol="labelCol" :wrapperCol="wrapperCol" ref="formRef" :model="formData" :rules="validatorRules" name="BgXiSpeakFeedbackForm">
|
||||
<!-- 基本信息 -->
|
||||
<a-divider orientation="left" plain>基本信息</a-divider>
|
||||
<a-row :gutter="[16, 0]">
|
||||
<a-col :span="12">
|
||||
<a-row class="form-content-row" :gutter="[12, 4]">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="反馈部门" name="responDeptid">
|
||||
<j-select-dept v-model:value="formData.responDeptid" :multiple="true" checkStrictly allow-clear @change="handleDeptChange" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="反馈人" name="responPersonid">
|
||||
<j-select-user v-model:value="formData.responPersonid" allow-clear @change="handleUserChange" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="反馈时间" name="responTime">
|
||||
<a-date-picker
|
||||
placeholder="请选择反馈时间"
|
||||
@@ -28,7 +28,7 @@
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="序号" name="num">
|
||||
<a-input-number v-model:value="formData.num" placeholder="请输入序号" style="width: 100%" allow-clear />
|
||||
</a-form-item>
|
||||
@@ -36,15 +36,13 @@
|
||||
</a-row>
|
||||
<!-- 措施内容 -->
|
||||
<a-divider orientation="left" plain>措施信息</a-divider>
|
||||
<a-row :gutter="[16, 0]">
|
||||
<a-row class="form-content-row" :gutter="[12, 4]">
|
||||
<a-col :span="24">
|
||||
<a-form-item label="具体措施" name="method">
|
||||
<a-textarea v-model:value="formData.method" placeholder="请输入措施内容" :rows="3" allow-clear></a-textarea>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="[16, 0]">
|
||||
<a-col :span="12">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="完成期限" name="deadline">
|
||||
<a-date-picker
|
||||
placeholder="请选择完成期限"
|
||||
@@ -55,13 +53,11 @@
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="成果形式" name="outcomeForm">
|
||||
<a-input v-model:value="formData.outcomeForm" placeholder="请输入成果形式" allow-clear></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="[16, 0]">
|
||||
<a-col :span="24">
|
||||
<a-form-item label="进展情况" v-bind="validateInfos.progress" name="progress">
|
||||
<a-textarea v-model:value="formData.progress" placeholder="请输入进展情况" :rows="3" allow-clear></a-textarea>
|
||||
@@ -70,13 +66,13 @@
|
||||
</a-row>
|
||||
<!-- 状态与落实 -->
|
||||
<a-divider orientation="left" plain>状态与落实</a-divider>
|
||||
<a-row :gutter="[16, 0]">
|
||||
<a-col :span="12">
|
||||
<a-row class="form-content-row" :gutter="[12, 4]">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="落实情况" name="implStatus">
|
||||
<a-input v-model:value="formData.implStatus" placeholder="请输入落实情况" allow-clear></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="完成状态" v-bind="validateInfos.completionStatus" name="completionStatus">
|
||||
<JDictSelectTag
|
||||
v-model:value="formData.completionStatus"
|
||||
@@ -87,9 +83,7 @@
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="[16, 0]">
|
||||
<a-col :span="12">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="是否报送上级报告" name="isReportedToHigher">
|
||||
<JDictSelectTag
|
||||
v-model:value="formData.isReportedToHigher"
|
||||
@@ -101,32 +95,26 @@
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="检查情况" name="checkStatus">
|
||||
<a-input v-model:value="formData.checkStatus" placeholder="请输入检查情况" allow-clear></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="[16, 0]">
|
||||
<a-col :span="24">
|
||||
<a-form-item label="落实计划" name="completionPlan">
|
||||
<a-textarea v-model:value="formData.completionPlan" placeholder="请输入落实计划" :rows="3" allow-clear></a-textarea>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="[16, 0]">
|
||||
<a-col :span="12">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="总措施号" name="sumMethodNum">
|
||||
<a-input v-model:value="formData.sumMethodNum" placeholder="请输入总措施号" allow-clear></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="措施数量" name="measureNum">
|
||||
<a-input-number v-model:value="formData.measureNum" placeholder="请输入措施数量" style="width: 100%" allow-clear />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<a-row :gutter="[16, 0]">
|
||||
<a-col :span="24">
|
||||
<a-form-item label="监督意见" name="inspectionAdvice">
|
||||
<a-textarea v-model:value="formData.inspectionAdvice" placeholder="请输入监督意见" :rows="3" allow-clear></a-textarea>
|
||||
@@ -135,8 +123,8 @@
|
||||
</a-row>
|
||||
<!-- 周期配置 -->
|
||||
<a-divider orientation="left" plain>周期配置</a-divider>
|
||||
<a-row :gutter="[16, 0]">
|
||||
<a-col :span="12">
|
||||
<a-row class="form-content-row" :gutter="[12, 4]">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="发起类型" name="launchType">
|
||||
<a-select v-model:value="formData.launchType" placeholder="请选择发起类型" allow-clear>
|
||||
<a-select-option :value="0">立即发起</a-select-option>
|
||||
@@ -144,7 +132,7 @@
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="周期类型" name="intervalType">
|
||||
<a-select v-model:value="formData.intervalType" placeholder="请选择周期类型" allow-clear>
|
||||
<a-select-option :value="1">日</a-select-option>
|
||||
@@ -155,12 +143,12 @@
|
||||
</a-select>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="周期任务数量" name="startCount">
|
||||
<a-input-number v-model:value="formData.startCount" placeholder="请输入周期任务数量" style="width: 100%" allow-clear />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="周期开始时间" name="startTime">
|
||||
<a-date-picker
|
||||
v-model:value="formData.startTime"
|
||||
@@ -234,10 +222,8 @@
|
||||
const props = defineProps({
|
||||
disabled: { type: Boolean, default: false },
|
||||
});
|
||||
const formItemLayout = {
|
||||
labelCol: { xs: { span: 24 }, sm: { span: 6 } },
|
||||
wrapperCol: { xs: { span: 24 }, sm: { span: 18 } },
|
||||
};
|
||||
const labelCol = { xs: { span: 24 }, sm: { span: 7 } };
|
||||
const wrapperCol = { xs: { span: 24 }, sm: { span: 17 } };
|
||||
|
||||
/**
|
||||
* 部门选择变化
|
||||
@@ -343,5 +329,35 @@
|
||||
<style lang="less" scoped>
|
||||
.antd-modal-form {
|
||||
padding: 14px;
|
||||
|
||||
:deep(.ant-form-item-label) {
|
||||
padding-bottom: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
:deep(.ant-form-item-label > label) {
|
||||
width: 100%;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
:deep(.ant-form-item-control),
|
||||
:deep(.ant-form-item-control-input),
|
||||
:deep(.ant-form-item-control-input-content) {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
.form-content-row {
|
||||
:deep(.ant-form-item) {
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
:deep(.ant-input),
|
||||
:deep(.ant-input-affix-wrapper),
|
||||
:deep(.ant-input-number),
|
||||
:deep(.ant-picker),
|
||||
:deep(.ant-select-selector) {
|
||||
min-height: 30px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -2,48 +2,48 @@
|
||||
<a-spin :spinning="confirmLoading">
|
||||
<JFormContainer :disabled="disabled">
|
||||
<template #detail>
|
||||
<a-form ref="formRef" class="antd-modal-form" :labelCol="labelCol" :wrapperCol="wrapperCol" name="DqInspectProgressForm">
|
||||
<a-row>
|
||||
<a-col :span="24">
|
||||
<a-form-item label="反馈部门ID" v-bind="validateInfos.feedbackDeptId" id="DqInspectProgressForm-feedbackDeptId" name="feedbackDeptId">
|
||||
<a-input v-model:value="formData.feedbackDeptId" placeholder="请输入反馈部门ID" allow-clear ></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="24">
|
||||
<a-form-item label="反馈部门名称" v-bind="validateInfos.feedbackDeptName" id="DqInspectProgressForm-feedbackDeptName" name="feedbackDeptName">
|
||||
<a-input v-model:value="formData.feedbackDeptName" placeholder="请输入反馈部门名称" allow-clear ></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="24">
|
||||
<a-form-item label="反馈人ID" v-bind="validateInfos.feedbackPersonId" id="DqInspectProgressForm-feedbackPersonId" name="feedbackPersonId">
|
||||
<a-input v-model:value="formData.feedbackPersonId" placeholder="请输入反馈人ID" allow-clear ></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="24">
|
||||
<a-form-item label="反馈人姓名" v-bind="validateInfos.feedbackPersonName" id="DqInspectProgressForm-feedbackPersonName" name="feedbackPersonName">
|
||||
<a-input v-model:value="formData.feedbackPersonName" placeholder="请输入反馈人姓名" allow-clear ></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="24">
|
||||
<a-form-item label="实际完成时间" v-bind="validateInfos.actualTime" id="DqInspectProgressForm-actualTime" name="actualTime">
|
||||
<a-date-picker placeholder="请选择实际完成时间" v-model:value="formData.actualTime" value-format="YYYY-MM-DD" style="width: 100%" allow-clear />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="24">
|
||||
<a-form-item label="工作进展" v-bind="validateInfos.workProgress" id="DqInspectProgressForm-workProgress" name="workProgress">
|
||||
<a-input v-model:value="formData.workProgress" placeholder="请输入工作进展" allow-clear ></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="24">
|
||||
<a-form-item label="进展状态" v-bind="validateInfos.bpmStatus" id="DqInspectProgressForm-bpmStatus" name="bpmStatus">
|
||||
<a-input v-model:value="formData.bpmStatus" placeholder="请输入进展状态" allow-clear ></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="24">
|
||||
<a-form-item label="整改措施任务ID" v-bind="validateInfos.mainId" id="DqInspectProgressForm-mainId" name="mainId">
|
||||
<a-input v-model:value="formData.mainId" placeholder="请输入整改措施任务ID" allow-clear ></a-input>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-form ref="formRef" class="antd-modal-form" labelAlign="left" :labelCol="labelCol" :wrapperCol="wrapperCol" name="DqInspectProgressForm">
|
||||
<a-row class="form-content-row" :gutter="[12, 4]">
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="反馈部门ID" v-bind="validateInfos.feedbackDeptId" id="DqInspectProgressForm-feedbackDeptId" name="feedbackDeptId">
|
||||
<a-input v-model:value="formData.feedbackDeptId" placeholder="请输入反馈部门ID" allow-clear />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="反馈部门名称" v-bind="validateInfos.feedbackDeptName" id="DqInspectProgressForm-feedbackDeptName" name="feedbackDeptName">
|
||||
<a-input v-model:value="formData.feedbackDeptName" placeholder="请输入反馈部门名称" allow-clear />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="反馈人ID" v-bind="validateInfos.feedbackPersonId" id="DqInspectProgressForm-feedbackPersonId" name="feedbackPersonId">
|
||||
<a-input v-model:value="formData.feedbackPersonId" placeholder="请输入反馈人ID" allow-clear />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="反馈人姓名" v-bind="validateInfos.feedbackPersonName" id="DqInspectProgressForm-feedbackPersonName" name="feedbackPersonName">
|
||||
<a-input v-model:value="formData.feedbackPersonName" placeholder="请输入反馈人姓名" allow-clear />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="实际完成时间" v-bind="validateInfos.actualTime" id="DqInspectProgressForm-actualTime" name="actualTime">
|
||||
<a-date-picker placeholder="请选择实际完成时间" v-model:value="formData.actualTime" value-format="YYYY-MM-DD" style="width: 100%" allow-clear />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="工作进展" v-bind="validateInfos.workProgress" id="DqInspectProgressForm-workProgress" name="workProgress">
|
||||
<a-input v-model:value="formData.workProgress" placeholder="请输入工作进展" allow-clear />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="进展状态" v-bind="validateInfos.bpmStatus" id="DqInspectProgressForm-bpmStatus" name="bpmStatus">
|
||||
<a-input v-model:value="formData.bpmStatus" placeholder="请输入进展状态" allow-clear />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :md="12">
|
||||
<a-form-item label="整改措施任务ID" v-bind="validateInfos.mainId" id="DqInspectProgressForm-mainId" name="mainId">
|
||||
<a-input v-model:value="formData.mainId" placeholder="请输入整改措施任务ID" allow-clear />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col v-if="showFlowSubmitButton" :span="24" style="width: 100%;text-align: center;">
|
||||
<a-button preIcon="ant-design:check-outlined" style="width: 126px" type="primary" @click="submitForm">提 交</a-button>
|
||||
</a-col>
|
||||
@@ -85,8 +85,8 @@
|
||||
mainId: '',
|
||||
});
|
||||
const { createMessage } = useMessage();
|
||||
const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 5 } });
|
||||
const wrapperCol = ref<any>({ xs: { span: 24 }, sm: { span: 16 } });
|
||||
const labelCol = ref<any>({ xs: { span: 24 }, sm: { span: 7 } });
|
||||
const wrapperCol = ref<any>({ xs: { span: 24 }, sm: { span: 17 } });
|
||||
const confirmLoading = ref<boolean>(false);
|
||||
//表单验证
|
||||
const validatorRules = reactive({
|
||||
@@ -212,5 +212,35 @@
|
||||
<style lang="less" scoped>
|
||||
.antd-modal-form {
|
||||
padding: 14px;
|
||||
|
||||
:deep(.ant-form-item-label) {
|
||||
padding-bottom: 0;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
:deep(.ant-form-item-label > label) {
|
||||
width: 100%;
|
||||
justify-content: flex-start;
|
||||
}
|
||||
|
||||
:deep(.ant-form-item-control),
|
||||
:deep(.ant-form-item-control-input),
|
||||
:deep(.ant-form-item-control-input-content) {
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
|
||||
.form-content-row {
|
||||
:deep(.ant-form-item) {
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
:deep(.ant-input),
|
||||
:deep(.ant-input-affix-wrapper),
|
||||
:deep(.ant-input-number),
|
||||
:deep(.ant-picker),
|
||||
:deep(.ant-select-selector) {
|
||||
min-height: 30px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user