<template>
|
<div class="app-container">
|
<el-container>
|
<el-header class="header-title">项目名称:{{ planInfoData.projectName }} ({{ planInfoData.planTime}} {{ planInfoData.planTimeFlag === 0 ? '月度计划' : planInfoData.planTimeFlag === 1 ? '季度计划' : '年度计划' }})</el-header>
|
<h4 style="text-align: center">项目代码:{{ planInfoData.projectCode }}</h4>
|
<el-main>
|
<el-card shadow="hover">
|
<el-row :gutter="20">
|
<el-col :span="24" class="mb-4">
|
<el-button type="primary" size="small" @click="handlePlanRecord" style="float: right; margin-bottom: 10px; margin-left: 10px">返回</el-button>
|
<!--项目计划项-->
|
<el-table :data="tableData" border stripe style="width: 100%; margin-bottom: 20px">
|
<el-table-column prop="index" label="序号" width="50" align="center">
|
<template #default="scope">
|
{{ scope.$index + 1 }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="taskName" label="事项名称" width="500" align="center">
|
<template #default="scope">
|
<el-input type="textarea" v-model="scope.row.title" placeholder="请输入" rows="3" readonly />
|
</template>
|
</el-table-column>
|
<el-table-column prop="startTime" label="计划开始时间" width="160" align="center" >
|
<template #default="scope">
|
<el-date-picker v-model="scope.row.startTime" type="date" placeholder="选择日期" size="small" style="width: 130px" :readonly="projectInfoData.managerFlag"/>
|
</template>
|
</el-table-column>
|
<el-table-column prop="endTime" label="计划完成时间" width="160" align="center" >
|
<template #default="scope">
|
<el-date-picker v-model="scope.row.endTime" type="date" placeholder="选择日期" size="small" style="width: 130px" :readonly="projectInfoData.managerFlag" />
|
</template>
|
</el-table-column>
|
<el-table-column :label="planInfoData.planTimeFlag === 0 ? '月度' : planInfoData.planTimeFlag === 1 ? '季度' : '年度' " align="center">
|
<template #default="scope">
|
<span>{{ planInfoData.planTime }}{{ planInfoData.planTimeFlag === 0 ? '月度' : planInfoData.planTimeFlag === 1 ? '季度' : '年度' }}</span>
|
</template>
|
</el-table-column>
|
<div v-if="!projectInfoData.managerFlag">
|
<el-table-column fixed="right" label="操作" align="center">
|
<template #default="scope">
|
<el-button size="small" @click="handleDelay(scope.$index)">延期</el-button>
|
<el-button size="small" type="danger" @click="handleReset(scope.$index)">重置</el-button>
|
</template>
|
</el-table-column>
|
</div>
|
</el-table>
|
<div style="display: flex; align-items: center;">
|
<h1 style="margin: 0;">
|
计划投资金额(万元):
|
</h1>
|
<el-input
|
placeholder="请输入投资金额"
|
style="flex: 1"
|
v-model="actualInvest"
|
clearable
|
:type="number"
|
@input="handleInput"
|
readonly>
|
</el-input>
|
</div>
|
|
<!--上级批复-->
|
<div style="margin-bottom: 10px; margin-top: 40px;">
|
<span style="font-size: 20px; font-weight: bold;">上级批复</span>
|
</div>
|
<el-table :data="departmentApprovalData" border stripe style="width: 100%; margin-bottom: 20px">
|
<el-table-column prop="index" label="序号" width="50" align="center">
|
<template #default="scope">
|
{{ scope.$index + 1 }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="title" label="事项名称" width="200" align="center" />
|
<el-table-column prop="departmentExamine" label="上级审核" width="130" align="center">
|
<template #default="scope" v-if="!projectInfoData.managerFlag">
|
{{ scope.row.departmentExamine === 0 ? '同意' : scope.row.departmentExamine === 1 ? '驳回' : '未审核' }}
|
</template>
|
<template v-if="projectInfoData.managerFlag" #default="scope">
|
<el-select v-model="scope.row.departmentExamine" placeholder="请选择" size="small" clearable>
|
<el-option label="同意" :value="0"></el-option>
|
<el-option label="驳回" :value="1"></el-option>
|
</el-select>
|
</template>
|
</el-table-column>
|
<el-table-column prop="departmentApproval" label="批复内容" width="160" align="center">
|
<template v-if="projectInfoData.managerFlag" #default="scope">
|
<el-input type="textarea" v-model="scope.row.departmentApproval" placeholder="请输入" rows="3" />
|
</template>
|
</el-table-column>
|
<el-table-column prop="departmentApprovalReply" label="批复回复" width="160" align="center">
|
<template #default="scope" v-if="!projectInfoData.managerFlag">
|
<el-input type="textarea" v-model="scope.row.departmentApprovalReply" placeholder="请输入" rows="3" />
|
</template>
|
</el-table-column>
|
<el-table-column prop="manageExamine" label="主管部门审核" width="130" align="center" >
|
<template #default="scope" v-if="!projectInfoData.managerFlag">
|
{{ scope.row.manageExamine === 0 ? '同意' : scope.row.manageExamine === 1 ? '驳回' : '未审核' }}
|
</template>
|
<template v-if="projectInfoData.managerFlag" #default="scope">
|
<el-select v-model="scope.row.manageExamine" placeholder="请选择" size="small" clearable>
|
<el-option label="同意" :value="0"></el-option>
|
<el-option label="驳回" :value="1"></el-option>
|
</el-select>
|
</template>
|
</el-table-column>
|
<el-table-column prop="manageApproval" label="批复内容" width="160" align="center">
|
<template v-if="projectInfoData.managerFlag" #default="scope">
|
<el-input type="textarea" v-model="scope.row.manageApproval" placeholder="请输入" rows="3" />
|
</template>
|
</el-table-column>
|
<el-table-column prop="manageApprovalReply" label="批复回复" width="160" align="center">
|
<template #default="scope" v-if="!projectInfoData.managerFlag">
|
<el-input type="textarea" v-model="scope.row.manageApprovalReply" placeholder="请输入" rows="3" />
|
</template>
|
</el-table-column>
|
<el-table-column fixed="right" label="操作" align="center" width="200">
|
<template #default="scope">
|
<el-button v-show="!projectInfoData.managerFlag" size="small" @click="handleReply(scope.$index)">回复</el-button>
|
<el-button v-show="!projectInfoData.managerFlag" size="small" type="danger" @click="handleReset(scope.$index)">重置</el-button>
|
<el-button v-show="projectInfoData.managerFlag" size="small" @click="handleSave(scope.$index)">保存</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
|
|
<!--计划日志-->
|
<div style="margin-bottom: 10px; margin-top: 40px;">
|
<span style="font-size: 20px; font-weight: bold;">计划日志</span>
|
</div>
|
<el-table :data="planLogData" border stripe style="width: 100%; margin-bottom: 20px">
|
<el-table-column prop="index" label="序号" width="50" align="center">
|
<template #default="scope">
|
{{ scope.$index + 1 }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="title" label="事项名称" width="200" align="center" />
|
<el-table-column prop="departmentExamine" label="上级审核" width="100" align="center" >
|
<template #default="scope">
|
{{ scope.row.departmentExamine === 0 ? '同意' : scope.row.departmentExamine === 1 ? '驳回' : '未审核' }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="departmentApproval" label="批复内容" width="160" align="center" />
|
<el-table-column prop="departmentApprovalReply" label="批复回复" width="160" align="center" />
|
<el-table-column prop="manageExamine" label="主管部门审核" width="100" align="center" >
|
<template #default="scope">
|
{{ scope.row.manageExamine === 0 ? '同意' : scope.row.manageExamine === 1 ? '驳回' : '未审核' }}
|
</template>
|
</el-table-column>
|
<el-table-column prop="manageApproval" label="批复内容" width="160" align="center" />
|
<el-table-column prop="manageApprovalReply" label="批复回复" width="160" align="center" />
|
<el-table-column prop="gmtCreate" label="时间" align="center" />
|
</el-table>
|
</el-col>
|
</el-row>
|
</el-card>
|
</el-main>
|
</el-container>
|
</div>
|
</template>
|
|
<script>
|
import { getPlanInfoData, delayPlanInfo, getDepartmentApproval, getPlanLog, replyExamine, saveExamine } from "@/api/projectPlan/index";
|
|
export default {
|
name: "planInfoCheck",
|
data() {
|
return {
|
loading: true,
|
// 接收传递过来的项目计划数据
|
planInfoData: {},
|
projectInfoData: {},
|
// 计划项数据
|
tableData: [
|
{
|
title: '',
|
startTime: '',
|
endTime: ''
|
},
|
],
|
// 上级批复数据
|
departmentApprovalData: [],
|
// 计划日志数据
|
planLogData: [],
|
// 投资金额
|
actualInvest: '',
|
// 新增参数
|
addData: {
|
projectPlanRecordId: '',
|
actualInvest: '',
|
addList: []
|
}
|
}
|
},
|
|
methods: {
|
// 页面加载
|
search() {
|
this.getPlanInfoData(this.planInfoData.id); // 获取项目计划项
|
this.getDepartmentApproval(this.planInfoData.id); // 获取上级批复
|
this.getPlanLog(this.planInfoData.id); // 获取计划日志
|
},
|
// 获取传递过来的项目计划详情
|
getPlanRecordData() {
|
// 从查询参数中获取数据
|
this.planInfoData = this.$route.query.data
|
this.projectInfoData = this.$route.query.projectInfoData
|
this.search();
|
},
|
// 获取项目计划项
|
getPlanInfoData(id) {
|
getPlanInfoData(id).then(response => {
|
this.actualInvest = response.data.actualInvest;
|
if (response.data.list.length === 0) {
|
this.tableData = [{title: '', startTime: '', endTime: ''}];
|
} else {
|
this.tableData = response.data.list;
|
}
|
});
|
},
|
// 延期
|
handleDelay(index) {
|
delayPlanInfo(this.tableData[index]).then(response => {
|
this.$message.success('延期成功');
|
this.search()
|
});
|
},
|
// 获取上级批复
|
getDepartmentApproval(projectPlanRecordId) {
|
getDepartmentApproval(projectPlanRecordId).then(response => {
|
this.departmentApprovalData = response.data;
|
});
|
},
|
// 回复审批
|
handleReply(index) {
|
replyExamine(this.departmentApprovalData[index]).then(response => {
|
this.$message.success('回复成功');
|
this.search()
|
});
|
},
|
// 保存审批
|
handleSave(index) {
|
saveExamine(this.departmentApprovalData[index]).then(response => {
|
this.$message.success('保存成功');
|
});
|
},
|
// 获取计划日志
|
getPlanLog(projectPlanRecordId) {
|
getPlanLog(projectPlanRecordId).then(response => {
|
this.planLogData = response.data;
|
});
|
},
|
// 重置当前行数据
|
handleReset(index) {
|
this.tableData[index].title = '';
|
this.tableData[index].startTime = '';
|
this.tableData[index].endTime = '';
|
},
|
/** 返回项目计划记录 */
|
handlePlanRecord() {
|
this.$router.replace({
|
path: '/projectManage/planRecord',
|
query: {
|
data: this.projectInfoData
|
}
|
})
|
}
|
},
|
created() {
|
this.getPlanRecordData();
|
},
|
};
|
</script>
|
|
<style scoped>
|
.header-title {
|
font-size: 24px; /* 根据需要调整字体大小 */
|
text-align: center; /* 居中对齐 */
|
line-height: 64px; /* 如果需要与 header 高度对齐 */
|
}
|
</style>
|