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 |   74 +++++++++++++++++++++++-------------
 1 files changed, 47 insertions(+), 27 deletions(-)

diff --git a/src/components/SortCheckbox/index.vue b/src/components/SortCheckbox/index.vue
index 4ae95f1..a33c5b4 100644
--- a/src/components/SortCheckbox/index.vue
+++ b/src/components/SortCheckbox/index.vue
@@ -48,12 +48,23 @@
   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;
+        }
     },
     initialselectedOrder: {
       type: Array,
@@ -83,16 +94,21 @@
     value: {
       immediate: true,
       handler(newVal) {
-        if (
-          Array.isArray(newVal) &&
-          newVal.length > 0 &&
-          typeof newVal[0] === "object"
-        ) {
-          console.log(this.selectedOrder, "111");
+        // 棣栧厛纭繚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")
@@ -100,12 +116,11 @@
               : this.defaultCompensateTime,
           }));
         } else {
-          // 2. 浼犲叆鐨勬槸瀛楃涓叉暟缁� (濡� ["1", "3", "4"]锛屽吋瀹逛箣鍓嶇殑鐢ㄦ硶)
+          // 2. 浼犲叆鐨勬槸瀛楃涓叉暟缁�
           if (JSON.stringify(newVal) !== JSON.stringify(this.checkedValues)) {
             this.checkedValues = [...newVal];
             console.log(this.selectedOrder, "222");
-            console.log(this.newVal, "22");
-            // 鏋勫缓鎴栨洿鏂� selectedOrder锛屼繚鐣欏凡鏈夌殑 compensateTime
+
             const newOrder = [];
             newVal.forEach((value) => {
               const existingItem = this.selectedOrder.find(
@@ -114,11 +129,14 @@
               if (existingItem) {
                 newOrder.push(existingItem);
               } else {
+                // 淇hasOwnProperty鏂规硶璋冪敤
+                const existingCompensateTime = this.hasOwnProperty(value);
                 newOrder.push({
                   value,
-                  compensateTime: this.hasOwnProperty(value)
-                    ? this.hasOwnProperty(value)
-                    : this.defaultCompensateTime,
+                  compensateTime:
+                    existingCompensateTime !== false
+                      ? existingCompensateTime
+                      : this.defaultCompensateTime,
                 });
               }
             });
@@ -126,7 +144,7 @@
           }
         }
       },
-      deep: true, // 寤鸿娣诲姞 deep: true 浠ョ‘淇濆璞℃暟缁勫唴鐨勫彉鍖栬兘琚崟鑾�
+      deep: true,
     },
     checkedValues(newVal, oldVal) {
       console.log(this.selectedOrder, "333");
@@ -186,15 +204,17 @@
       }
     },
     hasOwnProperty(patfrom) {
-      console.log(patfrom);
-      console.log(this.initialselectedOrder);
-      // 浣跨敤find鏂规硶鏌ユ壘鍖归厤鐨勫璞�
-      const foundObject = this.initialselectedOrder.find(
-        (item) => item.preachform === patfrom
-      );
+      if (!this.initialselectedOrder || !Array.isArray(this.initialselectedOrder)) {
+        return false;
+    }
 
-      // 濡傛灉鎵惧埌瀵硅薄锛岃繑鍥炲叾compensateTime锛涘惁鍒欒繑鍥瀎alse
-      return foundObject ? foundObject.compensateTime : false;
+    // 浣跨敤find鏂规硶鏌ユ壘鍖归厤鐨勫璞�
+    const foundObject = this.initialselectedOrder.find(
+        (item) => item.preachform === patfrom
+    );
+
+    // 濡傛灉鎵惧埌瀵硅薄锛岃繑鍥炲叾compensateTime锛涘惁鍒欒繑鍥瀎alse
+    return foundObject ? foundObject.compensateTime : false;
     },
     // 鍙戝皠鍙樺寲浜嬩欢
     emitChangeEvent() {

--
Gitblit v1.9.3