zoukankan      html  css  js  c++  java
  • table多选

    <!-- Vue SFC -->
    <template>
      <div class="h overflow">
        <div class="new-header clearfix bxs">
          <div class="header-item header-lf h cupo" @click="backFn">
            <i class="el-icon-arrow-left"></i>
            <span class="header-lf-btn cor6 h">返回</span>
          </div>
          <div class="header-item header-rt h">
            <el-button type="primary" size="mini" @click="saveBefore('form')">保存</el-button>
          </div>
        </div>
        <div class="new-content bxs" style="overflow-y: auto;">
          <el-form :rules="rules" ref="form" :model="role" label-width="120px">
            <el-form-item label="角色名称:" prop="roleName">
              <el-input
                v-model="role.roleName"
                class="w500"
                maxlength="15"
                minlength="0"
                show-word-limit
              ></el-input>
            </el-form-item>
            <el-form-item label="角色类型:">
              <span>{{this.$route.query.id?role.roleTypeDesc:'业务角色'}}</span>
            </el-form-item>
            <el-form-item label="角色说明:" prop="remark">
              <el-input
                type="textarea"
                rows="5"
                class="w500"
                maxlength="250"
                minlength="0"
                show-word-limit
                v-model="role.remark"
              ></el-input>
            </el-form-item>
            <el-form-item label="角色权限:">
              <el-table :data="data" style=" 100%" @selection-change="handleSelectionChange">
                <!-- @click="handleSelectionOnly(scope.row)" -->
                <el-table-column type="selection" width="55"></el-table-column>
                <el-table-column type="expand">
                  <template slot-scope="props">
                    <div class="flex">
                      <el-checkbox-group
                        v-model="checkArr[props.$index]"
                        @change="cheChange(props.row.$index)"
                      >
                        <el-checkbox
                          v-for="(item,i) of props.row.authorityDtos"
                          :key="i"
                          :label="item.authorityCode"
                        >{{item.authorityName}}</el-checkbox>
                      </el-checkbox-group>
                    </div>
                  </template>
                </el-table-column>
                <el-table-column label="权限名称" prop="moduleName"></el-table-column>
              </el-table>
              <!-- <el-tree
                :data="data"
                show-checkbox
                :props="defaultProps"
                :default-expand-all="true"
                :check-on-click-node="true"
                @check="clickBox"
                @check-change="parentModules"
                @node-click="clickBox"
                node-key="authorityCode"
                ref="tree"
              ></el-tree>-->
            </el-form-item>
          </el-form>
        </div>
        <div>
          <button @click="getcheckArr">点击</button>
        </div>
      </div>
    </template>
    
    <script>
    import { putRole, roleWithAuthority, getOrgTree } from "@/api/role_Manage";
    export default {
      name: "newRole",
    
      components: {},
      data() {
        return {
          role: {
            remark: "",
            roleAuthorityCodes: [],
            roleId: "",
            roleName: "",
            roleType: null,
            roleTypeDesc: "",
          },
          checkList: [],
          rules: {
            roleName: [
              {
                min: 0,
                max: 15,
                message: "长度在 0 到 15 个字符",
                trigger: "blur",
              },
              { required: true, message: "请输入角色名称", trigger: "blur" },
            ],
            remark: [
              {
                min: 0,
                max: 250,
                message: "长度在 0 到 250 个字符",
                trigger: "blur",
              },
            ],
          },
          data: [],
          defaultProps: {
            children: "authorityDtos",
            label: "authorityName",
          },
          checkArr: [],
          checkArrCopy: [],
        };
      },
      created() {
        console.log(this.$route.query);
        this.getOrgTree();
        if (this.$route.query.id) {
          this.getData();
        }
      },
      methods: {
        handleSelectionOnly(e, index) {
          console.log(e);
          console.log(index);
        },
        getcheckArr() {
          console.log(this.checkArr);
        },
        // 获取数据
        async getData() {
          // let user = this.$store.state.user.userinfo;
          let datVal = {
            roleId: this.$route.query.id,
          };
          console.log(datVal);
          this.loading = true;
          const result = await roleWithAuthority(datVal);
          this.role = result.data;
          this.loading = false;
          console.log(result.data);
        },
        // 获取机构树
        async getOrgTree() {
          const result = await getOrgTree();
          this.data = result.data;
          console.log(result.data);
          let num = result.data.length;
          let arr = [];
          for (let i = 0; i < num; i++) {
            arr.push([]);
          }
          this.checkArr = arr;
          this.checkArrCopy = JSON.parse(JSON.stringify(arr));
          console.log(this.checkArr);
        },
    
        backFn() {
          this.$router.push({
            name: "roleList",
          });
        },
        saveBefore(formName) {
          this.$refs[formName].validate(async (valid) => {
            if (valid) {
              if (!this.$route.query.id) {
                this.role.roleType = 1;
              }
              this.loading = true;
              const result = await putRole(this.role);
              console.log(result);
              this.loading = false;
            } else {
              console.log("error submit!!");
              return false;
            }
          });
        },
        handleSelectionChange(val) {
          console.log(val);
          let lists = this.data;
          let indexArr = [];
          if (val.length == 0) {
            this.checkArr = JSON.parse(JSON.stringify(this.checkArrCopy));
          } else {
            for (let j = 0; j < val.length; j++) {
              for (let i = 0; i < lists.length; i++) {
                if (val[j].moduleCode == lists[i].moduleCode) {
                  indexArr.push(i);
                }
              }
            }
            let checkArr = this.checkArr;
            console.log(indexArr);
            for (let i = 0; i < indexArr.length; i++) {
              let cheArr = [];
              for (let j = 0; j < lists[indexArr[i]].authorityDtos.length; j++) {
                cheArr.push(lists[indexArr[i]].authorityDtos[j]);
              }
              checkArr[indexArr[i]] = cheArr;
            }
            this.checkArr = JSON.parse(JSON.stringify(checkArr));
          }
        },
        cheChange(val) {
          console.log(val);
        },
      },
    };
    </script>
    <style lang="scss" scoped>
    .new-header {
      width: 100%;
      height: 40px;
      position: absolute;
      left: 0;
      top: 0;
      z-index: 100;
      background: #fff;
      box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.3);
      .header-item {
        line-height: 40px;
      }
      .header-lf {
        position: absolute;
        left: 10px;
        top: 0;
        .header-lf-btn {
          display: inline-block;
          font-size: 12px;
          vertical-align: top;
          padding-right: 20px;
        }
      }
      .header-rt {
        position: absolute;
        right: 10px;
        top: 0;
      }
    }
    .new-content {
      padding-top: 40px;
      padding-right: 40px;
    }
    </style>

  • 相关阅读:
    docker学习1--dockerfile
    关于java php go 中AES加解密秘钥长度问题
    API设计中响应数据格式用json的优点
    mac air中编译安装swoole
    跟踪填写表单重复信息
    JS简单实现点赞操作
    JS验证码生成(入门级别)
    注册页面(入门)
    登录表单(入门简单)
    简单的UDP编程1
  • 原文地址:https://www.cnblogs.com/dianzan/p/13720311.html
Copyright © 2011-2022 走看看