From 4f238e1ff525b6aa1f8c9981f044d606a89734ce Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 24 十月 2024 08:27:19 +0800
Subject: [PATCH] 1. 新增完成展示下载的excel文件功能

---
 src/views/fysp/task/TaskManage.vue |  203 ++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 171 insertions(+), 32 deletions(-)

diff --git a/src/views/fysp/task/TaskManage.vue b/src/views/fysp/task/TaskManage.vue
index 0e2de57..5685aa5 100644
--- a/src/views/fysp/task/TaskManage.vue
+++ b/src/views/fysp/task/TaskManage.vue
@@ -1,9 +1,8 @@
 <template>
   <BaseContentLayout>
     <template #header>
-      <FYSearchBar @search="search">
+      <!-- <FYSearchBar @search="search">
         <template #options>
-          <!-- 鍖哄幙 -->
           <FYOptionLocation
             :allOption="true"
             :level="3"
@@ -11,13 +10,14 @@
             v-model:value="formSearch.locations"
           ></FYOptionLocation>
         </template>
-        <!-- <template #buttons>
-          <slot name="buttons"></slot>
-        </template> -->
-      </FYSearchBar>
+      </FYSearchBar> -->
     </template>
     <template #aside>
-      <SideList :items="tasks" :loading="sideLoading" @item-click="chooseTask"></SideList>
+      <SideList
+        :items="tasks"
+        :loading="sideLoading"
+        @item-click="chooseTask"
+      ></SideList>
     </template>
     <template #main>
       <ToolBar
@@ -31,32 +31,118 @@
         class="el-scrollbar"
         v-loading="mainLoading"
       >
-        <div><el-text>鐩戠璁″垝</el-text></div>
+        <el-row justify="space-between">
+          <!-- <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-row>
         <el-divider></el-divider>
-        <el-button type="primary" size="small" @click="editTask">鍦烘櫙璋冩暣</el-button>
-        <div><el-text>鐩戠鍦烘櫙</el-text></div>
-        <CompMonitorObj :data="curMonitorObjList" v-model:showData="showMonitorObjList"></CompMonitorObj>
-        <!-- <div><el-text>鐩戠鍦烘櫙</el-text></div>
-        <div>
-          <el-space wrap>
-            <ItemMonitorObj
-              v-for="item in curMonitorObjList"
-              :key="item.movid"
-              :item="item"
-            ></ItemMonitorObj>
-          </el-space>
-        </div> -->
+        <el-row justify="space-between">
+          <div><el-text>鐩戠鍦烘櫙</el-text></div>
+          <el-button type="warning" size="small" @click="editTask"
+            >鍦烘櫙璋冩暣</el-button
+          >
+        </el-row>
+        <CompMonitorObj :data="curMonitorObjList"></CompMonitorObj>
       </el-scrollbar>
-      <el-empty v-else description="鏆傛棤璁板綍" v-loading="mainLoading" />
+      <div v-else>
+        <el-empty description="鏆傛棤璁板綍" v-loading="mainLoading" />
+        <el-row v-if="!mainLoading" justify="center">
+          <el-button
+            type="primary"
+            size="default"
+            @click="navToTaskCreate(curTask.data)"
+            >娣诲姞鐩戠鍦烘櫙</el-button
+          >
+        </el-row>
+      </div>
     </template>
   </BaseContentLayout>
+  <el-drawer
+    v-model="subTaskDrawer"
+    title="鏃ヨ鍒掔鐞�"
+    direction="btt"
+    size="96%"
+    destroy-on-close
+  >
+    <CompDayTask
+      :day-task="curDayTask"
+      :mObjList="curMonitorObjList"
+      @submit="handleSubtaskSubmit"
+    ></CompDayTask>
+  </el-drawer>
+  <el-dialog
+    v-model="topTaskAddVisible"
+    width="600"
+    title="涓�閿垱寤烘�讳换鍔�"
+    destroy-on-close
+    :close-on-click-modal="false"
+    :close-on-press-escape="false"
+    :show-close="false"
+  >
+    <CompTaskEdit
+      @submit="navToTaskCreate"
+      @cancel="topTaskAddVisible = false"
+    ></CompTaskEdit>
+  </el-dialog>
 </template>
 
 <script>
 import taskApi from '@/api/fysp/taskApi';
 import CompMonitorObj from './components/CompMonitorObj.vue';
+import CompMonitorPlan from './components/CompMonitorPlan.vue';
+import CompDayTask from './components/CompDayTask.vue';
+import CompTaskMap from './components/CompTaskMap.vue';
+import CompTaskEdit from './components/CompTaskEdit.vue';
+import CompSubTaskList from './components/CompSubTaskList.vue';
 export default {
-  components: { CompMonitorObj },
+  beforeRouteEnter(to, from, next) {
+    // 鍦ㄦ覆鏌撹缁勪欢鐨勫搴旇矾鐢辫楠岃瘉鍓嶈皟鐢�
+    // 涓嶈兘鑾峰彇缁勪欢瀹炰緥 `this` 锛�
+    // 鍥犱负褰撳畧鍗墽琛屾椂锛岀粍浠跺疄渚嬭繕娌¤鍒涘缓锛�
+    next((vm) => {
+      if (from.name == 'monitorObjEdit' && vm.task) {
+        vm.chooseTask(vm.task);
+      } else if (from.name == 'monitorTaskCreate') {
+        vm.search();
+      }
+    });
+  },
+  components: {
+    CompMonitorObj,
+    CompMonitorPlan,
+    CompDayTask,
+    CompTaskMap,
+    CompTaskEdit,
+    CompSubTaskList
+  },
   data() {
     return {
       formSearch: {
@@ -80,14 +166,26 @@
       //鎿嶄綔鎸夐挳
       buttons: [
         {
-          name: '璁″垝璋冩暣',
-          color: 'success'
-        },
-        {
-          name: '鍦烘櫙璋冩暣',
-          color: 'warning'
+          name: '涓�閿垱寤烘�讳换鍔�',
+          color: 'success',
+          click: () => {
+            this.topTaskAddVisible = true;
+          }
         }
-      ]
+        // {
+        //   name: '鍦烘櫙璋冩暣',
+        //   color: 'warning'
+        // }
+      ],
+      // 瀛愪换鍔$紪杈戝脊鍑烘
+      subTaskDrawer: false,
+      // 褰撳墠閫夋嫨鐨勬棩浠诲姟
+      curDayTask: {},
+      // 褰撳墠閫夋嫨鐨勬棩浠诲姟涓嬬殑瀛愪换鍔�
+      curSubTaskList: undefined,
+      subTaskLoading: false,
+      // 鎬讳换鍔℃柊澧炲脊鍑烘
+      topTaskAddVisible: false
     };
   },
   computed: {
@@ -143,13 +241,15 @@
       return type;
     },
     chooseTask(task) {
+      this.task = task;
       this.sideLoading = false;
       this.mainLoading = true;
+      this.curSubTaskList = undefined;
+      this.curTask = task;
       taskApi
         .fetchMonitorObjectVersion(task.data.tguid)
         .then((res) => {
           this.curMonitorObjList = res;
-          this.curTask = task;
         })
         .finally(() => {
           this.mainLoading = false;
@@ -163,6 +263,45 @@
           task: encodeURIComponent(JSON.stringify(this.curTask.data))
         }
       });
+    },
+    editPlan() {
+      this.$router.push({
+        name: 'monitorPlanEdit',
+        query: {
+          data: encodeURIComponent(JSON.stringify(this.curMonitorObjList)),
+          task: encodeURIComponent(JSON.stringify(this.curTask.data))
+        }
+      });
+    },
+    onDateChange(dayTask) {
+      if (dayTask) {
+        this.subTaskLoading = true;
+        // this.subTaskDrawer = true;
+        this.curDayTask = dayTask;
+        taskApi
+          .fetchSubtaskByDayTask(dayTask.guid)
+          .then((res) => {
+            this.curSubTaskList = res;
+          })
+          .finally(() => (this.subTaskLoading = false));
+      } else {
+        this.curSubTaskList = [];
+      }
+    },
+    navToTaskCreate(value) {
+      this.topTaskAddVisible = false;
+      this.$router.push({
+        name: 'monitorTaskCreate',
+        query: {
+          task: encodeURIComponent(JSON.stringify(value))
+        }
+      });
+    },
+    handleSubtaskSubmit() {
+      this.subTaskLoading = true;
+      this.$refs.planRef
+        .fetchDayTasks()
+        .finally(() => (this.subTaskLoading = false));
     }
   },
   mounted() {
@@ -179,6 +318,6 @@
 }
 
 .el-scrollbar {
-  height: calc((100vh - 60px * 2 - 20px * 2 - var(--height-toolbar)));
+  height: calc((100vh - 60px - 20px * 2 - var(--height-toolbar)));
 }
 </style>

--
Gitblit v1.9.3