From 43fca2cb16964496caafdbc34e969d2a7cde7cc0 Mon Sep 17 00:00:00 2001
From: 马宇豪 <978517621@qq.com>
Date: 星期四, 30 三月 2023 15:32:56 +0800
Subject: [PATCH] 用户接口

---
 src/api/systemManage/user/index.ts                        |   17 +
 src/views/system/user/index.vue                           |  119 +++++++++++---
 src/views/system/department/component/deptDialog.vue      |   76 +++++---
 src/utils/toolsValidate.ts                                |   52 ++++++
 src/views/experiment/project/components/projectDialog.vue |    1 
 src/views/system/user/component/userDialog.vue            |  168 ++++++++++----------
 src/views/experiment/project/index.vue                    |    1 
 src/main.ts                                               |    2 
 8 files changed, 281 insertions(+), 155 deletions(-)

diff --git a/src/api/systemManage/user/index.ts b/src/api/systemManage/user/index.ts
index ff54d2b..e36c708 100644
--- a/src/api/systemManage/user/index.ts
+++ b/src/api/systemManage/user/index.ts
@@ -21,17 +21,16 @@
         // v1
         modUser: (data: object) => {
             return request({
-                url: import.meta.env.VITE_API_URL + `/account/mod`,
+                url: import.meta.env.VITE_API_URL + `/account/user/update/info`,
                 method: 'post',
                 data: data
             });
         },
         // v1
-        deleteUser: (data: object) => {
+        deleteUser: (userId: number | null) => {
             return request({
-                url: import.meta.env.VITE_API_URL + `/account/user/deleteUser`,
-                method: 'post',
-                data: data
+                url: import.meta.env.VITE_API_URL + `/account/user/deleteUser?userId=${userId == null ? null : userId}`,
+                method: 'get'
             });
         },
         // v1
@@ -41,6 +40,14 @@
                 method: 'get'
             });
         },
+
+        getUserLByRealName: (name: string) => {
+            return request({
+                url: import.meta.env.VITE_API_URL + `/account/user/find/list/realName?name=${name}`,
+                method: 'get'
+            });
+        },
+
         getAllUser: () => {
             return request({
                 url: import.meta.env.VITE_API_URL + `/account/list`,
diff --git a/src/main.ts b/src/main.ts
index a45931b..7cfa70a 100644
--- a/src/main.ts
+++ b/src/main.ts
@@ -14,7 +14,7 @@
 import VueGridLayout from 'vue-grid-layout';
 import zhCn from 'element-plus/lib/locale/lang/zh-cn';
 import DataVVue3 from '@kjgl77/datav-vue3'
-
+// import 'lib-flexible/flexible'
 const app = createApp(App);
 for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
     app.component(key, component);
diff --git a/src/utils/toolsValidate.ts b/src/utils/toolsValidate.ts
index 434466e..46a6162 100644
--- a/src/utils/toolsValidate.ts
+++ b/src/utils/toolsValidate.ts
@@ -366,3 +366,55 @@
     // true:车牌号正确
     else return true;
 }
+
+export function checkChineseName (name:string) {
+    let reg = /^[\u4e00-\u9fa5]{2,15}$/;
+    // 保留点后,用来校验的姓名,也是最终校验通过后返回的姓名
+    let payerName = name.replaceAll(" ", "")
+        .replaceAll(" ", "")
+        .replaceAll("•", "·")
+        .replaceAll(".", "·");
+    // 去除所有点后,用来校验的姓名
+    let checkName = name.replaceAll(" ", "")
+        .replaceAll(" ", "")
+        .replaceAll("•", "")
+        .replaceAll(".", "")
+        .replaceAll("·", "");
+    if(checkName.length === 1){
+        // this.$message({
+        //   type:'warning',
+        //   message:'姓名至少包含两位汉字'
+        // })
+        return false;
+    }
+    if (reg.test(checkName)) {
+        if(payerName.substring(0,1) === '·'){
+            // this.$message({
+            //   type:'warning',
+            //   message:'姓名第一位不能为“·”'
+            // })
+            return false;
+        }
+        if(payerName.substring(payerName.length - 1) === '·'){
+            // this.$message({
+            //   type:'warning',
+            //   message:'姓名最后不能为“·”'
+            // })
+            return false;
+        }
+        if(payerName.indexOf("··") !== -1){
+            // this.$message({
+            //   type:'warning',
+            //   message:'姓名不能有连续的“·”'
+            // })
+            return false;
+        }
+        return payerName;
+    } else {
+        // this.$message({
+        //   type:'warning',
+        //   message:'姓名中只能包含汉字和“·”'
+        // })
+        return false;
+    }
+}
diff --git a/src/views/experiment/project/components/projectDialog.vue b/src/views/experiment/project/components/projectDialog.vue
index c12ff77..102bdeb 100644
--- a/src/views/experiment/project/components/projectDialog.vue
+++ b/src/views/experiment/project/components/projectDialog.vue
@@ -417,7 +417,6 @@
         pageSize: 10
     });
     if(res.data.code === 100){
-        debugger
         projectDialogState.systemPersonList = JSON.parse(JSON.stringify(res.data.data));
     }else{
         ElMessage({
diff --git a/src/views/experiment/project/index.vue b/src/views/experiment/project/index.vue
index b860688..041467f 100644
--- a/src/views/experiment/project/index.vue
+++ b/src/views/experiment/project/index.vue
@@ -119,7 +119,6 @@
         type: 'warning'
     })
         .then(async () => {
-            debugger
             let res = await projectApi().deleteProjectById({ id: val.id });
             if (res.data.code === 100) {
                 ElMessage({
diff --git a/src/views/system/department/component/deptDialog.vue b/src/views/system/department/component/deptDialog.vue
index 1579bc6..6aa7fe5 100644
--- a/src/views/system/department/component/deptDialog.vue
+++ b/src/views/system/department/component/deptDialog.vue
@@ -1,7 +1,7 @@
 <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-form :model="departmentForm" size="default" ref="depRef" :rules="depFormRules" 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="上级部门">
@@ -9,7 +9,7 @@
                         </el-form-item>
                     </el-col>
                     <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20">
-                        <el-form-item label="部门名称">
+                        <el-form-item label="部门名称" prop="depName">
                             <el-input v-model="departmentForm.depName" class="input-add" placeholder="请输入部门名称" clearable></el-input>
                         </el-form-item>
                     </el-col>
@@ -23,7 +23,7 @@
             <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>
+                    <el-button type="primary" v-throttle @click="onSubmit(depRef)" size="default">确 定</el-button>
                 </span>
             </template>
         </el-dialog>
@@ -32,7 +32,7 @@
 
 <script lang="ts">
 import { ElMessage } from 'element-plus';
-import { reactive, toRefs, onMounted, defineComponent } from 'vue';
+import {reactive, toRefs, onMounted, defineComponent, ref} from 'vue';
 import { departmentApi } from '/@/api/systemManage/department';
 
 // 定义接口来定义对象的类型
@@ -54,6 +54,9 @@
     };
     deptData: Array<TableDataRow>;
     depLevelList: Array<Type>;
+    depFormRules:{
+
+    }
 }
 interface Type{
     id:number;
@@ -79,9 +82,12 @@
                 {id:2,name:'事业部'},
                 {id:3,name:'车间'},
                 {id:4,name:'班组'}
-            ] // 部门数据
+            ], // 部门数据
+            depFormRules:{
+              depName: [{ required: true, message: '请填写部门名称', trigger: 'blur' }],
+            },
         });
-
+        const depRef = ref()
         const findParentById=(tree:Array<any>,id:number|null,depName:string)=>{
           const parent = tree.find(i=>i.id == id)
           if(parent){
@@ -131,39 +137,48 @@
         };
         // 新增
         const onSubmit = async () => {
-            if (state.title === '新增部门') {
+          depRef.value.validate(async (valid:Boolean) => {
+            if(valid){
+              if (state.title === '新增部门') {
                 let res = await departmentApi().addDepartment(state.departmentForm);
                 if (res.data.code === 100) {
-                    ElMessage({
-                        type: 'success',
-                        message: '部门新增成功',
-                        duration: 2000
-                    });
-                    closeDialog();
-                    context.emit('getDepartmentList');
+                  ElMessage({
+                    type: 'success',
+                    message: '部门新增成功',
+                    duration: 2000
+                  });
+                  closeDialog();
+                  context.emit('getDepartmentList');
                 } else {
-                    ElMessage({
-                        type: 'warning',
-                        message: res.data.msg
-                    });
+                  ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                  });
                 }
-            } else {
+              } else {
                 let res = await departmentApi().modDepartment(state.departmentForm);
                 if (res.data.code === 100) {
-                    ElMessage({
-                        type: 'success',
-                        message: '部门修改成功',
-                        duration: 2000
-                    });
-                    closeDialog();
-                    context.emit('getDepartmentList');
+                  ElMessage({
+                    type: 'success',
+                    message: '部门修改成功',
+                    duration: 2000
+                  });
+                  closeDialog();
+                  context.emit('getDepartmentList');
                 } else {
-                    ElMessage({
-                        type: 'warning',
-                        message: res.data.msg
-                    });
+                  ElMessage({
+                    type: 'warning',
+                    message: res.data.msg
+                  });
                 }
+              }
+            }else{
+              ElMessage({
+                type:'warning',
+                message:'请完善基本信息'
+              })
             }
+          })
         };
         // 初始化部门数据
         const initTableData = () => {};
@@ -172,6 +187,7 @@
             initTableData();
         });
         return {
+            depRef,
             findParentById,
             openDialog,
             closeDialog,
diff --git a/src/views/system/user/component/userDialog.vue b/src/views/system/user/component/userDialog.vue
index 0eb4dd7..f3a0d93 100644
--- a/src/views/system/user/component/userDialog.vue
+++ b/src/views/system/user/component/userDialog.vue
@@ -3,67 +3,51 @@
         <el-dialog :title="title" v-model="isShowUserDialog" width="769px">
             <el-form :model="userForm" size="default" ref="userRef" :rules="userFormRules" label-width="90px">
                 <el-row :gutter="35">
-                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" v-if="disabled">
-                        <el-form-item label="用户名">
-                            <el-input v-model.trim="userForm.username" :disabled="disabled" placeholder="" clearable></el-input>
+                    <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
+                        <el-form-item label="用户名" prop="name">
+                            <el-input v-model.trim="userForm.name" 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="真实姓名" prop="realName">
-                            <el-input v-model.trim="userForm.realName" placeholder="请输入真实姓名" clearable></el-input>
+                            <el-input v-model.trim="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" v-if="isAdd">
+                      <el-form-item label="账户密码" prop="pwd">
+                        <el-input v-model.trim="userForm.pwd" placeholder="账户密码" type="password" show-password>
+                        </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="关联角色" prop="roleId">
-                            <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-form-item label="关联角色" prop="roleIds">
+                            <el-select v-model="userForm.roleIds" placeholder="关联角色" clearable class="w100" multiple>
+                                <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="部门" prop="depId">
-                            <el-cascader :options="departmentData" :props="{ emitPath: false, checkStrictly: true, value: 'depId', label: 'depName' }" placeholder="请选择部门" clearable class="w100" v-model="userForm.depId"> </el-cascader>
+                            <el-cascader :options="departmentData" :props="{ emitPath: false, checkStrictly: true, value: 'id', 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="手机号" prop="phone">
-                            <el-input v-model.trim="userForm.phone" placeholder="请输入手机号" clearable></el-input>
+                            <el-input v-model.trim="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="身份证" prop="identify">
-                            <el-input v-model.trim="userForm.identify" placeholder="请输入身份证" clearable></el-input>
-                        </el-form-item>
+                      <el-form-item label="证件类型" prop="idType">
+                        <el-select v-model="userForm.idType" placeholder="证件类型" clearable class="w100">
+                          <el-option :key="1" label="身份证" :value="1"> </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="邮箱" prop="email">
-                            <el-input v-model.trim="userForm.email" placeholder="请输入" clearable></el-input>
+                        <el-form-item label="证件号码" prop="idSerial">
+                            <el-input v-model.trim="userForm.idSerial" 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="性别" prop="gender">
-                            <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="账户过期" prop="expireTime">
-                            <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" v-if="!disabled">
-                        <el-form-item label="账户密码" prop="password">
-                            <el-input v-model.trim="userForm.password" placeholder="请输入" type="password" show-password>
-                            </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-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>
@@ -80,77 +64,62 @@
 import { reactive, toRefs, onMounted, defineComponent, ref } from 'vue';
 import { ElMessageBox, ElMessage } from 'element-plus';
 import { userApi } from '/@/api/systemManage/user';
+import {checkChineseName, verifyFullName, verifyIdCard, verifyPhone} from "/@/utils/toolsValidate";
 
 // 定义接口来定义对象的类型
 interface DeptData {}
 interface roleData {}
-interface sexData {}
 interface UserState {
     title: string;
-    disabled: boolean;
     isShowUserDialog: boolean;
     userForm: {
-        username: string;
+        name: string;
         realName: string;
-        roleId: number | null;
+        roleIds: Array<any>
         depId: number | null;
         phone: string;
-        email: string;
-        gender: number | null;
-        positionId: number | null;
-        password: string;
-        expireTime: string;
-        status: number;
-        identify: string;
+        pwd: string;
+        idType: number | null;
+        idSerial: string;
     };
     userFormRules:{
 
     },
     departmentData: Array<DeptData>;
     roleData: Array<roleData>;
-    sexList: Array<sexData>;
+    isAdd:boolean
 }
 
 export default defineComponent({
-    name: 'user',
+    name: 'userDialog',
     setup(props, context) {
         const userRef = ref()
         const state = reactive<UserState>({
             title: '',
-            disabled: false,
             isShowUserDialog: false,
             userForm: {
-                username: '', // 账户名称
+                name: '', // 账户名称
                 realName: '', // 用户昵称
-                roleId: null, // 关联角色
+                pwd: '', // 账户密码
+                roleIds: [], // 关联角色
                 depId: null, // 部门
                 phone: '', // 手机号
-                email: '', // 邮箱
-                identify: '',
-                gender: null, // 性别
-                password: '', // 账户密码
-                positionId: 1, // 岗位
-                expireTime: '', // 账户过期
-                status: 1 // 用户状态
+                idType: 1,
+                idSerial: '',
             },
             userFormRules:{
-                username: [{ required: true, message: '请填写用户名', trigger: 'blur' }],
+                name: [{ required: true, message: '请填写用户名', trigger: 'blur' }],
                 realName: [{ required: true, message: '请填写真实姓名', trigger: 'blur' }],
-                roleId: [{ required: true, message: '请选择用户角色', trigger: 'change' }],
+                roleIds: [{ required: true, message: '请选择用户角色', trigger: 'change' }],
                 depId: [{ required: true, message: '请选择部门', trigger: 'change' }],
                 phone: [{ required: true, message: '请填写手机号', trigger: 'blur' }],
-                email: [{ required: true, message: '请填写邮箱地址', trigger: 'blur' }],
-                identify: [{ required: true, message: '请填写身份证号', trigger: 'blur' }],
-                gender: [{ required: true, message: '请选择性别', trigger: 'change' }],
-                expireTime: [{ required: true, message: '请输入账户过期时间', trigger: 'blur' }],
-                password: [{ required: true, message: '请输入账户密码', trigger: 'blur' }],
+                idType: [{ required: true, message: '请选择证件类型', trigger: 'blur' }],
+                idSerial: [{ required: true, message: '请填写证件号码', trigger: 'blur' }],
+                pwd: [{ required: true, message: '请输入账户密码', trigger: 'blur' }],
             },
             departmentData: [], // 部门数据
             roleData: [], //角色数据
-            sexList: [
-                { id: 1, name: '男' },
-                { id: 0, name: '女' }
-            ]
+            isAdd: true
         });
         // 打开弹窗
         const openDialog = (type: string, value: any, departmentList: [], roleList: []) => {
@@ -158,26 +127,23 @@
             state.departmentData = departmentList;
             state.roleData = roleList;
             if (type === '新增') {
-                state.disabled = false
                 state.title = '新增用户';
+                state.isAdd = true
                 state.userForm = {
-                    username: '',
+                    name: '',
                     realName: '',
-                    roleId: null,
+                    roleIds: [],
                     depId: null,
                     phone: '',
-                    email: '',
-                    identify: '',
-                    positionId: 1,
-                    gender: null,
-                    password: '',
-                    expireTime: '',
-                    status: 1
+                    idType: 1,
+                    idSerial: '',
+                    pwd: ''
                 };
             } else {
-                state.disabled = true
                 state.title = '修改用户';
+                state.isAdd = false
                 state.userForm = JSON.parse(JSON.stringify(value));
+                state.userForm.roleIds = JSON.parse(JSON.stringify(value)).roles.map(i=>i.roleId)
             }
         };
 
@@ -185,9 +151,33 @@
         const onSubmit = async () => {
             userRef.value.validate(async (valid:Boolean) => {
                 if(valid){
+                    if(checkChineseName(state.userForm.realName) == false){
+                      ElMessage({
+                        type: 'warning',
+                        message: '真实姓名格式有误',
+                        duration: 2000
+                      });
+                      return
+                    }
+                    if(verifyPhone(state.userForm.phone) == false){
+                      ElMessage({
+                        type: 'warning',
+                        message: '请输入正确的手机号',
+                        duration: 2000
+                      });
+                      return
+                    }
+                    if(verifyIdCard(state.userForm.idSerial) == false){
+                      ElMessage({
+                        type: 'warning',
+                        message: '请输入正确的证件号码',
+                        duration: 2000
+                      });
+                      return
+                    }
                     if (state.title === '新增用户') {
                         let res = await userApi().addUser(state.userForm);
-                        if (res.data.code === '200') {
+                        if (res.data.code === 100) {
                             ElMessage({
                                 type: 'success',
                                 message: '用户新增成功',
@@ -202,8 +192,10 @@
                             });
                         }
                     } else {
-                        let res = await userApi().modUser(state.userForm);
-                        if (res.data.code === '200') {
+                        const {name, realName, roleIds, depId, phone, idType, idSerial,id } = state.userForm
+                        const data = {name, realName, roleIds, depId, phone, idType, idSerial,id}
+                        let res = await userApi().modUser(data);
+                        if (res.data.code === 100) {
                             ElMessage({
                                 type: 'success',
                                 message: '用户修改成功',
@@ -229,7 +221,9 @@
         };
 
         // 页面加载时
-        onMounted(() => {});
+        onMounted(() => {
+
+        });
         return {
             userRef,
             openDialog,
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index 8bd5f91..3030f1b 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -2,13 +2,19 @@
     <div class="system-user-container">
         <el-card shadow="hover">
             <div class="system-user-search mb15">
-<!--                <el-input size="default" v-model.trim="userTableData.listQuery.roleId" placeholder="请输入用户名" style="max-width: 180px"> </el-input>-->
-<!--                <el-button size="default" type="primary" class="ml10" @click="initUserTableData">-->
-<!--                    <el-icon>-->
-<!--                        <ele-Search />-->
-<!--                    </el-icon>-->
-<!--                    查询-->
-<!--                </el-button>-->
+                <el-input size="default" v-model.trim="searchName" placeholder="真实姓名" style="max-width: 180px"> </el-input>
+                <el-button size="default" type="primary" class="ml10" @click="searchByName()">
+                    <el-icon>
+                        <ele-Search />
+                    </el-icon>
+                    查询
+                </el-button>
+                <el-button size="default" class="ml10" @click="reset()">
+                  <el-icon>
+                    <RefreshLeft />
+                  </el-icon>
+                  重置
+                </el-button>
                 <el-button size="default" type="success" class="ml10" @click="onOpenUserDialog('新增', '')">
                     <el-icon>
                         <ele-FolderAdd />
@@ -18,20 +24,21 @@
             </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 prop="name" label="用户名"/>
+                <el-table-column prop="realName" label="真实姓名"/>
+                <el-table-column prop="phone" label="手机号"/>
+                <el-table-column prop="depName" label="部门"></el-table-column>
+                <el-table-column prop="roles" label="关联角色">
+                  <template #default="scope">
+                    <span>{{ scope.row.roles.map(obj => obj.roleName).join('、') }}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="idType" label="证件类型">
+                  <template #default="scope">
+                    <span>{{idTypeList.find(item=>item.id == scope.row.idType)?.name}}</span>
+                  </template>
+                </el-table-column>
+                <el-table-column prop="idSerial" label="证件号码"></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>
@@ -44,7 +51,7 @@
             <br />
             <br />
         </el-card>
-        <userDialog ref="userRef" @getUserList="initUserTableData" />
+        <userDialog ref="userRef" @getUserList="initUserTableData"/>
     </div>
 </template>
 
@@ -71,7 +78,11 @@
     describe: string;
     createTime: string;
 }
-interface DepartmentDataRow {}
+interface idType{
+  id: number,
+  name: string
+}
+
 interface TableDataState {
     userTableData: {
         data: Array<TableDataRow>;
@@ -84,8 +95,10 @@
             pageSize: number;
         };
     };
-    departmentList: [];
+    idTypeList: Array<idType>
+    depList: [];
     roleList: [];
+    searchName:string
 }
 
 export default defineComponent({
@@ -105,8 +118,15 @@
                     pageSize: 10
                 }
             },
-            departmentList: [],
-            roleList: []
+            idTypeList:[
+              {
+                id: 1,
+                name: '身份证'
+              }
+            ],
+            depList: [],
+            roleList: [],
+            searchName: ''
         });
         // 初始化表格数据
         const initUserTableData = async () => {
@@ -122,6 +142,41 @@
             }
         };
 
+        const searchByName = async () =>{
+          if(state.searchName == ''){
+            ElMessage({
+              type: 'warning',
+              message: '请输入搜索内容'
+            });
+          }else{
+            let res = await userApi().getUserLByRealName(state.searchName);
+            if (res.data.code === 100) {
+              state.userTableData.data = res.data.data
+            } else {
+              ElMessage({
+                type: 'warning',
+                message: res.data.msg
+              });
+            }
+          }
+        }
+
+        const reset = () =>{
+          state.searchName = ''
+          initUserTableData()
+        }
+
+        const getDepList = async () => {
+          let res = await departmentApi().getDepartmentList()
+          if (res.data.code === 100) {
+            state.depList = res.data.data;
+          } else {
+            ElMessage({
+              type: 'warning',
+              message: res.data.msg
+            });
+          }
+        };
 
         const getRoleData = async () => {
             let res = await useRoleApi().getRoleList();
@@ -137,19 +192,20 @@
 
         // 打开新增修改用户弹窗
         const onOpenUserDialog = (type: string, value: any) => {
-            userRef.value.openDialog(type, value, state.departmentList, state.roleList);
+          console.log('打开',state.depList, state.roleList)
+            userRef.value.openDialog(type, value, state.depList, state.roleList);
         };
 
         // 删除用户
         const onRowDel = (row: TableDataRow) => {
-            ElMessageBox.confirm(`此操作将永久删除账户名称:“${row.realName}”,是否继续?`, '提示', {
+            ElMessageBox.confirm(`此操作将永久删除账户名称:“${row.name}”,是否继续?`, '提示', {
                 confirmButtonText: '确认',
                 cancelButtonText: '取消',
                 type: 'warning'
             })
                 .then(async () => {
-                    let res = await userApi().deleteUser({ uid: row.uid });
-                    if (res.data.code === '200') {
+                    let res = await userApi().deleteUser(row.id);
+                    if (res.data.code === 100) {
                         ElMessage({
                             type: 'success',
                             duration: 2000,
@@ -179,13 +235,16 @@
         onMounted(() => {
             initUserTableData();
             getRoleData();
+            getDepList()
         });
         return {
             userRef,
+            reset,
             onOpenUserDialog,
             onRowDel,
             onHandleSizeChange,
             initUserTableData,
+            searchByName,
             onHandleCurrentChange,
             ...toRefs(state)
         };

--
Gitblit v1.9.2