管道基础大数据平台系统开发-【前端】-新系統界面
王旭
2023-02-22 5772b4883ceebaa7a0194afbbbb0bce37841641d
src/views/AuthorizationManagement/menuRoleAuthorization.vue
@@ -1,15 +1,42 @@
<template>
  <div class="menuSettings_box">
    <My-bread
  <div class="menuSettings_box menuRoleAuthorization">
    <!-- <My-bread
      :list="[
        `${$t('operatManage.operatManage')}`,
        `${$t('operatManage.MenuRoleAuthorization')}`,
      ]"
    ></My-bread>
    <el-divider />
    <div class="menuTreeBox ">
      <div class="left_tree subpage_Div">
    <el-divider /> -->
    <div class="menuSettings_tree subpage_Div menuRoleAuthorization_left" style="padding-top:10px;width: 23%;overflow-y: auto;">
      <My-bread
        :list="[
          `${$t('operatManage.operatManage')}`,
          `${$t('operatManage.MenuRoleAuthorization')}`,
        ]"
      ></My-bread>
      <el-divider />
      <div>
        <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="menuRoleAuthorization_resize" title="收缩侧边栏">⋮</div> -->
      <!-- <div class="left_tree subpage_Div">
        <el-tree
          :data="depList"
          :props="defaultProps"
@@ -22,7 +49,7 @@
          :default-expanded-keys="[1]"
        >
        </el-tree>
      </div>
      </div> -->
      <div class="right_menu subpage_Div">
        <div
          style="
@@ -30,29 +57,27 @@
            color: #409eff;
            line-height: 1;
            cursor: text;
            position: relative;
            top: 5px;
            margin-left: 10px;
            display: flex;
            align-items: center;
            flex-wrap: wrap;
          "
        >
          <span>
            {{
              $t('operatManage.UserRoleAuthorizationObj.PermissionTable')
              $t("operatManage.UserRoleAuthorizationObj.PermissionTable")
            }}</span
          >
          <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"
              >{{
                $t('operatManage.UserRoleAuthorizationObj.Added')
                $t("operatManage.UserRoleAuthorizationObj.Added")
              }}</el-button
            >
            <el-button
@@ -63,7 +88,7 @@
              @click="deletesUser"
              :disabled="roleid == null ? true : false"
              >{{
                $t('operatManage.UserRoleAuthorizationObj.delete')
                $t("operatManage.UserRoleAuthorizationObj.delete")
              }}</el-button
            >
          </div>
@@ -72,7 +97,7 @@
        <el-table
          :data="tableData"
          style="width: 100%"
          height="77%"
          height="calc(100% - 124px)"
          @selection-change="handleSelectionChange"
        >
          <el-table-column type="selection" width="55"> </el-table-column>
@@ -89,10 +114,7 @@
          </el-table-column>
        </el-table>
        <div
          style="margin-top: 20px; text-align: center"
          class="pagination_box"
        >
        <div class="pagination_box">
          <el-pagination
            @size-change="userhandleSizeChange"
            @current-change="userhandleCurrentChange"
@@ -105,7 +127,6 @@
          </el-pagination>
        </div>
      </div>
    </div>
    <!-- <div class="menuSettings">
@@ -187,28 +208,26 @@
        </el-pagination>
      </div>
      <div slot="footer" class="dialog-footer">
        <el-button   size="small"   @click="dialogTableVisible = false">{{
          $t('dataManage.dictionaryManageObj.cancel')
        <el-button size="small" @click="dialogTableVisible = false">{{
          $t("dataManage.dictionaryManageObj.cancel")
        }}</el-button>
        <el-button
  size="small"      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>
</template>
<script>
import MyBread from '../../components/MyBread.vue';
import MyBread from "../../components/MyBread.vue";
import {
  selectMenuRecursives,
  select_menuAuth_ByPageAndCount,
  menuAuthDeletes,
  select_AuthMenu_ByPageAndCount,
  menuAuthinserts,
} from '../../api/api';
} from "../../api/api";
export default {
  //import引入的组件需要注入到对象中才能使用
  components: {
@@ -237,18 +256,18 @@
      usercount: 0,
      tableData: [],
      //   当前选择的行的id
      templateSelection: '',
      templateSelection: "",
      //   当前选择的行的数据
      checkList: [],
      defaultProps: {
        children: 'children',
        label: 'cnName',
        children: "children",
        label: "cnName",
      },
      oriData: [], //原始树数据
      depList: [], //el树数据
      backUpData: {},
      formLabelWidth: '170px',
      formLabelWidth: "170px",
      listData: {
        pageIndex: 1,
        pageSize: 10,
@@ -261,6 +280,50 @@
    };
  },
  methods: {
    //左右拖動
    dragControllerDiv() {
      var resize = document.getElementsByClassName(
        "menuRoleAuthorization_resize"
      );
      var left = document.getElementsByClassName("menuRoleAuthorization_left");
      var mid = document.getElementsByClassName("menuRoleAuthorization_mid");
      var box = document.getElementsByClassName("menuRoleAuthorization");
      for (let i = 0; i < resize.length; i++) {
        // 鼠标按下事件
        resize[i].onmousedown = function (e) {
          //颜色改变提醒
          resize[i].style.background = "#818181";
          var startX = e.clientX;
          resize[i].left = resize[i].offsetLeft;
          // 鼠标拖动事件
          document.onmousemove = function (e) {
            var endX = e.clientX;
            var moveLen = resize[i].left + (endX - startX); // (endx-startx)=移动的距离。resize[i].left+移动的距离=左边区域最后的宽度
            var 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;
        };
      }
    },
    /**
     * sws
     */
@@ -270,7 +333,7 @@
      //获取目录树最大ID,新建节点使用
      const data = await selectMenuRecursives({ name: menuStartName });
      if (data.code !== 200) {
        return this.$message.error('请求单位报错');
        return this.$message.error("请求单位报错");
      }
      this.depList = this.treeData(data.result);
@@ -280,7 +343,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; // 返回一级菜单
      });
    },
@@ -307,10 +370,10 @@
    },
    addConfirm() {
      this.$confirm('确定是否新增', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning',
      this.$confirm("确定是否新增", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(async () => {
          let arr = [];
@@ -320,11 +383,11 @@
          const data = await menuAuthinserts(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.getRole();
@@ -341,31 +404,33 @@
      this.usermultipleSelection.forEach((e) => {
        arr.push(e.id);
      });
      this.$confirm('此操作将永久删除该权限, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(async () => {
        const data = await menuAuthDeletes({ ids: arr.toString() });
        if (data.code == 200) {
          this.InsertFormdialog = false;
      this.$confirm("此操作将永久删除该权限, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(async () => {
          const data = await menuAuthDeletes({ ids: arr.toString() });
          if (data.code == 200) {
            this.InsertFormdialog = false;
            this.$message({
              message: "删除成功!",
              type: "success",
            });
            this.getRole();
          } else {
            this.$message({
              message: "删除失败!",
              type: "warning",
            });
          }
        })
        .catch(() => {
          this.$message({
            message: '删除成功!',
            type: 'success',
            type: "info",
            message: "已取消删除",
          });
          this.getRole();
        } else {
          this.$message({
            message: '删除失败!',
            type: 'warning',
          });
        }
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
      // const data = await menuAuthDeletes({ ids: arr.toString() });
      // if (data.code !== 200) {
      //   return this.$message.error('删除失败');
@@ -381,7 +446,7 @@
      this.addlistData.menuid = this.roleid;
      const data = await select_AuthMenu_ByPageAndCount(this.addlistData);
      if (data.code !== 200) {
        return this.$message.error('新增用户列表请求错误');
        return this.$message.error("新增用户列表请求错误");
      }
      this.gridData = data.result;
      this.addcount = data.count;
@@ -420,20 +485,20 @@
    async getRole() {
      const data = await select_menuAuth_ByPageAndCount(this.listData);
      if (data.code !== 200) {
        return this.$message.error('用户角色请求错误');
        return this.$message.error("用户角色请求错误");
      }
      this.tableData = data.result;
      this.usercount = 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;
      }
@@ -449,43 +514,58 @@
    }
    this.getMenuTree();
  },
  mounted() {
    // this.dragControllerDiv();
  },
};
</script>
<style lang="less" scoped>
//@import url(); 引入公共css类
.menuSettings_box {
  height: 98%;
  height: 96%;
  width: 98%;
  padding: 1%;
  .menuTreeBox {
    width: 100%;
    height: 91%;
  border-radius: 10px;
  position: relative;
  display: flex;
  justify-content: space-between;
    .left_tree {
      width: 29%;
      width: 23%;
      height: 92%;
      padding: 10px;
      border-radius: 5px;
      float: left;
      overflow-y: auto;
      border-radius: 10px;
    }
    .right_menu {
      width: 67%;
      height: 92%;
      border-radius: 10px;
      width: 75%;
      // height: 92%;
      padding: 10px;
      border-radius: 5px;
      // padding-top:0;
      border-radius: 10px;
      float: right;
    }
  }
  .divider {
    margin-top: 8px;
  }
}
.subpage_Div {
  border-radius: 10px;
}
.el-table,
.el-table /deep/ .el-table__expanded-cell {
  background-color: transparent !important;
}
.el-table /deep/ th,
.el-table /deep/ tr {
  background-color: transparent !important;
}
</style>