From e0909a604449641ebcc6ed15495e6f28515f437c Mon Sep 17 00:00:00 2001
From: WXL (wul) <wl_5969728@163.com>
Date: 星期一, 17 十一月 2025 11:07:57 +0800
Subject: [PATCH] 测试完成

---
 src/components/SortCheckbox/index.vue |   72 +++++++++++++++++++++++++++--------
 1 files changed, 55 insertions(+), 17 deletions(-)

diff --git a/src/components/SortCheckbox/index.vue b/src/components/SortCheckbox/index.vue
index 127a24d..a33c5b4 100644
--- a/src/components/SortCheckbox/index.vue
+++ b/src/components/SortCheckbox/index.vue
@@ -48,14 +48,25 @@
   name: "OrderedCheckboxGroup",
   props: {
     options: {
-      type: Array,
-      default: () => [],
+        type: Array,
+        default: () => [],
+        validator: (value) => {
+            return Array.isArray(value);
+        }
     },
     value: {
-      type: Array,
-      default: () => [],
+        type: Array,
+        default: () => [],
+        validator: (value) => {
+            // 鍏佽绌烘暟缁勶紝浣嗗鏋滄槸闈炴暟缁勫�煎垯鍙戝嚭璀﹀憡
+            if (!Array.isArray(value) && value !== null && value !== undefined) {
+                console.warn('value prop should be an array, received:', typeof value);
+                return false;
+            }
+            return true;
+        }
     },
-    selectedOrder: {
+    initialselectedOrder: {
       type: Array,
       default: () => [],
     },
@@ -76,21 +87,28 @@
   data() {
     return {
       checkedValues: [],
-      // selectedOrder: [], // 鐜板湪鏍煎紡涓� [{value, compensateTime}]
+      selectedOrder: [], // 鐜板湪鏍煎紡涓� [{value, compensateTime}]
     };
   },
   watch: {
     value: {
       immediate: true,
       handler(newVal) {
-        if (
-          Array.isArray(newVal) &&
-          newVal.length > 0 &&
-          typeof newVal[0] === "object"
-        ) {
+        // 棣栧厛纭繚newVal鏄暟缁勶紝濡傛灉涓嶆槸鍒欒浆鎹负绌烘暟缁�
+        if (!Array.isArray(newVal)) {
+          console.warn(
+            "Expected array for value prop, received:",
+            typeof newVal
+          );
+          this.checkedValues = [];
+          this.selectedOrder = [];
+          return;
+        }
+
+        if (newVal.length > 0 && typeof newVal[0] === "object") {
+          console.log(this.selectedOrder, "111");
           // 1. 浼犲叆鐨勬槸瀵硅薄鏁扮粍 [{ sort, preachform, compensateTime }]
-          this.checkedValues = newVal.map((item) => item.preachform); // 鎻愬彇 preachform 缁勬垚閫変腑鍊兼暟缁�
-          // 鏋勫缓 selectedOrder锛屼紭鍏堜娇鐢ㄤ紶鍏ョ殑 compensateTime锛屽惁鍒欑敤榛樿鍊�
+          this.checkedValues = newVal.map((item) => item.preachform);
           this.selectedOrder = newVal.map((item) => ({
             value: item.preachform,
             compensateTime: item.hasOwnProperty("compensateTime")
@@ -98,10 +116,11 @@
               : this.defaultCompensateTime,
           }));
         } else {
-          // 2. 浼犲叆鐨勬槸瀛楃涓叉暟缁� (濡� ["1", "3", "4"]锛屽吋瀹逛箣鍓嶇殑鐢ㄦ硶)
+          // 2. 浼犲叆鐨勬槸瀛楃涓叉暟缁�
           if (JSON.stringify(newVal) !== JSON.stringify(this.checkedValues)) {
             this.checkedValues = [...newVal];
-            // 鏋勫缓鎴栨洿鏂� selectedOrder锛屼繚鐣欏凡鏈夌殑 compensateTime
+            console.log(this.selectedOrder, "222");
+
             const newOrder = [];
             newVal.forEach((value) => {
               const existingItem = this.selectedOrder.find(
@@ -110,9 +129,14 @@
               if (existingItem) {
                 newOrder.push(existingItem);
               } else {
+                // 淇hasOwnProperty鏂规硶璋冪敤
+                const existingCompensateTime = this.hasOwnProperty(value);
                 newOrder.push({
                   value,
-                  compensateTime: this.defaultCompensateTime,
+                  compensateTime:
+                    existingCompensateTime !== false
+                      ? existingCompensateTime
+                      : this.defaultCompensateTime,
                 });
               }
             });
@@ -120,9 +144,10 @@
           }
         }
       },
-        deep: true // 寤鸿娣诲姞 deep: true 浠ョ‘淇濆璞℃暟缁勫唴鐨勫彉鍖栬兘琚崟鑾�
+      deep: true,
     },
     checkedValues(newVal, oldVal) {
+      console.log(this.selectedOrder, "333");
       // 澶勭悊閫変腑椤圭殑鍙樺寲
       const added = newVal.filter((item) => !oldVal.includes(item));
       const removed = oldVal.filter((item) => !newVal.includes(item));
@@ -178,6 +203,19 @@
         this.emitChangeEvent();
       }
     },
+    hasOwnProperty(patfrom) {
+      if (!this.initialselectedOrder || !Array.isArray(this.initialselectedOrder)) {
+        return false;
+    }
+
+    // 浣跨敤find鏂规硶鏌ユ壘鍖归厤鐨勫璞�
+    const foundObject = this.initialselectedOrder.find(
+        (item) => item.preachform === patfrom
+    );
+
+    // 濡傛灉鎵惧埌瀵硅薄锛岃繑鍥炲叾compensateTime锛涘惁鍒欒繑鍥瀎alse
+    return foundObject ? foundObject.compensateTime : false;
+    },
     // 鍙戝皠鍙樺寲浜嬩欢
     emitChangeEvent() {
       // 杞崲鏁版嵁鏍煎紡涓虹埗缁勪欢闇�瑕佺殑鏍煎紡

--
Gitblit v1.9.3