From 4502510c1763590b3d90d9dcc74a99f8f371642f Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期五, 19 四月 2024 16:49:45 +0800
Subject: [PATCH] 基本信息、修改密码

---
 src/layout/components/Register/index.vue                                        |    4 +
 src/api/login.js                                                                |    5 +
 src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue       |    6 +
 src/views/safetyReview/userManage/superviseUsers/components/superviseDialog.vue |   55 +++++++++++-------
 src/store/modules/user.js                                                       |    3 
 src/layout/components/Navbar.vue                                                |   55 ++++++++++++++++--
 src/views/components/loginForm.vue                                              |   10 ++
 src/views/safetyReview/projectManage/components/signConfirm.vue                 |    2 
 8 files changed, 104 insertions(+), 36 deletions(-)

diff --git a/src/api/login.js b/src/api/login.js
index b227491..eb9601a 100644
--- a/src/api/login.js
+++ b/src/api/login.js
@@ -1,12 +1,13 @@
 import request from '@/utils/request'
 
 // 登录方法
-export function login(username, password, code, uuid) {
+export function login(username, password, code, uuid,identity) {
   const data = {
     username,
     password,
     code,
-    uuid
+    uuid,
+    identity
   }
   return request({
     url: '/system/account/login',
diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index 43e4b3f..2cb8830 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -34,9 +34,12 @@
 <!--              <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="info">
+                <span>基本信息</span>
+              </el-dropdown-item>
+              <el-dropdown-item command="password">
+                <span>修改密码</span>
+              </el-dropdown-item>
               <el-dropdown-item divided command="logout">
                 <span>退出登录</span>
               </el-dropdown-item>
@@ -45,6 +48,8 @@
         </el-dropdown>
       </div>
     </div>
+    <review-dialog ref="reviewRef" ></review-dialog>
+    <supervise-dialog ref="superRef"></supervise-dialog>
   </div>
 </template>
 
@@ -61,29 +66,67 @@
 import useAppStore from '@/store/modules/app'
 import useUserStore from '@/store/modules/user'
 import useSettingsStore from '@/store/modules/settings'
-import {removeToken} from "@/utils/auth";
+import {getToken, removeToken} from "@/utils/auth";
+import {onMounted, ref} from "vue";
+import Cookies from "js-cookie";
+import reviewDialog from "@/views/safetyReview/institution/components/viewInstitution.vue"
+import superviseDialog from "@/views/safetyReview/userManage/superviseUsers/components/superviseDialog.vue"
 
 const appStore = useAppStore()
 const userStore = useUserStore()
 const settingsStore = useSettingsStore()
 
+const reviewRef = ref();
+const superRef = ref();
+const userInfo = ref();
+onMounted(()=>{
+  if(getToken()){
+    userInfo.value = JSON.parse(Cookies.get('userInfo'))
+    console.log("userInfo",userInfo.value )
+
+  }
+})
 function toggleSideBar() {
   appStore.toggleSideBar()
 }
 
 function handleCommand(command) {
   switch (command) {
-    case "setLayout":
-      setLayout();
+    case "info":
+      getInfo();
       break;
     case "logout":
       logout();
       break;
+    case "password":
+      editPsd();
+      break;
     default:
       break;
   }
 }
 
+function getInfo() {
+  console.log("getInfo")
+  //机构用户
+  if(userInfo.value.identity === 1){
+    const obj = {
+      agencyId: userInfo.value.agentId
+    }
+    reviewRef.value.openDialog(obj,'view')
+  }
+  //监管用户
+  else if (userInfo.value.identity === 0) {
+    const obj = {
+      id: userInfo.value.id
+    }
+    superRef.value.openDialog('view', obj);
+  }
+}
+function editPsd() {
+  superRef.value.openDialog('pwd', userInfo.value);
+}
+
 function logout() {
   ElMessageBox.confirm('确定注销并退出系统吗?', '提示', {
     confirmButtonText: '确定',
diff --git a/src/layout/components/Register/index.vue b/src/layout/components/Register/index.vue
index 1b29454..ddd287b 100644
--- a/src/layout/components/Register/index.vue
+++ b/src/layout/components/Register/index.vue
@@ -409,11 +409,13 @@
         let param = {}
         if(state.title=='新增/注册') {
             param = {
-                phone:value
+                phone:value,
+                identity: 1
             }
         }else if(state.title=='编辑'){
             param = {
                 phone:value,
+                identity: 1,
                 id: state.registerForm.id
             }
         }
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index d1d60e7..201f2d2 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -20,8 +20,9 @@
         const password = userInfo.password
         const code = userInfo.code
         const uuid = userInfo.uuid
+        const identity = userInfo.identity
         return new Promise((resolve, reject) => {
-          login(username, password, code, uuid).then(res => {
+          login(username, password, code, uuid, identity).then(res => {
             setToken(res.data.token)
             Cookies.set('userInfo',JSON.stringify(res.data))
             this.token = res.data.token
diff --git a/src/views/components/loginForm.vue b/src/views/components/loginForm.vue
index ee9ede4..57b41b7 100644
--- a/src/views/components/loginForm.vue
+++ b/src/views/components/loginForm.vue
@@ -44,6 +44,10 @@
           <img :src="codeUrl" @click="getCode" class="login-code-img"/>
         </div>
       </el-form-item>
+      <el-radio-group v-model="loginForm.role" class="mb5">
+        <el-radio :label="0" size="large">监管部门</el-radio>
+        <el-radio :label="1" size="large">机构管理员</el-radio>
+      </el-radio-group>
       <div style="display: flex;justify-content: space-between;align-items: center;margin-bottom: 25px">
 <!--        <el-checkbox v-model="loginForm.rememberMe">记住密码</el-checkbox>-->
         <el-button
@@ -85,7 +89,8 @@
   username: "",
   password: "",
   code: "",
-  uuid: ""
+  uuid: "",
+  role: 0
 });
 
 const loginRules = {
@@ -138,7 +143,8 @@
             username: loginForm.value.username,
             password: Base64.encode(loginForm.value.password),
             code: loginForm.value.code,
-            uuid: loginForm.value.uuid
+            uuid: loginForm.value.uuid,
+            identity: loginForm.value.role
         }
       userStore.login(param).then(() => {
         // const query = route.query;
diff --git a/src/views/safetyReview/projectManage/components/signConfirm.vue b/src/views/safetyReview/projectManage/components/signConfirm.vue
index b5887a1..9668e5d 100644
--- a/src/views/safetyReview/projectManage/components/signConfirm.vue
+++ b/src/views/safetyReview/projectManage/components/signConfirm.vue
@@ -131,7 +131,7 @@
     state.tableData = res.data.map(item => {
       return {
         ...item,
-        facePic: item.faceRecord ? [import.meta.env.VITE_APP_BASE_API + '/' + item.faceRecord.facePath ] : [],
+        facePic: item.faceRecord.facePath ? [import.meta.env.VITE_APP_BASE_API + '/' + item.faceRecord.facePath ] : [],
         signPic: item.signPath ? [import.meta.env.VITE_APP_BASE_API + '/' + item.signPath] : [],
         commitPic: item.insurancePath ? [import.meta.env.VITE_APP_BASE_API + '/' + item.insurancePath] : [],
       }
diff --git a/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue b/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue
index 972aeaf..7600bca 100644
--- a/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue
+++ b/src/views/safetyReview/userManage/expertUsers/components/expertDialog.vue
@@ -254,12 +254,14 @@
             let param = {}
             if(state.title=='新增') {
                 param = {
-                    phone:value
+                    phone:value,
+                    identity: 2
                 }
             }else if(state.title=='编辑'){
                 param = {
                     phone:value,
-                    id: state.form.id
+                    id: state.form.id,
+                    identity: 2
                 }
             }
             checkPhone(param).then((res)=>{
diff --git a/src/views/safetyReview/userManage/superviseUsers/components/superviseDialog.vue b/src/views/safetyReview/userManage/superviseUsers/components/superviseDialog.vue
index 4d8e5b7..e3a0696 100644
--- a/src/views/safetyReview/userManage/superviseUsers/components/superviseDialog.vue
+++ b/src/views/safetyReview/userManage/superviseUsers/components/superviseDialog.vue
@@ -7,11 +7,11 @@
             :before-close="handleClose"
         >
             <el-form :model="state.form" size="default" ref="superRef" :rules="state.formRules" label-width="110px" >
-                <el-form-item label="姓名:" prop="name" v-if="state.title !== '修改密码'">
-                    <el-input v-model.trim="state.form.name" ></el-input>
+                <el-form-item label="姓名:" prop="name" v-if="state.title !== '修改密码'" >
+                    <el-input v-model.trim="state.form.name" :disabled="disabled" ></el-input>
                 </el-form-item>
                 <el-form-item label="用户名:"  prop="username" v-if="state.title !== '修改密码'">
-                    <el-input v-model.trim="state.form.username" :disabled="state.title =='编辑'" ></el-input>
+                    <el-input v-model.trim="state.form.username" :disabled="state.title =='编辑' || state.title =='查看'" ></el-input>
                 </el-form-item>
                 <el-form-item label="密码:" prop="password" v-if="state.title == '新增' || state.title == '修改密码'">
                     <el-input v-model.trim="state.form.password" type="password" show-password placeholder="请输入密码"></el-input>
@@ -19,17 +19,17 @@
                 <el-form-item label="重复密码:" prop="confirmPassword" v-if="state.title == '新增' || state.title == '修改密码'">
                     <el-input v-model.trim="state.form.confirmPassword" type="password" show-password placeholder="请输入确认密码"></el-input>
                 </el-form-item>
-                <el-form-item label="手机号:" prop="phone" v-if="state.title !== '修改密码'">
-                    <el-input v-model.trim="state.form.phone" :maxlength="11" ></el-input>
+                <el-form-item label="手机号:" prop="phone" v-if="state.title !== '修改密码'" >
+                    <el-input v-model.trim="state.form.phone" :maxlength="11" :disabled="disabled"></el-input>
                 </el-form-item>
                 <el-form-item label="账号类型:" v-if="state.title !== '修改密码'">
-                    <el-radio-group v-model="state.form.userType" >
+                    <el-radio-group v-model="state.form.userType"  :disabled="disabled">
                         <el-radio :label="0">工作人员</el-radio>
                         <el-radio :label="1">领导</el-radio>
                     </el-radio-group>
                 </el-form-item>
                 <el-form-item label="管辖地区:" prop="manageRegion" v-if="state.title !== '修改密码'">
-                    <el-select v-model="state.form.manageRegion" class="m-2" placeholder="请选择" style="width:100%">
+                    <el-select v-model="state.form.manageRegion" class="m-2" placeholder="请选择" style="width:100%" :disabled="disabled">
                         <el-option
                             v-for="item in state.areaList"
                             :key="item.id"
@@ -39,7 +39,7 @@
                     </el-select>
                 </el-form-item>
             </el-form>
-            <template #footer >
+            <template #footer v-if="state.title !='查看'">
                     <span class="dialog-footer">
                         <el-button @click="handleClose" size="default">取 消</el-button>
                         <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
@@ -55,9 +55,10 @@
 import {verifyPhone, verifyPwd, verifyUsername} from "../../../../../utils/validate";
 import { checkUserName, checkPhone } from "@/api/login"
 import { getRegionTree } from "@/api/area"
-import { addMonitor, editMonitor } from "@/api/sysUsers"
+import {addMonitor, editMonitor, getUserById} from "@/api/sysUsers"
 import {Base64} from "js-base64"
 import {resetUserPwd} from "../../../../../api/sysUsers";
+import {getInstitutionDetail} from "@/api/backManage/insitution";
 
 const emit = defineEmits(["getList"]);
 const dialogVisible = ref(false)
@@ -81,12 +82,14 @@
         let param = {}
         if(state.title=='新增') {
             param = {
-                phone:value
+                phone:value,
+                identity: 0
             }
         }else if(state.title=='编辑'){
             param = {
                 phone:value,
-                id: state.form.id
+                id: state.form.id,
+                identity: 0
             }
         }
       checkPhone(param).then((res)=>{
@@ -165,18 +168,28 @@
 
 })
 
-const openDialog = (type, value) => {
+const disabled = ref(false);
+const openDialog = async (type, value) => {
     getArea()
     state.title = type === 'add' ? '新增' : type ==='edit' ? '编辑' : type ==='pwd' ? '修改密码' : '查看' ;
-    if(type === 'edit') {
-        nextTick(() => {
-            for(let i in state.form){
-                if(validKey(i,value)){
-                    state.form[i] = value[i]
-                }
-            }
-        })
-
+    if(type === 'edit' || type === 'view') {
+      if( type === 'view'){
+        disabled.value = true;
+      }
+      const param = {
+        userId: value.id
+      }
+      const res = await getUserById(param);
+      if(res.code === 200){
+        state.form = res.data
+      }
+        // nextTick(() => {
+        //     for(let i in state.form){
+        //         if(validKey(i,value)){
+        //             state.form[i] = value[i]
+        //         }
+        //     }
+        // })
     }
     if(type == 'pwd'){
       state.form.id = value.id

--
Gitblit v1.9.2