管道基础大数据平台系统开发-【前端】-新系統界面
src/views/AuthorizationManagement/roleMenuAuthorization.vue
@@ -1,68 +1,63 @@
<template>
  <div class="menuSettings_box">
    <!-- 角色,单位 -->
    <div
      class="menuSettings_tree"
      style="margin-left: 10px; width: calc(50% - 172px)"
    >
      <My-bread
        :list="[
          `${$t('operatManage.operatManage')}`,
          `${$t('operatManage.RoleMenuAuthorization')}`,
        ]"
      ></My-bread>
      <el-divider />
      <el-form ref="form" :model="selFrom">
        <el-form-item label="单位">
          <el-select
            ref="multiSelect"
            style="width: 300px"
            v-model="selFrom.name"
            placeholder="请选择单位名称..."
            @change="chooseCustom('multiSelect')"
          >
            <el-option
              :value="selectTree"
              class="setstyle"
              style="overflow: auto; height: 200px"
              disabled
    <div class="menuSettings_tree">
      <div class="content_box subpage_Div">
        <My-bread :list="[
            `${$t('operatManage.operatManage')}`,
            `${$t('operatManage.RoleMenuAuthorization')}`,
          ]"></My-bread>
        <el-divider />
        <el-form
          ref="form"
          :model="selFrom"
        >
          <el-form-item label="单位">
            <el-select
            :popper-append-to-body="false"
              ref="multiSelect"
              style="width: 300px;"
              v-model="selFrom.name"
              placeholder="请选择单位名称..."
              @change="chooseCustom('multiSelect')"
            >
              <el-tree
                :data="depList"
                :props="defaultProps"
                :check-on-click-node="true"
                :check-strictly="true"
                node-key="id"
                ref="treeForm"
                @node-click="addAdminHandleNodeClick"
                :default-expanded-keys="[1]"
              <el-option
                :value="selectTree"
                style="  backgrond: transparent;    height: 100%;"
                disabled
              >
              </el-tree>
            </el-option>
          </el-select>
        </el-form-item>
      </el-form>
      <div style="height: 75%">
                <el-tree
                  :data="depList"
                  :props="defaultProps"
                  :check-on-click-node="true"
                  :check-strictly="true"
                  node-key="id"
                  ref="treeForm"
                  @node-click="addAdminHandleNodeClick"
                  :default-expanded-keys="[1]"
                >
                </el-tree>
              </el-option>
            </el-select>
          </el-form-item>
        </el-form>
        <el-table
          :data="tableData"
          style="width: 100%"
          @row-click="singleElection"
          highlight-current-row
          height="85%"
          :header-cell-style="{
            background: 'transparent',
          }"
          height="calc(100% - 135px)"
        >
          <el-table-column align="center" width="55">
          <el-table-column
            align="center"
            width="55"
          >
            <template slot-scope="scope">
              <!-- 可以手动的修改label的值,从而控制选择哪一项 -->
              <el-radio
                class="radio"
                v-model="templateSelection"
                :label="scope.row.id"
                >&nbsp;</el-radio
              >
              >&nbsp;</el-radio>
            </template>
          </el-table-column>
          <el-table-column
@@ -77,50 +72,27 @@
          </el-table-column>
        </el-table>
      </div>
      <div style="margin-top: 20px; text-align: center" class="pagination_box">
        <el-pagination
          @size-change="dephandleSizeChange"
          @current-change="dephandleCurrentChange"
          :current-page="roleDepListData.pageIndex"
          :page-sizes="[10, 20, 30, 40]"
          :page-size="roleDepListData.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="roleDepCount"
        >
        </el-pagination>
      </div>
    </div>
      <div class="content_box subpage_Div">
        <div style="
            font-size: 14px;
            color: #216fe6;
            line-height: 1;
            cursor: text;
            position: relative;
            top: 5px;
            margin-left: 10px;
            display: flex;
            align-items: center;
          ">
          <span>
            {{ $t('operatManage.UserRoleAuthorizationObj.menuTable') }}</span>
        </div>
        <el-divider />
    <!-- 菜单表 -->
    <div
      class="menuSettings_tree"
      style="margin-left: 10px; width: calc(50% - 172px)"
    >
      <div
        style="
          font-size: 14px;
          color: #606266;
          line-height: 1;
          cursor: text;
          position: relative;
          top: 5px;
          margin-left: 10px;
          display: flex;
          align-items: center;
        "
      >
        <span>
          {{
            $t('operatManage.UserRoleAuthorizationObj.PermissionTable')
          }}</span
        >
      </div>
      <el-divider />
      <div class="menuTreeBox">
        <el-tree
          :data="menuList"
          :props="defaultMenuProps"
          :show-checkbox="true"
          :show-checkbox="false"
          :check-on-click-node="true"
          :check-strictly="true"
          node-key="id"
@@ -129,90 +101,93 @@
          :default-expanded-keys="[1]"
        >
        </el-tree>
      </div>
    </div>
    <div class="menuSettings">
      <!-- <div class="title_box">
        <h4>详细信息</h4>
      </div> -->
      <div
        style="
          font-size: 14px;
          color: #606266;
          line-height: 1;
          cursor: text;
          position: relative;
          top: 5px;
          margin-left: 10px;
          display: flex;
          align-items: center;
        "
      >
        <span>
          {{
            $t('operatManage.UserRoleAuthorizationObj.PermissionTable')
          }}</span
      </div>
      <div class="content_box subpage_Div">
        <div style="
            font-size: 14px;
            color: #216fe6;
            line-height: 1;
            cursor: text;
            position: relative;
            top: 5px;
            margin-left: 10px;
            display: flex;
            align-items: center;
          ">
          <span>
            {{
              $t('operatManage.UserRoleAuthorizationObj.PermissionTable')
            }}</span>
          <div
            class="btn"
            style="margin-left: auto"
          >
            <el-button
              v-if="menuStatus.insert"
              type="success"
              icon="el-icon-circle-plus-outline"
              size="small"
              @click="adduser"
              :disabled="menuid == null ? true : false"
            >{{
                $t('operatManage.UserRoleAuthorizationObj.Added')
              }}</el-button>
            <el-button
              v-if="menuStatus.delete"
              type="danger"
              icon="el-icon-delete"
              size="small"
              @click="deletesUser"
              :disabled="menuid == null ? true : false"
            >{{
                $t('operatManage.UserRoleAuthorizationObj.delete')
              }}</el-button>
          </div>
        </div>
        <el-divider class="divider" />
        <el-table
          :data="menuTableData"
          style="width: 100%"
          height="calc(100% - 124px)"
          @selection-change="handleSelectionChange"
        >
        <div class="btn" style="margin-left: auto">
          <el-button
            v-if="menuStatus.insert"
            type="primary"
            icon="el-icon-circle-plus-outline"
            size="small"
            @click="adduser"
            :disabled="menuid == null ? true : false"
            >{{ $t('operatManage.UserRoleAuthorizationObj.Added') }}</el-button
          <el-table-column
            type="selection"
            width="55"
          > </el-table-column>
          <el-table-column
            align="center"
            type="index"
            :label="$t('dataManage.styleObj.index')"
          />
          <el-table-column
            prop="name"
            :label="$t('operatManage.UserRoleAuthorizationObj.name')"
          >
          <el-button
            v-if="menuStatus.delete"
            type="danger"
            icon="el-icon-delete"
            size="small"
            @click="deletesUser"
            :disabled="menuid == null ? true : false"
            >{{ $t('operatManage.UserRoleAuthorizationObj.delete') }}</el-button
          </el-table-column>
        </el-table>
        <div
          style="margin-top: 20px; text-align: center"
          class="pagination_box"
        >
          <el-pagination
            @size-change="authhandleSizeChange"
            @current-change="authhandleCurrentChange"
            :current-page="rolMenuListData.pageIndex"
            :page-sizes="[10, 20, 50, 100]"
            :page-size="rolMenuListData.pageSize"
            layout="prev, pager, next"
            :total="roleMenuCount"
          >
          </el-pagination>
        </div>
      </div>
      <el-divider class="divider" />
      <el-table
        :data="menuTableData"
        stripe
        style="width: 100%"
        height="85%"
        @selection-change="handleSelectionChange"
        :header-cell-style="{
          background: 'transparent',
        }"
      >
        <el-table-column type="selection" width="55"> </el-table-column>
        <el-table-column
          align="center"
          type="index"
          :label="$t('dataManage.styleObj.index')"
        />
        <el-table-column
          prop="name"
          :label="$t('operatManage.UserRoleAuthorizationObj.name')"
        >
        </el-table-column>
      </el-table>
      <div style="margin-top: 20px; text-align: center" class="pagination_box">
        <el-pagination
          @size-change="authhandleSizeChange"
          @current-change="authhandleCurrentChange"
          :current-page="rolMenuListData.pageIndex"
          :page-sizes="[10, 20, 30, 40]"
          :page-size="rolMenuListData.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="roleMenuCount"
        >
        </el-pagination>
      </div>
    </div>
    <el-dialog
      :title="$t('operatManage.UserRoleAuthorizationObj.Added')"
      :visible.sync="dialogTableVisible"
@@ -222,7 +197,10 @@
        height="40vh"
        @selection-change="addhandleSelectionChange"
      >
        <el-table-column type="selection" width="55"> </el-table-column>
        <el-table-column
          type="selection"
          width="55"
        > </el-table-column>
        <el-table-column
          align="center"
          type="index"
@@ -234,25 +212,36 @@
        >
        </el-table-column>
      </el-table>
      <div style="margin-top: 20px; text-align: center" class="pagination_box">
      <div
        style="margin-top: 20px; text-align: center"
        class="pagination_box"
      >
        <el-pagination
          @size-change="addhandleSizeChange"
          @current-change="addhandleCurrentChange"
          :current-page="addlistData.pageIndex"
          :page-sizes="[10, 20, 30, 40]"
          :page-sizes="[10, 20, 50, 100]"
          :page-size="addlistData.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          :total="addcount"
        >
        </el-pagination>
      </div>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogTableVisible = false">{{
      <div
        slot="footer"
        class="dialog-footer"
      >
        <el-button
          size="small"
          @click="dialogTableVisible = false"
        >{{
          $t('dataManage.dictionaryManageObj.cancel')
        }}</el-button>
        <el-button type="primary" @click="addConfirm">{{
          $t('dataManage.dictionaryManageObj.confirm')
        }}</el-button>
        <el-button
          size="small"
          type="primary"
          @click="addConfirm"
        >{{ $t('dataManage.dictionaryManageObj.confirm') }}</el-button>
      </div>
    </el-dialog>
  </div>
@@ -263,7 +252,7 @@
import {
  queryDepTree,
  select_Role_ByPageAndCount,
  selectMenuRecursive,
  selectMenuRecursives,
  roleMenuAuthelectByPageForRole,
  menuAuthSelectByPageForRole,
  roleMenuAuthInserts,
@@ -330,7 +319,7 @@
      this.depList = this.treeData(data.result);
    },
    async getMenuTree() {
      const data = await selectMenuRecursive({ name: '管道基础大数据平台' });
      const data = await selectMenuRecursives({ name: menuStartName });
      if (data.code !== 200) {
        return this.$message.error('请求单位报错');
      }
@@ -359,6 +348,7 @@
    },
    menuTreeCheck(node, list) {
      if (list.checkedNodes.length > 0) {
        if (this.roleid == null) return;
        this.rolMenuListData.menuid = node.id;
        this.menuid = node.id;
        this.rolMenuListData.roleid = this.roleid;
@@ -399,8 +389,12 @@
      this.addcount = data.count;
    },
    singleElection(row) {
      this.getMenuTree();
      this.menuTableData = [];
      this.roleMenuCount = 0;
      this.templateSelection = row.id;
      this.roleid = row.id;
      this.roleDepCheckList = this.tableData.filter(
        (item) => item.id === row.id
      );
@@ -462,15 +456,40 @@
      this.usermultipleSelection.forEach((e) => {
        arr.push(e.id);
      });
      const data = await roleMenuAuthDeletes({ ids: arr.toString() });
      if (data.code !== 200) {
        return this.$message.error('删除失败');
      }
      this.$message({
        message: '删除成功',
        type: 'success',
      this.$confirm('此操作将永久删除该权限, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(async () => {
        const data = await roleMenuAuthDeletes({ ids: arr.toString() });
        if (data.code == 200) {
          this.InsertFormdialog = false;
          this.$message({
            message: '删除成功!',
            type: 'success',
          });
          this.getRoleMenu();
        } else {
          this.$message({
            message: '删除失败!',
            type: 'warning',
          });
        }
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
      this.getRoleMenu();
      // const data = await roleMenuAuthDeletes({ ids: arr.toString() });
      // if (data.code !== 200) {
      //   return this.$message.error('删除失败');
      // }
      // this.$message({
      //   message: '删除成功',
      //   type: 'success',
      // });
      // this.getRoleMenu();
    },
    addConfirm() {
      this.$confirm('确定是否新增', '提示', {
@@ -495,7 +514,7 @@
          this.dialogTableVisible = false;
          this.getRoleMenu();
        })
        .catch(() => {});
        .catch(() => { });
    },
    showPermsMenu(res) {
      switch (res.tag) {
@@ -527,94 +546,36 @@
<style lang="less" scoped>
//@import url(); 引入公共css类
.menuSettings_box {
  //   background: rgb(240, 242, 245);
  border-radius: 10px;
  height: 100%;
  padding: 10px;
  box-sizing: border-box;
  display: flex;
  height: 98%;
  width: 98%;
  padding: 1%;
  .menuSettings_tree {
    position: relative;
    width: 344px;
    display: flex;
    justify-content: space-around;
    width: 100%;
    height: 100%;
    background: rgb(240, 242, 245);
    padding: 20px;
    border-radius: 10px;
    box-sizing: border-box;
    overflow: auto;
    .saveBtn {
      position: absolute;
      left: 250px;
      top: 23px;
    }
    .menuTreeBox {
      height: 90%;
      overflow: auto;
      .el-tree {
        background: transparent;
        font-size: 15px;
        font-family: Microsoft YaHei;
        font-weight: 400;
        color: #000000;
        // /deep/ .el-tree-node__label {
        //   font-size: 18px;
        // }
        /deep/ .el-tree-node {
          padding-top: 10px;
          // padding-bottom: 10px;
        }
        /deep/ .el-tree-node:focus > .el-tree-node__content {
          background-color: #b9b9b9;
        }
        /deep/ .el-tree-node__content:hover {
          background-color: rgb(153, 153, 153);
        }
        .btnBox {
          margin-left: 5px;
          .el-button + .el-button {
            margin-left: 5px;
          }
        }
      }
    }
  }
  .menuSettings {
    width: calc(50% - 172px);
    border-radius: 10px;
    background: rgb(240, 242, 245);
    margin-left: 10px;
    height: 100%;
    padding: 20px;
    box-sizing: border-box;
    .title_box {
      background: #fff;
    .content_box {
      padding: 10px;
      margin-bottom: 24px;
      display: flex;
      border-radius: 10px;
      border: 1px solid rgb(202, 201, 204);
      box-sizing: border-box;
      width: 30%;
      height: 94%;
      overflow-y: auto;
      overflow-x: hidden;
      border-radius: 5px;
    }
  }
  .table_box {
    padding: 10px;
    background: #fff;
    border-radius: 5px;
    border: 1px solid rgb(202, 201, 204);
    overflow: auto;
    height: 85%;
  }
  .divider {
    margin-top: 8px;
  }
}
.el-table,
.el-table /deep/ .el-table__expanded-cell {
  background-color: transparent;
  background-color: transparent !important;
}
.el-table /deep/ th,
.el-table /deep/ tr {
  background-color: transparent;
}
  background-color: transparent !important;
}
</style>