From 0cd1631ceaa93e6483908fd692d2cb693b85324b Mon Sep 17 00:00:00 2001
From: 石广澎 <shiguangpeng@163.com>
Date: 星期二, 02 一月 2024 14:26:01 +0800
Subject: [PATCH] 增加图片验证码和登录日志 权限管理优化

---
 admin-web/src/views/systemSetting/role/index.vue |  229 +++++++++++++++++----------------------------------------
 1 files changed, 69 insertions(+), 160 deletions(-)

diff --git a/admin-web/src/views/systemSetting/role/index.vue b/admin-web/src/views/systemSetting/role/index.vue
index 73b530d..25bb0db 100644
--- a/admin-web/src/views/systemSetting/role/index.vue
+++ b/admin-web/src/views/systemSetting/role/index.vue
@@ -2,104 +2,6 @@
   <div class="app-container">
     <el-container>
       <el-card class="box-card" style="width: 100%" shadow="never">
-        <!--    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch">-->
-        <!--      <el-form-item label="瑙掕壊鍚嶇О" prop="roleName">-->
-        <!--        <el-input-->
-        <!--          v-model="queryParams.roleName"-->
-        <!--          placeholder="璇疯緭鍏�"-->
-        <!--          clearable-->
-        <!--          @keyup.enter.native="handleQuery"-->
-        <!--          style="width: 150px"-->
-        <!--        />-->
-        <!--      </el-form-item>-->
-        <!--      <el-form-item label="鐘舵��" prop="status">-->
-        <!--        <el-select-->
-        <!--          style="width: 150px"-->
-        <!--          v-model="queryParams.status"-->
-        <!--          placeholder="璇烽�夋嫨"-->
-        <!--          clearable>-->
-        <!--          <el-option-->
-        <!--            v-for="dict in constants.normalOrDisabled"-->
-        <!--            :key="dict.value"-->
-        <!--            :label="dict.label"-->
-        <!--            :value="dict.value"-->
-        <!--          />-->
-        <!--        </el-select>-->
-        <!--      </el-form-item>-->
-        <!--      <el-form-item>-->
-        <!--        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">鏌ヨ</el-button>-->
-        <!--        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">閲嶇疆</el-button>-->
-        <!--      </el-form-item>-->
-        <!--    </el-form>-->
-        <!--    <el-row :gutter="10" class="mb8">-->
-        <!--      <el-col :span="1.5">-->
-        <!--        <el-button-->
-        <!--          type="primary"-->
-        <!--          plain-->
-        <!--          icon="el-icon-plus"-->
-        <!--          size="mini"-->
-        <!--          @click="handleAdd"-->
-        <!--          v-hasPermi="['system:role:add']"-->
-        <!--        >鏂板</el-button>-->
-        <!--      </el-col>-->
-        <!--    </el-row>-->
-        <!--    <el-table v-loading="loading" :data="roleList" @selection-change="handleSelectionChange">-->
-        <!--      <el-table-column type="selection" width="55" align="center" />-->
-        <!--      <el-table-column label="瑙掕壊缂栧彿" prop="role_id" width="160" />-->
-        <!--      <el-table-column label="瑙掕壊鍚嶇О" prop="role_name" :show-overflow-tooltip="true" width="150" />-->
-        <!--      <el-table-column label="鏉冮檺瀛楃" prop="role_key" :show-overflow-tooltip="true" width="150" />-->
-        <!--      <el-table-column label="鏄剧ず椤哄簭" prop="role_sort" width="100" />-->
-        <!--      <el-table-column label="鐘舵��" align="center" width="100">-->
-        <!--        <template slot-scope="scope">-->
-        <!--          <el-switch-->
-        <!--            v-model="scope.row.status"-->
-        <!--            :active-value=0-->
-        <!--            :inactive-value=1-->
-        <!--            @change="handleStatusChange(scope.row)"-->
-        <!--          ></el-switch>-->
-        <!--        </template>-->
-        <!--      </el-table-column>-->
-        <!--      <el-table-column label="澶囨敞" align="center" prop="remark" width="180">-->
-        <!--      </el-table-column>-->
-        <!--      <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width" width="180">-->
-        <!--        <template slot-scope="scope">-->
-        <!--          <el-button-->
-        <!--            size="mini"-->
-        <!--            type="text"-->
-        <!--            icon="el-icon-edit"-->
-        <!--            @click="handleUpdate(scope.row)"-->
-        <!--            v-hasPermi="['system:role:edit']"-->
-        <!--          >淇敼</el-button>-->
-        <!--          <el-button-->
-        <!--            size="mini"-->
-        <!--            type="text"-->
-        <!--            icon="el-icon-delete"-->
-        <!--            @click="handleDelete(scope.row)"-->
-        <!--            v-hasPermi="['system:role:remove']"-->
-        <!--          >鍒犻櫎</el-button>-->
-        <!--&lt;!&ndash;          <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['system:role:edit']">-->
-        <!--            <span class="el-dropdown-link">-->
-        <!--              <i class="el-icon-d-arrow-right el-icon&#45;&#45;right"></i>鏇村-->
-        <!--            </span>-->
-        <!--            <el-dropdown-menu slot="dropdown">-->
-        <!--              <el-dropdown-item command="handleDataScope" icon="el-icon-circle-check"-->
-        <!--                v-hasPermi="['system:role:edit']">鏁版嵁鏉冮檺</el-dropdown-item>-->
-        <!--              <el-dropdown-item command="handleAuthUser" icon="el-icon-user"-->
-        <!--                v-hasPermi="['system:role:edit']">鍒嗛厤鐢ㄦ埛</el-dropdown-item>-->
-        <!--            </el-dropdown-menu>-->
-        <!--          </el-dropdown>&ndash;&gt;-->
-        <!--        </template>-->
-        <!--      </el-table-column>-->
-        <!--    </el-table>-->
-        <!--    <el-pagination-->
-        <!--      :current-page="queryParams.pageNum"-->
-        <!--      :page-sizes="constants.page.limit"-->
-        <!--      :layout="constants.page.layout"-->
-        <!--      :total="this.total"-->
-        <!--      @size-change="changeSize"-->
-        <!--      @current-change="changePage"-->
-        <!--    />-->
-        <!--鎼滅储鏉′欢-->
         <div class="filter-container">
           <my-search ref="searchBar" :items="items" @search="fifterForm"></my-search>
         </div>
@@ -113,19 +15,19 @@
     </el-container>
     <!-- 娣诲姞鎴栦慨鏀硅鑹查厤缃璇濇 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="100px">
+      <el-form v-loading="loading" ref="form" :model="form" :rules="rules" label-width="100px">
         <el-form-item label="瑙掕壊鍚嶇О" prop="role_name">
           <el-input v-model="form.role_name" placeholder="璇疯緭鍏ヨ鑹插悕绉�"/>
         </el-form-item>
-        <el-form-item prop="role_key">
-          <span slot="label">
-            <el-tooltip content="瑙掕壊鏍囪瘑锛岀洰鍓嶆殏鏈娇鐢�" placement="top">
-              <i class="el-icon-question"></i>
-            </el-tooltip>
-            瑙掕壊鏍囪瘑
-          </span>
-          <el-input v-model="form.role_key" placeholder="璇疯緭鍏ヨ鑹叉爣璇�"/>
-        </el-form-item>
+        <!--        <el-form-item prop="role_key">
+                  <span slot="label">
+                    <el-tooltip content="瑙掕壊鏍囪瘑锛岀洰鍓嶆殏鏈娇鐢�" placement="top">
+                      <i class="el-icon-question"></i>
+                    </el-tooltip>
+                    瑙掕壊鏍囪瘑
+                  </span>
+                  <el-input v-model="form.role_key" placeholder="璇疯緭鍏ヨ鑹叉爣璇�"/>
+                </el-form-item>-->
         <el-form-item label="瑙掕壊椤哄簭" prop="role_sort">
           <el-input-number v-model="form.role_sort" controls-position="right" :min="0"/>
         </el-form-item>
@@ -133,23 +35,19 @@
           <el-radio-group v-model="form.status">
             <el-radio :label="0">姝e父</el-radio>
             <el-radio :label="1">绂佺敤</el-radio>
-            <!--            <el-radio-->
-            <!--              v-for="dict in constants.normalOrDisabled"-->
-            <!--              :key="dict.value"-->
-            <!--              :label="dict.value"-->
-            <!--            >{{dict.label}}</el-radio>-->
           </el-radio-group>
         </el-form-item>
-<!--        <el-form-item label="瑙掕壊鑼冨洿">
+        <el-form-item label="瑙掕壊鑼冨洿">
           <el-radio-group v-model="form.data_scope">
-            <el-radio :label="1" checked>鐪�</el-radio>
-            <el-radio :label="2">甯�</el-radio>
-            <el-radio :label="3">鍘�</el-radio>
+            <el-radio v-if="$store.getters.userInfo.lv<2" :label="1">鐪�</el-radio>
+            <el-radio v-if="$store.getters.userInfo.lv<3" :label="2">甯�</el-radio>
+            <el-radio v-if="$store.getters.userInfo.lv<4" :label="3">鍘�</el-radio>
           </el-radio-group>
-        </el-form-item>-->
+        </el-form-item>
         <el-form-item label="鑿滃崟鏉冮檺">
           <el-checkbox v-model="menuExpand" @change="handleCheckedTreeExpand($event, 'menu')">灞曞紑/鎶樺彔</el-checkbox>
-          <el-checkbox v-model="menuNodeAll" @change="handleCheckedTreeNodeAll($event, 'menu')">鍏ㄩ��/鍏ㄤ笉閫�</el-checkbox>
+          <el-checkbox v-model="menuNodeAll" @change="handleCheckedTreeNodeAll($event, 'menu')">鍏ㄩ��/鍏ㄤ笉閫�
+          </el-checkbox>
           <el-checkbox v-model="form.menu_check_strictly" @change="handleCheckedTreeConnect($event, 'menu')">鐖跺瓙鑱斿姩
           </el-checkbox>
           <el-tree
@@ -176,9 +74,9 @@
 </template>
 
 <script>
-import {addRole, changeRoleStatus, dataScope, delRole, getRole, listRole, updateRole} from "@/api/system/role";
-import {roleMenuTreeselect, treeselect as menuTreeselect} from "@/api/system/menu";
-import {listOrgRoot, roleDeptTreeselect, treeselect as deptTreeselect} from "@/api/system/dept";
+import {listRole, getRole, delRole, addRole, updateRole, dataScope, changeRoleStatus} from "@/api/system/role";
+import {treeselect as menuTreeselect, roleMenuTreeselect} from "@/api/system/menu";
+import {treeselect as deptTreeselect, roleDeptTreeselect, listOrgRoot} from "@/api/system/dept";
 import MyTableV2 from "@/components/myTable/myTableV2";
 import SettingIplatform from '@/utils/settingIplatform';
 import items from './items'
@@ -262,9 +160,10 @@
       tableShow: false,
       // 琛ㄦ牸鏁版嵁
       table: {
+        autoLoad: false,
         showIndex: true, // 鏄惁鏄剧ず搴忓彿
         expand: false, // 鏄惁鏄剧ず璇︽儏鏁版嵁
-        url: SettingIplatform.apiBaseURL + '/system/role/list', // 璇锋眰鍦板潃
+        url: SettingIplatform.apiBaseURL + '/pc/fin/sys/tenant/user/query/role', // 璇锋眰鍦板潃
         // 宸ュ叿鏉�
         tools: {
           columnsCtrl: {// 鍒楁帶鍒舵寜閽�
@@ -286,12 +185,12 @@
         },
         // 鍒椾俊鎭�
         columns: [
-          {title: '瑙掕壊缂栧彿', field: 'role_id', align: 'center',},
-          {title: '瑙掕壊鍚嶇О', field: 'role_name', align: 'center',},
-          {title: '鏉冮檺瀛楃', field: 'role_key', align: 'center',},
-          {title: '椤哄簭鍙�', field: 'role_sort', align: 'center',},
+          {title: '瑙掕壊缂栧彿', field: 'role_id', align: 'center', width: 135},
+          {title: '瑙掕壊鍚嶇О', field: 'role_name', align: 'left', minWidth: 200},
+          // {title: '鏉冮檺瀛楃', field: 'role_key', align: 'center', width: 100},
+          {title: '鏄剧ず椤哄簭', field: 'role_sort', align: 'center', width: 100},
           {
-            title: '鐘舵��', field: 'status', align: 'center',
+            title: '鐘舵��', field: 'status', align: 'center', width: 100,
             switch: row => {
               const result = {}
               if (row.status == 0) {
@@ -314,7 +213,7 @@
               return result
             }
           },
-          // {title: '澶囨敞', field: 'remark', align: 'left', width: '250px'},
+          {title: '澶囨敞', field: 'remark', align: 'left', minWidth: 200},
         ],
         // 鎿嶄綔淇℃伅
         operation: {
@@ -368,6 +267,9 @@
       },
       // 琛ㄥ崟鍙傛暟
       form: {
+        role_name: '',
+        role_key: '',
+        role_sort: '',
         data_scope: 1,
         status: 1
       },
@@ -395,6 +297,7 @@
   methods: {
     fifterForm(params) {
       this.queryParams = Object.assign(this.queryParams, params)
+      this.queryParams.status = 0
       this.search(1)
     },
     // 鏌ヨtable鍒楄〃
@@ -407,33 +310,30 @@
     },
     /** 鑾峰彇椤剁骇鏈烘瀯鍒楄〃閫夋嫨妗� 2022-12-15 */
     getRootOrgList() {
-      this.loading = true;
       listOrgRoot().then(response => {
         this.rootOrgList = response;
         this.selectedRootOrgId = this.rootOrgList[0].id;
         this.queryParams.orgId = this.selectedRootOrgId;
-        this.loading = false;
       }).then(() => {
         this.tableShow = true
-        this.search(1);
-      }).catch(function () {
-        // this.loading = false;
+        this.$nextTick(() => {
+          this.search(1);
+        })
+
       });
     },
     /** 鏌ヨ瑙掕壊鍒楄〃 */
     getList() {
-      this.loading = true;
       this.selectedRootOrgId = this.queryParams.orgId;
       listRole(this.queryParams).then(response => {
           this.roleList = response.datas;
           this.total = response.totalRows;
-          this.loading = false;
         }
       );
     },
     /** 鏌ヨ鑿滃崟鏍戠粨鏋� */
-    getMenuTreeselect() {
-      menuTreeselect().then(response => {
+    async getMenuTreeselect() {
+      await menuTreeselect().then(response => {
         this.menuOptions = response;
       });
     },
@@ -503,23 +403,24 @@
       if (this.$refs.menu != undefined) {
         this.$refs.menu.setCheckedKeys([]);
       }
-      this.menuExpand = false,
-        this.menuNodeAll = false,
-        this.deptExpand = true,
-        this.deptNodeAll = false,
-        this.form = {
-          org_id: undefined, // 椤剁骇鏈烘瀯ID
-          role_id: undefined,
-          role_name: undefined,
-          role_key: "None",
-          role_sort: 0,
-          status: 0,
-          menuIds: [],
-          deptIds: [],
-          menu_check_strictly: true,
-          dept_check_strictly: true,
-          remark: undefined
-        };
+      this.menuExpand = false
+      this.menuNodeAll = false
+      this.deptExpand = true
+      this.deptNodeAll = false
+      this.form = {
+        org_id: undefined, // 椤剁骇鏈烘瀯ID
+        role_id: undefined,
+        role_name: undefined,
+        data_scope: this.$store.getters.userInfo ? this.$store.getters.userInfo.lv : 1,
+        role_key: "None",
+        role_sort: 0,
+        status: 0,
+        menuIds: [],
+        deptIds: [],
+        menu_check_strictly: true,
+        dept_check_strictly: true,
+        remark: undefined
+      };
       this.resetForm("form");
     },
     changeSize(e) {
@@ -593,13 +494,15 @@
       }
     },
     /** 鏂板鎸夐挳鎿嶄綔 */
-    handleAdd() {
+    async handleAdd() {
+      this.loading = true
       this.reset();
-      this.getMenuTreeselect();
+      await this.getMenuTreeselect();
       // 2022-12-18 娣诲姞涓婇《绾ф満鏋処D
       this.form.org_id = this.selectedRootOrgId;
       this.open = true;
       this.title = "娣诲姞瑙掕壊";
+      this.loading = false
     },
     /** 淇敼鎸夐挳鎿嶄綔 */
     handleUpdate(row) {
@@ -607,6 +510,7 @@
       // const roleId = row.role_id || this.ids
       const roleId = row.role_id;
       const roleMenu = this.getRoleMenuTreeselect(roleId);
+      this.loading = true
       getRole(roleId).then(response => {
         this.form = response;
         this.open = true;
@@ -623,6 +527,9 @@
           });
         });
         this.title = "淇敼瑙掕壊";
+        this.loading = false
+      }).catch(() => {
+        this.loading = false
       });
     },
     /** 閫夋嫨瑙掕壊鏉冮檺鑼冨洿瑙﹀彂 */
@@ -658,20 +565,22 @@
           // 2022-12-19,鎶婅繖涓や釜瀛楁璁剧疆涓烘暟鍊硷紝鐩墠鏆備笉浣跨敤锛岃涓嶅悗鍙扮被鍨嬭浆鎹㈤敊璇�(boolean)
           this.form.menu_check_strictly = 1;
           this.form.dept_check_strictly = 1;
+          // 2023-11-30 澧炲姞榛樿data_scope涓�1
+          // this.form.data_scope = 1;
 
           if (this.form.role_id != undefined) {
             this.form.menuIds = this.getMenuAllCheckedKeys();
             updateRole(this.form).then(response => {
               this.$modal.msgSuccess("淇敼鎴愬姛");
               this.open = false;
-              this.getList();
+              this.search()
             });
           } else {
             this.form.menuIds = this.getMenuAllCheckedKeys();
             addRole(this.form).then(response => {
               this.$modal.msgSuccess("鏂板鎴愬姛");
               this.open = false;
-              this.getList();
+              this.search()
             });
           }
         }
@@ -694,7 +603,7 @@
       this.$modal.confirm('鏄惁纭鍒犻櫎瑙掕壊涓�"' + row.role_name + '"鐨勬暟鎹」锛�').then(function () {
         return delRole(roleIds);
       }).then(() => {
-        this.this.search();
+        this.search();
         this.$modal.msgSuccess("鍒犻櫎鎴愬姛");
       }).catch(() => {
       });

--
Gitblit v1.9.1