From 41b20b89eb03e1a7e52e7e31ce3fd3f240f67c46 Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: 星期一, 04 七月 2022 11:17:21 +0800
Subject: [PATCH] '菜单'

---
 src/views/system/user/index.vue |  153 ++++++++++++++++++++++++++++++--------------------
 1 files changed, 91 insertions(+), 62 deletions(-)

diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index a120c59..c4123dd 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -9,19 +9,20 @@
 					</el-icon>
 					查询
 				</el-button>
-				<el-button size="default" type="success" class="ml10" @click="onOpenAddUser">
+				<el-button size="default" type="success" class="ml10" @click="onOpenUserDialog('新增','')">
 					<el-icon>
 						<ele-FolderAdd />
 					</el-icon>
 					新增用户
 				</el-button>
 			</div>
-			<el-table :data="tableData.data" style="width: 100%">
+			<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="userNickname" label="用户昵称" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="roleSign" label="关联角色" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="department" label="部门" show-overflow-tooltip></el-table-column>
+				<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>
@@ -30,11 +31,10 @@
 						<el-tag type="info" v-else>禁用</el-tag>
 					</template>
 				</el-table-column>
-				<el-table-column prop="describe" label="用户描述" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="createTime" label="创建时间" show-overflow-tooltip></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="onOpenEditUser(scope.row)">修改</el-button>
+						<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>
@@ -45,24 +45,25 @@
 				class="mt15"
 				:pager-count="5"
 				:page-sizes="[10, 20, 30]"
-				v-model:current-page="tableData.param.pageNum"
+				v-model:current-page="userTableData.listQuery.pageIndex"
 				background
-				v-model:page-size="tableData.param.pageSize"
+				v-model:page-size="userTableData.listQuery.pageSize"
 				layout="total, sizes, prev, pager, next, jumper"
-				:total="tableData.total"
+				:total="userTableData.total"
 			>
 			</el-pagination>
 		</el-card>
-		<AddUer ref="addUserRef" />
-		<EditUser ref="editUserRef" />
+		<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 AddUer from '/@/views/system/user/component/addUser.vue';
-import EditUser from '/@/views/system/user/component/editUser.vue';
+import userDialog from '/@/views/system/user/component/userDialog.vue';
+import {userApi} from "/@/api/user";
+import {departmentApi} from "/@/api/department";
+import {useRoleApi} from "/@/api/role";
 
 // 定义接口来定义对象的类型
 interface TableDataRow {
@@ -79,96 +80,124 @@
 	describe: string;
 	createTime: string;
 }
+interface DepartmentDataRow{
+
+}
 interface TableDataState {
-	tableData: {
+	userTableData: {
 		data: Array<TableDataRow>;
 		total: number;
 		loading: boolean;
-		param: {
-			pageNum: number;
+		listQuery: {
+			searchParams:{
+				username:string,
+				realName:string,
+			},
+			pageIndex: number;
 			pageSize: number;
 		};
 	};
+	departmentList:[];
+	roleList:[];
 }
 
 export default defineComponent({
 	name: 'systemUser',
-	components: { AddUer, EditUser },
+	components: { userDialog },
 	setup() {
-		const addUserRef = ref();
-		const editUserRef = ref();
+		const userRef = ref();
 		const state = reactive<TableDataState>({
-			tableData: {
+			userTableData: {
 				data: [],
 				total: 0,
 				loading: false,
-				param: {
-					pageNum: 1,
+				listQuery: {
+					searchParams:{
+						username:'',
+						realName:'',
+					},
+					pageIndex: 1,
 					pageSize: 10,
 				},
 			},
+			departmentList:[],
+			roleList:[],
 		});
 		// 初始化表格数据
-		const initTableData = () => {
-			const data: Array<TableDataRow> = [];
-			for (let i = 0; i < 2; i++) {
-				data.push({
-					userName: i === 0 ? 'admin' : 'test',
-					userNickname: i === 0 ? '我是管理员' : '我是普通用户',
-					roleSign: i === 0 ? 'admin' : 'common',
-					department: i === 0 ? ['vueNextAdmin', 'IT外包服务'] : ['vueNextAdmin', '资本控股'],
-					phone: '12345678910',
-					email: 'vueNextAdmin@123.com',
-					sex: '女',
-					password: '123456',
-					overdueTime: new Date(),
-					status: true,
-					describe: i === 0 ? '不可删除' : '测试用户',
-					createTime: new Date().toLocaleString(),
-				});
+		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
+				})
 			}
-			state.tableData.data = data;
-			state.tableData.total = state.tableData.data.length;
 		};
-		// 打开新增用户弹窗
-		const onOpenAddUser = () => {
-			addUserRef.value.openDialog();
+
+		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 onOpenUserDialog = (type: string,value: any) => {
+			userRef.value.openDialog(type, value, state.departmentList,state.roleList);
 		};
-		// 打开修改用户弹窗
-		const onOpenEditUser = (row: TableDataRow) => {
-			editUserRef.value.openDialog(row);
-		};
+
 		// 删除用户
 		const onRowDel = (row: TableDataRow) => {
 			ElMessageBox.confirm(`此操作将永久删除账户名称:“${row.userName}”,是否继续?`, '提示', {
 				confirmButtonText: '确认',
 				cancelButtonText: '取消',
 				type: 'warning',
-			})
-				.then(() => {
+			}).then(() => {
 					ElMessage.success('删除成功');
-				})
-				.catch(() => {});
+			}).catch(() => {});
 		};
 		// 分页改变
 		const onHandleSizeChange = (val: number) => {
-			state.tableData.param.pageSize = val;
+			state.userTableData.listQuery.pageSize = val;
+			initUserTableData()
 		};
 		// 分页改变
 		const onHandleCurrentChange = (val: number) => {
-			state.tableData.param.pageNum = val;
+			state.userTableData.listQuery.pageSize = val;
+			initUserTableData()
 		};
 		// 页面加载时
 		onMounted(() => {
-			initTableData();
+			initUserTableData();
+			getDepartmentData();
+			getRoleData();
 		});
 		return {
-			addUserRef,
-			editUserRef,
-			onOpenAddUser,
-			onOpenEditUser,
+			userRef,
+			onOpenUserDialog,
 			onRowDel,
 			onHandleSizeChange,
+			initUserTableData,
 			onHandleCurrentChange,
 			...toRefs(state),
 		};

--
Gitblit v1.9.2