管道基础大数据平台系统开发-【前端】-新系統界面
TreeWish
2023-03-03 b6c8e7c61f0270598ba7fdbc44f79512e010d0fe
src/views/userManage/roleManage.vue
@@ -5,49 +5,104 @@
        `${$t('userManage.roleManage')}`,
      ]"></My-bread>
    <el-divider />
    <div class="inquire subpage_Div">
    <div
      class="inquire subpage_Div"
      ref="container"
    >
      <el-form
        ref="ruleForm"
        :model="roleForm"
        :inline="true"
      >
        <el-form-item
          :label="$t('userManage.RM.roleName')"
          prop="username"
        >
          <el-input v-model="roleForm.username" />
        </el-form-item>
        <el-form-item
          :label="$t('userManage.RM.ownedSystem')"
          prop="ownedSystem"
        >
          <el-select
            :popper-append-to-body="false"
            v-model="roleForm.depValue"
            placeholder="请选择"
            style="width:93%"
          >
            <el-option
              :value="roleForm.depid"
              :label="roleForm.depValue"
              style=" height:auto"
        <div class="flex_box">
          <div style="margin-right: auto">
            <el-form-item
              :label="$t('userManage.RM.ownedSystem')"
              prop="ownedSystem"
            >
              <el-tree
                ref="tree"
                :data="depList"
                node-key="id"
                :props="props"
                @node-click="handleRouleDepList"
              />
            </el-option>
          </el-select>
          <!-- <el-input
              <el-select
                :popper-append-to-body="false"
                size="small"
                v-model="roleForm.depValue"
                :placeholder="$t('userManage.RM.ownedSystemHolder')"
                style="width: 200px"
              >
                <el-option
                  :value="roleForm.depid"
                  :label="roleForm.depValue"
                  style="height: auto"
                >
                  <el-tree
                    ref="tree"
                    :data="depList"
                    node-key="id"
                    :props="props"
                    @node-click="handleRouleDepList"
                  />
                </el-option>
              </el-select>
              <!-- <el-input
            v-model="roleForm.value"
            :disabled="true"
            :placeholder="$t('common.pleaseInput')"
          /> -->
            </el-form-item>
            <el-form-item
                :label="$t('userManage.RM.roleName')"
                prop="username"
            >
              <el-input
                  v-model="roleForm.username"
                  :placeholder="$t('userManage.RM.roleNameHolder')"
                  size="small"
                  style="width: 200px"
              >
                <i slot="suffix" class="el-icon-search" @click="onSubmit"></i>
              </el-input>
            </el-form-item>
          </div>
          <div>
<!--            <el-form-item>-->
<!--              <el-button-->
<!--                size="small"-->
<!--                type="primary"-->
<!--                @click="onSubmit('ruleForm')"-->
<!--              ><i class="el-icon-search"></i> &nbsp;{{-->
<!--                  $t("userManage.RM.query")-->
<!--                }}</el-button>-->
<!--            </el-form-item>-->
            <el-form-item>
              <el-button
                  type="success"
                  size="small"
                  @click="setInsertFormdialog"
                  v-if="menuStatus.insert"
              ><i class="el-icon-circle-plus-outline"></i> &nbsp;{{
                  $t("userManage.RM.add")
                }}</el-button>
            </el-form-item>
            <el-form-item>
              <el-button
                type="danger"
                size="small"
                @click="handleDelete()"
                v-if="menuStatus.delete"
              ><i class="el-icon-delete"></i>&nbsp;{{
                  $t("common.delete")
                }}</el-button>
            </el-form-item>
            <el-form-item>
              <el-button
                  type="info"
                  size="small"
                  @click="resetForm('ruleForm')"
              ><i class="el-icon-delete"></i>&nbsp;{{
                  $t("userManage.RM.reset")
                }}</el-button>
            </el-form-item>
          </div>
        </div>
        </el-form-item>
        <!-- <el-form-item>
          <el-button
            size="small"
@@ -55,7 +110,7 @@
            @click="showDepTree(1)"
          >{{ $t('common.choose') }}</el-button>
        </el-form-item> -->
        <el-form-item>
        <!-- <el-form-item style="float:right">
          <el-button
            type="success"
            size="small"
@@ -65,7 +120,7 @@
              $t('userManage.RM.add')
            }}</el-button>
        </el-form-item>
        <el-form-item>
        <el-form-item style="float:right">
          <el-button
            size="small"
            type="primary"
@@ -74,7 +129,7 @@
              $t('userManage.RM.query')
            }}</el-button>
        </el-form-item>
        <el-form-item>
        <el-form-item style="float:right">
          <el-button
            type="info"
            size="small"
@@ -83,7 +138,7 @@
              $t('userManage.RM.reset')
            }}</el-button>
        </el-form-item>
        <el-form-item>
        <el-form-item style="float:right">
          <el-button
            type="danger"
            size="small"
@@ -92,14 +147,19 @@
          ><i class="el-icon-delete"></i>&nbsp;{{
              $t('common.delete')
            }}</el-button>
        </el-form-item>
        </el-form-item> -->
      </el-form>
    </div>
    <div class="table_box subpage_Div">
    <div class="dividing-line"></div>
    <div
      class="table_box subpage_Div"
      :style="styleVar"
    >
      <el-table
        :data="tableData"
        style="width: 100%"
        height="85%"
        border
        height="calc(100% - 45px)"
        @selection-change="handleSelectionChange"
      >
        <el-table-column
@@ -178,21 +238,25 @@
          width="200"
        >
          <template slot-scope="scope">
             <el-button
            type="primary"
              @click="showDetail(scope.$index, scope.row)"
              size="small"
              plain
            >{{ $t("common.see") }}</el-button>
            <el-button
              v-if="menuStatus.update"
              type="warning"
              @click="handleEdit(scope.$index, scope.row)"
              size="small"
            >{{ $t('common.update') }}</el-button>
            <el-button
              @click="showDetail(scope.$index, scope.row)"
              size="small"
            >{{ $t('common.see') }}</el-button>
              plain
            >{{ $t("common.update") }}</el-button>
          </template>
        </el-table-column>
      </el-table>
      <div
        style="margin-top: 25px"
        style="margin-top: 10px"
        class="pagination_box"
      >
        <el-pagination
@@ -210,18 +274,18 @@
    <el-dialog
      :title="$t('userManage.RM.insertRole')"
      top="15vh"
      width="50vh"
      :before-close="handleClose"
      style="overflow: hidden"
      :visible.sync="InsertFormdialog"
    >
      <el-form :model="insertform">
        <div style="height: 500px; overflow: auto">
      <el-form :model="insertform" label-position="top">
        <el-form-item
          :label="$t('userManage.RM.roleName')"
          :label-width="formLabelWidth"
        >
          <el-input
            style="width:95%"
             style="width:85%"
            v-model="insertform.name"
            autocomplete="off"
          ></el-input>
@@ -236,12 +300,12 @@
            :popper-append-to-body="false"
            v-model="insertform.depValue"
            placeholder="请选择"
            style="width:95%"
             style="width:85%"
          >
            <el-option
              :value="insertform.depid"
              :label="insertform.depValue"
              style=" height:auto"
              style="height: auto"
            >
              <el-tree
                ref="tree"
@@ -269,7 +333,7 @@
          :label-width="formLabelWidth"
        >
          <el-input
            style="width:95%"
            style="width:85%"
            v-model="insertform.descr"
            autocomplete="off"
          ></el-input>
@@ -292,12 +356,13 @@
          :label-width="formLabelWidth"
        >
          <el-input
            style="width:95%"
             style="width:85%"
            v-model="insertform.bak"
            autocomplete="off"
          ></el-input>
        </el-form-item>
      </el-form>
        </div>
      <div
        slot="footer"
        class="dialog-footer"
@@ -305,22 +370,25 @@
        <el-button
          size="small"
          @click="insertFromClose"
        >{{ $t('common.close') }}</el-button>
        >{{
          $t("common.close")
        }}</el-button>
        <el-button
          type="primary"
          size="small"
          @click="insertFromData"
        >{{ $t('common.confirm') }}</el-button>
        >{{
          $t("common.confirm")
        }}</el-button>
      </div>
    </el-dialog>
    <el-dialog
      :title="$t('userManage.RM.updateRole')"
      top="15vh"
      width="50vh"
      style="overflow: hidden"
      :visible.sync="UpdateFormdialog"
      :before-close="handleCloseEdit"
    >
      <el-form :model="updateform">
        <div style="height: 500px; overflow: auto">
      <el-form :model="updateform" label-position="top">
        <el-form-item
          :label="$t('userManage.RM.roleName')"
          :label-width="formLabelWidth"
@@ -328,6 +396,7 @@
          <el-input
            v-model="updateform.name"
            autocomplete="off"
             style="width:85%"
          ></el-input>
        </el-form-item>
@@ -340,12 +409,12 @@
            :popper-append-to-body="false"
            v-model="updateform.depValue"
            placeholder="请选择"
            style="width:95%"
             style="width:85%"
          >
            <el-option
              :value="updateform.depid"
              :label="updateform.depValue"
              style=" height:auto"
              style="height: auto"
            >
              <el-tree
                ref="tree"
@@ -389,6 +458,7 @@
          <el-input
            v-model="updateform.descr"
            autocomplete="off"
             style="width:85%"
          ></el-input>
        </el-form-item>
        <el-form-item
@@ -398,9 +468,11 @@
          <el-input
            v-model="updateform.bak"
            autocomplete="off"
             style="width:85%"
          ></el-input>
        </el-form-item>
      </el-form>
        </div>
      <div
        slot="footer"
        class="dialog-footer"
@@ -408,12 +480,16 @@
        <el-button
          size="small"
          @click="updateFromClose"
        >{{ $t('common.close') }}</el-button>
        >{{
          $t("common.close")
        }}</el-button>
        <el-button
          type="primary"
          size="small"
          @click="updateFromData"
        >{{ $t('common.confirm') }}</el-button>
        >{{
          $t("common.confirm")
        }}</el-button>
      </div>
    </el-dialog>
    <div
@@ -436,17 +512,16 @@
        >取消</el-button>
      </div>
    </div>
<div class="infoBox_box" v-show="showinfoBox">
    <div
      class="infoBox box_div subpage_Div"
      v-show="showinfoBox"
    >
    >
      <div
        slot="header"
        class="clearfix"
      >
        <span>{{ $t('dataManage.styleObj.deInformation') }}</span>
        <span>{{ $t("dataManage.styleObj.deInformation") }}</span>
        <div
          style="float: right; cursor: pointer"
          @click="closeDetial"
@@ -457,63 +532,63 @@
      <el-divider></el-divider>
      <div class="contentBox">
        <p>
          <label> {{ $t('userManage.RM.roleName') }}:</label>
          <label> {{ $t("userManage.RM.roleName") }}:</label>
          <label class="boxlabel">{{ itemdetail.name }}</label>
        </p>
        <el-divider></el-divider>
        <p>
          <label> {{ $t('userManage.RM.ownedSystem') }}:</label>
          <label> {{ $t("userManage.RM.ownedSystem") }}:</label>
          <label class="boxlabel">{{ itemdetail.depName }}</label>
        </p>
        <el-divider></el-divider>
        <p>
          <label> {{ $t('userManage.RM.isAdmin') }}:</label>
          <label> {{ $t("userManage.RM.isAdmin") }}:</label>
          <label class="boxlabel">{{ itemdetail.admin }}</label>
        </p>
        <el-divider></el-divider>
        <p>
          <label> {{ $t('userManage.RM.describe') }}:</label>
          <label> {{ $t("userManage.RM.describe") }}:</label>
          <label class="boxlabel">{{ itemdetail.descr }}</label>
        </p>
        <el-divider></el-divider>
        <p>
          <label> {{ $t('userManage.RM.creationuser') }}:</label>
          <label> {{ $t("userManage.RM.creationuser") }}:</label>
          <label class="boxlabel">{{ itemdetail.createUser }}</label>
        </p>
        <el-divider></el-divider>
        <p>
          <label> {{ $t('userManage.RM.creationtime') }}:</label>
          <label> {{ $t("userManage.RM.creationtime") }}:</label>
          <label class="boxlabel">{{ itemdetail.createTime }}</label>
        </p>
        <el-divider></el-divider>
        <p>
          <label> {{ $t('userManage.RM.updateonuser') }}:</label>
          <label> {{ $t("userManage.RM.updateonuser") }}:</label>
          <label class="boxlabel">{{ itemdetail.UpdateUser }}</label>
        </p>
        <el-divider></el-divider>
        <p>
          <label> {{ $t('userManage.RM.updateontime') }}:</label>
          <label> {{ $t("userManage.RM.updateontime") }}:</label>
          <label class="boxlabel">{{ itemdetail.updateTime }}</label>
        </p>
        <el-divider></el-divider>
        <p>
          <label> {{ $t('userManage.RM.remarks') }}:</label>
          <label> {{ $t("userManage.RM.remarks") }}:</label>
          <label class="boxlabel">{{ itemdetail.bak }}</label>
        </p>
        <el-divider></el-divider>
      </div>
    </div>
</div>
  </div>
</template>
<script>
import moment from 'moment';
import MyBread from '../../components/MyBread.vue';
import roleDepTree from './roleDepTree.vue';
import moment from "moment";
import MyBread from "../../components/MyBread.vue";
import roleDepTree from "./roleDepTree.vue";
import {
  select_Role_ByPageAndCount,
  selectdepTab,
@@ -521,8 +596,7 @@
  deleteRoles,
  selectDep,
  updateRole,
} from '../../api/api';
} from "../../api/api";
export default {
  //import引入的组件需要注入到对象中才能使用
  components: {
@@ -532,30 +606,30 @@
  data() {
    return {
      props: {
        label: 'name',
        value: 'id',
        children: 'children',
        label: "name",
        value: "id",
        children: "children",
        checkStrictly: true,
        emitPath: false,
      },
      depList: [],
      showinfoBox: false,
      showCata: false,
      formLabelWidth: '120px',
      formLabelWidth: "120px",
      InsertFormdialog: false,
      UpdateFormdialog: false,
      roleForm: {
        depid: '',
        depValue: '',
        depid: "",
        depValue: "",
      },
      cataName: '',
      depValue: '',
      cataName: "",
      depValue: "",
      elTreeFlag: 0,
      path_id: '',
      path_id: "",
      tableData: [],
      insertform: {
        depValue: '',
        depid: ''
        depValue: "",
        depid: "",
      },
      updateform: {},
      count: 0,
@@ -574,20 +648,38 @@
        insert: false,
        update: false,
      },
      tableHeight: 0,
      timer: 0,
      styleVar: {
        height: "calc(100% - 109px)",
      },
    };
  },
  methods: {
    onResize() {
      this.timer && clearTimeout(this.timer);
      this.timer = setTimeout(() => {
        this.calHeight();
      }, 500);
    },
    calHeight() {
      this.$nextTick(() => {
        const rect = this.$refs.container.getBoundingClientRect();
        this.tableHeight = `${rect.height + 97}px`;
        // this.styleVar["height"] = `calc(100% - ${rect.height + 97}px)`;
        this.styleVar["height"] = `calc(100% - ${rect.height + 30}px)`;
      });
    },
    handleRouleDepList(data, node, nodeData) {
      this.roleForm.depid = data.id
      this.roleForm.depid = data.id;
      this.roleForm.depValue = data.name;
    },
    handleDepList(data, node, nodeData) {
      this.insertform.depid = data.id
      this.insertform.depid = data.id;
      this.insertform.depValue = data.name;
    },
    handleUpdataDepList(data, node, nodeData) {
      this.updateform.depid = data.id
      this.updateform.depid = data.id;
      this.updateform.depValue = data.name;
    },
    setInsertFormdialog() {
@@ -598,7 +690,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属性,并赋值
        // 属于同一对象问题,例如:令 a=b、c=1 ,然后再令 b.c=c , 那么 a.c=b.c=c=1 ;同理,后续令 c.d=2 ,那么 a.c.d 也是=2;
        // 由此循环多次后,就能形成相应的树形数据结构
        return father.pid == 0; // 返回一级菜单
@@ -607,9 +699,9 @@
    async getDepList() {
      const data = await selectdepTab();
      if (data.code != 200) {
        return this.$message.error('单位列表调用失败');
        return this.$message.error("单位列表调用失败");
      }
      this.depList = this.treeData(data.result)
      this.depList = this.treeData(data.result);
    },
    closeDetial() {
      this.showinfoBox = false;
@@ -625,7 +717,7 @@
        this.itemdetail.updateTime
      );
      this.itemdetail.admin =
        parseInt(this.itemdetail.isAdmin) === 0 ? '否' : '是';
        parseInt(this.itemdetail.isAdmin) === 0 ? "否" : "是";
    },
    handleSelectionChange(val) {
      this.multipleSelection = val;
@@ -638,7 +730,7 @@
      if (date === undefined || date === null) {
        return;
      }
      return moment(parseInt(date)).format('YYYY-MM-DD HH:mm:ss');
      return moment(parseInt(date)).format("YYYY-MM-DD HH:mm:ss");
    },
    showDepTree(res) {
      this.showCata = true;
@@ -648,14 +740,14 @@
      this.cataName = this.$store.state.catalogueName;
      this.path_id = this.$store.state.cataNode.id;
      var value;
      if (this.cataName.indexOf('>') != -1) {
        var data = this.$store.state.catalogueName.split('>');
      if (this.cataName.indexOf(">") != -1) {
        var data = this.$store.state.catalogueName.split(">");
        value = data[data.length - 1];
      } else {
        value = this.$store.state.catalogueName;
      }
      this.$store.commit('changeCata', ''); //清空state的面包屑
      this.$store.commit('changeNode', ''); //清空state的节点对象
      this.$store.commit("changeCata", ""); //清空state的面包屑
      this.$store.commit("changeNode", ""); //清空state的节点对象
      this.showCata = false;
      switch (this.elTreeFlag) {
        case 1:
@@ -673,16 +765,16 @@
      }
    },
    async getRoleTabelData() {
      if (this.listData.tab == '') {
      if (this.listData.tab == "") {
        delete this.listData.tab;
      }
      this.listData.name = this.roleForm.username;
      this.listData.depid = this.roleForm.depid;
      const data = await select_Role_ByPageAndCount(this.listData);
      if (data.code != 200) {
        this.$message.error('列表调用失败');
        this.$message.error("列表调用失败");
      }
      console.log(data);
      this.tableData = data.result;
      this.count = data.count;
    },
@@ -690,7 +782,7 @@
      this.selectData = [];
      const data = await selectdepTab();
      if (data.code != 200) {
        this.$message.error('下拉调用失败');
        this.$message.error("下拉调用失败");
      }
      data.result.forEach((e) => {
        if (e) {
@@ -702,14 +794,18 @@
      });
    },
    insertFromClose() {
      this.InsertFormdialog = false;
      this.insertform = {};
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.InsertFormdialog = false;
          this.insertform = {};
        })
        .catch((_) => { });
    },
    async insertFromData() {
      if (this.insertform.depValue == null) {
        this.$message({
          message: '请选择角色所属单位',
          type: 'warning',
          message: "请选择角色所属单位",
          type: "warning",
        });
        return;
      }
@@ -718,26 +814,31 @@
        this.InsertFormdialog = false;
        this.insertform = {};
        this.$message({
          message: '添加成功!',
          type: 'success',
          message: "添加成功!",
          type: "success",
        });
        this.getRoleTabelData();
      } else {
        this.$message({
          message: '添加失败!',
          type: 'warning',
          message: "添加失败!",
          type: "warning",
        });
      }
    },
    updateFromClose() {
      this.UpdateFormdialog = false;
      this.updateform = {};
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.UpdateFormdialog = false;
          this.updateform = {};
          this.getRoleTabelData();
        })
        .catch((_) => { });
    },
    async updateFromData() {
      if (this.updateform.depValue == null) {
        this.$message({
          message: '请选择角色所属单位',
          type: 'warning',
          message: "请选择角色所属单位",
          type: "warning",
        });
        return;
      }
@@ -747,14 +848,14 @@
        this.UpdateFormdialog = false;
        this.updateform = {};
        this.$message({
          message: '修改成功!',
          type: 'success',
          message: "修改成功!",
          type: "success",
        });
        this.getRoleTabelData();
      } else {
        this.$message({
          message: '修改失败!',
          type: 'warning',
          message: "修改失败!",
          type: "warning",
        });
      }
    },
@@ -763,32 +864,34 @@
      for (var i in this.multipleSelection) {
        std.push(this.multipleSelection[i].id);
      }
      this.$confirm('此操作将永久删除该角色, 是否继续?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(async () => {
        const data = await deleteRoles({ ids: std.toString() });
      this.$confirm("此操作将永久删除该角色, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(async () => {
          const data = await deleteRoles({ ids: std.toString() });
        if (data.code == 200) {
          this.InsertFormdialog = false;
          if (data.code == 200) {
            this.InsertFormdialog = false;
            this.$message({
              message: "删除成功!",
              type: "success",
            });
            this.getRoleTabelData();
          } else {
            this.$message({
              message: "删除失败!",
              type: "warning",
            });
          }
        })
        .catch(() => {
          this.$message({
            message: '删除成功!',
            type: 'success',
            type: "info",
            message: "已取消删除",
          });
          this.getRoleTabelData();
        } else {
          this.$message({
            message: '删除失败!',
            type: 'warning',
          });
        }
      }).catch(() => {
        this.$message({
          type: 'info',
          message: '已取消删除'
        });
      });
    },
    handleSizeChange(val) {
      this.listData.pageSize = val;
@@ -802,7 +905,12 @@
      this.updateform = row;
      this.updateform.isAdmin = row.isAdmin.toString();
      const data = await selectDep({ id: row.depid });
      this.updateform.depValue = data.result.name;
      if (data.result == null) {
        this.updateform.depValue = null;
      } else {
        this.updateform.depValue = data.result.name;
      }
      this.UpdateFormdialog = true;
    },
    onSubmit() {
@@ -815,17 +923,40 @@
    },
    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;
      }
    },
    handleClose() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.InsertFormdialog = false
        })
        .catch((_) => { });
    },
    handleCloseEdit() {
      this.$confirm("关闭后无法保存,是否关闭?")
        .then((_) => {
          this.UpdateFormdialog = false
          this.getRoleTabelData();
        })
        .catch((_) => { });
    },
  },
  beforeDestroy() {
    this.timer && clearTimeout(this.timer);
    window.removeEventListener("resize", this.onResize);
  },
  mounted() {
    window.addEventListener("resize", this.onResize);
    this.calHeight();
  },
  created() {
    var val = this.$store.state.currentPerms;
@@ -845,8 +976,8 @@
.logLog_box {
  height: 98%;
  width: 98%;
  padding: 1%;
  overflow: auto;
  padding: 0.5%;
  .el-input {
    width: 300px;
  }
@@ -871,24 +1002,19 @@
  .inquire {
    height: auto;
    padding: 10px;
    margin-top: 10px;
    margin-top: 10px;
    width: calc(100% - 22px);
    //padding: 8px;
    //margin-top: 20px;
    border-radius: 5px;
    //margin-bottom: 20px;
    // width: calc(100% - 22px);
    .el-form-item {
      margin: 7px;
      margin: 5px;
    }
  }
  .table_box {
    width: calc(100% - 22px);
    height: calc(60% - 6px);
    padding: 10px;
    margin-bottom: 10px;
    margin-top: 10px;
    border-radius: 5px;
  }
  .text-center {
    text-align: center;
  }