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>--> - <!--<!– <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--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>–>--> - <!-- </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