| | |
| | | type: Array, |
| | | default: () => [], |
| | | }, |
| | | initialselectedOrder: { |
| | | type: Array, |
| | | default: () => [], |
| | | }, |
| | | valueKey: { |
| | | type: String, |
| | | default: "value", |
| | |
| | | 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,否则用默认值 |
| | |
| | | // 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) => { |
| | |
| | | } else { |
| | | newOrder.push({ |
| | | value, |
| | | compensateTime: this.defaultCompensateTime, |
| | | compensateTime: this.hasOwnProperty(value) |
| | | ? this.hasOwnProperty(value) |
| | | : this.defaultCompensateTime, |
| | | }); |
| | | } |
| | | }); |
| | |
| | | } |
| | | } |
| | | }, |
| | | 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)); |
| | |
| | | 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() { |
| | | // 转换数据格式为父组件需要的格式 |