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