From 3d6addd2c0817b30bd328605cb048ca9698742a6 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期五, 28 二月 2025 16:50:17 +0800
Subject: [PATCH] 修复新建子任务时,未提前建立日任务的bug

---
 src/views/fysp/task/components/CompDayTask.vue |  165 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 150 insertions(+), 15 deletions(-)

diff --git a/src/views/fysp/task/components/CompDayTask.vue b/src/views/fysp/task/components/CompDayTask.vue
index 9617c22..678b26f 100644
--- a/src/views/fysp/task/components/CompDayTask.vue
+++ b/src/views/fysp/task/components/CompDayTask.vue
@@ -1,35 +1,97 @@
 <template>
-  <el-row justify="space-between">
-    <el-text>鍗曟棩璁″垝</el-text>
-    <el-button type="success" size="small" @click="editTask">鏂板</el-button>
+  <el-row gutter="20">
+    <el-col :span="16">
+      <div>
+        <el-text>鐩戠鍦烘櫙</el-text>
+      </div>
+      <el-divider />
+      <CompSubTaskSelect
+        :data="seletedSceneList"
+        :dayTask="dayTask"
+        @delete="deleteScene"
+        @submit="createSubtasks"
+      ></CompSubTaskSelect>
+      <div>
+        <!-- <el-scrollbar height="50vh"> -->
+        <CompMonitorObj :data="curMonitorObjList" height="50vh">
+          <template #default="{ item }">
+            <el-button
+              v-if="item.select"
+              size="small"
+              type="info"
+              plain
+              disabled
+              icon="select"
+              >閫夋嫨</el-button
+            >
+            <el-button
+              v-else
+              size="small"
+              type="primary"
+              plain
+              @click="selectScene(item)"
+              >閫夋嫨</el-button
+            >
+          </template>
+        </CompMonitorObj>
+        <!-- </el-scrollbar> -->
+      </div>
+    </el-col>
+    <el-col :span="8">
+      <CompSubTaskList
+        v-model="curSubTaskList"
+        :height="height"
+        @submit="deleteSubtasks"
+      ></CompSubTaskList>
+    </el-col>
   </el-row>
-  <el-divider />
-  <ItemSubTask v-for="stask in curSubTaskList" :key="stask.guid" :item="stask">
-    <template #default="{ item }">
-      <el-button type="danger" size="small" @click="editTask">绉婚櫎</el-button>
-    </template>
-  </ItemSubTask>
 </template>
 <script setup>
-import { ref, watch, onMounted } from 'vue';
+import { ref, watch, onMounted, inject } from 'vue';
+import { useCloned } from '@vueuse/core';
+import { useRoute, useRouter } from 'vue-router';
+import { ElMessage, ElNotification, ElMessageBox } from 'element-plus';
 import taskApi from '@/api/fysp/taskApi';
+import subtaskApi from '@/api/fysp/subtaskApi';
+import TaskProxy from '../TaskProxy';
+
+import CompMonitorObj from './CompMonitorObj.vue';
+import CompSubTaskSelect from './CompSubTaskSelect.vue';
+import CompSubTaskList from './CompSubTaskList.vue';
+import dayjs from 'dayjs';
+
+const route = useRoute();
 
 const props = defineProps({
   // 鏃ヤ换鍔�
-  dayTask: Object
+  dayTask: Object,
+  mObjList: Array
 });
 
+const emit = defineEmits(['submit'])
+
+/*************************** 鏁版嵁鍒濆鍖� ************************************/
 // 宸℃煡瀛愪换鍔¢泦鍚�
+const curMonitorObjList = ref([]);
 const curSubTaskList = ref([]);
+const height = ref('70vh');
 
 // 鐩戝惉鏃ヤ换鍔″彉鍖�
 watch(
   () => props.dayTask,
+  (nV) => {
+    onDayTaskChange(nV);
+  },
+  { immediate: true }
+);
+
+// 鐩戝惉鐩戠鍦烘櫙鍙樺寲
+watch(
+  () => props.mObjList,
   (nV, oV) => {
-    // if (nV != oV) {
-    //   onDayTaskChange(nV)
-    // }
-    onDayTaskChange(nV)
+    if (nV != oV) {
+      curMonitorObjList.value = useCloned(nV).cloned.value;
+    }
   },
   { immediate: true }
 );
@@ -49,5 +111,78 @@
     curSubTaskList.value = res;
   });
 }
+
+/*************************** 娣诲姞瀛愪换鍔� ************************************/
+
+// 鎵�閫夊満鏅�
+const seletedSceneList = ref([]);
+// 閫夋嫨浠诲姟鍦烘櫙
+function selectScene(item) {
+  item.select = true;
+  seletedSceneList.value.push(item);
+}
+// 绉婚櫎浠诲姟鍦烘櫙
+function deleteScene(item) {
+  item.select = false;
+  const index = seletedSceneList.value.indexOf(item);
+  seletedSceneList.value.splice(index, 1);
+}
+
+function createSubtasks(executors) {
+  const dt = props.dayTask;
+  const subtasks = seletedSceneList.value.map((_) => {
+    const s = _.scene;
+    return {
+      // 涓婚敭鐢辨湇鍔$鍒涘缓
+      stguid: undefined,
+      tguid: dt.tsGuid,
+      tsguid: dt.guid,
+      name: `${s.name}宸℃煡`,
+      typeno: 1,
+      type: '宸℃煡',
+      provincecode: s.provincecode,
+      provincename: s.provincename,
+      citycode: s.citycode,
+      cityname: s.cityname,
+      districtcode: s.districtcode,
+      districtname: s.districtname,
+      scensename: s.name,
+      scenseid: s.guid,
+      scenseaddress: s.location,
+      planstarttime: dt.date,
+      planendtime: dayjs(dt.date).endOf('day').set('millisecond', 0).toDate(),
+      deployerguid: 'rAR0A4gJdlOZEqZs',
+      deployerusername: 'ccheck',
+      deployerrealname: '鏁存敼瀹℃牳',
+      executorguids: executors.ids,
+      executorusernames: executors.uName,
+      executorrealtimes: executors.rName,
+      status: '鏈墽琛�',
+      remark: undefined
+    };
+  });
+
+  // 鏇存柊鍦烘櫙鐩戠娆℃暟
+  seletedSceneList.value.forEach((s) => {
+    s.extension1 = s.extension1 ? parseInt(s.extension1) + 1 + '' : '1';
+  });
+  taskApi.updateMonitorObject(seletedSceneList.value).then((res) => {
+    if (res > 0) {
+      subtaskApi.putSubtasks(subtasks).then((res) => {
+        seletedSceneList.value = [];
+        fetchSubTask(props.dayTask.guid);
+        ElMessage({
+          message: '宸℃煡浠诲姟娣诲姞鎴愬姛',
+          type: 'success'
+        });
+        emit('submit')
+      });
+    }
+  });
+}
+
+function deleteSubtasks() {
+  emit('submit')
+}
 </script>
 <style scoped></style>

--
Gitblit v1.9.3