elementUI多选框问题( 编辑问题 )---更新

elementUI多选框问题( 编辑中选中问题 )---更新( 并传值,父子级id全部在一个数组里 )

<el-form-item v-for="(it, id) in parentChildMap" :key="id" :label="it.name">
     <el-checkbox-group v-model="it.checkList">
         <el-checkbox :label="item.id" v-for="item in it.children" :key="item.id" :checked="item.checkedFlag">{{ item.name }}</el-checkbox>
          </el-checkbox-group>
      </el-form-item>
data:
idArrs: [] //id集合( 传后端 )
 checkList: [],//复选框的值
事件:
submitForm(formName) {
      let arrs = [];
      let brr = [];
      this.parentChildMap.filter(item => {
        if (item.checkList.length != 0) {
          brr = JSON.parse(JSON.stringify(item.checkList));
          brr.unshift(item.id);
          //  console.log(brr, "5555");
          item.ids = brr;
          arrs = [...arrs, ...item.ids];
        }
      });
      this.idArrs = arrs; //id集合   点击提交时触发
      console.log(arrs, "9999999999999");
      this.$refs[formName].validate(valid => {
        if (valid) {
          this.editList();
          this.handelRole();
          this.$refs[formName].resetFields();
          this.$router.go(-1);
        } else {
          this.$message.error("请输入完整");
          return false;
        }
      });
    }

getListRoleList() {
      // 获取 当前 编辑角色的权限数据
      const req = {
        roleId: parseInt(this.$route.query.id)
      };
      roleList(req).then(({ data }) => {
        // 定义接收当前角色的数据
        let currentRolePermissionData = data.data;
        roleManagementPermissionlist().then(({ data }) => {
          this.roleBaseedVal = data.data;
          //使用过滤器先将父集合 和子集合分离出来
          this.roleBaseedVal.filter(item => {
            if (item.menuType == 1) {
              this.parentVal.push(item);
            } else if (item.menuType == 2) {
              this.childBtnVal.push(item);
            }
          });
          //根据parentId和id的相等关系,找出子对应父
          this.parentVal.filter(item => {
            //定义一个空数组,判断关系后重新赋值
            item.children = [];
            // item.parentSwitchFlag = false;
            this.childBtnVal.filter(items => {
              // 遍历当前角色数据 并定义选中与不选中( 在所有的按钮中加一个控制显示隐藏的属性 )
              items.checkedFlag = false;
              for (let i = 0; i < currentRolePermissionData.length; i++) {
                // 判断所有的按钮数据中是否与当前角色id值为一样,如果有值为true选中
                if (items.id == currentRolePermissionData[i].id) {
                  // 值为true时阻止本次循环
                  items.checkedFlag = true;
                  break;
                }
              }
              if (item.id == items.parentId) {
                item.children.push(items);
              }
            });
          });
          //赋值给一个空数组,可以for循环了
          this.parentChildMap = this.parentVal;
          this.parentChildMap.map(itemFlag => {
            this.checkedFlagChild = itemFlag.children.map(itemChildFlag => {
              return itemChildFlag.checkedFlag;
            });
          });
          this.parentChildMap.filter(item => {
            this.$set(item, "checkList", []);
            this.$set(item, "ids", []);
          });
        });
      });
    }
原文地址:https://www.cnblogs.com/home-/p/11900326.html