【study】表格里面的一键替换

62 阅读1分钟
 replaceMethods(reason) {
            const errors = []; // 先判断是否都填写
            reason.configs.forEach((reasonItem) => {
                if (!reasonItem.attrKey) errors.push('请选择属性名称');
                if (!reasonItem.selectType) errors.push('请选择条件');
                if (!reasonItem.attrValue.length) errors.push('请选择属性值');
            });
            if (errors.length) {
                this.$showErr(errors.join(','));
            }
            this.mainData.forEach((mainDateItem) => {
                let canCopyNum = 0; // 因为不是一列,所以需要判断长度相等,全满足才可以替换
                reason.configs.forEach((reasonItem) => {
                    if (reasonItem.type === 'fixed') {
                        canCopyNum += 1; // fixed的时候,select选项一致,所以可以直接替换
                    } else { // 这种情况,需要判断属性名称和属性值都存在,因为可能不存在,不存在的情况下不予替换
                        const attrKey = reasonItem.attrKey; // 属性名称
                        const attValue = reasonItem.attrValue; // 属性值
                        const getAttrKeyOptions = this.getExtOptions(mainDateItem.id).map((item) => item.attrKey);
                        const getAttrValueOptions = this.getExtOptions(mainDateItem.id).map((attrOptionsItem) => attrOptionsItem.attrOptions).map((item) => item.value).filter((undefinedItem) => undefinedItem);
                        const attrKeyValid = getAttrKeyOptions.includes(attrKey);
                        const attrValueValid = attValue.every((item) => { // 属性值可以多选
                            if (getAttrValueOptions.includes(item)) {
                                return true;
                            } else {
                                return false;
                            }
                        });
                        if (attrKeyValid && attrValueValid) canCopyNum += 1;
                    }
                });
                if (canCopyNum === reason.configs.length) {
                    mainDateItem.configs = _.cloneDeep(reason.configs);  // 因为不是一列,所以需要判断长度相等,全满足才可以替换
                }
            });
        },