yijiusmile
2021-03-09 d0c378489fb96ed691b8c54d36c2515c529116f2
设置权限时,选中子部门自动选择父部门
1个文件已修改
32 ■■■■■ 已修改文件
src/views/febs/system/user/Edit.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/febs/system/user/Edit.vue
@@ -66,13 +66,14 @@
        <el-tree
          ref="deptTree"
          :data="deptTree"
          :check-strictly="false"
          :check-strictly="true"
          :default-checked-keys="user.deptIdsArr"
          show-checkbox
          accordion
          node-key="id"
          highlight-current
          style="border: 1px solid #DCDFE6;border-radius: 3px;padding: 6px;"
          @check="checkeTree"
        />
      </el-form-item>
      <el-form-item :label="$t('table.user.status')" prop="status">
@@ -256,6 +257,35 @@
    close() {
      this.$emit('close')
    },
    // 选中子节点,默认选中父节点
    checkeTree(data) {
      let thisNode = this.$refs.deptTree.getNode(data.id) // 获取当前节点
      const keys = this.$refs.deptTree.getCheckedKeys() // 获取已勾选节点的key值
      if (thisNode.checked) { // 当前节点若被选中
        // if (thisNode.data.id !== '1') {
        //   this.checkAllChild(thisNode, keys)
        // }
        for (let i = thisNode.level; i > 1; i--) { // 判断是否有父级节点
          if (!thisNode.parent.checked) { // 父级节点未被选中,则将父节点替换成当前节点,往上继续查询,并将此节点key存入keys数组
            thisNode = thisNode.parent
            keys.push(thisNode.data.id)
          }
        }
      }
      this.$refs.deptTree.setCheckedKeys(keys) // 将所有keys数组的节点全选中
    },
    checkAllChild(data, keys) {
      if (data.childNodes.length === 0) {
        return
      } else {
        for (let i = 0; i < data.childNodes.length; i++) {
          if (!data.childNodes[i].checked) {
            keys.push(data.childNodes[i].data.id)
          }
          this.checkAllChild(data.childNodes[i], keys)
        }
      }
    },
    submitForm() {
      this.$refs.form.validate((valid) => {
        if (valid) {