From d8eda80eaf2f328ed43dc4f5c783b7dee5a4092c Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期六, 12 十月 2024 17:39:39 +0800
Subject: [PATCH] 1. 新增巡查计划功能(待完成); 2. 完成任务的各场景下的分别移除和添加;

---
 src/views/fysp/task/components/CompMonitorObj.vue |  119 +++++++++++++++++++++++++++++++++--------------------------
 1 files changed, 67 insertions(+), 52 deletions(-)

diff --git a/src/views/fysp/task/components/CompMonitorObj.vue b/src/views/fysp/task/components/CompMonitorObj.vue
index 804274d..327787e 100644
--- a/src/views/fysp/task/components/CompMonitorObj.vue
+++ b/src/views/fysp/task/components/CompMonitorObj.vue
@@ -1,25 +1,17 @@
 <template>
-  <el-tabs v-model="activeName" type="border-card" @tab-change="tabChange">
-    <el-tab-pane
-      v-for="item in tabDataList"
-      :key="item.title"
-      :label="item.title"
-      :name="item.title"
-    >
-      <!-- <div> -->
-      <el-space wrap>
-        <ItemMonitorObj v-for="obj in item.children" :key="obj.movid" :item="obj">
-          <template #default="{ item }">
-            <!-- <slot :item="item"></slot> -->
-            <el-button v-if="showDelete" size="small" type="danger" @click="deleteMov(item)"
-              >绉婚櫎</el-button
-            >
-          </template>
-        </ItemMonitorObj>
-      </el-space>
-      <!-- </div> -->
-    </el-tab-pane>
-  </el-tabs>
+  <div>
+    <el-segmented :model-value="activeName" :options="activeTabs" @change="tabChange" />
+  </div>
+  <el-space wrap>
+    <ItemMonitorObj v-for="obj in activeData" :key="obj.movid" :item="obj">
+      <template #default="{ item }">
+        <!-- <slot :item="item"></slot> -->
+        <el-button v-if="showBtn" size="small" type="danger" @click="itemClick(item)">{{
+          btnName
+        }}</el-button>
+      </template>
+    </ItemMonitorObj>
+  </el-space>
 </template>
 
 <script>
@@ -30,59 +22,82 @@
       type: Array,
       default: () => []
     },
+    tabName: {
+      type: String,
+      default: defaultTabName
+    },
+    tabOptions: Array,
+    showData: Array,
     // 鏄惁娣诲姞榛樿鐨勫叏閮ㄩ�夐」
     allOption: Boolean,
-    showDelete: Boolean
+    showBtn: Boolean,
+    btnName: {
+      type: String,
+      default: '绉婚櫎'
+    }
   },
-  emits: ['tabChange'],
+  emits: ['update:tabName', 'update:showData', 'itemClick'],
   data() {
     return {
-      activeName: defaultTabName
+      activeName: defaultTabName,
+      tabs: []
     };
   },
   computed: {
-    tabDataList() {
-      const itemMap = new Map();
-      this.data.forEach((t) => {
-        itemMap.has(t.sceneType) ? itemMap.get(t.sceneType).push(t) : itemMap.set(t.sceneType, [t]);
+    activeData() {
+      const list = this.data.filter((v) => {
+        return this.activeName == defaultTabName || v.sceneType == this.activeName;
+        // return this.tabName == defaultTabName || v.sceneType == this.tabName;
       });
-      const list = [];
-      if (this.allOption) {
-        list.push({
-          title: defaultTabName,
-          children: this.data
-        });
-      }
-      for (const [key, value] of itemMap) {
-        list.push({
-          title: key,
-          children: value
-        });
-      }
+      this.$emit('update:showData', list);
       return list;
+    },
+    activeTabs() {
+      if (this.tabOptions) {
+        return this.tabOptions;
+      } else {
+        return this.tabs;
+      }
     }
   },
   watch: {
-    tabDataList: {
+    data: {
       handler(nV, oV) {
         if (nV != oV && nV.length > 0) {
-          this.activeName = nV[0].title;
-          this.tabChange(this.activeName);
+          this.getTabs(nV);
         }
       },
       immediate: true
+    },
+    tabs: {
+      handler(nV, oV) {
+        if (nV != oV && nV.length > 0) {
+          this.activeName = nV[0];
+          this.tabChange(nV[0]);
+        }
+      },
+      immediate: true
+    },
+    tabName(nV, oV) {
+      if (nV != oV) {
+        this.activeName = nV;
+      }
     }
   },
   methods: {
-    tabChange(tabName) {
-      this.$emit('tabChange', tabName);
-    },
-    deleteMov(item) {
-      const tab = this.tabDataList.find((v) => {
-        return v.title == this.activeName;
+    getTabs(dataList) {
+      const list = [];
+      dataList.forEach((d) => {
+        if (list.indexOf(d.sceneType) == -1) list.push(d.sceneType);
       });
-      const i = tab.children.indexOf(item);
-      tab.children.splice(i, 1);
+      this.tabs = list.sort();
+    },
+    tabChange(tabName) {
+      this.activeName = tabName;
+      this.$emit('update:tabName', tabName);
+    },
+    itemClick(item) {
+      this.$emit('itemClick', item);
     }
   }
 };

--
Gitblit v1.9.3