From 074bcb8394fab66ce531c219e1e7de7c142ff2d5 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 29 五月 2026 11:07:10 +0800
Subject: [PATCH] 新增智能电表、空调管理

---
 admin/src/components/business/commonFunctions.vue |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/admin/src/components/business/commonFunctions.vue b/admin/src/components/business/commonFunctions.vue
index 15ce0d7..b3eb492 100644
--- a/admin/src/components/business/commonFunctions.vue
+++ b/admin/src/components/business/commonFunctions.vue
@@ -9,7 +9,7 @@
             <span>璇锋牴鎹娇鐢ㄤ範鎯嚜瀹氫箟甯哥敤鍔熻兘锛屾敮鎸佹嫋鍔ㄦ帓</span>
             <draggable v-model="filterList" chosenClass="chosen" forceFallback="true" group="people" animation="1000">
                 <transition-group class="dra">
-                    <div class="list" v-for="(item, index) in filterList" :key="index">
+                    <div class="list" v-for="item in filterList" :key="item.path || item.id">
                         <div class="list_checkbox">
                             <el-checkbox v-model="item.checked"> </el-checkbox>
                         </div>
@@ -25,7 +25,7 @@
 <script>
   import BaseOpera from '@/components/base/BaseOpera'
   import GlobalWindow from '@/components/common/GlobalWindow'
-  import { updMyYwQuickModel, getDefaultYwQuickList } from '@/api/ywWorkDesk'
+  import { updMyYwQuickModel, getDefaultYwQuickList, getYwQuickList } from '@/api/ywWorkDesk'
   import draggable from 'vuedraggable'
   export default {
     name: 'commonFunctions',
@@ -39,14 +39,25 @@
     methods: {
       open (title) {
         this.title = title
-        getDefaultYwQuickList({})
-          .then(res => {
-            res.forEach(item => {
-              item.checked = false
+        Promise.all([getDefaultYwQuickList(), getYwQuickList()])
+          .then(([allList, myList]) => {
+            const selectedPaths = (myList || []).map(item => item.path)
+            const pathOrder = new Map(selectedPaths.map((path, index) => [path, index]))
+            const selected = []
+            const unselected = []
+            ;(allList || []).forEach(item => {
+              const entry = { ...item, checked: selectedPaths.includes(item.path) }
+              if (entry.checked) {
+                selected.push(entry)
+              } else {
+                unselected.push(entry)
+              }
             })
-            this.filterList = res
+            selected.sort((a, b) => (pathOrder.get(a.path) || 0) - (pathOrder.get(b.path) || 0))
+            this.filterList = [...selected, ...unselected]
             this.visible = true
           })
+          .catch(e => this.$tip.apiFailed(e))
       },
       confirm () {
         this.isWorking = true

--
Gitblit v1.9.3