From 3282e95db0207ee133d1e98d9771dec9d83b0fc4 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期四, 02 四月 2026 16:24:38 +0800
Subject: [PATCH] 2026.4.2 新增专题管理功能

---
 pages/inspection/scene/info/devicelist-proxy.js |  115 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 113 insertions(+), 2 deletions(-)

diff --git a/pages/inspection/scene/info/devicelist-proxy.js b/pages/inspection/scene/info/devicelist-proxy.js
index ef5fe3b..aa9d42e 100644
--- a/pages/inspection/scene/info/devicelist-proxy.js
+++ b/pages/inspection/scene/info/devicelist-proxy.js
@@ -1,3 +1,5 @@
+import { fetchDevices, fetchDeviceStatus } from '../../../../services/inspection/fetchDevice';
+
 /**
  * 璁惧淇℃伅绠$悊
  */
@@ -24,17 +26,126 @@
         items: [],
       },
     ],
+    // 璁惧鎯呭喌缁熻
+    deviceSummary: '',
   },
   methods: {
+    fetchAllDeviceInfo() {
+      const array = [];
+      [0, 1, 2].forEach(deviceTypeId => {
+        const f = this.fetchDeviceInfo(deviceTypeId);
+        array.push(f);
+      });
+      return Promise.all(array).then(() => this.getDeviceSummary());
+    },
+    fetchDeviceInfo(deviceTypeId) {
+      const { scene } = this.data;
+      return fetchDevices(scene.guid, deviceTypeId).then(res => {
+        this.setData({
+          [`categories[${deviceTypeId}].items`]: res.data,
+        });
+      });
+    },
     onSideBarChange(e) {
       const { value } = e.detail;
+      this.fetchDeviceInfo(this.data.categories[value].type);
       this.setData({ sideBarIndex: value });
     },
     addNewDevice(e) {
       const { type } = e.currentTarget.dataset;
+      const { scene } = this.data;
       wx.navigateTo({
-        url: `/pages/inspection/scene/info/device-info/index?type=${type}`,
-      })
+        url: `/pages/inspection/scene/info/device-info/index`,
+        success: function (res) {
+          // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+          res.eventChannel.emit('acceptDeviceData', {
+            type,
+            scene,
+            mode: 'add',
+          });
+        },
+        events: {
+          updateDeviceInfoOver: () => {
+            this.fetchDeviceInfo(this.data.categories[this.data.sideBarIndex].type);
+          },
+        },
+      });
+    },
+    updateDevice(e) {
+      const { type, index } = e.currentTarget.dataset;
+      const { scene, categories } = this.data;
+      const [i0, i1] = index;
+      const deviceInfo = categories[i0].items[i1];
+      wx.navigateTo({
+        url: `/pages/inspection/scene/info/device-info/index`,
+        success: function (res) {
+          // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+          res.eventChannel.emit('acceptDeviceData', {
+            type,
+            scene,
+            mode: 'update',
+            deviceInfo,
+          });
+        },
+        events: {
+          updateDeviceInfoOver: () => {
+            this.fetchDeviceInfo(this.data.categories[this.data.sideBarIndex].type);
+          },
+        },
+      });
+    },
+
+    updateStatus(e) {
+      const { type, index } = e.currentTarget.dataset;
+      const { scene, categories } = this.data;
+      const [i0, i1] = index;
+      const deviceInfo = categories[i0].items[i1];
+      wx.navigateTo({
+        url: `/pages/inspection/scene/info/device-status/index`,
+        success: function (res) {
+          // 閫氳繃 eventChannel 鍚戣鎵撳紑椤甸潰浼犻�佹暟鎹�
+          res.eventChannel.emit('acceptDeviceStatusData', {
+            type,
+            scene,
+            deviceInfo,
+          });
+        },
+        events: {
+          updateDeviceStatusOver: () => {
+            this.fetchDeviceInfo(this.data.categories[this.data.sideBarIndex].type);
+          },
+        },
+      });
+    },
+
+    getDeviceSummary() {
+      const { categories } = this.data;
+      let deviceCount = 0,
+        deviceCount0 = 0,
+        deviceCount1 = 0,
+        deviceCount2 = 0,
+        moved = 0,
+        tobeDismantled = 0,
+        tobeChecked = 0,
+        tobeUpdated = 0;
+      let lastestCheck = '';
+      // 鍑犲彴璁惧锛屽叾涓湁鍑犲彴姝e父銆佸嚑鍙扮Щ浣嶃�佸嚑鍙板緟鎷嗭紝浠ュ強鍑犲彴寰呮牳瀹炪�佸嚑鍙板緟鏇存柊锛屽苟涓旀樉绀烘渶鏂版牳鏌ヤ簨浠躲�佽窛浠婂灏戝ぉ锛堣嫢瓒呰繃3涓湀灏辨爣绾級
+      categories.forEach(c => {
+        c.items.forEach(d => {
+          deviceCount++;
+          if (c.type == 0) {
+            deviceCount0++;
+          } else if (c.type == 1) {
+            deviceCount1++;
+          } else if (c.type == 2) {
+            deviceCount2++;
+          }
+        });
+      });
+
+      this.setData({
+        deviceSummary: `鍏辨湁${deviceCount}鍙拌澶囷紝鐩戞祴璁惧${deviceCount0}鍙帮紝娌荤悊璁惧${deviceCount1}鍙帮紝鐢熶骇璁惧${deviceCount2}鍙帮紝`,
+      });
     },
   },
 });

--
Gitblit v1.9.3