管道基础大数据平台系统开发-【前端】-新系統界面
584911253@qq.com
2023-03-02 8bb00665765e8348aeb3a6e799069287e503e1ab
src/views/AuthorizationManagement/userRoleAuthorization.vue
@@ -1,6 +1,6 @@
<template>
  <div class="menuSettings_box">
    <div class="menuSettings_tree">
  <div class="menuSettings_box userRoleAuthorization userRoleAuthorization1">
    <div class="menuSettings_left_tree subpage_Div userRoleAuthorization_left content-border">
      <My-bread
        :list="[
          `${$t('operatManage.operatManage')}`,
@@ -10,27 +10,30 @@
      <el-divider />
      <div class="menuTreeBox">
        <el-card class="el-card-define">
          <div class="card_tree">
            <el-tree
              :data="depList"
              :props="defaultProps"
              :show-checkbox="true"
              :check-on-click-node="true"
              :check-strictly="true"
              node-key="id"
              @check="treeCheck"
              :default-expanded-keys="[1]"
              ref="treeForm"
            >
            </el-tree>
          </div>
        </el-card>
        <div class="card_tree">
          <el-tree
            :data="depList"
            :props="defaultProps"
            :show-checkbox="false"
            :check-on-click-node="true"
            :check-strictly="true"
            node-key="id"
            @check="treeCheck"
            :default-expanded-keys="[1]"
            ref="treeForm"
          >
          </el-tree>
        </div>
      </div>
    </div>
    <!-- <div class="userRoleAuthorization_resize" title="收缩侧边栏">⋮</div> -->
    <div
      class="menuSettings_tree"
      style="margin-left: 10px; width: calc(50% - 172px)"
      class="
        menuSettings_tree
        subpage_Div
        userRoleAuthorization_mid userRoleAuthorization_left1
        content-border
      "
    >
      <div
        style="
@@ -43,14 +46,15 @@
          margin-left: 10px;
        "
      >
        {{ $t('operatManage.UserRoleAuthorizationObj.RoleTable') }}
        {{ $t("operatManage.UserRoleAuthorizationObj.RoleTable") }}
      </div>
      <el-divider />
      <el-table
        :data="tableData"
        style="width: 100%"
        border
        @row-click="singleElection"
        height="85%"
        height="calc(100% - 80px)"
      >
        <el-table-column align="center" width="55">
          <template slot-scope="scope">
@@ -75,23 +79,21 @@
        >
        </el-table-column>
      </el-table>
      <div style="text-align: center; margin-top: 20px" class="pagination_box">
      <div style="text-align: center; margin-top: 10px" class="pagination_box">
        <el-pagination
          @size-change="handleSizeChange"
          @current-change="handleCurrentChange"
          :current-page="listData.pageIndex"
          :page-sizes="[10, 20, 30, 40]"
          :page-sizes="[10, 20, 50, 100]"
          :page-size="userlistData.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          layout="prev, pager, next"
          :total="count"
        >
        </el-pagination>
      </div>
    </div>
    <div class="menuSettings">
      <!-- <div class="title_box">
        <h4>详细信息</h4>
      </div> -->
    <!-- <div class="userRoleAuthorization_resize1" title="收缩侧边栏">⋮</div> -->
    <div class="menuSettings_tree subpage_Div userRoleAuthorization_mid1 content-border">
      <div
        style="
          font-size: 14px;
@@ -99,25 +101,25 @@
          line-height: 1;
          cursor: text;
          position: relative;
          top: 5px;
          top: 0px;
          margin-left: 10px;
          display: flex;
          align-items: center;
          flex-wrap: wrap;
        "
      >
        <span>
          {{ $t('operatManage.UserRoleAuthorizationObj.userTable') }}</span
          {{ $t("operatManage.UserRoleAuthorizationObj.userTable") }}</span
        >
        <div class="btn" style="margin-left: auto">
        <div class="btn" style="margin-left: auto;">
          <el-button
            v-if="menuStatus.insert"
            type="primary"
            type="success"
            icon="el-icon-circle-plus-outline"
            size="small"
            :disabled="roleid == null ? true : false"
            @click="adduser"
            style="ba"
            >{{ $t('operatManage.UserRoleAuthorizationObj.Added') }}</el-button
            >{{ $t("operatManage.UserRoleAuthorizationObj.Added") }}</el-button
          >
          <el-button
            v-if="menuStatus.delete"
@@ -126,7 +128,7 @@
            size="small"
            @click="deletesUser"
            :disabled="roleid == null ? true : false"
            >{{ $t('operatManage.UserRoleAuthorizationObj.delete') }}</el-button
            >{{ $t("operatManage.UserRoleAuthorizationObj.delete") }}</el-button
          >
        </div>
      </div>
@@ -135,7 +137,8 @@
      <el-table
        :data="usertableData"
        style="width: 100%"
        height="85%"
        border
         height="calc(100% - 80px)"
        @selection-change="handleSelectionChange"
      >
        <el-table-column type="selection" width="55"> </el-table-column>
@@ -151,14 +154,14 @@
        </el-table-column>
      </el-table>
      <div style="margin-top: 20px; text-align: center" class="pagination_box">
      <div style="margin-top: 10px; text-align: center" class="pagination_box">
        <el-pagination
          @size-change="userhandleSizeChange"
          @current-change="userhandleCurrentChange"
          :current-page="userlistData.pageIndex"
          :page-sizes="[10, 20, 30, 40]"
          :page-sizes="[10, 20, 50, 100]"
          :page-size="userlistData.pageSize"
          layout="total, sizes, prev, pager, next, jumper"
          layout="prev, pager, next"
          :total="usercount"
        >
        </el-pagination>
@@ -190,7 +193,7 @@
          @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"
@@ -198,11 +201,11 @@
        </el-pagination>
      </div>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogTableVisible = false">{{
          $t('dataManage.dictionaryManageObj.cancel')
        <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 size="small" type="primary" @click="addConfirm">{{
          $t("dataManage.dictionaryManageObj.confirm")
        }}</el-button>
      </div>
    </el-dialog>
@@ -210,7 +213,7 @@
</template>
<script>
import MyBread from '../../components/MyBread.vue';
import MyBread from "../../components/MyBread.vue";
import {
  queryDepTree,
  select_Role_ByPageAndCount,
@@ -218,7 +221,7 @@
  roleUserdeletes,
  userselectByPageForRole,
  roleUserinserts,
} from '../../api/api';
} from "../../api/api";
export default {
  //import引入的组件需要注入到对象中才能使用
  components: {
@@ -242,18 +245,18 @@
      usercount: 0,
      tableData: [],
      //   当前选择的行的id
      templateSelection: '',
      templateSelection: "",
      //   当前选择的行的数据
      checkList: [],
      defaultProps: {
        children: 'children',
        label: 'name',
        children: "children",
        label: "name",
      },
      oriData: [], //原始树数据
      depList: [], //el树数据
      backUpData: {},
      formLabelWidth: '170px',
      formLabelWidth: "170px",
      listData: {
        pageIndex: 1,
        pageSize: 10,
@@ -271,11 +274,105 @@
    };
  },
  methods: {
    //左右拖動
    dragControllerDiv() {
      let resize = document.getElementsByClassName(
        "userRoleAuthorization_resize"
      );
      let left = document.getElementsByClassName("userRoleAuthorization_left");
      let mid = document.getElementsByClassName("userRoleAuthorization_mid");
      let box = document.getElementsByClassName("userRoleAuthorization");
      for (let i = 0; i < resize.length; i++) {
        // 鼠标按下事件
        resize[i].onmousedown = function (e) {
          //颜色改变提醒
          resize[i].style.background = "#818181";
          let startX = e.clientX;
          resize[i].left = resize[i].offsetLeft;
          // 鼠标拖动事件
          document.onmousemove = function (e) {
            let endX = e.clientX;
            let moveLen = resize[i].left + (endX - startX); // (endx-startx)=移动的距离。resize[i].left+移动的距离=左边区域最后的宽度
            let maxT = box[i].clientWidth - resize[i].offsetWidth; // 容器宽度 - 左边区域的宽度 = 右边区域的宽度
            if (moveLen < 205) moveLen = 205; // 左边区域的最小宽度为32px
            if (moveLen > maxT - 300) moveLen = maxT - 300; //右边区域最小宽度为150px
            resize[i].style.left = moveLen; // 设置左侧区域的宽度
            for (let j = 0; j < left.length; j++) {
              left[j].style.width = moveLen + "px";
              mid[j].style.width = box[i].clientWidth - moveLen - 10 + "px";
            }
          };
          // 鼠标松开事件
          document.onmouseup = function (evt) {
            //颜色恢复
            resize[i].style.background = "#d6d6d6";
            document.onmousemove = null;
            document.onmouseup = null;
            resize[i].releaseCapture && resize[i].releaseCapture(); //当你不在需要继续获得鼠标消息就要应该调用ReleaseCapture()释放掉
          };
          resize[i].setCapture && resize[i].setCapture(); //该函数在属于当前线程的指定窗口里设置鼠标捕获
          return false;
        };
      }
    },
    dragControllerDiv1() {
      let resize = document.getElementsByClassName(
        "userRoleAuthorization_resize1"
      );
      let left = document.getElementsByClassName("userRoleAuthorization_left1");
      let left1 = document.getElementsByClassName("userRoleAuthorization_left");
      let mid = document.getElementsByClassName("userRoleAuthorization_mid1");
      let box = document.getElementsByClassName("userRoleAuthorization1");
      console.log(resize)
      console.log(box)
      console.log(left1)
      for (let i = 0; i < resize.length; i++) {
        // 鼠标按下事件
        resize[i].onmousedown = function (e) {
          console.log(e)
          //颜色改变提醒
          resize[i].style.background = "#818181";
          let startX = e.clientX;
          resize[i].left = resize[i].offsetLeft;
          // 鼠标拖动事件
          document.onmousemove = function (e) {
            let endX = e.clientX;
             console.log(endX ,startX)
            let moveLen = resize[i].left  + (endX - startX) - left1[i].offsetWidth ; // (endx-startx)=移动的距离。resize[i].left+移动的距离=左边区域最后的宽度
            let maxT = box[i].clientWidth - resize[i].offsetWidth; // 容器宽度 - 左边区域的宽度 = 右边区域的宽度
            if (moveLen < 205) moveLen = 205; // 左边区域的最小宽度为32px
            if (moveLen > maxT - 300) moveLen = maxT - 300; //右边区域最小宽度为150px
            resize[i].style.left = moveLen; // 设置左侧区域的宽度
            for (let j = 0; j < left.length; j++) {
              left[j].style.width = moveLen + "px";
              mid[j].style.width = box[i].clientWidth - moveLen - 10 + "px";
            }
          };
          // 鼠标松开事件
          document.onmouseup = function (evt) {
            //颜色恢复
            resize[i].style.background = "#d6d6d6";
            document.onmousemove = null;
            document.onmouseup = null;
            resize[i].releaseCapture && resize[i].releaseCapture(); //当你不在需要继续获得鼠标消息就要应该调用ReleaseCapture()释放掉
          };
          resize[i].setCapture && resize[i].setCapture(); //该函数在属于当前线程的指定窗口里设置鼠标捕获
          return false;
        };
      }
    },
    addConfirm() {
      this.$confirm('确定是否新增', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      this.$confirm("确定是否新增", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(async () => {
          let arr = [];
@@ -284,11 +381,11 @@
          });
          const data = await roleUserinserts(arr);
          if (data.code !== 200) {
            return this.$message.error('新增失败');
            return this.$message.error("新增失败");
          }
          this.$message({
            type: 'success',
            message: '新增成功!',
            type: "success",
            message: "新增成功!",
          });
          this.dialogTableVisible = false;
          this.getuserList();
@@ -305,15 +402,42 @@
      this.usermultipleSelection.forEach((e) => {
        arr.push(e.id);
      });
      const data = await roleUserdeletes({ ids: arr.toString() });
      if (data.code !== 200) {
        return this.$message.error('删除失败');
      }
      this.$message({
        message: '删除成功',
        type: 'success',
      });
      this.getuserList();
      this.$confirm("此操作将永久删除该权限, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(async () => {
          const data = await roleUserdeletes({ ids: arr.toString() });
          if (data.code == 200) {
            this.InsertFormdialog = false;
            this.$message({
              message: "删除成功!",
              type: "success",
            });
            this.getuserList();
          } else {
            this.$message({
              message: "删除失败!",
              type: "warning",
            });
          }
        })
        .catch(() => {
          this.$message({
            type: "info",
            message: "已取消删除",
          });
        });
      // const data = await roleUserdeletes({ ids: arr.toString() });
      // if (data.code !== 200) {
      //   return this.$message.error('删除失败');
      // }
      // this.$message({
      //   message: '删除成功',
      //   type: 'success',
      // });
      // this.getuserList();
    },
    //用户表多选
    handleSelectionChange(val) {
@@ -367,7 +491,7 @@
      const data = await queryDepTree();
      if (data.code !== 200) {
        return this.$message.error('请求单位报错');
        return this.$message.error("请求单位报错");
      }
      this.depList = this.treeData(data.result);
    },
@@ -376,7 +500,7 @@
      return cloneData.filter((father) => {
        // 循环所有项
        let branchArr = cloneData.filter((child) => father.id == child.pid); // 对比ID,分别上下级菜单,并返回数据
        branchArr.length > 0 ? (father.children = branchArr) : ''; // 给父级添加一个children属性,并赋值
        branchArr.length > 0 ? (father.children = branchArr) : ""; // 给父级添加一个children属性,并赋值
        return father.pid == 0; // 返回一级菜单
      });
    },
@@ -406,7 +530,7 @@
      this.addlistData.debid = this.debid;
      const data = await userselectByPageForRole(this.addlistData);
      if (data.code !== 200) {
        return this.$message.error('新增用户列表请求错误');
        return this.$message.error("新增用户列表请求错误");
      }
      this.gridData = data.result;
      this.addcount = data.count;
@@ -415,7 +539,7 @@
    async getuserList() {
      const data = await roleUserselectByPageForRole(this.userlistData);
      if (data.code !== 200) {
        return this.$message.error('用户列表请求错误');
        return this.$message.error("用户列表请求错误");
      }
      this.usertableData = data.result;
      this.usercount = data.count;
@@ -424,20 +548,20 @@
    async getRole() {
      const data = await select_Role_ByPageAndCount(this.listData);
      if (data.code !== 200) {
        return this.$message.error('用户角色请求错误');
        return this.$message.error("用户角色请求错误");
      }
      this.tableData = data.result;
      this.count = data.count;
    },
    showPermsMenu(res) {
      switch (res.tag) {
        case '/delete':
        case "/delete":
          this.menuStatus.delete = true;
          break;
        case '/insert':
        case "/insert":
          this.menuStatus.insert = true;
          break;
        case '/update':
        case "/update":
          this.menuStatus.update = true;
          break;
      }
@@ -453,246 +577,66 @@
    }
    this.getMenuTree();
  },
  mounted() {
    //左右拖動
    // this.dragControllerDiv();
    // this.dragControllerDiv1();
  },
};
</script>
<style lang="less" scoped>
//@import url(); 引入公共css类
.menuSettings_box {
  //   background: rgb(240, 242, 245);
  border-radius: 10px;
  //height: 98%;
  height: 100%;
  box-sizing: border-box;
  width: 98%;
  padding: 0 1%;
// position: relative;
  display: flex;
  .el-card-define {
    height: 630px;
    background: #303030;
    border: transparent;
  }
  .menuSettings_tree {
    border: 1px solid gray;
    padding: 20px;
  justify-content: space-between;
  .menuSettings_left_tree{
    width: 20%;
    height: 98%;
    margin-top: 10px;
    position: relative;
    width: 344px;
    height: 740px;
    padding: 10px;
    border-radius: 10px;
    box-sizing: border-box;
    overflow: hidden;
    overflow-y: auto;
  }
  .menuSettings_tree {
    width: 39%;
    height: 98%;
    margin-top: 10px;
    //height: 100%;
    position: relative;
    //padding: 1%;
    padding: 10px;
    border-radius: 10px;
    box-sizing: border-box;
    .saveBtn {
      position: absolute;
      left: 250px;
      top: 23px;
    }
    .menuTreeBox {
      position: relative;
      .card_tree {
        display: block;
        height: 640px;
        overflow-y: auto;
        // 更改指标树图标颜色
        /deep/ .el-tree .el-icon-caret-right:before {
          color: white; /** 这里是要修改图标的颜色 **/
        }
        /deep/ .el-tree {
          color: white; /** 这里是要修改图标的颜色 **/
          background: transparent;
        }
        /deep/.el-tree-node__content {
          &:hover {
            background-color: rgba(255, 255, 255, 0.3) !important;
          }
        }
        /deep/.el-tree-node.is-current > .el-tree-node__content {
          background-color: rgba(255, 255, 255, 0.3) !important;
          color: #409eff;
        }
        .btnBox {
          margin-left: 5px;
          .el-button + .el-button {
            margin-left: 5px;
          }
        }
      }
      height: 90%;
      overflow: auto;
    }
  }
  .menuSettings {
    width: calc(50% - 172px);
    border-radius: 10px;
    border: 1px solid gray;
    margin-left: 10px;
    height: 740px;
    padding: 20px;
    box-sizing: border-box;
    .title_box {
      background: #fff;
      padding: 10px;
      margin-bottom: 24px;
      display: flex;
      border-radius: 10px;
      border: 1px solid rgb(202, 201, 204);
      box-sizing: border-box;
    }
  }
  .table_box {
    padding: 10px;
    background: #fff;
    border-radius: 5px;
    border: 1px solid rgb(202, 201, 204);
    overflow: auto;
    height: 85%;
  }
  .divider {
    margin-top: 8px;
  }
}
.pagination_box {
  /deep/.el-input__inner {
    background-color: transparent !important;
    border: 1px solid;
    color: white;
  }
  /deep/.el-pagination__total {
    color: white;
  }
  /deep/.el-pagination__jump {
    color: white;
  }
  /deep/.el-pager li.active {
    color: #1890ff;
  }
  /deep/.el-pager li {
    color: white;
    background: transparent;
  }
  /deep/.el-pager li {
    color: white;
  }
  /deep/.btn-prev {
    background: transparent;
  }
  /deep/.btn-next {
    background: transparent;
  }
}
.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;
}
/*里面的代码可以根据自己需求去进行更改*/
/* 设置滚动条的样式 */
::-webkit-scrollbar {
  width: 4px;
}
/* 滚动槽 */
::-webkit-scrollbar-track {
  -webkit-box-shadow: inset006pxrgba(0, 0, 0, 0.3);
  border-radius: 10px;
}
/* 滚动条滑块 */
::-webkit-scrollbar-thumb {
  border-radius: 10px;
  background: #8b8b8b;
  -webkit-box-shadow: inset006pxrgba(0, 0, 0, 0.5);
}
::-webkit-scrollbar-thumb:window-inactive {
  background: #8b8b8b;
  height: 289px;
}
/deep/ .el-dialog {
  background: #303030;
}
/deep/.el-range-editor.is-active,
.el-range-editor.is-active:hover,
.el-select .el-input.is-focus .el-input__inner {
  border: 1px solid;
}
/deep/.el-dialog__title {
  color: white;
}
/*修改table 表体的背景颜色和文字颜色*/
/deep/ .el-table {
  background-color: transparent;
  th,
  td {
    background-color: transparent;
  }
  .el-table__expanded-cell {
    background-color: transparent !important;
  }
  // 表头背景色
  th.el-table__cell {
    background-color: #303030;
    color: #fff;
  }
  tr > td {
    background-color: #303030;
    color: #fff;
  }
  // hover效果
  tr:hover > td {
    background-color: rgba(255, 255, 255, 0.3) !important;
  }
  tbody tr:hover {
    background-color: rgba(255, 255, 255, 0.3) !important;
    // text-align: center;
  }
  // 滚动条宽高
  .el-table__body-wrapper::-webkit-scrollbar {
    width: 5px;
    height: 5px;
  }
  .el-table__body-wrapper::-webkit-scrollbar {
    width: 5px;
    /*滚动条宽度*/
    height: 10px;
    /*滚动条高度*/
  }
  /*定义滚动条轨道 内阴影+圆角*/
  .el-table__body-wrapper::-webkit-scrollbar-track {
    box-shadow: 0px 1px 3px #216fe6 inset;
    /*滚动条的背景区域的内阴影*/
    border-radius: 10px;
  }
  /*定义滑块 内阴影+圆角*/
  .el-table__body-wrapper::-webkit-scrollbar-thumb {
    box-shadow: 0px 1px 3px #216fe6 inset;
    border-radius: 6px;
    background-color: #216fe6;
  }
  background-color: transparent !important;
}
</style>
<style>
.el-select-dropdown {
  background: #303030;
  border-color: 1px solid;
}
.el-scrollbar__wrap {
  margin-bottom: -20px !important;
  margin-right: -20px !important;
}
.el-select-dropdown__item.hover,
.el-select-dropdown__item:hover {
  background: rgba(255, 255, 255, 0.3);
}
.el-select-dropdown__item {
  color: white !important;
}
</style>