From dd2576bf9887b29c47d128cd6c070f8d70756865 Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: 星期四, 21 七月 2022 18:27:13 +0800
Subject: [PATCH] 更新首页登录页

---
 src/views/system/menu/index.vue                      |  361 ++++++-----
 src/views/system/role/index.vue                      |    4 
 src/views/system/user/index.vue                      |  382 ++++++-----
 src/assets/style/index.scss                          |   10 
 src/views/system/role/component/roleDialog.vue       |  250 ++++----
 src/utils/request.ts                                 |   30 
 src/views/system/department/component/deptDialog.vue |  274 ++++----
 src/views/homeMenu/homeMenu.vue                      |  110 ++-
 src/views/system/user/component/userDialog.vue       |  402 ++++++------
 src/views/system/department/index.vue                |    1 
 src/main.ts                                          |    2 
 src/views/system/menu/component/menuDialog.vue       |   25 
 12 files changed, 967 insertions(+), 884 deletions(-)

diff --git a/src/assets/style/index.scss b/src/assets/style/index.scss
new file mode 100644
index 0000000..f7be0d0
--- /dev/null
+++ b/src/assets/style/index.scss
@@ -0,0 +1,10 @@
+.input-box{
+  width: 200px !important;
+}
+.basic-line{
+  display: inline-block;
+  padding-left: 10px;
+}
+.page-position{
+  float: right;
+}
diff --git a/src/main.ts b/src/main.ts
index acd3d24..dd69054 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -5,7 +5,7 @@
 import { directive } from '/@/utils/directive';
 import { i18n } from '/@/i18n/index';
 import other from '/@/utils/other';
-
+import '/@/assets/style/index.scss';
 import ElementPlus from 'element-plus';
 import 'element-plus/dist/index.css';
 import '/@/theme/index.scss';
diff --git a/src/utils/request.ts b/src/utils/request.ts
index 9de0cfe..a6c21e4 100644
--- a/src/utils/request.ts
+++ b/src/utils/request.ts
@@ -29,16 +29,34 @@
 );
 
 service.interceptors.response.use(
-
 	(response) => {
 		// 对响应数据做点什么
-		if(response.data.code && (response.data.code ==='A0215' || response.data.code === 'A0214' || response.data.code === 'A0213')){
-			Session.clear()
-			window.location.href = '/'
-			return Promise.reject(response)
+		if (response.data.code && response.data.code === 'A0213') {
+			ElMessage.error('用户uid不存在');
+			setTimeout(() => {
+				Session.clear();
+				window.location.href = '/';
+			}, 2000);
+		} else if (response.data.code && response.data.code === 'A0215') {
+			ElMessage.error('token失效');
+			Session.clear();
+			window.location.href = '/';
 		}
 		// if(response.data.code && response.data.code !== '200'){
-		return Promise.resolve(response)
+		return Promise.resolve(response);
+	//
+	// (response) => {
+	// 	// 对响应数据做点什么
+	// 	if(response.data.code && (response.data.code ==='A0215' || response.data.code === 'A0214' || response.data.code === 'A0213')){
+	// 		Session.clear()
+	// 		window.location.href = '/'
+	// 		return Promise.reject(response)
+	// 	}
+	// 	// if(response.data.code && response.data.code !== '200'){
+	// 	return Promise.resolve(response)
+
+
+
 		// }
 		// Session.clear()
 		// window.location.href = '/'
diff --git a/src/views/homeMenu/homeMenu.vue b/src/views/homeMenu/homeMenu.vue
index 8326f96..01718e3 100644
--- a/src/views/homeMenu/homeMenu.vue
+++ b/src/views/homeMenu/homeMenu.vue
@@ -21,11 +21,11 @@
 		<div class="menuGrid">
 			<div class="gridCont">
 				<el-row :gutter="20">
-					<el-col :span="6"><div class="grid-content" @click="renderMenu('2')"><div class="itemTit">双重预防系统</div><img class="iconImg" src="../../assets/menu/icon4.png"><img class="bgImg" src="../../assets/menu/card4.png"></div></el-col>
-					<el-col :span="6"><div class="grid-content" @click="renderMenu('3')"><div class="itemTit">特殊作业系统</div><img class="iconImg" src="../../assets/menu/icon7.png"><img class="bgImg" src="../../assets/menu/card7.png"></div></el-col>
-					<el-col :span="6"><div class="grid-content" @click="renderMenu('4')"><div class="itemTit">智能巡检系统</div><img class="iconImg" src="../../assets/menu/icon8.png"><img class="bgImg" src="../../assets/menu/card8.png"></div></el-col>
+					<el-col :span="6"><div class="grid-content" @click="render('2')"><div class="itemTit">双重预防系统</div><img class="iconImg" src="../../assets/menu/icon4.png"><img class="bgImg" src="../../assets/menu/card4.png"></div></el-col>
+					<el-col :span="6"><div class="grid-content" @click="render('3')"><div class="itemTit">特殊作业系统</div><img class="iconImg" src="../../assets/menu/icon7.png"><img class="bgImg" src="../../assets/menu/card7.png"></div></el-col>
+					<el-col :span="6"><div class="grid-content" @click="render('4')"><div class="itemTit">智能巡检系统</div><img class="iconImg" src="../../assets/menu/icon8.png"><img class="bgImg" src="../../assets/menu/card8.png"></div></el-col>
 					<el-col :span="6">
-						<div class="grid-content" @click="renderMenu('5')">
+						<div class="grid-content" @click="render('5')">
 							<div class="itemTit">安全风险综合
 								<br>预警预报平台
 							</div>
@@ -35,15 +35,15 @@
 					</el-col>
 				</el-row>
 				<el-row :gutter="20">
-					<el-col :span="6"><div class="grid-content grid-content-2" @click="renderMenu('6')"><div class="itemTit">应急管理系统</div><img class="iconImg" src="../../assets/menu/icon5.png"><img class="bgImg" src="../../assets/menu/card5.png"></div></el-col>
-					<el-col :span="6"><div class="grid-content grid-content-2" @click="renderMenu('7')"><div class="itemTit">目标责任管理系统</div><img class="iconImg" src="../../assets/menu/icon2.png"><img class="bgImg" src="../../assets/menu/card2.png"></div></el-col>
-					<el-col :span="6"><div class="grid-content grid-content-2" @click="renderMenu('8')"><div class="itemTit">事故管理系统</div><img class="iconImg" src="../../assets/menu/icon6.png"><img class="bgImg" src="../../assets/menu/card6.png"></div></el-col>
-					<el-col :span="6"><div class="grid-content grid-content-2" @click="renderMenu('9')"><div class="itemTit">设备综合管控系统</div><img class="iconImg" src="../../assets/menu/icon9.png"><img class="bgImg" src="../../assets/menu/card9.png"></div></el-col>
+					<el-col :span="6"><div class="grid-content grid-content-2" @click="render('6')"><div class="itemTit">应急管理系统</div><img class="iconImg" src="../../assets/menu/icon5.png"><img class="bgImg" src="../../assets/menu/card5.png"></div></el-col>
+					<el-col :span="6"><div class="grid-content grid-content-2" @click="render('7')"><div class="itemTit">目标责任管理系统</div><img class="iconImg" src="../../assets/menu/icon2.png"><img class="bgImg" src="../../assets/menu/card2.png"></div></el-col>
+					<el-col :span="6"><div class="grid-content grid-content-2" @click="render('8')"><div class="itemTit">事故管理系统</div><img class="iconImg" src="../../assets/menu/icon6.png"><img class="bgImg" src="../../assets/menu/card6.png"></div></el-col>
+					<el-col :span="6"><div class="grid-content grid-content-2" @click="render('9')"><div class="itemTit">设备综合管控系统</div><img class="iconImg" src="../../assets/menu/icon9.png"><img class="bgImg" src="../../assets/menu/card9.png"></div></el-col>
 				</el-row>
 				<el-row :gutter="20">
-					<el-col :span="6"><div class="grid-content grid-content-3" @click="renderMenu('10')"><div class="itemTit">安全知识图谱系统</div><img class="iconImg" src="../../assets/menu/icon3.png"><img class="bgImg" src="../../assets/menu/card3.png"></div></el-col>
-					<el-col :span="9"><div class="grid-content grid-content-3" @click="renderMenu('11')"><div class="itemTit">危险化学品全生命周期安全<br>管理系统</div><img class="iconImg" src="../../assets/menu/icon10.png"><img class="bgImg" src="../../assets/menu/card10.png"></div></el-col>
-					<el-col :span="9"><div class="grid-content grid-content-3" @click="renderMenu('1')"><div class="itemTit">基础数据权限管理系统</div><img class="iconImg" src="../../assets/menu/icon11.png"><img class="bgImg" src="../../assets/menu/card11.png"></div></el-col>
+					<el-col :span="6"><div class="grid-content grid-content-3" @click="render('10')"><div class="itemTit">安全知识图谱系统</div><img class="iconImg" src="../../assets/menu/icon3.png"><img class="bgImg" src="../../assets/menu/card3.png"></div></el-col>
+					<el-col :span="9"><div class="grid-content grid-content-3" @click="render('11')"><div class="itemTit">危险化学品全生命周期安全<br>管理系统</div><img class="iconImg" src="../../assets/menu/icon10.png"><img class="bgImg" src="../../assets/menu/card10.png"></div></el-col>
+					<el-col :span="9"><div class="grid-content grid-content-3" @click="render('1')"><div class="itemTit">基础数据权限管理系统</div><img class="iconImg" src="../../assets/menu/icon11.png"><img class="bgImg" src="../../assets/menu/card11.png"></div></el-col>
 				</el-row>
 			</div>
 		</div>
@@ -66,27 +66,30 @@
     import { useRoutesList } from '/@/stores/routesList';
 
 	// 定义接口来定义对象的类型
-	interface LoginState {
-		tabsActiveName: string;
-		isScan: boolean;
-	}
+    interface LoginState {
+        tabsActiveName: string;
+        isScan: boolean;
+        count: number;
+        projectId: string;
+    }
 
-	export default defineComponent({
-		name: 'loginIndex',
-		components: {},
-		setup() {
-			const route = useRoute();
-			const router = useRouter();
-			const userInfo = useUserInfo()
-			const { userInfos } = storeToRefs(userInfo);
+    export default defineComponent({
+        name: 'loginIndex',
+        components: {},
+        setup() {
+            const router = useRouter();
+            const userInfo = useUserInfo();
+            const { userInfos } = storeToRefs(userInfo);
             const routeToStore = useRoutesList(pinia);
             const { routesList } = storeToRefs(routeToStore);
-			const storesThemeConfig = useThemeConfig();
-			const { themeConfig } = storeToRefs(storesThemeConfig);
-			const state = reactive<LoginState>({
-				tabsActiveName: 'account',
-				isScan: false,
-			});
+            const storesThemeConfig = useThemeConfig();
+            const { themeConfig } = storeToRefs(storesThemeConfig);
+            const state = reactive<LoginState>({
+                tabsActiveName: 'account',
+                isScan: false,
+                count: 0,
+                projectId: '1'
+            });
 			// 获取布局配置信息
 			const getThemeConfig = computed(() => {
 				return themeConfig.value;
@@ -95,9 +98,40 @@
 			const onLoginOut = () => {
 				console.log('退出登录')
 			};
-            const renderMenu = async (value: string) => {
-                Session.set('projectId', value);
-                userInfos.value.projectId = value;
+            //选择菜单
+            const render = (value: string) => {
+                state.projectId = value;
+                renderMenu();
+            };
+
+            const throttle = (renderMenu: any, delay: number) => {
+                let flag = true;
+                let count = 0;
+                return function () {
+                    if (!flag) return;
+                    flag = false;
+                    if (count === 0) {
+                        renderMenu.apply();
+                        count++;
+                        flag = true;
+                    } else {
+                        setTimeout(() => {
+                            renderMenu.apply();
+                            flag = true;
+                        }, delay);
+                    }
+                };
+            };
+
+            //调用菜单方法
+            const renderMenu = throttle(() => {
+                renderFun();
+            }, 2000);
+
+            //调后台菜单接口
+            const renderFun = async () => {
+                Session.set('projectId', state.projectId);
+                userInfos.value.projectId = state.projectId;
                 await initBackEndControlRoutes().then(() => {
                     let linkToMenu = [...routesList.value];
                     if (linkToMenu && linkToMenu.length > 1) {
@@ -127,12 +161,12 @@
 				// loginApp()
 			});
 			return {
-				logoMini,
-				loginIconTwo,
-				getThemeConfig,
-				renderMenu,
-				toSpecialWorkSys,
-				...toRefs(state),
+                render,
+                logoMini,
+                onLoginOut,
+                loginIconTwo,
+                getThemeConfig,
+                ...toRefs(state)
 			};
 		},
 	});
diff --git a/src/views/system/department/component/deptDialog.vue b/src/views/system/department/component/deptDialog.vue
index 1c2bf4a..03bbef1 100644
--- a/src/views/system/department/component/deptDialog.vue
+++ b/src/views/system/department/component/deptDialog.vue
@@ -1,154 +1,152 @@
 <template>
-	<div class="system-add-dept-container">
-		<el-dialog :title="title" v-model="isShowDialog" width="600px">
-			<el-form :model="departmentForm" size="default" label-width="90px">
-				<el-row :gutter="35">
-					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-						<el-form-item label="上级部门">
-							<el-cascader
-								:options="deptData"
-								:props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }"
-								placeholder="请选择部门"
-								clearable
-								class="w100"
-								v-model="departmentForm.parentDepId"
-							>
-							</el-cascader>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-						<el-form-item label="部门名称">
-							<el-input v-model="departmentForm.depName" placeholder="请输入部门名称" clearable></el-input>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-						<el-form-item label="部门描述">
-							<el-input v-model="departmentForm.depInfo" type="textarea" placeholder="请输入部门描述" maxlength="150"></el-input>
-						</el-form-item>
-					</el-col>
-				</el-row>
-			</el-form>
-			<template #footer>
-				<span class="dialog-footer">
-					<el-button @click="onCancel" size="default">取 消</el-button>
-					<el-button type="primary" @click="onSubmit" size="default">确 定</el-button>
-				</span>
-			</template>
-		</el-dialog>
-	</div>
+    <div class="system-add-dept-container">
+        <el-dialog :title="title" v-model="isShowDialog" width="600px">
+            <el-form :model="departmentForm" size="default" label-width="90px">
+                <el-row :gutter="35">
+                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+                        <el-form-item label="上级部门">
+                            <el-cascader
+                                :options="deptData"
+                                :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }"
+                                placeholder="请选择部门"
+                                clearable
+                                class="w100"
+                                v-model="departmentForm.parentDepId"
+                            >
+                            </el-cascader>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+                        <el-form-item label="部门名称">
+                            <el-input v-model="departmentForm.depName" placeholder="请输入部门名称" clearable></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+                        <el-form-item label="部门描述">
+                            <el-input v-model="departmentForm.depInfo" type="textarea" placeholder="请输入部门描述" maxlength="150"></el-input>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-form>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="onCancel" size="default">取 消</el-button>
+                    <el-button type="primary" v-throttle @click="onSubmit" size="default">确 定</el-button>
+                </span>
+            </template>
+        </el-dialog>
+    </div>
 </template>
 
 <script lang="ts">
 import { ElMessage } from 'element-plus';
 import { reactive, toRefs, onMounted, defineComponent } from 'vue';
-import { departmentApi } from "/@/api/system/department";
+import { departmentApi } from '/@/api/system/department';
 
 // 定义接口来定义对象的类型
 interface TableDataRow {
-	name:string,
-	info:string,
-	parentId:string,
-	id:number,
+    name: string;
+    info: string;
+    parentId: string;
+    id: number;
 }
 interface DeptSate {
-	title:string;
-	isShowDialog: boolean;
-	departmentForm: {
-        depName:string,
-        depInfo:string,
-        parentDepId:string
-	};
-	deptData: Array<TableDataRow>;
+    title: string;
+    isShowDialog: boolean;
+    departmentForm: {
+        depName: string;
+        depInfo: string;
+        parentDepId: string;
+    };
+    deptData: Array<TableDataRow>;
 }
 
 export default defineComponent({
-	name: 'systemAddDept',
-	setup(prop,context) {
-		const state = reactive<DeptSate>({
-			title:'',
-			isShowDialog: false,
-			departmentForm: {
-                depName:'',
-                parentDepId:'',
-                depInfo:'',
-			},
-			deptData: [], // 部门数据
-		});
-		// 打开弹窗
-		const openDialog = (type:string, value: any,departmentList: []) => {
-			state.isShowDialog = true;
-			state.deptData = JSON.parse(JSON.stringify(departmentList))
-			if(type === '新增'){
-				state.title = '新增部门'
-				state.departmentForm = {
-                    depName:'',
-                    parentDepId:'',
-                    depInfo:'',
-				}
-			}else{
-				state.title = '修改部门'
-				state.departmentForm = JSON.parse(JSON.stringify(value))
-			}
-		};
-		// 关闭弹窗
-		const closeDialog = () => {
-			state.isShowDialog = false;
-		};
-		// 取消
-		const onCancel = () => {
-			closeDialog();
-		};
-		// 新增
-		const onSubmit = async () => {
-			if(state.title === '新增部门'){
-				let res = await departmentApi().addDepartment(state.departmentForm)
-				if(res.data.code === '200'){
-					ElMessage({
-						type:'success',
-						message:'部门新增成功',
-						duration:2000
-					})
-					closeDialog();
-					context.emit('getDepartmentList')
-				}else{
-					ElMessage({
-						type:'warning',
-						message:res.data.msg
-					})
-				}
-			}else{
-				let res = await departmentApi().modDepartment(state.departmentForm)
-				if(res.data.code === '200'){
-					ElMessage({
-						type:'success',
-						message:'部门修改成功',
-						duration:2000
-					})
-					closeDialog();
-					context.emit('getDepartmentList')
-				}else{
-					ElMessage({
-						type:'warning',
-						message:res.data.msg
-					})
-				}
-			}
-		};
-		// 初始化部门数据
-		const initTableData = () => {
-
-		};
-		// 页面加载时
-		onMounted(() => {
-			initTableData();
-		});
-		return {
-			openDialog,
-			closeDialog,
-			onCancel,
-			onSubmit,
-			...toRefs(state),
-		};
-	},
+    name: 'systemAddDept',
+    setup(prop, context) {
+        const state = reactive<DeptSate>({
+            title: '',
+            isShowDialog: false,
+            departmentForm: {
+                depName: '',
+                parentDepId: '',
+                depInfo: ''
+            },
+            deptData: [] // 部门数据
+        });
+        // 打开弹窗
+        const openDialog = (type: string, value: any, departmentList: []) => {
+            state.isShowDialog = true;
+            state.deptData = JSON.parse(JSON.stringify(departmentList));
+            if (type === '新增') {
+                state.title = '新增部门';
+                state.departmentForm = {
+                    depName: '',
+                    parentDepId: '',
+                    depInfo: ''
+                };
+            } else {
+                state.title = '修改部门';
+                state.departmentForm = JSON.parse(JSON.stringify(value));
+            }
+        };
+        // 关闭弹窗
+        const closeDialog = () => {
+            state.isShowDialog = false;
+        };
+        // 取消
+        const onCancel = () => {
+            closeDialog();
+        };
+        // 新增
+        const onSubmit = async () => {
+            if (state.title === '新增部门') {
+                let res = await departmentApi().addDepartment(state.departmentForm);
+                if (res.data.code === '200') {
+                    ElMessage({
+                        type: 'success',
+                        message: '部门新增成功',
+                        duration: 2000
+                    });
+                    closeDialog();
+                    context.emit('getDepartmentList');
+                } else {
+                    ElMessage({
+                        type: 'warning',
+                        message: res.data.msg
+                    });
+                }
+            } else {
+                let res = await departmentApi().modDepartment(state.departmentForm);
+                if (res.data.code === '200') {
+                    ElMessage({
+                        type: 'success',
+                        message: '部门修改成功',
+                        duration: 2000
+                    });
+                    closeDialog();
+                    context.emit('getDepartmentList');
+                } else {
+                    ElMessage({
+                        type: 'warning',
+                        message: res.data.msg
+                    });
+                }
+            }
+        };
+        // 初始化部门数据
+        const initTableData = () => {};
+        // 页面加载时
+        onMounted(() => {
+            initTableData();
+        });
+        return {
+            openDialog,
+            closeDialog,
+            onCancel,
+            onSubmit,
+            ...toRefs(state)
+        };
+    }
 });
 </script>
diff --git a/src/views/system/department/index.vue b/src/views/system/department/index.vue
index 610f52a..8e85911 100644
--- a/src/views/system/department/index.vue
+++ b/src/views/system/department/index.vue
@@ -42,7 +42,6 @@
 import { ElMessageBox, ElMessage } from 'element-plus';
 import deptDialog from '/@/views/system/department/component/deptDialog.vue';
 import {departmentApi} from "/@/api/system/department";
-import {useRoleApi} from "/@/api/system/role";
 
 // 定义接口来定义对象的类型
 interface TableDataRow {
diff --git a/src/views/system/menu/component/menuDialog.vue b/src/views/system/menu/component/menuDialog.vue
index 960a05d..eb7e633 100644
--- a/src/views/system/menu/component/menuDialog.vue
+++ b/src/views/system/menu/component/menuDialog.vue
@@ -18,40 +18,39 @@
                     </el-col>
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                         <el-form-item label="菜单名称">
-                            <el-input v-model="ruleForm.meta.title" placeholder="格式:message.router.xxx" clearable></el-input>
+                            <el-input v-model.trim="ruleForm.meta.title" placeholder="格式:message.router.xxx" clearable></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                         <el-form-item label="路由名称">
-                            <el-input v-model="ruleForm.name" placeholder="路由中的 name 值" clearable></el-input>
+                            <el-input v-model.trim="ruleForm.name" placeholder="路由中的 name 值" clearable></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                         <el-form-item label="路由路径">
-                            <el-input v-model="ruleForm.path" placeholder="路由中的 path 值" clearable></el-input>
+                            <el-input v-model.trim="ruleForm.path" placeholder="路由中的 path 值" clearable></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                         <el-form-item label="重定向">
-                            <el-input v-model="ruleForm.redirect" placeholder="请输入路由重定向" clearable></el-input>
+                            <el-input v-model.trim="ruleForm.redirect" placeholder="请输入路由重定向" clearable></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                         <el-form-item label="菜单图标">
-                            <el-input placeholder="请输入菜单图标" v-model="ruleForm.meta.icon" type="all" />
+                            <el-input placeholder="请输入菜单图标" v-model.trim="ruleForm.meta.icon" type="all" />
                             <!--							<IconSelector placeholder="请输入菜单图标" v-model="ruleForm.meta.icon" type="all" />-->
                         </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                         <el-form-item label="组件路径">
-                            <el-input v-model="ruleForm.component" placeholder="组件路径" clearable></el-input>
+                            <el-input v-model.trim="ruleForm.component" placeholder="组件路径" clearable></el-input>
                         </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
                         <el-form-item label="权限标识">
                             <el-select v-model="ruleForm.meta.roles" multiple placeholder="取角色管理" clearable class="w100">
-                                <el-option label="admin" value="admin"></el-option>
-                                <el-option label="common" value="common"></el-option>
+                                <el-option v-for="item in roleList" :key="item.roleId" :value="item.roleCode" :label="item.roleName"></el-option>
                             </el-select>
                         </el-form-item>
                     </el-col>
@@ -86,7 +85,7 @@
             <template #footer>
                 <span class="dialog-footer">
                     <el-button @click="onCancel" size="default">取 消</el-button>
-                    <el-button type="primary" @click="onSubmit" size="default">{{ buttonName }}</el-button>
+                    <el-button type="primary" v-throttle @click="onSubmit" size="default">{{ buttonName }}</el-button>
                 </span>
             </template>
         </el-dialog>
@@ -97,12 +96,10 @@
 import { reactive, toRefs, onMounted, defineComponent } from 'vue';
 import { storeToRefs } from 'pinia';
 import { useRoutesList } from '/@/stores/routesList';
-import { i18n } from '/@/i18n/index';
 import IconSelector from '/@/components/iconSelector/index.vue';
 import { useMenuApi } from '/@/api/system/menu/index';
 import { ElMessageBox, ElMessage } from 'element-plus';
-import { Session } from '/@/utils/storage';
-// import { setBackEndControlRefreshRoutes } from "/@/router/backEnd";
+
 
 export default defineComponent({
     name: 'systemAddMenu',
@@ -137,6 +134,7 @@
                 },
                 btnPower: '' // 菜单类型为按钮时,权限标识
             },
+            roleList: [],
             menuData: [], // 上级菜单数据
             projectList: []
         });
@@ -152,8 +150,9 @@
             return arr;
         };
         // 打开弹窗
-        const openDialog = (type: string, value: any, projectList: any, projectId: string) => {
+        const openDialog = (type: string, value: any, projectList: any, projectId: string, roleList: []) => {
             state.projectList = JSON.parse(JSON.stringify(projectList));
+            state.roleList = roleList;
             state.isShowDialog = true;
             if (type === '新增') {
                 state.buttonName = '新增';
diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue
index 652beff..f20befb 100644
--- a/src/views/system/menu/index.vue
+++ b/src/views/system/menu/index.vue
@@ -1,177 +1,200 @@
 <template>
-	<div class="system-menu-container">
-		<el-card shadow="hover">
-			<div class="system-menu-search mb15">
-				<el-select size="default" v-model="projectId" placeholder="请选择项目名称" style="max-width: 180px" @change="getMenuList()">
-					<el-option
-							v-for="item in projectList"
-							:key="item.key"
-							:value="item.id"
-							:label="item.name"
-					>
-					</el-option>
-				</el-select>
-				<el-button size="default" type="primary" class="ml10" @click="getMenuList">
-					<el-icon>
-						<ele-Search />
-					</el-icon>
-					查询
-				</el-button>
-				<el-button size="default" type="success" class="ml10" @click="onOpenMenuDialog('新增')">
-					<el-icon>
-						<ele-FolderAdd />
-					</el-icon>
-					新增菜单
-				</el-button>
-			</div>
-			<el-table :data="menuTableData" style="width: 100%" row-key="path" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
-				<el-table-column label="菜单名称" show-overflow-tooltip>
-					<template #default="scope">
-						<SvgIcon :name="scope.row.meta.icon" />
-						<span class="ml10">{{ scope.row.meta.title }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column prop="path" label="路由路径" show-overflow-tooltip></el-table-column>
-				<el-table-column label="组件路径" show-overflow-tooltip>
-					<template #default="scope">
-						<span>{{ scope.row.component }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column label="权限标识" show-overflow-tooltip>
-					<template #default="scope">
-						<span>{{ scope.row.meta.roles }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column label="排序" show-overflow-tooltip width="80">
-					<template #default="scope">
-						{{ scope.$index }}
-					</template>
-				</el-table-column>
-				<el-table-column label="类型" show-overflow-tooltip width="80">
-					<template #default="scope">
-						<el-tag type="success" size="small">{{ scope.row.xx }}菜单</el-tag>
-					</template>
-				</el-table-column>
-				<el-table-column label="操作" show-overflow-tooltip width="140">
-					<template #default="scope">
-						<el-button size="small" text type="primary" @click="onOpenMenuDialog('新增')">新增</el-button>
-						<el-button size="small" text type="primary" @click="onOpenMenuDialog('修改',scope.row)">修改</el-button>
-						<el-button size="small" text type="primary" @click="deleteMenu(scope.row)">删除</el-button>
-					</template>
-				</el-table-column>
-			</el-table>
-		</el-card>
-		<menuDialog ref="menuDialog"  @getMenuList="getMenuList"/>
-	</div>
+    <div class="system-menu-container">
+        <el-card shadow="hover">
+            <div class="system-menu-search mb15">
+                <el-select size="default" v-model="projectId" placeholder="请选择项目名称" style="max-width: 180px" @change="getMenuList()">
+                    <el-option v-for="item in projectList" :key="item.key" :value="item.id" :label="item.name"> </el-option>
+                </el-select>
+                <el-button size="default" type="primary" class="ml10" @click="getMenuList">
+                    <el-icon>
+                        <ele-Search />
+                    </el-icon>
+                    查询
+                </el-button>
+                <el-button size="default" type="success" class="ml10" @click="onOpenMenuDialog('新增')">
+                    <el-icon>
+                        <ele-FolderAdd />
+                    </el-icon>
+                    新增菜单
+                </el-button>
+            </div>
+            <el-table :data="menuTableData" style="width: 100%" row-key="path" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }">
+                <el-table-column label="菜单名称" show-overflow-tooltip>
+                    <template #default="scope">
+                        <SvgIcon :name="scope.row.meta.icon" />
+                        <span class="ml10">{{ scope.row.meta.title }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="path" label="路由路径" show-overflow-tooltip></el-table-column>
+                <el-table-column label="组件路径" show-overflow-tooltip>
+                    <template #default="scope">
+                        <span>{{ scope.row.component }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="权限标识" show-overflow-tooltip>
+                    <template #default="scope">
+                        <span>{{ parseRole(scope.row.meta.roles) }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column label="排序" show-overflow-tooltip width="80">
+                    <template #default="scope">
+                        {{ scope.$index }}
+                    </template>
+                </el-table-column>
+                <el-table-column label="类型" show-overflow-tooltip width="80">
+                    <template #default="scope">
+                        <el-tag type="success" size="small">{{ scope.row.xx }}菜单</el-tag>
+                    </template>
+                </el-table-column>
+                <el-table-column label="操作" show-overflow-tooltip width="140">
+                    <template #default="scope">
+                        <el-button size="small" text type="primary" @click="onOpenMenuDialog('新增')">新增</el-button>
+                        <el-button size="small" text type="primary" @click="onOpenMenuDialog('修改', scope.row)">修改</el-button>
+                        <el-button size="small" text type="primary" @click="deleteMenu(scope.row)">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </el-card>
+        <menuDialog ref="menuDialog" @getMenuList="getMenuList" />
+    </div>
 </template>
 
 <script lang="ts">
-	import { ref, toRefs, reactive, computed, onMounted, defineComponent } from 'vue';
-	import { RouteRecordRaw } from 'vue-router';
-	import { ElMessageBox, ElMessage } from 'element-plus';
-	import { storeToRefs } from 'pinia';
-	import { useRoutesList } from '/@/stores/routesList';
-	import menuDialog from '/@/views/system/menu/component/menuDialog.vue';
-	import {useMenuApi} from "/@/api/system/menu";
-	import {Session} from "/@/utils/storage";
-	import pinia from "/@/stores";
-	import {dynamicRoutes} from "/@/router/route";
-	import {useUserInfo} from "/@/stores/userInfo";
-	import {initBackEndControlRoutes} from "/@/router/backEnd";
+import { ref, toRefs, reactive, onMounted, defineComponent } from 'vue';
+import { ElMessageBox, ElMessage } from 'element-plus';
+import { useRoutesList } from '/@/stores/routesList';
+import menuDialog from '/@/views/system/menu/component/menuDialog.vue';
+import { useMenuApi } from '/@/api/system/menu';
+import { Session } from '/@/utils/storage';
+import { initBackEndControlRoutes } from '/@/router/backEnd';
+import { useRoleApi } from '/@/api/system/role';
 
-	export default defineComponent({
-		name: 'systemMenu',
-		components: { menuDialog },
-		setup() {
-			const menuDialog = ref();
-			const storesRoutesList = useRoutesList();
-			const state = reactive({
-				projectId:'1',
-				menuData:[],
-				menuTableData:[],
-				projectList:[
-                    { id: '1', name: '基础数据权限管理系统', key: 0 },
-                    { id: '2', name: '双重预防系统', key: 1 },
-                    { id: '3', name: '特殊作业系统', key: 2 },
-                    { id: '4', name: '智能巡检系统', key: 3 },
-                    { id: '5', name: '安全风险综合预警预报平台', key: 4 },
-                    { id: '6', name: '应急管理系统', key: 5 },
-                    { id: '7', name: '目标责任管理系统', key: 6 },
-                    { id: '8', name: '事故管理系统', key: 7 },
-                    { id: '9', name: '设备综合管控系统', key: 8 },
-                    { id: '10', name: '安全知识图谱系统', key: 9 },
-                    { id: '11', name: '危险化学品全生命周期安全', key: 10 }
-				],
-			});
-			// // 获取 vuex 中的路由
-			// const menuTableData = computed(() => {
-			// 	return routesList.value;
-			// });
-			// 打开新增菜单弹窗
-			const onOpenMenuDialog = (type: string,value: any) => {
-				menuDialog.value.openDialog(type,value,state.projectList,state.projectId);
-			};
-			// 打开编辑菜单弹窗
-			// 删除当前行
-			const deleteMenu =  (row: any) => {
-				ElMessageBox.confirm(`此操作将永久删除路由:${row.path}, 是否继续?`, '提示', {
-					confirmButtonText: '删除',
-					cancelButtonText: '取消',
-					type: 'warning',
-				}).then(async () => {
-					let res = await useMenuApi().deleteMenu({id:row.id})
-					if(res.data.code ==='200'){
-						ElMessage({
-							type:'success',
-							duration:2000,
-							message:'删除成功'
-						})
-						await getMenuList()
-						if(Session.get('projectId') == state.projectId) await initBackEndControlRoutes()
-					}else{
-						ElMessage({
-							type:'warning',
-							message:res.data.msg
-						})
-					}
-				}).catch(() => {});
-			};
-			const getMenuList = async () => {
-				let res = await useMenuApi().getMenuAdmin(state.projectId)
-				if(res.data.code === '200'){
-					state.menuTableData = res.data.data
-					if(Session.get('projectId') == state.projectId) await initBackEndControlRoutes()
-				}else{
-					ElMessage({
-						type:'warning',
-						message:res.data.msg
-					})
-				}
-			};
+export default defineComponent({
+    name: 'systemMenu',
+    components: { menuDialog },
+    filters: {
+        parseRole: (roles: Array<string>) => {
+            return ['1', '2'];
+        }
+    },
+    setup() {
+        const menuDialog = ref();
+        const storesRoutesList = useRoutesList();
+        const state = reactive({
+            projectId: '1',
+            menuData: [],
+            roleList: [],
+            menuTableData: [],
+            projectList: [
+                { id: '1', name: '基础数据权限管理系统', key: 0 },
+                { id: '2', name: '双重预防系统', key: 1 },
+                { id: '3', name: '特殊作业系统', key: 2 },
+                { id: '4', name: '智能巡检系统', key: 3 },
+                { id: '5', name: '安全风险综合预警预报平台', key: 4 },
+                { id: '6', name: '应急管理系统', key: 5 },
+                { id: '7', name: '目标责任管理系统', key: 6 },
+                { id: '8', name: '事故管理系统', key: 7 },
+                { id: '9', name: '设备综合管控系统', key: 8 },
+                { id: '10', name: '安全知识图谱系统', key: 9 },
+                { id: '11', name: '危险化学品全生命周期安全', key: 10 }
+            ]
+        });
+        // // 获取 vuex 中的路由
+        // const menuTableData = computed(() => {
+        // 	return routesList.value;
+        // });
+        // 打开新增菜单弹窗
+        const onOpenMenuDialog = (type: string, value: any) => {
+            menuDialog.value.openDialog(type, value, state.projectList, state.projectId, state.roleList);
+        };
 
-			const getProjectList = async () => {
-				let res = await useMenuApi().getProjectList()
-				if(res.data.code === '200'){
-					state.menuTableData = res.data.data
-					if(Session.get('projectId') == state.projectId) await initBackEndControlRoutes()
-				}else{
-					ElMessage({
-						type:'warning',
-						message:res.data.msg
-					})
-				}
-			};
+        // 删除当前行
+        const deleteMenu = (row: any) => {
+            ElMessageBox.confirm(`此操作将永久删除路由:${row.path}, 是否继续?`, '提示', {
+                confirmButtonText: '删除',
+                cancelButtonText: '取消',
+                type: 'warning'
+            })
+                .then(async () => {
+                    let res = await useMenuApi().deleteMenu({ id: row.id });
+                    if (res.data.code === '200') {
+                        ElMessage({
+                            type: 'success',
+                            duration: 2000,
+                            message: '删除成功'
+                        });
+                        await getMenuList();
+                        if (Session.get('projectId') == state.projectId) await initBackEndControlRoutes();
+                    } else {
+                        ElMessage({
+                            type: 'warning',
+                            message: res.data.msg
+                        });
+                    }
+                })
+                .catch(() => {});
+        };
+        const getMenuList = async () => {
+            let res = await useMenuApi().getMenuAdmin(state.projectId);
+            if (res.data.code === '200') {
+                state.menuTableData = res.data.data;
+                if (Session.get('projectId') == state.projectId) await initBackEndControlRoutes();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-			onMounted( () => {
-				getMenuList()
-			});
-			return {
-				getMenuList,
-				menuDialog,
-				onOpenMenuDialog,
-				deleteMenu,
-				...toRefs(state),
-			};
-		},
-	});
+        const getRoleList = async () => {
+            let res = await useRoleApi().getRoleList();
+            if (res.data.code === '200') {
+                state.roleList = res.data.data;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        const getProjectList = async () => {
+            let res = await useMenuApi().getProjectList();
+            if (res.data.code === '200') {
+                state.menuTableData = res.data.data;
+                if (Session.get('projectId') == state.projectId) await initBackEndControlRoutes();
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
+
+        const parseRole = (roles: Array<string>) => {
+            let role = roles.map((item) => {
+                for (let i in state.roleList) {
+                    if (state.roleList[i].roleCode === item) {
+                        return state.roleList[i].roleName;
+                    }
+                }
+            });
+            return role;
+        };
+
+        onMounted(() => {
+            getMenuList();
+            getRoleList();
+        });
+        return {
+            parseRole,
+            getMenuList,
+            menuDialog,
+            onOpenMenuDialog,
+            deleteMenu,
+            ...toRefs(state)
+        };
+    }
+});
 </script>
diff --git a/src/views/system/role/component/roleDialog.vue b/src/views/system/role/component/roleDialog.vue
index fc4539a..6786c29 100644
--- a/src/views/system/role/component/roleDialog.vue
+++ b/src/views/system/role/component/roleDialog.vue
@@ -1,150 +1,150 @@
 <template>
-	<div class="system-add-role-container">
-		<el-dialog :title="title" v-model="isShowRoleDialog" width="769px">
-			<el-form :model="roleForm" size="default" label-width="90px">
-				<el-row :gutter="35">
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-						<el-form-item label="角色名称">
-							<el-input v-model="roleForm.roleName" placeholder="请输入角色名称" clearable></el-input>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-						<el-form-item label="角色标识">
-							<el-input v-model="roleForm.roleCode" placeholder="请输入角色标识" clearable></el-input>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-						<el-form-item label="角色描述">
-							<el-input v-model="roleForm.roleInfo" type="textarea" placeholder="请输入角色描述" maxlength="150"></el-input>
-						</el-form-item>
-					</el-col>
-				</el-row>
-			</el-form>
-			<template #footer>
-				<span class="dialog-footer">
-					<el-button @click="isShowRoleDialog = !isShowRoleDialog" size="default">取 消</el-button>
-					<el-button type="primary"  @click="onSubmit" size="default">{{ buttonName }}</el-button>
-				</span>
-			</template>
-		</el-dialog>
-	</div>
+    <div class="system-add-role-container">
+        <el-dialog :title="title" v-model="isShowRoleDialog" width="769px">
+            <el-form :model="roleForm" size="default" label-width="90px">
+                <el-row :gutter="35">
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="角色名称">
+                            <el-input v-model="roleForm.roleName" placeholder="请输入角色名称" clearable></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="角色标识">
+                            <el-input v-model="roleForm.roleCode" placeholder="请输入角色标识" clearable></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
+                        <el-form-item label="角色描述">
+                            <el-input v-model="roleForm.roleInfo" type="textarea" placeholder="请输入角色描述" maxlength="150"></el-input>
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+            </el-form>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="isShowRoleDialog = !isShowRoleDialog" size="default">取 消</el-button>
+                    <el-button type="primary" @click="onSubmit" v-throttle size="default">{{ buttonName }}</el-button>
+                </span>
+            </template>
+        </el-dialog>
+    </div>
 </template>
 
 <script lang="ts">
 import { ElMessage } from 'element-plus';
 import { reactive, toRefs, defineComponent } from 'vue';
-import {useRoleApi} from "/@/api/system/role";
+import { useRoleApi } from '/@/api/system/role';
 
 // 定义接口来定义对象的类型
 interface MenuDataTree {
-	id: number;
-	label: string;
-	children?: MenuDataTree[];
+    id: number;
+    label: string;
+    children?: MenuDataTree[];
 }
 interface RoleState {
-	title:string,
-	buttonName:string,
-	isShowRoleDialog: boolean;
-	roleForm: {
-		roleName: string;
+    title: string;
+    buttonName: string;
+    isShowRoleDialog: boolean;
+    roleForm: {
+        roleName: string;
         roleCode: string;
         roleInfo: string;
-	};
-	menuData: Array<MenuDataTree>;
-	menuProps: {
-		children: string;
-		label: string;
-	};
+    };
+    menuData: Array<MenuDataTree>;
+    menuProps: {
+        children: string;
+        label: string;
+    };
 }
 
 export default defineComponent({
-	name: 'systemAddRole',
-	setup(prop,context) {
-		const state = reactive<RoleState>({
-			isShowRoleDialog: false,
-			title:'',
-			buttonName:'',
-			roleForm: {
+    name: 'systemAddRole',
+    setup(prop, context) {
+        const state = reactive<RoleState>({
+            isShowRoleDialog: false,
+            title: '',
+            buttonName: '',
+            roleForm: {
                 roleName: '', // 角色名称
                 roleCode: '', // 角色标识
-                roleInfo: '', // 排序
-			},
-			menuData: [],
-			menuProps: {
-				children: 'children',
-				label: 'label',
-			},
-		});
-		// 打开弹窗
-		const openDialog = (type: string, value: any) => {
-			state.isShowRoleDialog = true;
-			if(type === '新增'){
-				state.title = '新增角色'
-				state.buttonName = '新增'
-				state.roleForm = {
-                    roleName:'',
-                    roleCode:'',
-                    roleInfo:'',
-				}
-			}else{
-				state.title = '修改角色'
-				state.buttonName = '修改'
-				state.roleForm = JSON.parse(JSON.stringify(value))
-			}
-		};
-		// 新增
-		const onSubmit = async () => {
-			if(state.title === '新增角色'){
-				let res = await useRoleApi().addRole(state.roleForm)
-				if(res.data.code === '200'){
-					ElMessage({
-						type:'success',
-						message:'角色新增成功',
-						duration:2000
-					})
-					state.isShowRoleDialog = false
-					context.emit('refreshRoleList')
-				}else{
-					ElMessage({
-						type:'warning',
-						message:res.data.msg
-					})
-				}
-			}else{
-				let res = await useRoleApi().modRole(state.roleForm)
-				if(res.data.code === '200'){
-					ElMessage({
-						type:'success',
-						message:'角色修改成功',
-						duration:2000
-					})
-					state.isShowRoleDialog = false
-					context.emit('refreshRoleList')
-				}else{
-					ElMessage({
-						type:'warning',
-						message:res.data.msg
-					})
-				}
-			}
-		};
-		// 获取菜单结构数据
-		return {
-			onSubmit,
-			openDialog,
-			...toRefs(state),
-		};
-	},
+                roleInfo: '' // 排序
+            },
+            menuData: [],
+            menuProps: {
+                children: 'children',
+                label: 'label'
+            }
+        });
+        // 打开弹窗
+        const openDialog = (type: string, value: any) => {
+            state.isShowRoleDialog = true;
+            if (type === '新增') {
+                state.title = '新增角色';
+                state.buttonName = '新增';
+                state.roleForm = {
+                    roleName: '',
+                    roleCode: '',
+                    roleInfo: ''
+                };
+            } else {
+                state.title = '修改角色';
+                state.buttonName = '修改';
+                state.roleForm = JSON.parse(JSON.stringify(value));
+            }
+        };
+        // 新增
+        const onSubmit = async () => {
+            if (state.title === '新增角色') {
+                let res = await useRoleApi().addRole(state.roleForm);
+                if (res.data.code === '200') {
+                    ElMessage({
+                        type: 'success',
+                        message: '角色新增成功',
+                        duration: 2000
+                    });
+                    state.isShowRoleDialog = false;
+                    context.emit('refreshRoleList');
+                } else {
+                    ElMessage({
+                        type: 'warning',
+                        message: res.data.msg
+                    });
+                }
+            } else {
+                let res = await useRoleApi().modRole(state.roleForm);
+                if (res.data.code === '200') {
+                    ElMessage({
+                        type: 'success',
+                        message: '角色修改成功',
+                        duration: 2000
+                    });
+                    state.isShowRoleDialog = false;
+                    context.emit('refreshRoleList');
+                } else {
+                    ElMessage({
+                        type: 'warning',
+                        message: res.data.msg
+                    });
+                }
+            }
+        };
+        // 获取菜单结构数据
+        return {
+            onSubmit,
+            openDialog,
+            ...toRefs(state)
+        };
+    }
 });
 </script>
 
 <style scoped lang="scss">
 .system-add-role-container {
-	.menu-data-tree {
-		width: 100%;
-		border: 1px solid var(--el-border-color);
-		border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
-		padding: 5px;
-	}
+    .menu-data-tree {
+        width: 100%;
+        border: 1px solid var(--el-border-color);
+        border-radius: var(--el-input-border-radius, var(--el-border-radius-base));
+        padding: 5px;
+    }
 }
 </style>
diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue
index 6624a39..e60a5a7 100644
--- a/src/views/system/role/index.vue
+++ b/src/views/system/role/index.vue
@@ -40,9 +40,7 @@
 import { ElMessageBox, ElMessage } from 'element-plus';
 import roleDialog from '/@/views/system/role/component/roleDialog.vue';
 import {useRoleApi} from "/@/api/system/role";
-import {useMenuApi} from "/@/api/system/menu";
-import {Session} from "/@/utils/storage";
-import {initBackEndControlRoutes} from "/@/router/backEnd";
+
 
 // 定义接口来定义对象的类型
 interface TableData {
diff --git a/src/views/system/user/component/userDialog.vue b/src/views/system/user/component/userDialog.vue
index 0faf127..3851ccc 100644
--- a/src/views/system/user/component/userDialog.vue
+++ b/src/views/system/user/component/userDialog.vue
@@ -1,221 +1,213 @@
 <template>
-	<div class="system-add-user-container">
-		<el-dialog :title="title" v-model="isShowUserDialog" width="769px">
-			<el-form :model="userForm" size="default" label-width="90px">
-				<el-row :gutter="35">
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-						<el-form-item label="账户名称">
-							<el-input v-model="userForm.username" placeholder="请输入账户名称" clearable></el-input>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-						<el-form-item label="用户昵称">
-							<el-input v-model="userForm.realName" placeholder="请输入用户昵称" clearable></el-input>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-						<el-form-item label="关联角色">
-							<el-select v-model="userForm.roleId" placeholder="请选择" clearable class="w100">
-								<el-option
-									v-for="item in roleData"
-									:key="item.id"
-									:label="item.name"
-									:value="item.id"
-								>
-								</el-option>
-							</el-select>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-						<el-form-item label="部门">
-							<el-cascader
-								:options="departmentData"
-								:props="{ emitPath: false, checkStrictly: true, value: 'id', label: 'name' }"
-								placeholder="请选择部门"
-								clearable
-								class="w100"
-								v-model="userForm.depId"
-							>
-							</el-cascader>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-						<el-form-item label="手机号">
-							<el-input v-model="userForm.phone" placeholder="请输入手机号" clearable></el-input>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-						<el-form-item label="邮箱">
-							<el-input v-model="userForm.email" placeholder="请输入" clearable></el-input>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-						<el-form-item label="性别">
-							<el-select v-model="userForm.sex" placeholder="请选择" clearable class="w100">
-								<el-option
-								v-for="item in sexList"
-								:key="item.id"
-								:value="item.id"
-								:label="item.name"
-								>
-								</el-option>
-							</el-select>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-						<el-form-item label="账户密码">
-							<el-input v-model="userForm.password" placeholder="请输入" type="password" clearable></el-input>
-						</el-form-item>
-					</el-col>
-					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
-						<el-form-item label="账户过期">
-							<el-date-picker v-model="userForm.expireTime" type="date" placeholder="请选择" class="w100"> </el-date-picker>
-						</el-form-item>
-					</el-col>
-<!--					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">-->
-<!--						<el-form-item label="用户状态">-->
-<!--							<el-switch v-model="userForm.status" inline-prompt active-value = 1 inactive-value= 0 active-text="启" inactive-text="禁"></el-switch>-->
-<!--						</el-form-item>-->
-<!--					</el-col>-->
-				</el-row>
-			</el-form>
-			<template #footer>
-				<span class="dialog-footer">
-					<el-button @click="isShowUserDialog = !isShowUserDialog" size="default">取 消</el-button>
-					<el-button type="primary" @click="onSubmit" size="default">新 增</el-button>
-				</span>
-			</template>
-		</el-dialog>
-	</div>
+    <div class="system-add-user-container">
+        <el-dialog :title="title" v-model="isShowUserDialog" width="769px">
+            <el-form :model="userForm" size="default" label-width="90px">
+                <el-row :gutter="35">
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="账户名称">
+                            <el-input v-model="userForm.username" placeholder="请输入账户名称" clearable></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="用户昵称">
+                            <el-input v-model="userForm.realName" placeholder="请输入用户昵称" clearable></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="关联角色">
+                            <el-select v-model="userForm.roleId" placeholder="请选择" clearable class="w100">
+                                <el-option v-for="item in roleData" :key="item.roleId" :label="item.roleName" :value="item.roleId"> </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="部门">
+                            <el-cascader
+                                :options="departmentData"
+                                :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }"
+                                placeholder="请选择部门"
+                                clearable
+                                class="w100"
+                                v-model="userForm.depId"
+                            >
+                            </el-cascader>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="手机号">
+                            <el-input v-model="userForm.phone" placeholder="请输入手机号" clearable></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="身份证">
+                            <el-input v-model="userForm.identify" placeholder="请输入身份证" clearable></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="邮箱">
+                            <el-input v-model="userForm.email" placeholder="请输入" clearable></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="性别">
+                            <el-select v-model="userForm.gender" placeholder="请选择" clearable class="w100">
+                                <el-option v-for="item in sexList" :key="item.id" :value="item.id" :label="item.name"> </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="账户密码">
+                            <el-input v-model="userForm.password" placeholder="请输入" type="password" clearable></el-input>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="账户过期">
+                            <el-date-picker v-model="userForm.expireTime" type="date" placeholder="请选择" class="w100"> </el-date-picker>
+                        </el-form-item>
+                    </el-col>
+                    <!--					<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">-->
+                    <!--						<el-form-item label="用户状态">-->
+                    <!--							<el-switch v-model="userForm.status" inline-prompt active-value = 1 inactive-value= 0 active-text="启" inactive-text="禁"></el-switch>-->
+                    <!--						</el-form-item>-->
+                    <!--					</el-col>-->
+                </el-row>
+            </el-form>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="isShowUserDialog = !isShowUserDialog" size="default">取 消</el-button>
+                    <el-button type="primary" v-throttle @click="onSubmit" size="default">新 增</el-button>
+                </span>
+            </template>
+        </el-dialog>
+    </div>
 </template>
 
 <script lang="ts">
 import { reactive, toRefs, onMounted, defineComponent } from 'vue';
 import { ElMessageBox, ElMessage } from 'element-plus';
-import {userApi} from "/@/api/system/user";
+import { userApi } from '/@/api/system/user';
 
 // 定义接口来定义对象的类型
-interface DeptData {
-}
-interface roleData{
-
-}
-interface sexData{
-
-}
+interface DeptData {}
+interface roleData {}
+interface sexData {}
 interface UserState {
-	title:string,
-	isShowUserDialog: boolean;
-	userForm: {
-		username: string;
-		realName: string;
-		roleId: number | null;
-		depId: number | null;
-		phone: string;
-		email: string;
-		sex: number | null;
-		password: string;
-		expireTime: string;
-		status: number;
-	};
-	departmentData: Array<DeptData>;
-	roleData: Array<roleData>;
-	sexList:Array<sexData>,
+    title: string;
+    isShowUserDialog: boolean;
+    userForm: {
+        username: string;
+        realName: string;
+        roleId: number | null;
+        depId: number | null;
+        phone: string;
+        email: string;
+        gender: number | null;
+        password: string;
+        expireTime: string;
+        status: number;
+        identify: string;
+    };
+    departmentData: Array<DeptData>;
+    roleData: Array<roleData>;
+    sexList: Array<sexData>;
 }
 
 export default defineComponent({
-	name: 'user',
-	setup(props,context) {
-		const state = reactive<UserState>({
-			title:'',
-			isShowUserDialog: false,
-			userForm: {
-				username: '', // 账户名称
-				realName: '', // 用户昵称
-				roleId: null, // 关联角色
-				depId:null, // 部门
-				phone: '', // 手机号
-				email: '', // 邮箱
-				sex: null, // 性别
-				password: '', // 账户密码
-				expireTime: '', // 账户过期
-				status: 1, // 用户状态
-			},
-			departmentData: [], // 部门数据
-			roleData:[],//角色数据
-			sexList:[{id:1,name:'男'},{id:0,name:'女'}]
-		});
-		// 打开弹窗
-		const openDialog = (type: string,value: any,departmentList:[], roleList: []) => {
-			state.isShowUserDialog = true;
-			state.departmentData = departmentList;
-			state.roleData = roleList;
-			if(type === '新增'){
-				state.title = '新增用户'
-				state.userForm = {
-					username: '',
-					realName: '',
-					roleId: null,
-					depId: null,
-					phone: '',
-					email: '',
-					sex: null,
-					password: '',
-					expireTime: '',
-					status: 1,
-				}
-			}else{
-				state.title = '修改用户'
-				state.userForm = JSON.parse(JSON.stringify(value))
-			}
-		};
+    name: 'user',
+    setup(props, context) {
+        const state = reactive<UserState>({
+            title: '',
+            isShowUserDialog: false,
+            userForm: {
+                username: '', // 账户名称
+                realName: '', // 用户昵称
+                roleId: null, // 关联角色
+                depId: null, // 部门
+                phone: '', // 手机号
+                email: '', // 邮箱
+                identify: '',
+                gender: null, // 性别
+                password: '', // 账户密码
+                expireTime: '', // 账户过期
+                status: 1 // 用户状态
+            },
+            departmentData: [], // 部门数据
+            roleData: [], //角色数据
+            sexList: [
+                { id: 1, name: '男' },
+                { id: 0, name: '女' }
+            ]
+        });
+        // 打开弹窗
+        const openDialog = (type: string, value: any, departmentList: [], roleList: []) => {
+            state.isShowUserDialog = true;
+            state.departmentData = departmentList;
+            state.roleData = roleList;
+            if (type === '新增') {
+                state.title = '新增用户';
+                state.userForm = {
+                    username: '',
+                    realName: '',
+                    roleId: null,
+                    depId: null,
+                    phone: '',
+                    email: '',
+                    identify: '',
+                    gender: null,
+                    password: '',
+                    expireTime: '',
+                    status: 1
+                };
+            } else {
+                state.title = '修改用户';
+                state.userForm = JSON.parse(JSON.stringify(value));
+            }
+        };
 
+        // 新增修改
+        const onSubmit = async () => {
+            if (state.title === '新增用户') {
+                let res = await userApi().addUser(state.userForm);
+                if (res.data.code === '200') {
+                    ElMessage({
+                        type: 'success',
+                        message: '用户新增成功',
+                        duration: 2000
+                    });
+                    state.isShowUserDialog = false;
+                    context.emit('getUserList');
+                } else {
+                    ElMessage({
+                        type: 'warning',
+                        message: res.data.msg
+                    });
+                }
+            } else {
+                let res = await userApi().modUser(state.userForm);
+                if (res.data.code === '200') {
+                    ElMessage({
+                        type: 'success',
+                        message: '用户修改成功',
+                        duration: 2000
+                    });
+                    state.isShowUserDialog = false;
+                    context.emit('getUserList');
+                } else {
+                    ElMessage({
+                        type: 'warning',
+                        message: res.data.msg
+                    });
+                }
+            }
+        };
 
-		// 新增修改
-		const onSubmit = async () => {
-			if(state.title === '新增用户'){
-				let res = await userApi().addUser(state.userForm)
-				if(res.data.code === '200'){
-					ElMessage({
-						type:'success',
-						message:'用户新增成功',
-						duration:2000
-					})
-					state.isShowUserDialog = false;
-					context.emit('getUserList')
-				}else{
-					ElMessage({
-						type:'warning',
-						message:res.data.msg
-					})
-				}
-			}else{
-				let res = await userApi().modUser(state.userForm)
-				if(res.data.code === '200'){
-					ElMessage({
-						type:'success',
-						message:'用户修改成功',
-						duration:2000
-					})
-					state.isShowUserDialog = false;
-					context.emit('getUserList')
-				}else{
-					ElMessage({
-						type:'warning',
-						message:res.data.msg
-					})
-				}
-			}
-		};
-
-		// 页面加载时
-		onMounted(() => {
-		});
-		return {
-			openDialog,
-			onSubmit,
-			...toRefs(state),
-		};
-	},
+        // 页面加载时
+        onMounted(() => {});
+        return {
+            openDialog,
+            onSubmit,
+            ...toRefs(state)
+        };
+    }
 });
 </script>
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index f15ec18..4e5946d 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -1,206 +1,218 @@
 <template>
-	<div class="system-user-container">
-		<el-card shadow="hover">
-			<div class="system-user-search mb15">
-				<el-input size="default" placeholder="请输入用户名称" style="max-width: 180px"> </el-input>
-				<el-button size="default" type="primary" class="ml10">
-					<el-icon>
-						<ele-Search />
-					</el-icon>
-					查询
-				</el-button>
-				<el-button size="default" type="success" class="ml10" @click="onOpenUserDialog('新增','')">
-					<el-icon>
-						<ele-FolderAdd />
-					</el-icon>
-					新增用户
-				</el-button>
-			</div>
-			<el-table :data="userTableData.data" style="width: 100%">
-				<el-table-column type="index" label="序号" width="60" />
-				<el-table-column prop="username" label="账户名称" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="realName" label="用户昵称" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="sex" label="性别" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="role.name" label="关联角色" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="department.name" label="部门" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="phone" label="手机号" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="email" label="邮箱" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="status" label="用户状态" show-overflow-tooltip>
-					<template #default="scope">
-						<el-tag type="success" v-if="scope.row.status">启用</el-tag>
-						<el-tag type="info" v-else>禁用</el-tag>
-					</template>
-				</el-table-column>
-				<el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column>
-				<el-table-column label="操作" width="100">
-					<template #default="scope">
-						<el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onOpenUserDialog('修改',scope.row)">修改</el-button>
-						<el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onRowDel(scope.row)">删除</el-button>
-					</template>
-				</el-table-column>
-			</el-table>
-			<el-pagination
-				@size-change="onHandleSizeChange"
-				@current-change="onHandleCurrentChange"
-				class="mt15"
-				:pager-count="5"
-				:page-sizes="[10, 20, 30]"
-				v-model:current-page="userTableData.listQuery.pageIndex"
-				background
-				v-model:page-size="userTableData.listQuery.pageSize"
-				layout="total, sizes, prev, pager, next, jumper"
-				:total="userTableData.total"
-			>
-			</el-pagination>
-		</el-card>
-		<userDialog ref="userRef" @getUserList = "initUserTableData"/>
-	</div>
+    <div class="system-user-container">
+        <el-card shadow="hover">
+            <div class="system-user-search mb15">
+                <el-input size="default" placeholder="请输入用户名称" style="max-width: 180px"> </el-input>
+                <el-button size="default" type="primary" class="ml10">
+                    <el-icon>
+                        <ele-Search />
+                    </el-icon>
+                    查询
+                </el-button>
+                <el-button size="default" type="success" class="ml10" @click="onOpenUserDialog('新增', '')">
+                    <el-icon>
+                        <ele-FolderAdd />
+                    </el-icon>
+                    新增用户
+                </el-button>
+            </div>
+            <el-table :data="userTableData.data" style="width: 100%">
+                <el-table-column type="index" label="序号" width="60" />
+                <el-table-column prop="username" label="账户名称" show-overflow-tooltip></el-table-column>
+                <el-table-column prop="realName" label="用户昵称" show-overflow-tooltip></el-table-column>
+                <el-table-column prop="sex" label="性别" show-overflow-tooltip></el-table-column>
+                <el-table-column prop="role.name" label="关联角色" show-overflow-tooltip></el-table-column>
+                <el-table-column prop="department.name" label="部门" show-overflow-tooltip></el-table-column>
+                <el-table-column prop="phone" label="手机号" show-overflow-tooltip></el-table-column>
+                <el-table-column prop="email" label="邮箱" show-overflow-tooltip></el-table-column>
+                <el-table-column prop="status" label="用户状态" show-overflow-tooltip>
+                    <template #default="scope">
+                        <el-tag type="success" v-if="scope.row.status">启用</el-tag>
+                        <el-tag type="info" v-else>禁用</el-tag>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="gmtCreate" label="创建时间" show-overflow-tooltip></el-table-column>
+                <el-table-column label="操作" width="100">
+                    <template #default="scope">
+                        <el-button
+                            :disabled="scope.row.userName === 'admin'"
+                            size="small"
+                            text
+                            type="primary"
+                            @click="onOpenUserDialog('修改', scope.row)"
+                            >修改</el-button
+                        >
+                        <el-button :disabled="scope.row.userName === 'admin'" size="small" text type="primary" @click="onRowDel(scope.row)">
+                            删除
+                        </el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <br />
+            <el-pagination
+                @size-change="onHandleSizeChange"
+                @current-change="onHandleCurrentChange"
+                class="page-position"
+                :pager-count="5"
+                :page-sizes="[10, 20, 30]"
+                v-model:current-page="userTableData.listQuery.pageIndex"
+                background
+                v-model:page-size="userTableData.listQuery.pageSize"
+                layout="total, sizes, prev, pager, next, jumper"
+                :total="userTableData.total"
+            >
+            </el-pagination>
+            <br />
+            <br />
+        </el-card>
+        <userDialog ref="userRef" @getUserList="initUserTableData" />
+    </div>
 </template>
 
 <script lang="ts">
 import { toRefs, reactive, onMounted, ref, defineComponent } from 'vue';
 import { ElMessageBox, ElMessage } from 'element-plus';
 import userDialog from '/@/views/system/user/component/userDialog.vue';
-import {userApi} from "/@/api/system/user";
-import {departmentApi} from "/@/api/system/department";
-import {useRoleApi} from "/@/api/system/role";
+import { userApi } from '/@/api/system/user';
+import { departmentApi } from '/@/api/system/department';
+import { useRoleApi } from '/@/api/system/role';
 
 // 定义接口来定义对象的类型
 interface TableDataRow {
-	userName: string;
-	userNickname: string;
-	roleSign: string;
-	department: string[];
-	phone: string;
-	email: string;
-	sex: string;
-	password: string;
-	overdueTime: Date;
-	status: boolean;
-	describe: string;
-	createTime: string;
+    userName: string;
+    userNickname: string;
+    roleSign: string;
+    department: string[];
+    phone: string;
+    email: string;
+    sex: string;
+    password: string;
+    overdueTime: Date;
+    status: boolean;
+    describe: string;
+    createTime: string;
 }
-interface DepartmentDataRow{
-
-}
+interface DepartmentDataRow {}
 interface TableDataState {
-	userTableData: {
-		data: Array<TableDataRow>;
-		total: number;
-		loading: boolean;
-		listQuery: {
-			searchParams:{
-				username:string,
-				realName:string,
-			},
-			pageIndex: number;
-			pageSize: number;
-		};
-	};
-	departmentList:[];
-	roleList:[];
+    userTableData: {
+        data: Array<TableDataRow>;
+        total: number;
+        loading: boolean;
+        listQuery: {
+            searchParams: {
+                username: string;
+                realName: string;
+            };
+            pageIndex: number;
+            pageSize: number;
+        };
+    };
+    departmentList: [];
+    roleList: [];
 }
 
 export default defineComponent({
-	name: 'systemUser',
-	components: { userDialog },
-	setup() {
-		const userRef = ref();
-		const state = reactive<TableDataState>({
-			userTableData: {
-				data: [],
-				total: 0,
-				loading: false,
-				listQuery: {
-					searchParams:{
-						username:'',
-						realName:'',
-					},
-					pageIndex: 1,
-					pageSize: 10,
-				},
-			},
-			departmentList:[],
-			roleList:[],
-		});
-		// 初始化表格数据
-		const initUserTableData = async () => {
-			let res = await userApi().getUserList(state.userTableData.listQuery)
-			if(res.data.code === '200'){
-				state.userTableData.data = res.data.data;
-				state.userTableData.total = res.data.data.length;
-			}else{
-				ElMessage({
-					type:'warning',
-					message:res.data.msg
-				})
-			}
-		};
+    name: 'systemUser',
+    components: { userDialog },
+    setup() {
+        const userRef = ref();
+        const state = reactive<TableDataState>({
+            userTableData: {
+                data: [],
+                total: 0,
+                loading: false,
+                listQuery: {
+                    searchParams: {
+                        username: '',
+                        realName: ''
+                    },
+                    pageIndex: 1,
+                    pageSize: 10
+                }
+            },
+            departmentList: [],
+            roleList: []
+        });
+        // 初始化表格数据
+        const initUserTableData = async () => {
+            let res = await userApi().getUserList(state.userTableData.listQuery);
+            if (res.data.code === '200') {
+                state.userTableData.data = res.data.data;
+                state.userTableData.total = res.data.total;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		const getDepartmentData = async () => {
-			let res = await departmentApi().getDepartmentList()
-			if(res.data.code === '200'){
-				state.departmentList = res.data.data
-			}else{
-				ElMessage({
-					type:'warning',
-					message:res.data.msg
-				})
-			}
-		}
+        const getDepartmentData = async () => {
+            let res = await departmentApi().getDepartmentList();
+            if (res.data.code === '200') {
+                state.departmentList = res.data.data;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		const getRoleData = async () => {
-			let res = await useRoleApi().getRoleList()
-			if(res.data.code === '200'){
-				state.roleList = res.data.data
-			}else{
-				ElMessage({
-					type:'warning',
-					message:res.data.msg
-				})
-			}
-		}
+        const getRoleData = async () => {
+            let res = await useRoleApi().getRoleList();
+            if (res.data.code === '200') {
+                state.roleList = res.data.data;
+            } else {
+                ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                });
+            }
+        };
 
-		// 打开新增修改用户弹窗
-		const onOpenUserDialog = (type: string,value: any) => {
-			userRef.value.openDialog(type, value, state.departmentList,state.roleList);
-		};
+        // 打开新增修改用户弹窗
+        const onOpenUserDialog = (type: string, value: any) => {
+            userRef.value.openDialog(type, value, state.departmentList, state.roleList);
+        };
 
-		// 删除用户
-		const onRowDel = (row: TableDataRow) => {
-			ElMessageBox.confirm(`此操作将永久删除账户名称:“${row.userName}”,是否继续?`, '提示', {
-				confirmButtonText: '确认',
-				cancelButtonText: '取消',
-				type: 'warning',
-			}).then(() => {
-					ElMessage.success('删除成功');
-			}).catch(() => {});
-		};
-		// 分页改变
-		const onHandleSizeChange = (val: number) => {
-			state.userTableData.listQuery.pageSize = val;
-			initUserTableData()
-		};
-		// 分页改变
-		const onHandleCurrentChange = (val: number) => {
-			state.userTableData.listQuery.pageSize = val;
-			initUserTableData()
-		};
-		// 页面加载时
-		onMounted(() => {
-			initUserTableData();
-			getDepartmentData();
-			getRoleData();
-		});
-		return {
-			userRef,
-			onOpenUserDialog,
-			onRowDel,
-			onHandleSizeChange,
-			initUserTableData,
-			onHandleCurrentChange,
-			...toRefs(state),
-		};
-	},
+        // 删除用户
+        const onRowDel = (row: TableDataRow) => {
+            ElMessageBox.confirm(`此操作将永久删除账户名称:“${row.userName}”,是否继续?`, '提示', {
+                confirmButtonText: '确认',
+                cancelButtonText: '取消',
+                type: 'warning'
+            })
+                .then(() => {
+                    ElMessage.success('删除成功');
+                })
+                .catch(() => {});
+        };
+        // 分页改变
+        const onHandleSizeChange = (val: number) => {
+            state.userTableData.listQuery.pageSize = val;
+            initUserTableData();
+        };
+        // 分页改变
+        const onHandleCurrentChange = (val: number) => {
+            state.userTableData.listQuery.pageIndex = val;
+            initUserTableData();
+        };
+        // 页面加载时
+        onMounted(() => {
+            initUserTableData();
+            getDepartmentData();
+            getRoleData();
+        });
+        return {
+            userRef,
+            onOpenUserDialog,
+            onRowDel,
+            onHandleSizeChange,
+            initUserTableData,
+            onHandleCurrentChange,
+            ...toRefs(state)
+        };
+    }
 });
 </script>

--
Gitblit v1.9.2