From 3908a403cb3a852bee96414a8bb82b88371e7b5a Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期二, 22 十月 2024 11:42:33 +0800
Subject: [PATCH] 1. 任务调整模块修改(暂存)

---
 src/components.d.ts                                |    3 
 src/components/list-item/ItemSubTask.vue           |   53 +++++++++++++----
 src/views/fysp/task/components/CompSubTaskList.vue |   31 +++++++++-
 src/views/fysp/task/TaskManage.vue                 |   33 +++++++---
 src/views/fysp/task/components/CompMonitorPlan.vue |   37 +++++++----
 5 files changed, 115 insertions(+), 42 deletions(-)

diff --git a/src/components.d.ts b/src/components.d.ts
index 13c1bdc..12178e1 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -19,6 +19,7 @@
     ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
     ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
     ElButton: typeof import('element-plus/es')['ElButton']
+    ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
     ElCalendar: typeof import('element-plus/es')['ElCalendar']
     ElCard: typeof import('element-plus/es')['ElCard']
     ElCascader: typeof import('element-plus/es')['ElCascader']
@@ -47,6 +48,7 @@
     ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
     ElMenuItemGroup: typeof import('element-plus/es')['ElMenuItemGroup']
     ElOption: typeof import('element-plus/es')['ElOption']
+    ElPageHeader: typeof import('element-plus/es')['ElPageHeader']
     ElPagination: typeof import('element-plus/es')['ElPagination']
     ElPopover: typeof import('element-plus/es')['ElPopover']
     ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
@@ -65,7 +67,6 @@
     ElTabs: typeof import('element-plus/es')['ElTabs']
     ElTag: typeof import('element-plus/es')['ElTag']
     ElText: typeof import('element-plus/es')['ElText']
-    ElTooltip: typeof import('element-plus/es')['ElTooltip']
     ElTree: typeof import('element-plus/es')['ElTree']
     ElUpload: typeof import('element-plus/es')['ElUpload']
     Footer: typeof import('./components/core/Footer.vue')['default']
diff --git a/src/components/list-item/ItemSubTask.vue b/src/components/list-item/ItemSubTask.vue
index 58abf2b..210bebc 100644
--- a/src/components/list-item/ItemSubTask.vue
+++ b/src/components/list-item/ItemSubTask.vue
@@ -1,20 +1,29 @@
 <template>
   <div class="wrapper">
-    <div>
-      <el-text truncated class="w-250px" size="large">{{ item.name }}</el-text>
+    <div class="text-title">
+      {{ item.name }}
     </div>
-    <div>
-      <el-text truncated class="w-250px" size="small">{{ item.scenseaddress }}</el-text>
+    <div class="text-info">
+      <div class="text-label">
+        <el-icon class="m-r-4" size="16"><LocationInformation /></el-icon>
+        <span>浠诲姟鍦板潃锛�</span>
+      </div>
+      {{ item.scenseaddress }}
     </div>
-    <div>
-      <el-text truncated size="small">{{
-        $fm.formatYMDH(item.planstarttime)
-      }}</el-text>
+    <div class="text-info">
+      <div class="text-label">
+        <!-- <el-icon><Clock /></el-icon> -->
+        <el-icon class="m-r-4" size="16"><AlarmClock /></el-icon>
+        <span>浠诲姟鏃堕棿锛�</span>
+      </div>
+      {{ $fm.formatYMD(item.planstarttime) }}
     </div>
-    <div>
-      <el-text truncated class="w-250px" size="small">{{
-        item.executorrealtimes
-      }}</el-text>
+    <div class="text-info">
+      <div class="text-label">
+        <el-icon class="m-r-4" size="16"><User /></el-icon>
+        浠诲姟浜哄憳锛�
+      </div>
+      {{ item.executorrealtimes }}
     </div>
     <el-row justify="end" style="margin-top: 4px">
       <slot :item="item"></slot>
@@ -35,8 +44,28 @@
 <style scoped>
 .wrapper {
   /* width: 300px; */
+  width: 100%;
   border: 1px solid var(--el-border-color);
   border-radius: var(--el-border-radius-base);
   padding: 4px 8px;
 }
+
+.text-title {
+  font-weight: var(--el-font-weight-primary);
+  color: var(--el-text-color-primary);
+  font-size: var(--el-font-size-medium);
+}
+
+.text-info {
+  display: flex;
+  align-items: flex-start;
+  color: var(--el-text-color-secondary);
+  font-size: var(--el-font-size-small);
+}
+
+.text-label {
+  display: flex;
+  align-items: center;
+  white-space: nowrap;
+}
 </style>
diff --git a/src/views/fysp/task/TaskManage.vue b/src/views/fysp/task/TaskManage.vue
index 68efe34..a3e4f21 100644
--- a/src/views/fysp/task/TaskManage.vue
+++ b/src/views/fysp/task/TaskManage.vue
@@ -39,24 +39,26 @@
           <el-tabs model-value="first">
             <el-tab-pane label="鐩戠璁″垝" name="first">
               <el-row>
-                <el-col :span="curSubTaskList.length > 0 ? 16 : 24">
+                <el-col :span="curSubTaskList ? 16 : 24">
                   <CompMonitorPlan
                     :task="curTask.data"
                     @date-change="onDateChange"
                   ></CompMonitorPlan>
                 </el-col>
-                <el-col v-if="curSubTaskList.length > 0" :span="8">
+                <el-col v-if="curSubTaskList" :span="8">
                   <CompSubTaskList
+                    create
                     :data="curSubTaskList"
+                    :loading="subTaskLoading"
                     height="56vh"
                     @add="subTaskDrawer = true"
                   ></CompSubTaskList>
                 </el-col>
               </el-row>
             </el-tab-pane>
-            <el-tab-pane label="鐩戠鍦板浘" name="second">
+            <!-- <el-tab-pane label="鐩戠鍦板浘" name="second">
               <CompTaskMap></CompTaskMap>
-            </el-tab-pane>
+            </el-tab-pane> -->
           </el-tabs>
         </el-row>
         <el-divider></el-divider>
@@ -177,7 +179,8 @@
       // 褰撳墠閫夋嫨鐨勬棩浠诲姟
       curDayTask: {},
       // 褰撳墠閫夋嫨鐨勬棩浠诲姟涓嬬殑瀛愪换鍔�
-      curSubTaskList: [],
+      curSubTaskList: undefined,
+      subTaskLoading: false,
       // 鎬讳换鍔℃柊澧炲脊鍑烘
       topTaskAddVisible: false
     };
@@ -238,7 +241,7 @@
       this.task = task;
       this.sideLoading = false;
       this.mainLoading = true;
-      this.curSubTaskList = []
+      this.curSubTaskList = undefined;
       taskApi
         .fetchMonitorObjectVersion(task.data.tguid)
         .then((res) => {
@@ -268,11 +271,19 @@
       });
     },
     onDateChange(dayTask) {
-      // this.subTaskDrawer = true;
-      this.curDayTask = dayTask;
-      taskApi.fetchSubtaskByDayTask(dayTask.guid).then((res) => {
-        this.curSubTaskList = res;
-      });
+      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;
diff --git a/src/views/fysp/task/components/CompMonitorPlan.vue b/src/views/fysp/task/components/CompMonitorPlan.vue
index e59c37a..037c36c 100644
--- a/src/views/fysp/task/components/CompMonitorPlan.vue
+++ b/src/views/fysp/task/components/CompMonitorPlan.vue
@@ -22,15 +22,15 @@
           <el-row justify="space-between" class="m-t-16">
             <el-space direction="vertical">
               <el-text size="small">鎬昏</el-text>
-              <el-text>{{computeDayTask(data.day).totalTaskNum}}</el-text>
+              <el-text>{{ computeDayTask(data.day).totalTaskNum }}</el-text>
             </el-space>
             <el-space direction="vertical">
               <el-text size="small">瀹屾垚</el-text>
-              <el-text>{{computeDayTask(data.day).completeTaskNum}}</el-text>
+              <el-text>{{ computeDayTask(data.day).completeTaskNum }}</el-text>
             </el-space>
             <el-space direction="vertical">
               <el-text size="small">鏁存敼</el-text>
-              <el-text>{{computeDayTask(data.day).changedTaskNum}}</el-text>
+              <el-text>{{ computeDayTask(data.day).changedTaskNum }}</el-text>
             </el-space>
             <!-- <el-statistic title="鎬昏" :value="computeDayTask(data.day).totalTaskNum" />
             <el-statistic title="瀹屾垚" :value="computeDayTask(data.day).completeTaskNum" />
@@ -55,7 +55,7 @@
     default: () => {}
   }
 });
-const emit = defineEmits(['dateChange'])
+const emit = defineEmits(['dateChange']);
 // 閫変腑鏃ユ湡
 const dateValue = ref(new Date());
 // 鏃ュ巻鏍囬
@@ -70,18 +70,27 @@
 // 鏃ュ巻鑼冨洿
 const startDay = computed(() => dayjs(props.task.starttime));
 const endDay = computed(() => dayjs(props.task.endtime));
-const dateRange = computed(() => [startDay.value.toDate(), endDay.value.toDate()]);
+const dateRange = computed(() => [
+  startDay.value.toDate(),
+  endDay.value.toDate()
+]);
 // const dateRange = computed(() => [new Date(2024, 4, 27), new Date(2024, 5, 30)]);
 
 // 鏃ユ湡鏄惁鍦ㄤ换鍔¤寖鍥村唴
 function isDayEnable(day) {
   const _day = dayjs(day);
-  return _day.isSameOrAfter(startDay.value, 'day') && _day.isSameOrBefore(endDay.value, 'day');
+  return (
+    _day.isSameOrAfter(startDay.value, 'day') &&
+    _day.isSameOrBefore(endDay.value, 'day')
+  );
 }
 
 /********************** 鏃ユ湡鏍峰紡 *********************************/
 function calendarDayClz(day) {
-  return 'calendar-day ' + (isDayEnable(day) ? 'calendar-day-enable' : 'calendar-day-disable');
+  return (
+    'calendar-day ' +
+    (isDayEnable(day) ? 'calendar-day-enable' : 'calendar-day-disable')
+  );
 }
 function getDay(day) {
   return day.split('-').splice(1, 2).join('-');
@@ -119,11 +128,11 @@
 }
 
 function onDateChange(e) {
-  const day = dayjs(e).format('YYYY-MM-DD')
-  const t = computeDayTask(day)
-  console.log(t);
-  
-  emit('dateChange', t)
+  if (isDayEnable(e)) {
+    const day = dayjs(e).format('YYYY-MM-DD');
+    const t = computeDayTask(day);
+    emit('dateChange', t);
+  }
 }
 
 // 鎬讳换鍔$粺璁�
@@ -142,7 +151,7 @@
   () => props.task,
   (nV) => {
     if (nV.tguid) {
-      fetchDayTasks(nV.tguid);      
+      fetchDayTasks(nV.tguid);
     }
   },
   { immediate: true }
@@ -185,7 +194,7 @@
   border: 1px solid rgb(172, 165, 165);
   border-radius: 50%; */
   padding: 8px;
-  height: var(--el-calendar-cell-width);
+  /* min-height: var(--el-calendar-cell-width); */
 }
 
 .calendar-day-enable {
diff --git a/src/views/fysp/task/components/CompSubTaskList.vue b/src/views/fysp/task/components/CompSubTaskList.vue
index d6cc205..b84adbd 100644
--- a/src/views/fysp/task/components/CompSubTaskList.vue
+++ b/src/views/fysp/task/components/CompSubTaskList.vue
@@ -1,12 +1,24 @@
 <template>
   <el-row justify="space-between">
     <el-text>鍗曟棩璁″垝</el-text>
-    <el-button type="success" size="small" @click="add">鏂板</el-button>
+    <el-button
+      v-show="create && data && data.length > 0"
+      type="success"
+      size="small"
+      @click="add"
+      >浠诲姟璋冩暣</el-button
+    >
   </el-row>
   <el-divider />
   <div>
-    <el-scrollbar :height="height">
-      <el-space fill direction="vertical">
+    <el-scrollbar v-loading="loading" :height="height">
+      <el-space
+        v-if="data && data.length > 0"
+        fill
+        :fill-ratio="100"
+        direction="vertical"
+        style="width: 100%"
+      >
         <ItemSubTask v-for="s in data" :key="s.guid" :item="s">
           <template #default="{ item }">
             <el-button type="danger" size="small" @click="remove(item)"
@@ -15,6 +27,14 @@
           </template>
         </ItemSubTask>
       </el-space>
+      <div v-else>
+        <el-empty description="鏃犱换鍔¤褰�" />
+        <el-row justify="center">
+          <el-button type="success" size="small" @click="add"
+            >娣诲姞浠诲姟</el-button
+          >
+        </el-row>
+      </div>
     </el-scrollbar>
   </div>
 </template>
@@ -26,7 +46,10 @@
   height: {
     type: String,
     default: '70vh'
-  }
+  },
+  // 鏄惁鏄剧ず娣诲姞浠诲姟鎸夐挳
+  create: Boolean,
+  loading: Boolean
 });
 const curSubTaskList = ref([]);
 

--
Gitblit v1.9.3