From e7cfe2a2c78e00f358c25170fd420745dedea52b Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期二, 26 十一月 2024 15:53:07 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
src/views/projectPlan/planInfo.vue | 192 +++++++++++++++++++++++++++
src/views/projectPlan/planRecord.vue | 63 ++++----
src/api/projectPlan/index.js | 28 +++
src/views/projectPlan/index.vue | 64 --------
src/router/index.js | 15 +
5 files changed, 265 insertions(+), 97 deletions(-)
diff --git a/src/api/project/plan/index.js b/src/api/projectPlan/index.js
similarity index 64%
rename from src/api/project/plan/index.js
rename to src/api/projectPlan/index.js
index 0bc549b..05105a6 100644
--- a/src/api/project/plan/index.js
+++ b/src/api/projectPlan/index.js
@@ -9,7 +9,7 @@
})
}
-// 鏌ヨ鏈堝害璁″垝鍒楄〃
+// 鏌ヨ璁″垝璁板綍鍒楄〃
export function getPlanRecordList(id) {
return request({
url: '/api/project-plan-record/' + id,
@@ -50,3 +50,29 @@
method: 'delete'
})
}
+
+// 椤圭洰璁″垝椤瑰垪琛�
+export function getPlanInfoData(id) {
+ return request({
+ url: '/api/project-plan-info/' + id,
+ method: 'get'
+ })
+}
+
+// 鏂板璁″垝椤�
+export function addPlanInfo(data) {
+ return request({
+ url: '/api/project-plan-info/addPlanInfo',
+ method: 'post',
+ data: data
+ })
+}
+
+// 淇濆瓨璁″垝椤�
+export function savePlanInfo(data) {
+ return request({
+ url: '/api/project-plan-info/savePlanInfo',
+ method: 'post',
+ data: data
+ })
+ }
diff --git a/src/router/index.js b/src/router/index.js
index b8f815d..8335f76 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -184,17 +184,24 @@
component: Layout,
children: [
{
- path: '/plan/index',
- component: () => import('@/views/project/plan/index'),
+ path: '/projectPlan/index',
+ component: () => import('@/views/projectPlan/index'),
name: 'Index',
meta: { title: '椤圭洰璁″垝' }
},
/** 椤圭洰璁″垝璁板綍 */
{
- path: '/plan/planRecord',
- component: () => import('@/views/project/plan/planRecord'),
+ path: '/projectPlan/planRecord',
+ component: () => import('@/views/projectPlan/planRecord'),
name: 'PlanRecord',
meta: { title: '椤圭洰璁″垝璁板綍' }
+ },
+ /** 椤圭洰璁″垝椤� */
+ {
+ path: '/projectPlan/planInfo',
+ component: () => import('@/views/projectPlan/planInfo'),
+ name: 'PlanInfo',
+ meta: { title: '椤圭洰璁″垝椤�' }
}
]
},
diff --git a/src/views/project/plan/index.vue b/src/views/projectPlan/index.vue
similarity index 79%
rename from src/views/project/plan/index.vue
rename to src/views/projectPlan/index.vue
index 838134b..6ffcc71 100644
--- a/src/views/project/plan/index.vue
+++ b/src/views/projectPlan/index.vue
@@ -79,38 +79,6 @@
@click="handleReset"
>閲嶇疆</el-button>
</el-col>
-<!-- <el-col :span="1.5">-->
-<!-- <el-button-->
-<!-- type="success"-->
-<!-- plain-->
-<!-- icon="el-icon-edit"-->
-<!-- size="mini"-->
-<!-- :disabled="single"-->
-<!-- @click="handleUpdate"-->
-<!-- v-hasPermi="['plan:record:edit']"-->
-<!-- >淇敼</el-button>-->
-<!-- </el-col>-->
-<!-- <el-col :span="1.5">-->
-<!-- <el-button-->
-<!-- type="danger"-->
-<!-- plain-->
-<!-- icon="el-icon-delete"-->
-<!-- size="mini"-->
-<!-- :disabled="multiple"-->
-<!-- @click="handleDelete"-->
-<!-- v-hasPermi="['plan:record:remove']"-->
-<!-- >鍒犻櫎</el-button>-->
-<!-- </el-col>-->
-<!-- <el-col :span="1.5">-->
-<!-- <el-button-->
-<!-- type="warning"-->
-<!-- plain-->
-<!-- icon="el-icon-download"-->
-<!-- size="mini"-->
-<!-- @click="handleExport"-->
-<!-- v-hasPermi="['plan:record:export']"-->
-<!-- >瀵煎嚭</el-button>-->
-<!-- </el-col>-->
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
@@ -217,39 +185,11 @@
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
-
-<!-- <!– 娣诲姞鎴栦慨鏀归」鐩鍒掕褰曞璇濇 –>-->
-<!-- <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>-->
-<!-- <el-form ref="form" :model="form" :rules="rules" label-width="80px">-->
-<!-- <el-form-item label="椤圭洰淇℃伅id" prop="projectInfoId">-->
-<!-- <el-input v-model="form.projectInfoId" placeholder="璇疯緭鍏ラ」鐩俊鎭痠d" />-->
-<!-- </el-form-item>-->
-<!-- <el-form-item label="椤圭洰璁″垝id" prop="planId">-->
-<!-- <el-input v-model="form.planId" placeholder="璇疯緭鍏ラ」鐩鍒抜d" />-->
-<!-- </el-form-item>-->
-<!-- <el-form-item label="宸ョ▼id" prop="engineeringInfoId">-->
-<!-- <el-input v-model="form.engineeringInfoId" placeholder="璇疯緭鍏ュ伐绋媔d" />-->
-<!-- </el-form-item>-->
-<!-- <el-form-item label="璁″垝鏈�" prop="planTime">-->
-<!-- <el-input v-model="form.planTime" placeholder="璇疯緭鍏ヨ鍒掓湡" />-->
-<!-- </el-form-item>-->
-<!-- <el-form-item label="鏈堝害/瀛e害/骞村害 0/1/2" prop="planTimeFlag">-->
-<!-- <el-input v-model="form.planTimeFlag" placeholder="璇疯緭鍏ユ湀搴�/瀛e害/骞村害 0/1/2" />-->
-<!-- </el-form-item>-->
-<!-- <el-form-item label="鎶曡祫" prop="actualInvest">-->
-<!-- <el-input v-model="form.actualInvest" placeholder="璇疯緭鍏ユ姇璧�" />-->
-<!-- </el-form-item>-->
-<!-- </el-form>-->
-<!-- <div slot="footer" class="dialog-footer">-->
-<!-- <el-button type="primary" @click="submitForm">纭� 瀹�</el-button>-->
-<!-- <el-button @click="cancel">鍙� 娑�</el-button>-->
-<!-- </div>-->
-<!-- </el-dialog>-->
</div>
</template>
<script>
-import { getList, getRecord, delRecord, addRecord, updateRecord } from "@/api/project/plan/index";
+import { getList, getRecord, delRecord, addRecord, updateRecord } from "@/api/projectPlan/index";
export default {
name: "index",
@@ -389,7 +329,7 @@
/** 鏌ョ湅椤圭洰璁″垝璁板綍 */
handlePlanRecord(row) {
this.$router.push({
- path: '/plan/planRecord',
+ path: '/projectPlan/planRecord',
query: {
data: JSON.stringify(row)
}
diff --git a/src/views/projectPlan/planInfo.vue b/src/views/projectPlan/planInfo.vue
new file mode 100644
index 0000000..f99ec7c
--- /dev/null
+++ b/src/views/projectPlan/planInfo.vue
@@ -0,0 +1,192 @@
+<template>
+ <div class="app-container">
+ <el-container>
+ <el-header v-show="planRecordData && planRecordData.projectName" class="header-title">椤圭洰鍚嶇О锛歿{ planRecordData.projectName }} {{ planRecordData.planTimeFlag === 0 ? '(鏈堝害璁″垝)' : planRecordData.planTimeFlag === 1 ? '(瀛e害璁″垝)' : '(骞村害璁″垝)' }}</el-header>
+ <h4 v-show="planRecordData && planRecordData.projectCode" style="text-align: center">椤圭洰浠g爜锛歿{ planRecordData.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="handleAdd" style="float: right; margin-bottom: 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" />
+ </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" />
+ </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" />
+ </template>
+ </el-table-column>
+ <el-table-column :label="planRecordData.planTimeFlag === 0 ? '鏈堝害' : planRecordData.planTimeFlag === 1 ? '瀛e害' : '骞村害' " width="100" align="center">
+ <template #default="scope">
+ <span>{{ planRecordData.planTime }}{{ planRecordData.planTimeFlag === 0 ? '鏈堝害' : planRecordData.planTimeFlag === 1 ? '瀛e害' : '骞村害' }}</span>
+ </template>
+ </el-table-column>
+ <el-table-column fixed="right" label="鎿嶄綔" align="center">
+ <template #default="scope">
+ <el-button size="small" @click="handleSave(scope.$index)">淇濆瓨</el-button>
+ <el-button size="small" type="danger" @click="handleReset(scope.$index)">閲嶇疆</el-button>
+ <el-button size="small" type="danger" @click="handleDelete(scope.$index)">鍒犻櫎</el-button>
+ </template>
+ </el-table-column>
+ </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">
+ </el-input>
+ </div>
+ <div style="display: flex; justify-content: center; align-items: center; margin-top: 20px">
+ <el-button type="primary" size="small" @click="handleSubmit">涓婃姤</el-button>
+ <el-button type="primary" size="small" @click="handleResetAll">閲嶇疆</el-button>
+ </div>
+ </el-col>
+ </el-row>
+ </el-card>
+ </el-main>
+ </el-container>
+ </div>
+</template>
+
+<script>
+import { getPlanInfoData, addPlanInfo, savePlanInfo } from "@/api/projectPlan/index";
+
+export default {
+ name: "planInfo",
+ data() {
+ return {
+ loading: true,
+ // 鎺ユ敹浼犻�掕繃鏉ョ殑椤圭洰璁″垝鏁版嵁
+ planRecordData: {},
+ planInfoData: {},
+ tableData: [
+ {
+ title: '',
+ startTime: '',
+ endTime: ''
+ },
+ ],
+ // 鎶曡祫閲戦
+ actualInvest: '',
+ // 鏂板鍙傛暟
+ addData: {
+ projectPlanRecordId: '',
+ actualInvest: '',
+ addList:[]
+ }
+ }
+ },
+
+ methods: {
+ // 椤甸潰鍔犺浇
+ search() {
+ this.getPlanInfoData(this.planRecordData.id);
+ },
+ // 鑾峰彇浼犻�掕繃鏉ョ殑椤圭洰璁″垝璇︽儏
+ getPlanRecordData() {
+ // 浠庢煡璇㈠弬鏁颁腑鑾峰彇鏁版嵁
+ if (this.$route.query.data) {
+ this.planRecordData = JSON.parse(this.$route.query.data)
+ }
+ this.planInfoData = this.$route.query.planInfoData
+ 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;
+ }
+ });
+ },
+ // 鏂板涓�琛岀┖鐧芥暟鎹�
+ handleAdd() {
+ this.tableData.push({ title: '', startTime: '', endTime: '' });
+ },
+ // 鍒犻櫎涓�琛屾暟鎹�
+ handleDelete(index) {
+ this.tableData.splice(index, 1);
+ },
+ // 涓婃姤鏁版嵁
+ handleSubmit() {
+ // 閬嶅巻tableData锛岃幏寰楀�间笉涓虹┖瀛楃涓茬殑琛�
+ const validList = this.tableData.filter(item => item.title !== '' && item.startTime !== '' && item.endTime !== '');
+ this.addData = {
+ projectPlanRecordId: this.planRecordData.id,
+ actualInvest: this.actualInvest,
+ addList: validList
+ }
+ addPlanInfo(this.addData).then(response => {
+ this.handlePlanRecord(this.planInfoData)
+ })
+ },
+ // 閲嶇疆褰撳墠琛屾暟鎹�
+ handleReset(index) {
+ this.tableData[index].title = '';
+ this.tableData[index].startTime = '';
+ this.tableData[index].endTime = '';
+ },
+ // 閲嶇疆鎵�鏈夋暟鎹�
+ handleResetAll() {
+ this.tableData = this.tableData.map(item => {
+ item.title = '';
+ item.startTime = '';
+ item.endTime = '';
+ return item;
+ });
+ this.actualInvest = '';
+ },
+ // 淇濆瓨褰撳墠琛屾暟鎹�
+ handleSave(index) {
+ this.tableData[index].projectPlanRecordId = this.planRecordData.id;
+ savePlanInfo(this.tableData[index]).then(response => {
+ this.search();
+ this.$message.success('淇濆瓨鎴愬姛');
+ });
+ },
+ /** 杩斿洖椤圭洰璁″垝璁板綍 */
+ handlePlanRecord(planInfoData) {
+ this.$router.push({
+ path: '/projectPlan/planRecord',
+ query: {
+ data: JSON.stringify(planInfoData)
+ }
+ })
+ }
+ },
+ created() {
+ this.getPlanRecordData();
+ },
+};
+</script>
+
+<style scoped>
+.header-title {
+ font-size: 24px; /* 鏍规嵁闇�瑕佽皟鏁村瓧浣撳ぇ灏� */
+ text-align: center; /* 灞呬腑瀵归綈 */
+ line-height: 64px; /* 濡傛灉闇�瑕佷笌 header 楂樺害瀵归綈 */
+}
+</style>
+
diff --git a/src/views/project/plan/planRecord.vue b/src/views/projectPlan/planRecord.vue
similarity index 79%
rename from src/views/project/plan/planRecord.vue
rename to src/views/projectPlan/planRecord.vue
index 63e6f5e..a3ddfbe 100644
--- a/src/views/project/plan/planRecord.vue
+++ b/src/views/projectPlan/planRecord.vue
@@ -11,20 +11,20 @@
<el-button type="primary" size="small" style="float: right" @click="handleAddMonthPlan">鏂板</el-button>
<el-table :data="monthRecords" style="width: 100%">
<!-- 琛ㄥご -->
- <el-table-column prop="id" label="搴忓彿"></el-table-column>
- <el-table-column prop="projectName" label="椤圭洰鍚嶇О"></el-table-column>
- <el-table-column prop="projectCode" label="椤圭洰浠g爜"></el-table-column>
- <el-table-column label="璁″垝鏈�">
+ <el-table-column prop="id" label="搴忓彿" align="center"></el-table-column>
+ <el-table-column prop="projectName" label="椤圭洰鍚嶇О" align="center"></el-table-column>
+ <el-table-column prop="projectCode" label="椤圭洰浠g爜" align="center"></el-table-column>
+ <el-table-column label="璁″垝鏈�" align="center">
<template slot-scope="scope">
<span>
{{ scope.row.planTime }}{{ scope.row.planTimeFlag === 0 ? '鏈堝害' : scope.row.planTimeFlag === 1 ? '瀛e害' : '骞村害' }}
</span>
</template>
</el-table-column>
- <el-table-column prop="createTime" label="鍒涘缓鏃堕棿"></el-table-column>
- <el-table-column fixed="right" label="鎿嶄綔">
+ <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" align="center"></el-table-column>
+ <el-table-column fixed="right" label="鎿嶄綔" align="center">
<template slot-scope="scope">
- <el-button type="primary" size="small" :disabled="scope.row.reportStatus === 0">缂栬緫涓婃姤</el-button>
+ <el-button type="primary" size="small" :disabled="scope.row.reportStatus === 0" @click="handlePlanInfo(scope.row)">缂栬緫涓婃姤</el-button>
<el-button type="danger" size="small">鍒犻櫎</el-button>
</template>
</el-table-column>
@@ -35,20 +35,20 @@
<el-button type="primary" size="small" style="float: right" @click="handleAddSeasonPlan">鏂板</el-button>
<el-table :data="seasonRecords" style="width: 100%">
<!-- 琛ㄥご -->
- <el-table-column prop="id" label="搴忓彿"></el-table-column>
- <el-table-column prop="projectName" label="椤圭洰鍚嶇О"></el-table-column>
- <el-table-column prop="projectCode" label="椤圭洰浠g爜"></el-table-column>
- <el-table-column label="璁″垝鏈�">
+ <el-table-column prop="id" label="搴忓彿" align="center"></el-table-column>
+ <el-table-column prop="projectName" label="椤圭洰鍚嶇О" align="center"></el-table-column>
+ <el-table-column prop="projectCode" label="椤圭洰浠g爜" align="center"></el-table-column>
+ <el-table-column label="璁″垝鏈�" align="center">
<template slot-scope="scope">
<span>
{{ scope.row.planTime }}{{ scope.row.planTimeFlag === 0 ? '鏈堝害' : scope.row.planTimeFlag === 1 ? '瀛e害' : '骞村害' }}
</span>
</template>
</el-table-column>
- <el-table-column prop="createTime" label="鍒涘缓鏃堕棿"></el-table-column>
- <el-table-column fixed="right" label="鎿嶄綔">
+ <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" align="center"></el-table-column>
+ <el-table-column fixed="right" label="鎿嶄綔" align="center">
<template slot-scope="scope">
- <el-button type="primary" size="small" :disabled="scope.row.reportStatus === 0">缂栬緫涓婃姤</el-button>
+ <el-button type="primary" size="small" :disabled="scope.row.reportStatus === 0" @click="handlePlanInfo(scope.row)">缂栬緫涓婃姤</el-button>
<el-button type="danger" size="small">鍒犻櫎</el-button>
</template>
</el-table-column>
@@ -59,20 +59,20 @@
<el-button type="primary" size="small" style="float: right" @click="handleAddYearPlan">鏂板</el-button>
<el-table :data="yearRecords" style="width: 100%">
<!-- 琛ㄥご -->
- <el-table-column prop="id" label="搴忓彿"></el-table-column>
- <el-table-column prop="projectName" label="椤圭洰鍚嶇О"></el-table-column>
- <el-table-column prop="projectCode" label="椤圭洰浠g爜"></el-table-column>
- <el-table-column label="璁″垝鏈�">
+ <el-table-column prop="id" label="搴忓彿" align="center"></el-table-column>
+ <el-table-column prop="projectName" label="椤圭洰鍚嶇О" align="center"></el-table-column>
+ <el-table-column prop="projectCode" label="椤圭洰浠g爜" align="center"></el-table-column>
+ <el-table-column label="璁″垝鏈�" align="center">
<template slot-scope="scope">
<span>
{{ scope.row.planTime }}{{ scope.row.planTimeFlag === 0 ? '鏈堝害' : scope.row.planTimeFlag === 1 ? '瀛e害' : '骞村害' }}
</span>
</template>
</el-table-column>
- <el-table-column prop="createTime" label="鍒涘缓鏃堕棿"></el-table-column>
- <el-table-column fixed="right" label="鎿嶄綔">
+ <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" align="center"></el-table-column>
+ <el-table-column fixed="right" label="鎿嶄綔" align="center">
<template slot-scope="scope">
- <el-button type="primary" size="small" :disabled="scope.row.reportStatus === 0">缂栬緫涓婃姤</el-button>
+ <el-button type="primary" size="small" :disabled="scope.row.reportStatus === 0" @click="handlePlanInfo(scope.row)">缂栬緫涓婃姤</el-button>
<el-button type="danger" size="small">鍒犻櫎</el-button>
</template>
</el-table-column>
@@ -86,13 +86,12 @@
</template>
<script>
-import {addRecord, getPlanRecordList} from "@/api/project/plan/index";
+import {addRecord, getPlanRecordList} from "@/api/projectPlan/index";
export default {
- // name: "planRecord",
+ name: "planRecord",
data() {
return {
- loading: true,
// 鎺ユ敹浼犻�掕繃鏉ョ殑椤圭洰璁″垝鏁版嵁
planInfoData: {},
// 鏈堝害璁″垝鏁版嵁
@@ -101,8 +100,6 @@
seasonRecords: [],
// 骞村害璁″垝鏁版嵁
yearRecords: [],
- // 鏂板璁″垝
-
}
},
methods: {
@@ -115,21 +112,17 @@
// 浠庢煡璇㈠弬鏁颁腑鑾峰彇鏁版嵁
if (this.$route.query.data) {
this.planInfoData = JSON.parse(this.$route.query.data);
- console.log(JSON.parse(this.$route.query.data))
this.getPlanRecordData(this.planInfoData.id);
}
},
// 鑾峰彇椤圭洰璁″垝璁板綍鏁版嵁
getPlanRecordData(id) {
- this.loading = true;
getPlanRecordList(id).then(res => {
this.monthRecords = res.data.monthRecords;
// 鑾峰彇瀛e害璁″垝鏁版嵁
this.seasonRecords = res.data.seasonRecords;
// 鑾峰彇骞村害璁″垝鏁版嵁
this.yearRecords = res.data.yearRecords;
- console.log(this.monthRecords);
- this.loading = false;
})
},
// 鏂板鏈堝害璁″垝璁板綍
@@ -186,6 +179,16 @@
this.search();
});
},
+ /** 鏌ョ湅椤圭洰璁″垝椤� */
+ handlePlanInfo(row) {
+ this.$router.push({
+ path: '/projectPlan/planInfo',
+ query: {
+ data: JSON.stringify(row),
+ planInfoData: this.planInfoData
+ }
+ })
+ }
},
created() {
--
Gitblit v1.8.0