From 6390fa18f5c2df1158a0d664786797b0e8b2fbf9 Mon Sep 17 00:00:00 2001
From: 祖安之光 <11848914+light-of-zuan@user.noreply.gitee.com>
Date: 星期三, 15 十月 2025 13:10:16 +0800
Subject: [PATCH] 提交

---
 src/api/system/user.js                       |    4 
 public/dailyCheckSheet.docx                  |    0 
 src/views/hazardMng/hazardLedger/index.vue   |   26 +---
 src/views/saftyCheckMng/dailyCheck/index.vue |   84 ++++++----------
 src/layout/components/Navbar.vue             |   20 +++-
 src/views/system/user/authRole.vue           |    2 
 src/views/system/user/index.vue              |   20 +++-
 src/views/login.vue                          |    1 
 src/views/system/role/authUser.vue           |    8 
 src/views/system/user/profile/userInfo.vue   |    6 
 src/views/hazardMng/hazardRectify/index.vue  |   26 +---
 src/views/system/role/selectUser.vue         |    2 
 src/views/system/user/profile/resetPwd.vue   |   12 ++
 src/views/hazardMng/hazardReport/index.vue   |   38 +++----
 src/views/components/formDialog.vue          |   48 ++-------
 15 files changed, 130 insertions(+), 167 deletions(-)

diff --git a/public/dailyCheckSheet.docx b/public/dailyCheckSheet.docx
index f892c20..e5d5cd8 100644
--- a/public/dailyCheckSheet.docx
+++ b/public/dailyCheckSheet.docx
Binary files differ
diff --git a/src/api/system/user.js b/src/api/system/user.js
index 967d49d..05bcc43 100644
--- a/src/api/system/user.js
+++ b/src/api/system/user.js
@@ -105,8 +105,8 @@
   }
   return request({
     url: '/system/user/profile/updatePwd',
-    method: 'put',
-    params: data
+    method: 'post',
+    data: data
   })
 }
 
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index ce9f92e..6765a2f 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -26,15 +26,18 @@
         <el-dropdown @command="handleCommand" class="right-menu-item hover-effect" trigger="click">
           <div class="avatar-wrapper">
             <img :src="userStore.avatar" class="user-avatar" />
-<!--            <el-icon><caret-bottom /></el-icon>-->
+            <el-icon><caret-bottom /></el-icon>
           </div>
           <template #dropdown>
             <el-dropdown-menu>
-<!--              <router-link to="/user/profile">-->
-<!--                <el-dropdown-item>个人中心</el-dropdown-item>-->
-<!--              </router-link>-->
+              <router-link to="/user/profile">
+                <el-dropdown-item>个人中心</el-dropdown-item>
+              </router-link>
 <!--              <el-dropdown-item command="setLayout" v-if="settingsStore.showSettings">-->
 <!--                <span>布局设置</span>-->
+<!--              </el-dropdown-item>-->
+<!--              <el-dropdown-item command="password">-->
+<!--                <span>修改密码</span>-->
 <!--              </el-dropdown-item>-->
               <el-dropdown-item command="logout">
                 <span>退出登录</span>
@@ -60,7 +63,7 @@
 import useAppStore from '@/store/modules/app'
 import useUserStore from '@/store/modules/user'
 import useSettingsStore from '@/store/modules/settings'
-
+import resetPwd from "@/views/system/user/profile/resetPwd";
 const appStore = useAppStore()
 const userStore = useUserStore()
 const settingsStore = useSettingsStore()
@@ -73,6 +76,9 @@
   switch (command) {
     case "setLayout":
       setLayout();
+      break;
+    case "password":
+      editPsd();
       break;
     case "logout":
       logout();
@@ -94,6 +100,10 @@
   }).catch(() => { });
 }
 
+function editPsd() {
+  reviewRef.value.openDialog('pwd',userInfo.value)
+}
+
 const emits = defineEmits(['setLayout'])
 function setLayout() {
   emits('setLayout');
diff --git a/src/views/components/formDialog.vue b/src/views/components/formDialog.vue
index 3cb0e76..fdb0322 100644
--- a/src/views/components/formDialog.vue
+++ b/src/views/components/formDialog.vue
@@ -16,7 +16,7 @@
           size="default"
           ref="formRef"
           :rules="state.formRules"
-          label-width="150px"
+          label-width="160px"
       >
         <template v-for="(item, index) in config.formItems" :key="index">
         <el-divider v-if="item.type === 'divider'" content-position="left">{{item.content}}</el-divider>
@@ -201,13 +201,11 @@
   title: '',
   formData: {},
   formRules: {},
-  // 文件上传相关
   uploadUrl: props.uploadConfig.uploadUrl,
   header: {
     Authorization: getToken()
   },
-  fileLists: {}, // 存储各上传字段的文件列表
-  // 数据列表
+  fileLists: {},
   companyList: [],
   deptList: [],
   userList: [],
@@ -215,34 +213,29 @@
   dialogImageUrl: ''
 })
 
-// 初始化表单数据
 const initFormData = () => {
   const formData = {}
   state.fileLists = {}
 
-  // 初始化普通表单项
   props.config.formItems?.forEach(item => {
-    // 对于多选选择框,默认值为空数组
+
     if (item.type === 'select' && item.multiple) {
       formData[item.prop] = Array.isArray(item.defaultValue) ? item.defaultValue : []
     } else {
       formData[item.prop] = item.defaultValue !== undefined ? item.defaultValue : null
     }
 
-    // 初始化文件上传字段的文件列表
     if (item.type === 'upload') {
       state.fileLists[item.prop] = []
     }
   })
 
-  // 初始化表单规则
   const formRules = {}
   props.config.formItems?.forEach(item => {
     if (item.rules) {
       formRules[item.prop] = item.rules
     }
 
-    // 为文件上传字段添加自定义验证规则
     if (item.type === 'upload' && item.required) {
       formRules[item.prop] = formRules[item.prop] || []
       formRules[item.prop].push({
@@ -258,7 +251,6 @@
       })
     }
 
-    // 为多选选择框添加自定义验证规则
     if (item.type === 'select' && item.multiple && item.required) {
       formRules[item.prop] = formRules[item.prop] || []
       formRules[item.prop].push({
@@ -278,16 +270,13 @@
   state.formRules = formRules
 }
 
-// 获取选项数据
 const getOptions = (options) => {
   if (!options) return []
 
-  // 如果是函数,执行函数获取选项
   if (typeof options === 'function') {
     return options()
   }
 
-  // 如果是数组,直接返回
   if (Array.isArray(options)) {
     return options
   }
@@ -298,17 +287,14 @@
 const getCascaderOptions = (item) => {
   if (!item.options) return []
 
-  // 如果是函数,执行函数获取选项
   if (typeof item.options === 'function') {
     return item.options()
   }
 
-  // 如果是数组,直接返回
   if (Array.isArray(item.options)) {
     return item.options
   }
 
-  // 如果是响应式引用
   if (item.options && typeof item.options === 'object' && 'value' in item.options) {
     return item.options.value
   }
@@ -316,7 +302,6 @@
   return []
 }
 
-// 文件上传前的校验
 const beforeUpload = (rawFile, item) => {
   const maxSize = item.maxSize || 5
   if (rawFile.size / 1024 / 1024 > maxSize) {
@@ -326,12 +311,10 @@
   return true
 }
 
-// 文件上传成功处理
 const handleUploadSuccess = (res, uploadFile, prop) => {
   if (res.code === 200) {
     ElMessage.success('上传成功')
   } else {
-    // 上传失败,移除文件
     state.fileLists[prop] = state.fileLists[prop].filter(file => file.uid !== uploadFile.uid)
     ElMessage.warning(res.message || '文件上传失败')
   }
@@ -340,7 +323,6 @@
   }).join(',')
 }
 
-// 文件移除处理
 const handleRemove = async (file, uploadFiles, prop) => {
   try {
     if(file.uid){
@@ -363,12 +345,10 @@
   state.dialogVisible = true
 }
 
-// 超出文件数量限制提示
 const showTip = () => {
   ElMessage.warning('超出文件上传数量')
 }
 
-// 处理事件
 const handleEvent = async (eventName, value) => {
   try {
     if (eventName === 'getUserListByRole' && props.dataLoader.getUserListByRole) {
@@ -390,12 +370,11 @@
   }
 }
 
-// 打开对话框
 const openDialog = async (type, initialData) => {
   state.title = type === 'add' ? '新增' : type === 'edit' ? '编辑' : type === 'rectify' ? '整改' : '查看'
-  // 初始化表单数据
+
   initFormData()
-  // 加载初始数据
+
   try {
     if (props.dataLoader.loadInitialData) {
       const initialData = await props.dataLoader.loadInitialData(id)
@@ -405,11 +384,10 @@
     console.error('无初始数据:', error)
   }
 
-  // 如果有初始数据,填充表单
   if (initialData) {
     Object.keys(state.formData).forEach(key => {
       if (key in initialData) {
-        // 对于多选字段,确保值是数组
+
         const item = props.config.formItems.find(i => i.prop === key)
         if (item && item.type === 'select' && item.multiple) {
           state.formData[key] = Array.isArray(initialData[key]) ? initialData[key] : (initialData[key] ? [initialData[key]] : [])
@@ -419,7 +397,7 @@
       }
     })
     state.formData.id = initialData.id || null
-    // 初始化文件上传字段的文件列表
+
     props.config.formItems?.forEach(item => {
       if (item.type === 'upload' && initialData[item.prop]) {
         state.fileLists[item.prop] = [{
@@ -448,10 +426,9 @@
   try {
     const valid = await formRef.value.validate()
     if (valid) {
-      // 准备提交数据
+
       const submitData = { ...state.formData }
 
-      // 对于多选字段,如果是空数组则转为null(根据后端需求)
       props.config.formItems?.forEach(item => {
         if (item.type === 'select' && item.multiple &&
             Array.isArray(submitData[item.prop]) &&
@@ -460,7 +437,6 @@
         }
       })
 
-      // 触发提交事件
       emit('submit', submitData, state.title)
     }
   } catch (error) {
@@ -469,20 +445,20 @@
   }
 }
 
-// 关闭对话框
+
 const closeDialog = () => {
   formRef.value.clearValidate()
   formRef.value.resetFields()
   dialogVisible.value = false
 }
 
-// 暴露方法给父组件
+
 defineExpose({
   openDialog,
   closeDialog
 })
 
-// 初始化
+
 initFormData()
 </script>
 
@@ -499,7 +475,7 @@
   margin-top: 7px;
 }
 
-// 多选选择框样式调整
+
 :deep(.el-select__tags) {
   white-space: nowrap;
   overflow: hidden;
diff --git a/src/views/hazardMng/hazardLedger/index.vue b/src/views/hazardMng/hazardLedger/index.vue
index b0bc2b2..d37a5b6 100644
--- a/src/views/hazardMng/hazardLedger/index.vue
+++ b/src/views/hazardMng/hazardLedger/index.vue
@@ -134,7 +134,8 @@
     hazardLevel: null,
     reformDeptId: null,
     reformUserId: null,
-    state: null
+    state: null,
+    hazardsType: 3
   },
   dataList: [],
   deptList: [],
@@ -142,31 +143,19 @@
   sourceList: [
     {
       id: 1,
-      name: '日常排查'
+      name: '综合检查'
     },
     {
       id: 2,
-      name: '综合性排查'
+      name: '部门检查'
     },
     {
       id: 3,
-      name: '专业性排查'
+      name: '实验室自查'
     },
     {
       id: 4,
-      name: '季节性排查'
-    },
-    {
-      id: 5,
-      name: '重点时段及节假日前排查'
-    },
-    {
-      id: 6,
-      name: '外聘专家诊断式排查'
-    },
-    {
-      id: 7,
-      name: '其他'
+      name: '专项检查'
     }
   ],
   levelList: [
@@ -398,7 +387,8 @@
     hazardLevel: null,
     reformDeptId: null,
     reformUserId: null,
-    state: null
+    state: null,
+    hazardsType: 3
   }
   await getList()
 }
diff --git a/src/views/hazardMng/hazardRectify/index.vue b/src/views/hazardMng/hazardRectify/index.vue
index 3e811ef..6fef7af 100644
--- a/src/views/hazardMng/hazardRectify/index.vue
+++ b/src/views/hazardMng/hazardRectify/index.vue
@@ -135,7 +135,8 @@
     hazardLevel: null,
     reformDeptId: null,
     reformUserId: null,
-    state: null
+    state: null,
+    hazardsType: 2
   },
   dataList: [],
   deptList: [],
@@ -143,31 +144,19 @@
   sourceList: [
     {
       id: 1,
-      name: '日常排查'
+      name: '综合检查'
     },
     {
       id: 2,
-      name: '综合性排查'
+      name: '部门检查'
     },
     {
       id: 3,
-      name: '专业性排查'
+      name: '实验室自查'
     },
     {
       id: 4,
-      name: '季节性排查'
-    },
-    {
-      id: 5,
-      name: '重点时段及节假日前排查'
-    },
-    {
-      id: 6,
-      name: '外聘专家诊断式排查'
-    },
-    {
-      id: 7,
-      name: '其他'
+      name: '专项检查'
     }
   ],
   levelList: [
@@ -399,7 +388,8 @@
     hazardLevel: null,
     reformDeptId: null,
     reformUserId: null,
-    state: null
+    state: null,
+    hazardsType: 2
   }
   await getList()
 }
diff --git a/src/views/hazardMng/hazardReport/index.vue b/src/views/hazardMng/hazardReport/index.vue
index 71405d2..99a5ca1 100644
--- a/src/views/hazardMng/hazardReport/index.vue
+++ b/src/views/hazardMng/hazardReport/index.vue
@@ -8,6 +8,7 @@
               plain
               icon="Plus"
               @click="openDialog('add',{})"
+              v-if="isAuthority"
           >新增</el-button>
         </el-form-item>
         <el-form-item label="隐患名称:" >
@@ -123,7 +124,8 @@
     hazardSource: null,
     hazardLevel: null,
     reformDeptId: null,
-    reformUserId: null
+    reformUserId: null,
+    hazardsType: 1
   },
   dataList: [],
   deptList: [],
@@ -131,31 +133,19 @@
   sourceList: [
     {
       id: 1,
-      name: '日常排查'
+      name: '综合检查'
     },
     {
       id: 2,
-      name: '综合性排查'
+      name: '部门检查'
     },
     {
       id: 3,
-      name: '专业性排查'
+      name: '实验室自查'
     },
     {
       id: 4,
-      name: '季节性排查'
-    },
-    {
-      id: 5,
-      name: '重点时段及节假日前排查'
-    },
-    {
-      id: 6,
-      name: '外聘专家诊断式排查'
-    },
-    {
-      id: 7,
-      name: '其他'
+      name: '专项检查'
     }
   ],
   levelList: [
@@ -267,14 +257,21 @@
       return res.code === 200 ? res.data : []
     }
   },
-  api: {}
+  api: {},
+  isAuthority: false
 });
 
-const { queryParams, total, dataList, deptList, userList, formConfig, dataLoader, api, sourceList, levelList } = toRefs(state);
+const { queryParams, total, dataList, deptList, userList, formConfig, dataLoader, api, sourceList, levelList, isAuthority } = toRefs(state)
+const userStore = useUserStore()
 onMounted(async ()=>{
   await getList()
   await getDeptList()
   await getUserList()
+  if(userStore.roles.includes('admin') || userStore.roles.includes('sys_admin') || userStore.roles.includes('place_safety_officer')){
+    state.isAuthority = true
+  }else{
+    state.isAuthority = false
+  }
 })
 
 onUnmounted(()=>{
@@ -330,7 +327,8 @@
     hazardSource: null,
     hazardLevel: null,
     reformDeptId: null,
-    reformUserId: null
+    reformUserId: null,
+    hazardsType: 1
   }
   await getList()
 }
diff --git a/src/views/login.vue b/src/views/login.vue
index aad09d1..1666125 100644
--- a/src/views/login.vue
+++ b/src/views/login.vue
@@ -31,6 +31,7 @@
                 auto-complete="off"
                 placeholder="密码"
                 @keyup.enter="handleLogin"
+                show-password
             >
               <template #prefix><svg-icon icon-class="password" class="el-input__icon input-icon" /></template>
             </el-input>
diff --git a/src/views/saftyCheckMng/dailyCheck/index.vue b/src/views/saftyCheckMng/dailyCheck/index.vue
index ca44893..a72a2c2 100644
--- a/src/views/saftyCheckMng/dailyCheck/index.vue
+++ b/src/views/saftyCheckMng/dailyCheck/index.vue
@@ -21,17 +21,10 @@
 <!--          </el-select>-->
           <el-cascader v-model="queryParams.researchGroup" placeholder="请选择" :options="deptList" :show-all-levels="false" :props="{value: 'deptId',label: 'deptName',children: 'children',emitPath: false,checkStrictly: true}"/>
         </el-form-item>
-        <el-form-item label="参加检查人员:" >
-          <el-select v-model="queryParams.searchCheckUserId" placeholder="请选择" clearable>
-            <el-option
-                v-for="item in userList"
-                :key="item.userId"
-                :label="item.nickName"
-                :value="item.userId">
-            </el-option>
-          </el-select>
+        <el-form-item label="参加检查人员" >
+          <el-input v-model.trim="queryParams.checkUser" placeholder="参加检查人员"></el-input>
         </el-form-item>
-        <el-form-item label="检查类型:" >
+        <el-form-item label="检查类型" >
           <el-select v-model="queryParams.checkType" placeholder="请选择" clearable>
             <el-option
                 v-for="item in checkTypeList"
@@ -41,13 +34,13 @@
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="隐患:" >
+        <el-form-item label="隐患" >
           <el-select v-model="queryParams.haveMainHazard" placeholder="请选择" clearable>
             <el-option :key="1" label="有" :value="1"></el-option>
             <el-option :key="0" label="无" :value="0"></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="检查日期:" >
+        <el-form-item label="检查日期" >
           <el-date-picker
               v-model="checkDate"
               type="daterange"
@@ -70,12 +63,12 @@
       <el-table-column prop="checkDate" align="center" label="检查时间"/>
       <el-table-column prop="checkPlace" align="center" label="检查地点"/>
       <el-table-column prop="checkRoom" align="center" label="检查房间号"/>
-      <el-table-column prop="enactmentDate" align="center" label="参加检查人员">
+      <el-table-column prop="checkUser" align="center" label="参加检查人员"/>
+      <el-table-column prop="researchGroupName" align="center" label="被检查部门/研究组">
         <template #default="scope">
-          {{scope.row.dailySafetyInspectionUsers.map(i=>i.checkUser).join('、')}}
+          {{ scope.row.dailySafetyInspectionDepts.filter(item=>item.deptName && item.deptName !== '').map(i=>i.deptName).join('、') }}
         </template>
       </el-table-column>
-      <el-table-column prop="researchGroupName" align="center" label="被检查部门/研究组"/>
       <el-table-column prop="checkContent" align="center" label="检查内容"/>
       <el-table-column label="操作" align="center">
         <template #default="scope">
@@ -116,14 +109,16 @@
     pageNum: 1,
     pageSize: 10,
     researchGroup: null,
-    searchCheckUserId: null,
+    checkUser: '',
     checkType: null,
     haveMainHazard: null,
     checkBeginDate: '',
     checkEndDate: ''
   },
+  originDeptList: [],
   dataList: [],
   deptList: [],
+  safetyDeptList: [],
   userList: [],
   checkTypeList: [
     {
@@ -156,17 +151,9 @@
       },
       {
         label: '参加检查人员',
-        prop: 'dailySafetyInspectionUsers',
-        type: 'select',
-        multiple: true,
-        filterable: true,
-        rules: [{ required: true, message: '请选择人员', trigger: 'change' }],
-        options: () => {
-          return state.userList.map(user => ({
-            value: user.userId,
-            label: user.nickName
-          }))
-        }
+        prop: 'checkUser',
+        type: 'text',
+        rules: [{ required: true, message: '请输入人员', trigger: 'blur' }],
       },
       {
         label: '检查地点',
@@ -182,7 +169,7 @@
       },
       {
         label: '被检查部门/研究组',
-        prop: 'researchGroup',
+        prop: 'dailySafetyInspectionDepts',
         type: 'cascader',
         showAllLevels: false,
         props: {
@@ -190,10 +177,11 @@
           label: 'deptName',
           children: 'children',
           emitPath: false,
-          checkStrictly: true
+          checkStrictly: true,
+          multiple: true
         },
         rules: [{ required: true, message: '请选择部门', trigger: 'blur' }],
-        options: () => state.deptList
+        options: () => state.safetyDeptList
       },
       {
         label: '检查类型',
@@ -235,15 +223,9 @@
       },
       {
         label: '复查人员',
-        prop: 'reCheckUserId',
-        type: 'select',
-        rules: [{ required: true, message: '请选择复查人员', trigger: 'blur' }],
-        options: () => {
-          return state.userList.map(user => ({
-            value: user.userId,
-            label: user.nickName
-          }))
-        }
+        prop: 'reCheckUser',
+        type: 'text',
+        rules: [{ required: true, message: '请输入复查人员', trigger: 'blur' }]
       },
       {
         label: '复查时间',
@@ -278,9 +260,11 @@
 })
 
 function getDeptList() {
-  listDept({safety: '1'}).then(response => {
+  listDept().then(response => {
+    state.originDeptList = response.data
     state.deptList = proxy.handleTree(response.data, "deptId")
-  });
+    state.safetyDeptList = proxy.handleTree(response.data.filter(item=>item.safety == '1'), "deptId")
+  })
 }
 
 function getUserList() {
@@ -305,7 +289,6 @@
 
 const downloadFile = async (val)=>{
     let tableData = val
-    tableData.checkNames = val.dailySafetyInspectionUsers.map(item=>item.checkUser).join('、')
     try {
       generateWordDocument('/dailyCheckSheet.docx', tableData, '日常安全检查记录表.docx');
     } catch (error){
@@ -317,10 +300,7 @@
 }
 
 const openDialog = (type, value) => {
-  let initalData = JSON.parse(JSON.stringify(value))
-  if(type == 'edit' || type == 'view'){
-    initalData.dailySafetyInspectionUsers = value.dailySafetyInspectionUsers.map(i=>i.checkUserId)
-  }
+  const initalData = JSON.parse(JSON.stringify(value))
   dialogRef.value.openDialog(type, initalData)
 }
 
@@ -330,7 +310,7 @@
     pageNum: 1,
     pageSize: 10,
     researchGroup: null,
-    searchCheckUserId: null,
+    checkUser: '',
     checkType: null,
     haveMainHazard: null,
     checkBeginDate: '',
@@ -361,14 +341,14 @@
 
 const handleSubmit = async (data, type) => {
   const params = JSON.parse(JSON.stringify(data))
-  params.dailySafetyInspectionUsers = params.dailySafetyInspectionUsers.map(item=>{
+  console.log(state.originDeptList,'ori')
+  params.dailySafetyInspectionDepts = params.dailySafetyInspectionDepts.map(i=>{
     return {
-      checkUserId: item,
-      checkUser: state.userList.find(i=>i.userId == item)?.nickName,
-      dailySafetyInspectionId: params.id
+      deptId: i,
+      deptName: state.originDeptList.find(item=>item.deptId == i)?.deptName
     }
   })
-  params.reCheckUser = state.userList.find(i=>i.userId == params.reCheckUserId)?.nickName
+  // params.reCheckUser = state.userList.find(i=>i.userId == params.reCheckUserId)?.nickName
   // 调用API保存数据
   if (type === '新增') {
     delete params.id
diff --git a/src/views/system/role/authUser.vue b/src/views/system/role/authUser.vue
index 66b5f5e..e364afe 100644
--- a/src/views/system/role/authUser.vue
+++ b/src/views/system/role/authUser.vue
@@ -47,9 +47,9 @@
             >批量取消授权</el-button>
          </el-col>
          <el-col :span="1.5">
-            <el-button 
-               type="warning" 
-               plain 
+            <el-button
+               type="warning"
+               plain
                icon="Close"
                @click="handleClose"
             >关闭</el-button>
@@ -60,7 +60,7 @@
       <el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
          <el-table-column type="selection" width="55" align="center" />
          <el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
-         <el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
+         <el-table-column label="姓名" prop="nickName" :show-overflow-tooltip="true" />
          <el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
          <el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
          <el-table-column label="状态" align="center" prop="status">
diff --git a/src/views/system/role/selectUser.vue b/src/views/system/role/selectUser.vue
index 9be1ec9..cda8ce9 100644
--- a/src/views/system/role/selectUser.vue
+++ b/src/views/system/role/selectUser.vue
@@ -29,7 +29,7 @@
          <el-table @row-click="clickRow" ref="refTable" :data="userList" @selection-change="handleSelectionChange" height="260px">
             <el-table-column type="selection" width="55"></el-table-column>
             <el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
-            <el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
+            <el-table-column label="姓名" prop="nickName" :show-overflow-tooltip="true" />
             <el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
             <el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
             <el-table-column label="状态" align="center" prop="status">
diff --git a/src/views/system/user/authRole.vue b/src/views/system/user/authRole.vue
index 0b5c14b..5c03220 100644
--- a/src/views/system/user/authRole.vue
+++ b/src/views/system/user/authRole.vue
@@ -4,7 +4,7 @@
       <el-form :model="form" label-width="80px">
          <el-row>
             <el-col :span="8" :offset="2">
-               <el-form-item label="用户昵称" prop="nickName">
+               <el-form-item label="姓名" prop="nickName">
                   <el-input v-model="form.nickName" disabled />
                </el-form-item>
             </el-col>
diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue
index d6cfdd6..3ba2804 100644
--- a/src/views/system/user/index.vue
+++ b/src/views/system/user/index.vue
@@ -29,6 +29,15 @@
          <!--用户数据-->
          <el-col :span="20" :xs="24">
             <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+              <el-form-item label="姓名" prop="nickName">
+                <el-input
+                    v-model="queryParams.nickName"
+                    placeholder="请输入用户姓名"
+                    clearable
+                    style="width: 240px"
+                    @keyup.enter="handleQuery"
+                />
+              </el-form-item>
                <el-form-item label="用户名称" prop="userName">
                   <el-input
                      v-model="queryParams.userName"
@@ -133,7 +142,7 @@
                <el-table-column type="selection" width="50" align="center" />
                <el-table-column label="用户编号" align="center" key="userId" prop="userId" v-if="columns[0].visible" />
                <el-table-column label="用户名称" align="center" key="userName" prop="userName" v-if="columns[1].visible" :show-overflow-tooltip="true" />
-               <el-table-column label="用户昵称" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
+               <el-table-column label="姓名" align="center" key="nickName" prop="nickName" v-if="columns[2].visible" :show-overflow-tooltip="true" />
                <el-table-column label="部门" align="center" key="deptName" prop="dept.deptName" v-if="columns[3].visible" :show-overflow-tooltip="true" />
                <el-table-column label="手机号码" align="center" key="phonenumber" prop="phonenumber" v-if="columns[4].visible" width="120" />
                <el-table-column label="状态" align="center" key="status" v-if="columns[5].visible">
@@ -183,8 +192,8 @@
          <el-form :model="form" :rules="rules" ref="userRef" label-width="80px">
             <el-row>
                <el-col :span="12">
-                  <el-form-item label="用户昵称" prop="nickName">
-                     <el-input v-model="form.nickName" placeholder="请输入用户昵称" maxlength="30" />
+                  <el-form-item label="姓名" prop="nickName">
+                     <el-input v-model="form.nickName" placeholder="请输入姓名" maxlength="30" />
                   </el-form-item>
                </el-col>
                <el-col :span="12">
@@ -371,7 +380,7 @@
 const columns = ref([
   { key: 0, label: `用户编号`, visible: true },
   { key: 1, label: `用户名称`, visible: true },
-  { key: 2, label: `用户昵称`, visible: true },
+  { key: 2, label: `姓名`, visible: true },
   { key: 3, label: `部门`, visible: true },
   { key: 4, label: `手机号码`, visible: true },
   { key: 5, label: `状态`, visible: true },
@@ -383,6 +392,7 @@
   queryParams: {
     pageNum: 1,
     pageSize: 10,
+    nickName: undefined,
     userName: undefined,
     phonenumber: undefined,
     status: undefined,
@@ -390,7 +400,7 @@
   },
   rules: {
     userName: [{ required: true, message: "用户名称不能为空", trigger: "blur" }, { min: 2, max: 20, message: "用户名称长度必须介于 2 和 20 之间", trigger: "blur" }],
-    nickName: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }],
+    nickName: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
     password: [{ required: true, message: "用户密码不能为空", trigger: "blur" }, { min: 5, max: 20, message: "用户密码长度必须介于 5 和 20 之间", trigger: "blur" }],
     email: [{ type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
     phonenumber: [{ pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }]
diff --git a/src/views/system/user/profile/resetPwd.vue b/src/views/system/user/profile/resetPwd.vue
index dec2d79..4c5d701 100644
--- a/src/views/system/user/profile/resetPwd.vue
+++ b/src/views/system/user/profile/resetPwd.vue
@@ -18,7 +18,8 @@
 
 <script setup>
 import { updateUserPwd } from "@/api/system/user";
-
+import useUserStore from "@/store/modules/user";
+const userStore = useUserStore()
 const { proxy } = getCurrentInstance();
 
 const user = reactive({
@@ -45,7 +46,14 @@
   proxy.$refs.pwdRef.validate(valid => {
     if (valid) {
       updateUserPwd(user.oldPassword, user.newPassword).then(response => {
-        proxy.$modal.msgSuccess("修改成功");
+        if(response.code == 200){
+          proxy.$modal.msgSuccess("密码修改成功,需重新登录");
+          setTimeout(()=>{
+            userStore.logOut().then(() => {
+              location.href = '/index';
+            })
+          },2000)
+        }
       });
     }
   });
diff --git a/src/views/system/user/profile/userInfo.vue b/src/views/system/user/profile/userInfo.vue
index a5e1c77..c4e51d7 100644
--- a/src/views/system/user/profile/userInfo.vue
+++ b/src/views/system/user/profile/userInfo.vue
@@ -1,6 +1,6 @@
 <template>
    <el-form ref="userRef" :model="form" :rules="rules" label-width="80px">
-      <el-form-item label="用户昵称" prop="nickName">
+      <el-form-item label="姓名" prop="nickName">
          <el-input v-model="form.nickName" maxlength="30" />
       </el-form-item>
       <el-form-item label="手机号码" prop="phonenumber">
@@ -35,8 +35,8 @@
 
 const form = ref({});
 const rules = ref({
-  nickName: [{ required: true, message: "用户昵称不能为空", trigger: "blur" }],
-  email: [{ required: true, message: "邮箱地址不能为空", trigger: "blur" }, { type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
+  nickName: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
+  // email: [{ required: true, message: "邮箱地址不能为空", trigger: "blur" }, { type: "email", message: "请输入正确的邮箱地址", trigger: ["blur", "change"] }],
   phonenumber: [{ required: true, message: "手机号码不能为空", trigger: "blur" }, { pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur" }],
 });
 

--
Gitblit v1.9.2