From f19e5267cc23b1c714dc746239864f33ed715dd9 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 05 十二月 2025 17:55:02 +0800
Subject: [PATCH] 完成地图制作任务功能初版

---
 src/views/fysp/task/TaskManage.vue |  195 ++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 155 insertions(+), 40 deletions(-)

diff --git a/src/views/fysp/task/TaskManage.vue b/src/views/fysp/task/TaskManage.vue
index 2e01f89..3274b74 100644
--- a/src/views/fysp/task/TaskManage.vue
+++ b/src/views/fysp/task/TaskManage.vue
@@ -31,38 +31,52 @@
         class="el-scrollbar"
         v-loading="mainLoading"
       >
-        <el-row justify="space-between">
-          <!-- <div><el-text>鐩戠璁″垝</el-text></div>
+        <!-- <div><el-text>鐩戠璁″垝</el-text></div>
           <el-button type="warning" size="small" @click="editPlan"
             >璁″垝璋冩暣</el-button
           > -->
-          <el-tabs model-value="first">
-            <el-tab-pane label="鐩戠璁″垝" name="first">
-              <el-row>
-                <el-col :span="curSubTaskList ? 16 : 24">
-                  <CompMonitorPlan
-                    ref="planRef"
-                    :task="curTask.data"
-                    @date-change="onDateChange"
-                  ></CompMonitorPlan>
-                </el-col>
-                <el-col v-if="curSubTaskList" :span="8">
-                  <CompSubTaskList
-                    create
-                    v-model="curSubTaskList"
-                    :loading="subTaskLoading"
-                    height="56vh"
-                    @add="subTaskDrawer = true"
-                    @submit="handleSubtaskSubmit"
-                  ></CompSubTaskList>
-                </el-col>
-              </el-row>
-            </el-tab-pane>
-            <!-- <el-tab-pane label="鐩戠鍦板浘" name="second">
-              <CompTaskMap></CompTaskMap>
-            </el-tab-pane> -->
-          </el-tabs>
+        <!-- <el-tabs model-value="first">
+            <el-tab-pane label="宸℃煡璁″垝" name="first"> -->
+        <el-row justify="space-between" style="padding: 16px 0px 16px 16px">
+          <el-text size="large">宸℃煡璁″垝</el-text>
+          <!-- <el-button type="primary" size="small" @click="sceneMapDialog = true">
+            杩涘叆鍦烘櫙鍦板浘<el-icon class="el-icon--right"><Right /></el-icon>
+          </el-button> -->
         </el-row>
+        <div class="plan-container">
+          <el-row>
+            <el-col :span="curSubTaskList ? 16 : 24">
+              <CompMonitorPlan
+                :loading="daytaskLoading"
+                ref="planRef"
+                :task="curTask.data"
+                :day-task-list="curDayTaskList"
+                @date-change="onDateChange"
+              ></CompMonitorPlan>
+            </el-col>
+            <el-col v-if="curSubTaskList" :span="8">
+              <!-- <el-affix target=".plan-container" :offset="140"> -->
+                <CompSubTaskList
+                  create
+                  v-model="curSubTaskList"
+                  :date="curDay"
+                  :loading="subTaskLoading"
+                  :create-loading="daytaskCreateLoading"
+                  height="66vh"
+                  @openMap="sceneMapDialog = true"
+                  @add="handleAddSubtask"
+                  @submit="onSubtaskUpdate"
+                  @remove="onSubtaskUpdate"
+                ></CompSubTaskList>
+              <!-- </el-affix> -->
+            </el-col>
+          </el-row>
+        </div>
+        <!-- </el-tab-pane>
+            <el-tab-pane label="鍦烘櫙鍦板浘" name="second"> -->
+        <!-- <CompTaskMap :plans="curMonitorObjList"></CompTaskMap> -->
+        <!-- </el-tab-pane>
+          </el-tabs> -->
         <el-divider></el-divider>
         <el-row justify="space-between">
           <div><el-text>鐩戠鍦烘櫙</el-text></div>
@@ -90,12 +104,11 @@
     title="鏃ヨ鍒掔鐞�"
     direction="btt"
     size="96%"
-    destroy-on-close
   >
     <CompDayTask
       :day-task="curDayTask"
       :mObjList="curMonitorObjList"
-      @submit="handleSubtaskSubmit"
+      @submit="onSubtaskUpdate"
     ></CompDayTask>
   </el-drawer>
   <el-dialog
@@ -112,9 +125,25 @@
       @cancel="topTaskAddVisible = false"
     ></CompTaskEdit>
   </el-dialog>
+  <el-drawer
+    v-model="sceneMapDialog"
+    title="鍦烘櫙鍦板浘"
+    direction="btt"
+    size="100%"
+    body-class="el-drawer__custom"
+  >
+    <CompTaskMap
+      :plans="curMonitorObjList"
+      :day-task="curDayTask"
+      @submit="onSubtaskUpdate"
+    ></CompTaskMap>
+  </el-drawer>
 </template>
 
 <script>
+import { unref } from 'vue';
+import { useCloned } from '@vueuse/core';
+import dayjs from 'dayjs';
 import taskApi from '@/api/fysp/taskApi';
 import CompMonitorObj from './components/CompMonitorObj.vue';
 import CompMonitorPlan from './components/CompMonitorPlan.vue';
@@ -163,6 +192,9 @@
       showMonitorObjList: [],
       //褰撳墠閫変腑鐨勪换鍔�
       curTask: {},
+      //褰撳墠閫変腑鐨勬棩浠诲姟
+      curDayTaskList: [],
+      daytaskLoading: false,
       //鎿嶄綔鎸夐挳
       buttons: [
         {
@@ -181,20 +213,38 @@
       subTaskDrawer: false,
       // 褰撳墠閫夋嫨鐨勬棩浠诲姟
       curDayTask: {},
+      curDay: undefined,
+      daytaskCreateLoading: false,
       // 褰撳墠閫夋嫨鐨勬棩浠诲姟涓嬬殑瀛愪换鍔�
       curSubTaskList: undefined,
       subTaskLoading: false,
       // 鎬讳换鍔℃柊澧炲脊鍑烘
-      topTaskAddVisible: false
+      topTaskAddVisible: false,
+      // 鍦烘櫙鍦板浘寮瑰嚭妗�
+      sceneMapDialog: false
+    };
+  },
+  provide() {
+    return {
+      topTask: this.curTask
     };
   },
   computed: {
     // 鎬讳换鍔$姸鎬佺粺璁�
     taskStatus() {
+      let total = 0,
+        inspected = 0;
+      this.curMonitorObjList.forEach((obj) => {
+        total += parseInt(obj.monitornum);
+        inspected += obj.extension1 ? parseInt(obj.extension1) : 0;
+      });
       return [
-        { name: '鍦烘櫙鏁�', value: 100 },
-        { name: '鏈贰鏌�', value: 0 },
-        { name: '宸插贰鏌�', value: 0 }
+        { name: '鍦烘櫙鏁�', value: total },
+        {
+          name: '鏈贰鏌�',
+          value: total - inspected > 0 ? total - inspected : 0
+        },
+        { name: '宸插贰鏌�', value: inspected }
       ];
     }
   },
@@ -253,6 +303,21 @@
         })
         .finally(() => {
           this.mainLoading = false;
+          this.fetchDayTasks();
+        });
+    },
+    fetchDayTasks() {
+      // 鑾峰彇鏃ヤ换鍔$粺璁′俊鎭�
+      this.dayTaskLoading = true;
+      this.mainLoading = true;
+      return taskApi
+        .fetchDayTasks(this.curTask.data.tguid)
+        .then((res) => {
+          this.curDayTaskList = res;
+        })
+        .finally(() => {
+          this.dayTaskLoading = false;
+          this.mainLoading = false;
         });
     },
     editTask() {
@@ -273,7 +338,8 @@
         }
       });
     },
-    onDateChange(dayTask) {
+    onDateChange(dayTask, day) {
+      this.curDay = day;
       if (dayTask) {
         this.subTaskLoading = true;
         // this.subTaskDrawer = true;
@@ -286,6 +352,7 @@
           .finally(() => (this.subTaskLoading = false));
       } else {
         this.curSubTaskList = [];
+        this.curDayTask = {};
       }
     },
     navToTaskCreate(value) {
@@ -297,11 +364,49 @@
         }
       });
     },
-    handleSubtaskSubmit() {
-      this.subTaskLoading = true;
-      this.$refs.planRef
-        .fetchDayTasks()
-        .finally(() => (this.subTaskLoading = false));
+    onSubtaskUpdate() {
+      // this.subTaskLoading = true;
+      // this.$refs.planRef
+      //   .fetchDayTasks()
+      //   .finally(() => (this.subTaskLoading = false));
+      this.fetchDayTasks();
+    },
+    handleAddSubtask() {
+      // 鍒ゆ柇褰撴棩鏄惁鏈夋棩浠诲姟锛岃嫢娌℃湁锛屽厛鍒涘缓鍦ㄨ烦杞瓙浠诲姟鍒涘缓鐣岄潰
+      if (this.curDayTask.guid) {
+        this.subTaskDrawer = true;
+      } else {
+        const _dayTask = useCloned(this.curTask.data).cloned.value;
+        const taskDate = dayjs(this.curDay);
+        _dayTask.tsguid = _dayTask.tguid;
+        _dayTask.tguid = null;
+        _dayTask.levelnum = null;
+        _dayTask.name = `${taskDate.format('YYYY骞碝M鏈圖D鏃�')}${
+          _dayTask.cityname
+        }${_dayTask.districtname}${_dayTask.typename}浠诲姟`;
+        _dayTask.starttime = taskDate.startOf('day').toDate();
+        _dayTask.endtime = taskDate.endOf('day').millisecond(0).toDate();
+        _dayTask.settime = dayjs().toDate();
+        _dayTask.t1stverifytime = dayjs().toDate();
+        _dayTask.runingstatus = '鏈墽琛�';
+        this.daytaskCreateLoading = true;
+        taskApi
+          .putTask(_dayTask)
+          .then((res) => {
+            this.curDayTask = {
+              guid: res.data.tguid,
+              tsGuid: res.data.tsguid,
+              changedTaskNum: 0,
+              check: true,
+              completeTaskNum: 0,
+              date: res.data.starttime,
+              totalTaskNum: 0
+            };
+            this.subTaskDrawer = true;
+            this.onSubtaskUpdate();
+          })
+          .finally(() => (this.daytaskCreateLoading = false));
+      }
     }
   },
   mounted() {
@@ -319,5 +424,15 @@
 
 .el-scrollbar {
   height: calc((100vh - 60px - 20px * 2 - var(--height-toolbar)));
+  padding-right: 8px;
+}
+
+.plan-container {
+  /* background-color: aliceblue; */
+}
+</style>
+<style>
+.el-drawer__custom {
+  padding: 0px !important;
 }
 </style>

--
Gitblit v1.9.3