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"
     />
-
-<!--    &lt;!&ndash; 娣诲姞鎴栦慨鏀归」鐩鍒掕褰曞璇濇 &ndash;&gt;-->
-<!--    <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