WXL (wul)
4 天以前 cb3c799e1bd6a7cf5dd5c7e3cadee238bf67b729
src/components/SortCheckbox/index.vue
@@ -55,10 +55,10 @@
      type: Array,
      default: () => [],
    },
    // selectedOrder: {
    //   type: Array,
    //   default: () => [],
    // },
    initialselectedOrder: {
      type: Array,
      default: () => [],
    },
    valueKey: {
      type: String,
      default: "value",
@@ -88,6 +88,8 @@
          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,否则用默认值
@@ -101,6 +103,8 @@
          // 2. 传入的是字符串数组 (如 ["1", "3", "4"],兼容之前的用法)
          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) => {
@@ -112,7 +116,9 @@
              } else {
                newOrder.push({
                  value,
                  compensateTime: this.defaultCompensateTime,
                  compensateTime: this.hasOwnProperty(value)
                    ? this.hasOwnProperty(value)
                    : this.defaultCompensateTime,
                });
              }
            });
@@ -120,9 +126,10 @@
          }
        }
      },
        deep: true // 建议添加 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 +185,17 @@
        this.emitChangeEvent();
      }
    },
    hasOwnProperty(patfrom) {
      console.log(patfrom);
      console.log(this.initialselectedOrder);
      // 使用find方法查找匹配的对象
      const foundObject = this.initialselectedOrder.find(
        (item) => item.preachform === patfrom
      );
      // 如果找到对象,返回其compensateTime;否则返回false
      return foundObject ? foundObject.compensateTime : false;
    },
    // 发射变化事件
    emitChangeEvent() {
      // 转换数据格式为父组件需要的格式