日计划管理模块接口调试

This commit is contained in:
BianLzhaoMin 2025-12-29 18:43:38 +08:00
parent 717c31f21f
commit 4d59cb2325
6 changed files with 271 additions and 97 deletions

View File

@ -44,3 +44,12 @@ export function delDailyPlanAPI(data) {
data, data,
}) })
} }
// 日计划管理- 获取日计划详情
export function getDailyPlanDetailAPI(data) {
return request({
url: '/dayPlan/getDayPlanById',
method: 'GET',
params: data,
})
}

View File

@ -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 },

View File

@ -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('保存成功')

View File

@ -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: '',

View File

@ -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' },
] ]
// //

View File

@ -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">