From 9ce29c536ba2a636416c618761985e2b9a711ee6 Mon Sep 17 00:00:00 2001
From: lxl <lixuliang_hd@126.com>
Date: 星期四, 27 十月 2022 14:17:45 +0800
Subject: [PATCH] user

---
 src/views/userManage/roleManage.vue |  647 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 599 insertions(+), 48 deletions(-)

diff --git a/src/views/userManage/roleManage.vue b/src/views/userManage/roleManage.vue
index bb43f89..a7e8ec6 100644
--- a/src/views/userManage/roleManage.vue
+++ b/src/views/userManage/roleManage.vue
@@ -16,136 +16,613 @@
           :label="$t('userManage.RM.ownedSystem')"
           prop="ownedSystem"
         >
-          <el-select v-model="roleForm.ownedSystem">
-            <el-option :label="$t('userManage.RM.one')" value="one" />
-          </el-select>
+          <el-input
+            v-model="roleForm.value"
+            :disabled="true"
+            :placeholder="$t('common.pleaseInput')"
+          />
+          <el-button style="margin-left: 20px" @click="showDepTree(1)">{{
+            $t('common.choose')
+          }}</el-button>
         </el-form-item>
         <br />
         <el-form-item>
-          <el-button
+          <el-button @click="InsertFormdialog = true" v-if="menuStatus.insert"
             ><i class="el-icon-circle-plus-outline"></i> &nbsp;{{
-              $t("userManage.RM.add")
+              $t('userManage.RM.add')
             }}</el-button
           >
         </el-form-item>
         <el-form-item>
-          <el-button
+          <el-button @click="onSubmit('ruleForm')"
             ><i class="el-icon-search"></i> &nbsp;{{
-              $t("userManage.RM.query")
+              $t('userManage.RM.query')
             }}</el-button
           >
         </el-form-item>
         <el-form-item>
           <el-button @click="resetForm('ruleForm')"
             ><i class="el-icon-delete"></i>&nbsp;{{
-              $t("userManage.RM.reset")
+              $t('userManage.RM.reset')
+            }}</el-button
+          >
+        </el-form-item>
+        <el-form-item>
+          <el-button @click="handleDelete()" v-if="menuStatus.delete"
+            ><i class="el-icon-delete"></i>&nbsp;{{
+              $t('common.delete')
             }}</el-button
           >
         </el-form-item>
       </el-form>
     </div>
     <div class="table_box">
-      <el-table :data="tableData" stripe style="width: 100%" height="99%">
+      <el-table
+        :data="tableData"
+        stripe
+        style="width: 100%"
+        @selection-change="handleSelectionChange"
+        height="99%"
+      >
+        <el-table-column type="selection" width="55" />
         <el-table-column
           align="center"
           type="index"
           :label="$t('userManage.RM.index')"
           width="70px"
         />
+        <el-table-column align="center" prop="id" v-if="false" />
         <el-table-column
           align="center"
-          prop="roleName"
+          prop="name"
           :label="$t('userManage.RM.roleName')"
         />
 
         <el-table-column
           align="center"
-          prop="ownedSystem"
+          prop="depName"
           :label="$t('userManage.RM.ownedSystem')"
         />
+
         <el-table-column
           align="center"
-          prop="Permission"
-          :label="$t('userManage.RM.Permission')"
+          prop="isAdmin"
+          :label="$t('userManage.RM.isAdmin')"
+        >
+          <template slot-scope="scope">
+            <span v-if="scope.row.isAdmin == 1">鏄� </span>
+            <span v-else-if="scope.row.isAdmin == 0">鍚�</span>
+          </template>
+        </el-table-column>
+        <el-table-column
+          align="center"
+          prop="descr"
+          :label="$t('userManage.RM.describe')"
+        />
+
+        <!-- <el-table-column
+          align="center"
+          prop="createUser"
+          :label="$t('userManage.RM.creationuser')"
         />
         <el-table-column
           align="center"
-          prop="resourcePermission"
-          :label="$t('userManage.RM.resourcePermission')"
+          prop="createTime"
+          :label="$t('userManage.RM.creationtime')"
+          :formatter="formatTime"
         />
         <el-table-column
           align="center"
-          prop="roleSetting"
-          :label="$t('userManage.RM.groupSetting')"
+          prop="UpdateUser"
+          :label="$t('userManage.RM.updateonuser')"
         />
+        <el-table-column
+          align="center"
+          prop="updateTime"
+          :label="$t('userManage.RM.updateontime')"
+          :formatter="formatTime"
+        />
+        <el-table-column
+          align="center"
+          prop="bak"
+          :label="$t('userManage.RM.remarks')"
+        /> -->
         <el-table-column
           fixed="right"
-          :label="$t('userManage.RM.operate')"
-          width="300"
+          :label="$t('common.operate')"
+          width="200"
         >
-          <template #default>
-            <el-button type="warning" size="small">{{
-              $t("common.update")
-            }}</el-button>
-            <el-button type="danger" size="small">{{
-              $t("common.delete")
-            }}</el-button>
+          <template slot-scope="scope">
+            <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)"
+              type="primary"
+              size="small"
+              >{{ $t('common.see') }}</el-button
+            >
           </template>
         </el-table-column>
       </el-table>
-      <div style="margin-top: 40px" class="pagination_box">
+      <div style="margin-top: 25px" class="pagination_box">
         <el-pagination
           @size-change="handleSizeChange"
           @current-change="handleCurrentChange"
-          :current-page="currentPage"
+          :current-page="listData.pageIndex"
           :page-sizes="[10, 20, 30, 40]"
-          :page-size="10"
+          :page-size="listData.pageSize"
           layout="total, sizes, prev, pager, next, jumper"
-          :total="0"
+          :total="count"
         >
         </el-pagination>
       </div>
     </div>
+
+    <el-dialog
+      :title="$t('userManage.RM.insertRole')"
+      top="15vh"
+      width="80vh"
+      style="overflow: hidden"
+      :visible.sync="InsertFormdialog"
+    >
+      <el-form :model="insertform">
+        <el-form-item
+          :label="$t('userManage.RM.roleName')"
+          :label-width="formLabelWidth"
+        >
+          <el-input v-model="insertform.name" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item
+          :label="$t('userManage.RM.ownedSystem')"
+          :label-width="formLabelWidth"
+          :prop="insertform.depValue"
+          :rules="[{ required: true, message: '涓嶈兘涓虹┖' }]"
+        >
+          <el-input
+            v-model="insertform.depValue"
+            :disabled="true"
+            :placeholder="$t('common.pleaseInput')"
+          />
+          <el-button style="margin-left: 20px" @click="showDepTree(2)">{{
+            $t('common.choose')
+          }}</el-button>
+        </el-form-item>
+        <el-form-item
+          :label="$t('userManage.RM.describe')"
+          :label-width="formLabelWidth"
+        >
+          <el-input v-model="insertform.descr" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item
+          :label="$t('userManage.RM.isAdmin')"
+          :label-width="formLabelWidth"
+        >
+          <el-radio v-model="insertform.isAdmin" label="1">鏄�</el-radio>
+          <el-radio v-model="insertform.isAdmin" label="0">鍚�</el-radio>
+        </el-form-item>
+        <el-form-item
+          :label="$t('userManage.RM.remarks')"
+          :label-width="formLabelWidth"
+        >
+          <el-input v-model="insertform.bak" autocomplete="off"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="insertFromClose">{{ $t('common.close') }}</el-button>
+        <el-button type="primary" @click="insertFromData">{{
+          $t('common.confirm')
+        }}</el-button>
+      </div>
+    </el-dialog>
+    <el-dialog
+      :title="$t('userManage.RM.updateRole')"
+      top="15vh"
+      width="80vh"
+      style="overflow: hidden"
+      :visible.sync="UpdateFormdialog"
+    >
+      <el-form :model="updateform">
+        <el-form-item
+          :label="$t('userManage.RM.roleName')"
+          :label-width="formLabelWidth"
+        >
+          <el-input v-model="updateform.name" autocomplete="off"></el-input>
+        </el-form-item>
+
+        <el-form-item
+          :label="$t('userManage.RM.ownedSystem')"
+          :label-width="formLabelWidth"
+          :prop="updateform.depValue"
+        >
+          <el-input
+            v-model="updateform.depValue"
+            :disabled="true"
+            :placeholder="$t('common.pleaseInput')"
+          />
+          <el-button style="margin-left: 20px" @click="showDepTree(3)">{{
+            $t('common.choose')
+          }}</el-button>
+        </el-form-item>
+        <el-form-item
+          :label="$t('userManage.RM.isAdmin')"
+          :label-width="formLabelWidth"
+        >
+          <el-radio v-model="updateform.isAdmin" label="1">鏄�</el-radio>
+          <el-radio v-model="updateform.isAdmin" label="0">鍚�</el-radio>
+        </el-form-item>
+        <el-form-item
+          :label="$t('userManage.RM.describe')"
+          :label-width="formLabelWidth"
+        >
+          <el-input v-model="updateform.descr" autocomplete="off"></el-input>
+        </el-form-item>
+        <el-form-item
+          :label="$t('userManage.RM.remarks')"
+          :label-width="formLabelWidth"
+        >
+          <el-input v-model="updateform.bak" autocomplete="off"></el-input>
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="updateFromClose">{{ $t('common.close') }}</el-button>
+        <el-button type="primary" @click="updateFromData">{{
+          $t('common.confirm')
+        }}</el-button>
+      </div>
+    </el-dialog>
+    <div class="leftTree" v-if="showCata">
+      <div class="treeBox">
+        <role-dep-tree></role-dep-tree>
+      </div>
+      <div class="btnBox">
+        <el-button type="primary" size="small" @click="selectCataName"
+          >纭畾</el-button
+        >
+        <el-button type="primary" size="small" @click="showCata = false"
+          >鍙栨秷</el-button
+        >
+      </div>
+    </div>
+
+    <div class="infoBox" v-show="showinfoBox">
+      <el-card>
+        <div slot="header" class="clearfix">
+          <span>{{ $t('dataManage.styleObj.deInformation') }}</span>
+          <div style="float: right; cursor: pointer" @click="closeDetial">
+            <i class="el-icon-close"></i>
+          </div>
+        </div>
+        <div class="contentBox">
+          <p>
+            <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 class="boxlabel">{{ itemdetail.depName }}</label>
+          </p>
+          <el-divider></el-divider>
+
+          <p>
+            <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 class="boxlabel">{{ itemdetail.descr }}</label>
+          </p>
+          <el-divider></el-divider>
+          <p>
+            <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 class="boxlabel">{{ itemdetail.createTime }}</label>
+          </p>
+          <el-divider></el-divider>
+          <p>
+            <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 class="boxlabel">{{ itemdetail.updateTime }}</label>
+          </p>
+          <el-divider></el-divider>
+          <p>
+            <label> {{ $t('userManage.RM.remarks') }}:</label>
+            <label class="boxlabel">{{ itemdetail.bak }}</label>
+          </p>
+          <el-divider></el-divider>
+        </div>
+      </el-card>
+    </div>
   </div>
 </template>
-  
-  <script>
-import MyBread from "../../components/MyBread.vue";
 
+<script>
+import moment from 'moment';
+import MyBread from '../../components/MyBread.vue';
+import roleDepTree from './roleDepTree.vue';
+import {
+  select_Role_ByPageAndCount,
+  selectdepTab,
+  insertRole,
+  deleteRoles,
+  selectDep,
+  updateRole,
+} from '../../api/api';
 export default {
   //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
   components: {
     MyBread,
+    roleDepTree,
   },
-
   data() {
     return {
-      currentPage: 1,
-      roleForm: {
-        groupName: "",
-        ownedSystem: "",
-      },
+      showinfoBox: false,
+      showCata: false,
+      formLabelWidth: '120px',
+      InsertFormdialog: false,
+      UpdateFormdialog: false,
+      roleForm: {},
+      cataName: '',
+      depValue: '',
+      elTreeFlag: 0,
+      path_id: '',
       tableData: [],
+      insertform: {},
+      updateform: {},
+      count: 0,
+      selData: [],
+      itemdetail: {},
+      multipleSelection: [],
+
+      listData: {
+        name: null,
+        depName: null,
+        pageIndex: 1,
+        pageSize: 10,
+      },
+      menuStatus: {
+        delete: false,
+        insert: false,
+        update: false,
+      },
     };
   },
   methods: {
+    closeDetial() {
+      this.showinfoBox = false;
+      this.itemdetail = {};
+    },
+    showDetail(index, row) {
+      this.showinfoBox = true;
+      this.itemdetail = row;
+      this.itemdetail.createTime = this.formomentTime(
+        this.itemdetail.createTime
+      );
+      this.itemdetail.updateTime = this.formomentTime(
+        this.itemdetail.updateTime
+      );
+      this.itemdetail.admin =
+        parseInt(this.itemdetail.isAdmin) === 0 ? '鍚�' : '鏄�';
+    },
+    handleSelectionChange(val) {
+      this.multipleSelection = val;
+    },
+    formatTime(row, column) {
+      let date = row[column.property];
+      return this.formomentTime(date);
+    },
+    formomentTime(date) {
+      if (date === undefined || date === null) {
+        return;
+      }
+      return moment(parseInt(date)).format('YYYY-MM-DD HH:mm:ss');
+    },
+    showDepTree(res) {
+      this.showCata = true;
+      this.elTreeFlag = res;
+    },
+    selectCataName() {
+      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('>');
+        value = data[data.length - 1];
+      } else {
+        value = this.$store.state.catalogueName;
+      }
+      this.$store.commit('changeCata', ''); //娓呯┖state鐨勯潰鍖呭睉
+      this.$store.commit('changeNode', ''); //娓呯┖state鐨勮妭鐐瑰璞�
+      this.showCata = false;
+      switch (this.elTreeFlag) {
+        case 1:
+          this.roleForm.value = value;
+          this.roleForm.depid = this.path_id;
+          break;
+        case 2:
+          this.insertform.depid = this.path_id;
+          this.insertform.depValue = value;
+          break;
+        case 3:
+          this.updateform.depid = this.path_id;
+          this.updateform.depValue = value;
+          break;
+      }
+    },
+    async getRoleTabelData() {
+      if (this.listData.tab == '') {
+        delete this.listData.tab;
+      }
+      this.listData.name = this.roleForm.username;
+      this.listData.depName = this.roleForm.value;
+      const data = await select_Role_ByPageAndCount(this.listData);
+      if (data.code != 200) {
+        this.$message.error('鍒楄〃璋冪敤澶辫触');
+      }
+      console.log(data);
+      this.tableData = data.result;
+      this.count = data.count;
+    },
+    async getSelectDepTab() {
+      this.selectData = [];
+      const data = await selectdepTab();
+      if (data.code != 200) {
+        this.$message.error('涓嬫媺璋冪敤澶辫触');
+      }
+      data.result.forEach((e) => {
+        if (e) {
+          this.selData.push({
+            label: e.name,
+            value: e.id,
+          });
+        }
+      });
+    },
+    insertFromClose() {
+      this.InsertFormdialog = false;
+      this.insertform = {};
+    },
+    async insertFromData() {
+      if (this.insertform.depValue == null) {
+        this.$message({
+          message: '璇烽�夋嫨瑙掕壊鎵�灞炲崟浣�',
+          type: 'warning',
+        });
+        return;
+      }
+      const data = await insertRole(this.insertform);
+      if (data.code == 200) {
+        this.InsertFormdialog = false;
+        this.insertform = {};
+        this.$message({
+          message: '娣诲姞鎴愬姛锛�',
+          type: 'success',
+        });
+        this.getRoleTabelData();
+      } else {
+        this.$message({
+          message: '娣诲姞澶辫触锛�',
+          type: 'warning',
+        });
+      }
+    },
+    updateFromClose() {
+      this.UpdateFormdialog = false;
+      this.updateform = {};
+    },
+    async updateFromData() {
+      if (this.updateform.depValue == null) {
+        this.$message({
+          message: '璇烽�夋嫨瑙掕壊鎵�灞炲崟浣�',
+          type: 'warning',
+        });
+        return;
+      }
+      console.log(this.updateform);
+      const data = await updateRole(this.updateform);
+      if (data.code == 200) {
+        this.UpdateFormdialog = false;
+        this.updateform = {};
+        this.$message({
+          message: '淇敼鎴愬姛锛�',
+          type: 'success',
+        });
+        this.getRoleTabelData();
+      } else {
+        this.$message({
+          message: '淇敼澶辫触锛�',
+          type: 'warning',
+        });
+      }
+    },
+    async handleDelete() {
+      var std = [];
+      for (var i in this.multipleSelection) {
+        std.push(this.multipleSelection[i].id);
+      }
+      const data = await deleteRoles({ ids: std.toString() });
+
+      if (data.code == 200) {
+        this.InsertFormdialog = false;
+        this.$message({
+          message: '鍒犻櫎鎴愬姛锛�',
+          type: 'success',
+        });
+        this.getRoleTabelData();
+      } else {
+        this.$message({
+          message: '鍒犻櫎澶辫触锛�',
+          type: 'warning',
+        });
+      }
+    },
     handleSizeChange(val) {
-      console.log(`姣忛〉 ${val} 鏉);
+      this.listData.pageSize = val;
+      this.getRoleTabelData();
     },
     handleCurrentChange(val) {
-      console.log(`褰撳墠椤�: ${val}`);
+      this.listData.pageIndex = val;
+      this.getRoleTabelData();
+    },
+    async handleEdit(index, row) {
+      this.updateform = row;
+      this.updateform.isAdmin = row.isAdmin.toString();
+      const data = await selectDep({ id: row.depid });
+      this.updateform.depValue = data.result.name;
+      this.UpdateFormdialog = true;
     },
     onSubmit() {
-      console.log("submit!");
+      this.getRoleTabelData();
     },
     resetForm(formName) {
       this.$refs[formName].resetFields();
+      this.roleForm = {};
+      this.getRoleTabelData();
+    },
+    showPermsMenu(res) {
+      switch (res.tag) {
+        case '/delete':
+          this.menuStatus.delete = true;
+          break;
+        case '/insert':
+          this.menuStatus.insert = true;
+          break;
+        case '/update':
+          this.menuStatus.update = true;
+          break;
+      }
     },
   },
-  created() {},
+  created() {
+    var val = this.$store.state.currentPerms;
+    var permsEntity = this.$store.state.permsEntity;
+    for (var i = 0; i < permsEntity.length; i++) {
+      if (permsEntity[i].perms == val) {
+        this.showPermsMenu(permsEntity[i]);
+      }
+    }
+    this.getRoleTabelData();
+    this.getSelectDepTab();
+  },
 };
 </script>
-  <style lang="less" scoped>
+<style lang="less" scoped>
 //@import url(); 寮曞叆鍏叡css绫�
 .logLog_box {
   background: rgb(240, 242, 245);
@@ -156,21 +633,43 @@
   .el-input {
     width: 300px;
   }
+  .leftTree {
+    position: absolute;
+    z-index: 9999;
+    top: 9%;
+    left: 37%;
+    width: 400px;
+    height: 600px;
+    background: #f0f2f5;
+    border: 1px solid #000;
+    .treeBox {
+      height: 550px;
+      overflow: auto;
+      /deep/ .el-tree-node__content:hover {
+        background-color: rgb(153, 153, 153);
+      }
+    }
+    .btnBox {
+      width: 123px;
+      margin: 10px auto 0;
+      // background-color: red;
+    }
+  }
   .inquire {
-    height: 110px;
+    height: 115px;
     overflow: auto;
     padding: 10px;
     margin-top: 20px;
     background: #fff;
     border-radius: 5px;
     border: 1px solid rgb(202, 201, 204);
-    margin-bottom: 20px;
+    margin-bottom: 10px;
     .el-form-item {
       margin: 7px;
     }
   }
   .table_box {
-    height: 65%;
+    height: 70%;
     padding: 10px;
     background: #fff;
     border-radius: 5px;
@@ -179,6 +678,58 @@
   .text-center {
     text-align: center;
   }
+  .infoBox {
+    width: 500px;
+    border: 1px solid #eee;
+    position: absolute;
+    z-index: 100;
+    top: 25%;
+    right: 12%;
+    background-color: #fff;
+    .el-card {
+      background-color: transparent;
+      span {
+        font-size: 16px;
+        font-weight: 600;
+      }
+    }
+    .contentBox {
+      margin: 0 aotu 10px;
+      height: 485px;
+      overflow: auto;
+      p {
+        // background-color: #bfa;
+        // margin-bottom: 10px;
+        font-size: 14px;
+      }
+      .boxlabel {
+        margin-left: 10px;
+      }
+    }
+    /* 鏁翠綋鏍峰紡 */
+    .contentBox::-webkit-scrollbar {
+      width: 6px;
+      height: 6px;
+    }
+
+    /* 婊氬姩鏉� */
+    .contentBox::-webkit-scrollbar-thumb {
+      background-color: #b3d8ff;
+      border-radius: 6px;
+    }
+
+    /* 婊氬姩鏉¢紶鏍囩粡杩囨牱寮� */
+    .contentBox::-webkit-scrollbar-thumb:hover {
+      background-color: #b3d8ff;
+      border-radius: 6px;
+    }
+
+    /* 婊氬姩鏉¤建閬� */
+    .contentBox::-webkit-scrollbar-track-piece {
+      -webkit-box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
+      border-radius: 10px;
+      background: #ededed;
+    }
+  }
 }
 </style>
-  
\ No newline at end of file

--
Gitblit v1.9.3