From 87c914ffe57995f1a9844fa19cbd4fe19ca7b91a Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期四, 29 九月 2022 18:47:21 +0800
Subject: [PATCH] 角色管理新增,删除,修改

---
 src/views/userManage/roleManage.vue |  410 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 366 insertions(+), 44 deletions(-)

diff --git a/src/views/userManage/roleManage.vue b/src/views/userManage/roleManage.vue
index 2cff3e6..7d0137e 100644
--- a/src/views/userManage/roleManage.vue
+++ b/src/views/userManage/roleManage.vue
@@ -16,29 +16,34 @@
           :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"
             ><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
             ><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>
@@ -52,100 +57,396 @@
           :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="depid"
           :label="$t('userManage.RM.ownedSystem')"
         />
         <el-table-column
           align="center"
-          prop="Permission"
-          :label="$t('userManage.RM.Permission')"
+          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')"
         />
         <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')"
+        />
+        <el-table-column
+          align="center"
+          prop="bak"
+          :label="$t('userManage.RM.remarks')"
         />
         <el-table-column
           fixed="right"
           :label="$t('common.operate')"
-          width="300"
+          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
+              type="warning"
+              @click="handleEdit(scope.$index, scope.row)"
+              size="small"
+              >{{ $t('common.update') }}</el-button
+            >
+            <el-button
+              type="danger"
+              @click="handleDelete(scope.$index, scope.row)"
+              size="small"
+              >{{ $t('common.delete') }}</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.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.insertRole')"
+      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.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>
 </template>
-  
-  <script>
-import MyBread from "../../components/MyBread.vue";
 
+<script>
+import MyBread from '../../components/MyBread.vue';
+import roleDepTree from './roleDepTree.vue';
+import {
+  select_Role_ByPageAndCount,
+  selectdepTab,
+  insertRole,
+  deleteRole,
+  selectDep,
+  updateRole,
+} from '../../api/api';
 export default {
   //import寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
   components: {
     MyBread,
+    roleDepTree,
   },
-
   data() {
     return {
-      currentPage: 1,
-      roleForm: {
-        groupName: "",
-        ownedSystem: "",
-      },
+      showCata: false,
+      formLabelWidth: '120px',
+      InsertFormdialog: false,
+      UpdateFormdialog: false,
+      roleForm: {},
+      cataName: '',
+      depValue: '',
+      elTreeFlag: 0,
+      path_id: '',
       tableData: [],
+      insertform: {},
+      updateform: {},
+      count: 0,
+      selData: [],
+      listData: {
+        pageIndex: 1,
+        pageSize: 10,
+      },
     };
   },
   methods: {
+    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;
+
+          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;
+      }
+      const data = await select_Role_ByPageAndCount(this.listData);
+      if (data.code != 200) {
+        this.$message.error('鍒楄〃璋冪敤澶辫触');
+      }
+      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;
+      }
+      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(index, row) {
+      const data = await deleteRole({ id: row.id.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;
+      const data = await selectDep({ id: row.depid });
+      this.updateform.depValue = data.result.name;
+      this.UpdateFormdialog = true;
     },
     onSubmit() {
-      console.log("submit!");
+      console.log('submit!');
     },
     resetForm(formName) {
       this.$refs[formName].resetFields();
     },
   },
-  created() {},
+  created() {
+    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 +457,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;
@@ -181,4 +504,3 @@
   }
 }
 </style>
-  
\ No newline at end of file

--
Gitblit v1.9.3