日计划管理模块接口调试
This commit is contained in:
parent
717c31f21f
commit
4d59cb2325
|
|
@ -44,3 +44,12 @@ export function delDailyPlanAPI(data) {
|
|||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 日计划管理- 获取日计划详情
|
||||
export function getDailyPlanDetailAPI(data) {
|
||||
return request({
|
||||
url: '/dayPlan/getDayPlanById',
|
||||
method: 'GET',
|
||||
params: data,
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,21 +60,77 @@ export const tableColumns = [
|
|||
{ prop: 'planMajorName', label: '专业', fixed: true },
|
||||
{ prop: 'projectName', label: '项目名称', fixed: true },
|
||||
{ prop: 'workContent', label: '工作任务' },
|
||||
{ prop: 'riskLevelName', label: '风险等级' },
|
||||
{ prop: 'categoryName', label: '计划工作量(基)' },
|
||||
{ prop: 'riskLevel', label: '风险等级' },
|
||||
{ prop: 'plannedWorkload', label: '计划工作量(基)' },
|
||||
]
|
||||
export const tableColumns_1 = [
|
||||
{ prop: 'stationName', label: '拟投入作业人员数量', fixed: false },
|
||||
{ prop: 'majorName', label: '拟投入作业人员姓名', fixed: false },
|
||||
{ prop: 'businessTypeName', label: '拟投入车辆', fixed: false },
|
||||
{ prop: 'projectName', label: '实际投入作业人员数量', fixed: false },
|
||||
{ prop: 'workTask', label: '实际投入作业人员姓名', fixed: false },
|
||||
{ prop: 'riskLevelName', label: '实际投入车辆', fixed: false },
|
||||
{ prop: 'categoryName', label: '实际完成工作量明细', fixed: false },
|
||||
{ prop: 'categoryName', label: '实际完成工作量(基)', fixed: false },
|
||||
{ prop: 'categoryName', label: '完成比例', fixed: false },
|
||||
{ prop: 'categoryName', label: '作业计划完成情况', fixed: false },
|
||||
{ prop: 'categoryName', label: '计划变更及未完成情况说明', fixed: false },
|
||||
{
|
||||
prop: 'stationName',
|
||||
label: '拟投入作业人员数量',
|
||||
fixed: false,
|
||||
|
||||
formatter: (row) => {
|
||||
return row.proposedPersonnelList?.filter((item) => item.dataSource == 0).length || ''
|
||||
},
|
||||
},
|
||||
{
|
||||
prop: 'majorName',
|
||||
label: '拟投入作业人员姓名',
|
||||
fixed: false,
|
||||
width: '180',
|
||||
formatter: (row) => {
|
||||
return (
|
||||
row.proposedPersonnelList
|
||||
?.filter((item) => item.dataSource == 0)
|
||||
.map((item) => item.name)
|
||||
.join(',') || ''
|
||||
)
|
||||
},
|
||||
},
|
||||
{
|
||||
prop: 'proposedLongTimeCar',
|
||||
label: '拟投入车辆',
|
||||
fixed: false,
|
||||
width: '180',
|
||||
formatter: (row) => {
|
||||
return `长租车${row.proposedLongTimeCar}辆,临租车${row.proposedTemporaryCar}辆` || ''
|
||||
},
|
||||
},
|
||||
{
|
||||
prop: 'projectName',
|
||||
label: '实际投入作业人员数量',
|
||||
fixed: false,
|
||||
formatter: (row) => {
|
||||
return row.proposedPersonnelList?.filter((item) => item.dataSource == 1).length || ''
|
||||
},
|
||||
},
|
||||
{
|
||||
prop: 'workTask',
|
||||
label: '实际投入作业人员姓名',
|
||||
fixed: false,
|
||||
formatter: (row) => {
|
||||
return (
|
||||
row.proposedPersonnelList
|
||||
?.filter((item) => item.dataSource == 1)
|
||||
.map((item) => item.name)
|
||||
.join(',') || ''
|
||||
)
|
||||
},
|
||||
},
|
||||
{
|
||||
prop: 'actualLongTimeCar',
|
||||
label: '实际投入车辆',
|
||||
fixed: false,
|
||||
formatter: (row) => {
|
||||
return `长租车${row.actualLongTimeCar}辆,临租车${row.actualTemporaryCar}辆` || ''
|
||||
},
|
||||
},
|
||||
{ prop: 'actualWorkContent', label: '实际完成工作内容', fixed: false },
|
||||
{ prop: 'actualWorkload', label: '实际完成工作量(基)', fixed: false },
|
||||
{ prop: 'completionPercentage', label: '完成比例', fixed: false },
|
||||
|
||||
{ prop: 'planCompletionStatus', label: '作业计划完成情况', fixed: false },
|
||||
{ prop: 'planChanges', label: '计划变更及未完成情况说明', fixed: false },
|
||||
]
|
||||
export const tableColumns_2 = [
|
||||
{ prop: 'stationName', label: '拟投入高处作业人员数量', fixed: false },
|
||||
|
|
|
|||
|
|
@ -174,7 +174,7 @@ import {
|
|||
} from 'vue'
|
||||
import { useRoute, useRouter } from 'vue-router'
|
||||
import { getPersonnelCommonListAPI } from '@/api/common.js'
|
||||
import { updateDailyPlanAPI } from '@/api/planMange/dailyPlan.js'
|
||||
import { updateDailyPlanAPI, getDailyPlanDetailAPI } from '@/api/planMange/dailyPlan.js'
|
||||
import { Search } from '@element-plus/icons-vue'
|
||||
import { useOptions } from '@/hooks/useOptions'
|
||||
import ComButton from '@/components/ComButton/index.vue'
|
||||
|
|
@ -278,21 +278,21 @@ const getRepairFormData = () => ({
|
|||
plannedWorkload: null, // 计划工作量
|
||||
highAltitudePersonnelList: [], // 拟投入高处作业人员(数组)
|
||||
groundPersonnelList: [], // 拟投入地面作业人员(数组)
|
||||
skilledWorkerNum: null, // 计划投入熟练工人员数量
|
||||
skilledWorkerDay: null, // 计划投入工日(熟练工)
|
||||
auxiliaryWorkerNum: null, // 计划投入辅助工人员数量
|
||||
auxiliaryWorkerDay: null, // 计划投入工日(辅助工)
|
||||
proposedProficientPersonnel: null, // 计划投入熟练工人员数量
|
||||
proposedProficientDay: null, // 计划投入工日(熟练工)
|
||||
proposedAssistancePersonnel: null, // 计划投入辅助工人员数量
|
||||
proposedAssistanceDay: null, // 计划投入工日(辅助工)
|
||||
proposedLongTimeCar: null, // 拟投入长租车
|
||||
proposedTemporaryCar: null, // 拟投入临租车
|
||||
proposedSubcontractedCar: null, // 拟投入分包车
|
||||
proposedSubCar: null, // 拟投入分包车
|
||||
// 实际完成情况
|
||||
actualHighAltitudePersonnelList: [], // 实际投入高处作业人员(数组)
|
||||
actualGroundPersonnelList: [], // 实际投入地面作业人员(数组)
|
||||
actualSkilledWorkerNum: null, // 实际投入检修熟练工数量
|
||||
actualAuxiliaryWorkerNum: null, // 实际投入检修辅助工数量
|
||||
actualProficientPersonnel: null, // 实际投入检修熟练工数量
|
||||
actualAssistancePersonnel: null, // 实际投入检修辅助工数量
|
||||
actualLongTimeCar: null, // 实际投入长租车
|
||||
actualTemporaryCar: null, // 实际投入临租车
|
||||
actualSubcontractedCar: null, // 实际投入分包车
|
||||
actualSubCar: null, // 实际投入分包车
|
||||
actualWorkloadList: [
|
||||
{
|
||||
workloadCategoryId: '',
|
||||
|
|
@ -366,26 +366,69 @@ const onSubmit = async () => {
|
|||
// 校验通过,继续执行后续代码
|
||||
const proposedPersonnelList = []
|
||||
|
||||
formData.value.planPersonnelList.forEach((item) => {
|
||||
proposedPersonnelList.push({
|
||||
dayPlanId: route.query.id,
|
||||
inspectionStationName: item.inspectionStationName,
|
||||
personnelld: item.id,
|
||||
name: item.name,
|
||||
dataSource: 0,
|
||||
})
|
||||
})
|
||||
formData.value.actualPersonnelList.forEach((item) => {
|
||||
proposedPersonnelList.push({
|
||||
dayPlanId: route.query.id,
|
||||
inspectionStationName: item.inspectionStationName,
|
||||
personnelld: item.id,
|
||||
name: item.name,
|
||||
dataSource: 1,
|
||||
})
|
||||
})
|
||||
const type = dayPlanType.value
|
||||
|
||||
// 组装参数:排除基本信息字段,只提交投入资源情况
|
||||
if (type === '0' || type === 0) {
|
||||
// 运行类型:拟投入/实际投入作业人员
|
||||
;(formData.value.planPersonnelList || []).forEach((item) => {
|
||||
proposedPersonnelList.push({
|
||||
dayPlanId: route.query.id,
|
||||
inspectionStationName: item.inspectionStationName,
|
||||
personnelld: item.id,
|
||||
name: item.name,
|
||||
dataSource: 0, // 拟投入作业人员
|
||||
})
|
||||
})
|
||||
;(formData.value.actualPersonnelList || []).forEach((item) => {
|
||||
proposedPersonnelList.push({
|
||||
dayPlanId: route.query.id,
|
||||
inspectionStationName: item.inspectionStationName,
|
||||
personnelld: item.id,
|
||||
name: item.name,
|
||||
dataSource: 1, // 实际入作业人员
|
||||
})
|
||||
})
|
||||
} else if (type === '1' || type === 1) {
|
||||
// 检修类型:高处/地面,拟投入 & 实际投入
|
||||
;(formData.value.highAltitudePersonnelList || []).forEach((item) => {
|
||||
proposedPersonnelList.push({
|
||||
dayPlanId: route.query.id,
|
||||
inspectionStationName: item.inspectionStationName,
|
||||
personnelld: item.id,
|
||||
name: item.name,
|
||||
dataSource: 2, // 拟投入高处作业人员
|
||||
})
|
||||
})
|
||||
;(formData.value.groundPersonnelList || []).forEach((item) => {
|
||||
proposedPersonnelList.push({
|
||||
dayPlanId: route.query.id,
|
||||
inspectionStationName: item.inspectionStationName,
|
||||
personnelld: item.id,
|
||||
name: item.name,
|
||||
dataSource: 3, // 拟投入地面作业人员
|
||||
})
|
||||
})
|
||||
;(formData.value.actualHighAltitudePersonnelList || []).forEach((item) => {
|
||||
proposedPersonnelList.push({
|
||||
dayPlanId: route.query.id,
|
||||
inspectionStationName: item.inspectionStationName,
|
||||
personnelld: item.id,
|
||||
name: item.name,
|
||||
dataSource: 4, // 实际投入高处作业人员
|
||||
})
|
||||
})
|
||||
;(formData.value.actualGroundPersonnelList || []).forEach((item) => {
|
||||
proposedPersonnelList.push({
|
||||
dayPlanId: route.query.id,
|
||||
inspectionStationName: item.inspectionStationName,
|
||||
personnelld: item.id,
|
||||
name: item.name,
|
||||
dataSource: 5, // 实际投入地面作业人员
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
// 组装参数:排除基本信息和仅前端使用的字段
|
||||
const {
|
||||
inspectionStationName,
|
||||
projectName,
|
||||
|
|
@ -393,13 +436,21 @@ const onSubmit = async () => {
|
|||
dayPlan,
|
||||
planPersonnelList,
|
||||
actualPersonnelList,
|
||||
highAltitudePersonnelList,
|
||||
groundPersonnelList,
|
||||
actualHighAltitudePersonnelList,
|
||||
actualGroundPersonnelList,
|
||||
actualPersonnel,
|
||||
planPersonnel,
|
||||
proposedLongTimeCar,
|
||||
actualWorkloadList,
|
||||
...submitData
|
||||
} = formData.value
|
||||
|
||||
submitData.proposedPersonnelList = proposedPersonnelList
|
||||
submitData.workloadList = formData.value.actualWorkloadList
|
||||
|
||||
console.log('submitData(日计划提交参数)', submitData)
|
||||
// 暂不调用接口,后续再接入:
|
||||
const result = await updateDailyPlanAPI(submitData)
|
||||
if (result.code === 200) {
|
||||
proxy.$modal.msgSuccess('保存成功')
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@
|
|||
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="7">
|
||||
<el-form-item prop="skilledWorkerNum">
|
||||
<el-form-item prop="proposedProficientPersonnel">
|
||||
<template #label>
|
||||
<div style="display: flex; flex-direction: column">
|
||||
<span>计划投入熟练工人员数量</span>
|
||||
|
|
@ -92,28 +92,32 @@
|
|||
maxlength="7"
|
||||
show-word-limit
|
||||
placeholder="熟练工人员数量"
|
||||
:model-value="formData.skilledWorkerNum"
|
||||
@update:model-value="(val) => updateField('skilledWorkerNum', val)"
|
||||
:model-value="formData.proposedProficientPersonnel"
|
||||
@update:model-value="
|
||||
(val) => updateField('proposedProficientPersonnel', val)
|
||||
"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="5">
|
||||
<el-form-item
|
||||
label="计划投入工日"
|
||||
prop="skilledWorkerDay"
|
||||
prop="proposedProficientDay"
|
||||
label-width="120"
|
||||
>
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="7"
|
||||
placeholder="工日"
|
||||
:model-value="formData.skilledWorkerDay"
|
||||
@update:model-value="(val) => updateField('skilledWorkerDay', val)"
|
||||
:model-value="formData.proposedProficientDay"
|
||||
@update:model-value="
|
||||
(val) => updateField('proposedProficientDay', val)
|
||||
"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="7">
|
||||
<el-form-item prop="auxiliaryWorkerNum">
|
||||
<el-form-item prop="proposedAssistancePersonnel">
|
||||
<template #label>
|
||||
<div style="display: flex; flex-direction: column">
|
||||
<span>计划投入辅助工人员数量</span>
|
||||
|
|
@ -133,9 +137,9 @@
|
|||
maxlength="7"
|
||||
show-word-limit
|
||||
placeholder="辅助工人员数量"
|
||||
:model-value="formData.auxiliaryWorkerNum"
|
||||
:model-value="formData.proposedAssistancePersonnel"
|
||||
@update:model-value="
|
||||
(val) => updateField('auxiliaryWorkerNum', val)
|
||||
(val) => updateField('proposedAssistancePersonnel', val)
|
||||
"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
|
@ -143,16 +147,16 @@
|
|||
<el-col :span="5">
|
||||
<el-form-item
|
||||
label="计划投入工日"
|
||||
prop="auxiliaryWorkerDay"
|
||||
prop="proposedAssistanceDay"
|
||||
label-width="120"
|
||||
>
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="7"
|
||||
placeholder="工日"
|
||||
:model-value="formData.auxiliaryWorkerDay"
|
||||
:model-value="formData.proposedAssistanceDay"
|
||||
@update:model-value="
|
||||
(val) => updateField('auxiliaryWorkerDay', val)
|
||||
(val) => updateField('proposedAssistanceDay', val)
|
||||
"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
|
@ -201,16 +205,14 @@
|
|||
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="拟投入分包车" prop="proposedSubcontractedCar">
|
||||
<el-form-item label="拟投入分包车" prop="proposedSubCar">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="7"
|
||||
show-word-limit
|
||||
placeholder="请输入分包车数量"
|
||||
:model-value="formData.proposedSubcontractedCar"
|
||||
@update:model-value="
|
||||
(val) => updateField('proposedSubcontractedCar', val)
|
||||
"
|
||||
:model-value="formData.proposedSubCar"
|
||||
@update:model-value="(val) => updateField('proposedSubCar', val)"
|
||||
>
|
||||
<template #suffix>
|
||||
<span class="input-suffix">辆</span>
|
||||
|
|
@ -283,7 +285,7 @@
|
|||
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="actualSkilledWorkerNum">
|
||||
<el-form-item prop="actualProficientPersonnel">
|
||||
<template #label>
|
||||
<div style="display: flex; flex-direction: column">
|
||||
<span>实际投入检修熟练工数量</span>
|
||||
|
|
@ -303,16 +305,16 @@
|
|||
maxlength="7"
|
||||
show-word-limit
|
||||
placeholder="熟练工人员数量"
|
||||
:model-value="formData.actualSkilledWorkerNum"
|
||||
:model-value="formData.actualProficientPersonnel"
|
||||
@update:model-value="
|
||||
(val) => updateField('actualSkilledWorkerNum', val)
|
||||
(val) => updateField('actualProficientPersonnel', val)
|
||||
"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="12">
|
||||
<el-form-item prop="actualAuxiliaryWorkerNum">
|
||||
<el-form-item prop="actualAssistancePersonnel">
|
||||
<template #label>
|
||||
<div style="display: flex; flex-direction: column">
|
||||
<span>实际投入检修辅助工数量</span>
|
||||
|
|
@ -332,9 +334,9 @@
|
|||
maxlength="7"
|
||||
show-word-limit
|
||||
placeholder="辅助工人员数量"
|
||||
:model-value="formData.actualAuxiliaryWorkerNum"
|
||||
:model-value="formData.actualAssistancePersonnel"
|
||||
@update:model-value="
|
||||
(val) => updateField('actualAuxiliaryWorkerNum', val)
|
||||
(val) => updateField('actualAssistancePersonnel', val)
|
||||
"
|
||||
/>
|
||||
</el-form-item>
|
||||
|
|
@ -381,16 +383,14 @@
|
|||
|
||||
<el-row :gutter="24">
|
||||
<el-col :span="12">
|
||||
<el-form-item label="实际投入分包车" prop="actualSubcontractedCar">
|
||||
<el-form-item label="实际投入分包车" prop="actualSubCar">
|
||||
<el-input
|
||||
clearable
|
||||
maxlength="7"
|
||||
show-word-limit
|
||||
placeholder="请输入分包车数量"
|
||||
:model-value="formData.actualSubcontractedCar"
|
||||
@update:model-value="
|
||||
(val) => updateField('actualSubcontractedCar', val)
|
||||
"
|
||||
:model-value="formData.actualSubCar"
|
||||
@update:model-value="(val) => updateField('actualSubCar', val)"
|
||||
>
|
||||
<template #suffix>
|
||||
<span class="input-suffix">辆</span>
|
||||
|
|
@ -596,10 +596,9 @@ const { options: planWorkLoadCategoryOptions } = useOptions(
|
|||
|
||||
// 作业计划完成情况选项
|
||||
const planCompletionStatusOptions = [
|
||||
{ label: '已完成', value: '1' },
|
||||
{ label: '部分完成', value: '2' },
|
||||
{ label: '未完成', value: '3' },
|
||||
{ label: '已取消', value: '4' },
|
||||
{ label: '完成', value: '完成' },
|
||||
{ label: '进行中', value: '进行中' },
|
||||
{ label: '未完成', value: '未完成' },
|
||||
]
|
||||
|
||||
// 更新表单字段
|
||||
|
|
@ -718,19 +717,19 @@ const rules = computed(() => ({
|
|||
groundPersonnelList: [
|
||||
{ required: true, message: '请选择拟投入地面作业人员', trigger: 'change' },
|
||||
],
|
||||
skilledWorkerNum: [
|
||||
proposedProficientPersonnel: [
|
||||
{ required: true, message: '请输入计划投入熟练工人员数量', trigger: 'blur' },
|
||||
{ pattern: nonNegativeIntegerPattern, message: '请输入非负整数', trigger: 'blur' },
|
||||
],
|
||||
skilledWorkerDay: [
|
||||
proposedProficientDay: [
|
||||
{ required: true, message: '请输入计划投入工日', trigger: 'blur' },
|
||||
{ pattern: positiveIntegerPattern, message: '请输入正整数', trigger: 'blur' },
|
||||
],
|
||||
auxiliaryWorkerNum: [
|
||||
proposedAssistancePersonnel: [
|
||||
{ required: true, message: '请输入计划投入辅助工人员数量', trigger: 'blur' },
|
||||
{ pattern: nonNegativeIntegerPattern, message: '请输入非负整数', trigger: 'blur' },
|
||||
],
|
||||
auxiliaryWorkerDay: [
|
||||
proposedAssistanceDay: [
|
||||
{ required: true, message: '请输入计划投入工日', trigger: 'blur' },
|
||||
{ pattern: positiveIntegerPattern, message: '请输入正整数', trigger: 'blur' },
|
||||
],
|
||||
|
|
@ -742,7 +741,7 @@ const rules = computed(() => ({
|
|||
{ required: true, message: '请输入拟投入临租车数量', trigger: 'blur' },
|
||||
{ pattern: nonNegativeIntegerPattern, message: '请输入非负整数', trigger: 'blur' },
|
||||
],
|
||||
proposedSubcontractedCar: [
|
||||
proposedSubCar: [
|
||||
{ required: true, message: '请输入拟投入分包车数量', trigger: 'blur' },
|
||||
{ pattern: nonNegativeIntegerPattern, message: '请输入非负整数', trigger: 'blur' },
|
||||
],
|
||||
|
|
@ -757,11 +756,11 @@ const actualRules = computed(() => {
|
|||
actualGroundPersonnelList: [
|
||||
{ required: true, message: '请选择实际投入地面作业人员', trigger: 'change' },
|
||||
],
|
||||
actualSkilledWorkerNum: [
|
||||
actualProficientPersonnel: [
|
||||
{ required: true, message: '请输入实际投入检修熟练工数量', trigger: 'blur' },
|
||||
{ pattern: nonNegativeIntegerPattern, message: '请输入非负整数', trigger: 'blur' },
|
||||
],
|
||||
actualAuxiliaryWorkerNum: [
|
||||
actualAssistancePersonnel: [
|
||||
{ required: true, message: '请输入实际投入检修辅助工数量', trigger: 'blur' },
|
||||
{ pattern: nonNegativeIntegerPattern, message: '请输入非负整数', trigger: 'blur' },
|
||||
],
|
||||
|
|
@ -773,7 +772,7 @@ const actualRules = computed(() => {
|
|||
{ required: true, message: '请输入实际投入临租车数量', trigger: 'blur' },
|
||||
{ pattern: nonNegativeIntegerPattern, message: '请输入非负整数', trigger: 'blur' },
|
||||
],
|
||||
actualSubcontractedCar: [
|
||||
actualSubCar: [
|
||||
{ required: true, message: '请输入实际投入分包车数量', trigger: 'blur' },
|
||||
{ pattern: nonNegativeIntegerPattern, message: '请输入非负整数', trigger: 'blur' },
|
||||
],
|
||||
|
|
@ -916,7 +915,7 @@ const onCancelActualCompletion = () => {
|
|||
actualAuxiliaryWorkerNum: null,
|
||||
actualLongTimeCar: null,
|
||||
actualTemporaryCar: null,
|
||||
actualSubcontractedCar: null,
|
||||
actualSubCar: null,
|
||||
actualWorkloadList: [
|
||||
{
|
||||
workloadCategoryId: '',
|
||||
|
|
|
|||
|
|
@ -224,15 +224,15 @@
|
|||
@update:model-value="
|
||||
(val) => updateField('planCompletionStatus', val)
|
||||
"
|
||||
placeholder="请选择作业计划完成情况"
|
||||
clearable
|
||||
style="width: 100%"
|
||||
placeholder="请选择作业计划完成情况"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in planCompletionStatusOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
v-for="item in planCompletionStatusOptions"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
|
@ -301,10 +301,9 @@ const showActualCompletion = ref(false)
|
|||
|
||||
// 作业计划完成情况选项
|
||||
const planCompletionStatusOptions = [
|
||||
{ label: '已完成', value: '1' },
|
||||
{ label: '部分完成', value: '2' },
|
||||
{ label: '未完成', value: '3' },
|
||||
{ label: '已取消', value: '4' },
|
||||
{ label: '完成', value: '完成' },
|
||||
{ label: '进行中', value: '进行中' },
|
||||
{ label: '未完成', value: '未完成' },
|
||||
]
|
||||
|
||||
// 更新表单字段
|
||||
|
|
|
|||
|
|
@ -7,7 +7,9 @@
|
|||
<el-radio-button label="项目部" value="2" />
|
||||
</el-radio-group>
|
||||
|
||||
<ComButton type="info" plain icon="Download"> 下载统计表 </ComButton>
|
||||
<ComButton type="info" plain icon="Download" @click="onDownloadStatistic">
|
||||
下载统计表
|
||||
</ComButton>
|
||||
</el-card>
|
||||
<!-- 日计划填报管理列表 -->
|
||||
<ComTable
|
||||
|
|
@ -23,12 +25,12 @@
|
|||
>
|
||||
<template #toolbar>
|
||||
<ComButton type="primary" icon="Plus" @click="onHandleAdd">新增日计划</ComButton>
|
||||
<ComButton type="primary" icon="Plus" @click="onHandleEdit">编辑调试</ComButton>
|
||||
<ComButton
|
||||
plain
|
||||
type="info"
|
||||
icon="Download"
|
||||
v-if="['检修', '项目部'].includes(tableType)"
|
||||
@click="onDownloadWorkloadSummary"
|
||||
v-if="['1', '2'].includes(tableType)"
|
||||
>
|
||||
下载工作量统计表
|
||||
</ComButton>
|
||||
|
|
@ -50,8 +52,10 @@
|
|||
<script setup name="MonthlyPlan">
|
||||
import { ref, computed, getCurrentInstance } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { listPlanAPI, delPlanAPI } from '@/api/planMange/plan.js'
|
||||
import { listDailyPlanAPI, delDailyPlanAPI, addDailyPlanAPI } from '@/api/planMange/dailyPlan.js'
|
||||
import useDictStore from '@/store/modules/dict'
|
||||
import { selectDictLabel } from '@/utils/ruoyi'
|
||||
import dayjs from 'dayjs'
|
||||
import config from './config'
|
||||
import ComTable from '@/components/ComTable/index.vue'
|
||||
import ComButton from '@/components/ComButton/index.vue'
|
||||
|
|
@ -60,8 +64,15 @@ import AddForm from './addForm.vue'
|
|||
|
||||
const router = useRouter()
|
||||
const { proxy } = getCurrentInstance()
|
||||
const dictStore = useDictStore()
|
||||
|
||||
const { tableColumns, tableColumns_1, tableColumns_2, dialogConfig, buildFormColumns } = config
|
||||
const {
|
||||
tableColumns: baseTableColumns,
|
||||
tableColumns_1,
|
||||
tableColumns_2,
|
||||
dialogConfig,
|
||||
buildFormColumns,
|
||||
} = config
|
||||
|
||||
const comTableRef = ref(null)
|
||||
const addFormRef = ref(null)
|
||||
|
|
@ -69,9 +80,34 @@ const tableType = ref('0')
|
|||
|
||||
// 搜索表单配置(当前月计划场景暂不依赖下拉接口,直接使用静态配置)
|
||||
const formColumns = computed(() => buildFormColumns())
|
||||
|
||||
// 创建动态 formatter 函数,每次执行时从 store 获取最新的字典数据
|
||||
const createDynamicDictFormatter = (dictType, fieldName = null) => {
|
||||
return (row, column, cellValue) => {
|
||||
const value = fieldName ? row[fieldName] : cellValue
|
||||
// 每次执行时都从 store 获取最新的字典数据
|
||||
const dictData = dictStore.getDict(dictType) || []
|
||||
return selectDictLabel(dictData, value)
|
||||
}
|
||||
}
|
||||
|
||||
// 构建表格列配置,添加字典映射的 formatter
|
||||
const tableColumns = computed(() => {
|
||||
return baseTableColumns.map((column) => {
|
||||
if (column.prop === 'riskLevel') {
|
||||
return {
|
||||
...column,
|
||||
// 使用动态 formatter,每次执行时都会获取最新的字典数据
|
||||
formatter: createDynamicDictFormatter('plan_risk_level', 'riskLevel'),
|
||||
}
|
||||
}
|
||||
return column
|
||||
})
|
||||
})
|
||||
|
||||
const initTableColumns = computed(() => {
|
||||
if (tableType.value === '0') return [...tableColumns, ...tableColumns_1]
|
||||
if (tableType.value !== '0') return [...tableColumns, ...tableColumns_2]
|
||||
if (tableType.value === '0') return [...tableColumns.value, ...tableColumns_1]
|
||||
if (tableType.value !== '0') return [...tableColumns.value, ...tableColumns_2]
|
||||
})
|
||||
|
||||
// 操作列
|
||||
|
|
@ -119,7 +155,7 @@ const actionColumns = computed(() => [
|
|||
type: 'danger',
|
||||
link: true,
|
||||
handler: (row) => {
|
||||
proxy.$modal.confirm('是否确认删除该月计划?').then(async () => {
|
||||
proxy.$modal.confirm('是否确认删除该日计划?').then(async () => {
|
||||
const result = await delDailyPlanAPI({ dayPlanId: row.dayPlanId })
|
||||
if (result.code === 200) {
|
||||
proxy.$modal.msgSuccess('删除成功')
|
||||
|
|
@ -173,6 +209,30 @@ const onHandleEdit = () => {
|
|||
},
|
||||
})
|
||||
}
|
||||
|
||||
// 下载统计表
|
||||
const onDownloadStatistic = () => {
|
||||
proxy.download(
|
||||
'/download/dayPlanStatistics',
|
||||
{
|
||||
dayPlanType: tableType.value,
|
||||
startDate: dayjs().startOf('month').format('YYYY-MM-DD'),
|
||||
endDate: dayjs().endOf('month').format('YYYY-MM-DD'),
|
||||
},
|
||||
`日计划统计表.xlsx`,
|
||||
)
|
||||
}
|
||||
|
||||
// 下载工作量统计表
|
||||
const onDownloadWorkloadSummary = () => {
|
||||
proxy.download(
|
||||
'/monthlyPlan/exportWorkloadSummary',
|
||||
{
|
||||
dayPlanType: tableType.value,
|
||||
},
|
||||
`${tableType.value === '1' ? '检修' : '项目部'}统计表.xlsx`,
|
||||
)
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
|
|
|
|||
Loading…
Reference in New Issue