From 1d2cf5560b9b757eb1405970d89d6609058863cf Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期三, 05 六月 2024 09:59:55 +0800
Subject: [PATCH] bug修改

---
 src/layout/components/Register/index.vue                        |   28 ++++--
 src/utils/request.js                                            |    2 
 src/layout/components/Sidebar/menu.js                           |    7 +
 src/store/modules/user.js                                       |    8 +
 src/layout/components/Navbar.vue                                |   66 +++++++++++++++-
 src/views/error/noMenu.vue                                      |   63 +++++++++++++++
 src/views/components/loginForm.vue                              |   16 +++
 src/views/safetyReview/projectManage/components/expertsList.vue |   18 +++-
 src/router/index.js                                             |   13 +++
 9 files changed, 194 insertions(+), 27 deletions(-)

diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue
index 2cb8830..2f8c19a 100644
--- a/src/layout/components/Navbar.vue
+++ b/src/layout/components/Navbar.vue
@@ -49,12 +49,13 @@
       </div>
     </div>
     <review-dialog ref="reviewRef" ></review-dialog>
+    <register ref="regRef" @getList="getList" />
     <supervise-dialog ref="superRef"></supervise-dialog>
   </div>
 </template>
 
 <script setup>
-import { ElMessageBox } from 'element-plus'
+import {ElMessage, ElMessageBox} from 'element-plus'
 import Breadcrumb from '@/components/Breadcrumb'
 import TopNav from '@/components/TopNav'
 import Hamburger from '@/components/Hamburger'
@@ -71,21 +72,50 @@
 import Cookies from "js-cookie";
 import reviewDialog from "@/views/safetyReview/institution/components/viewInstitution.vue"
 import superviseDialog from "@/views/safetyReview/userManage/superviseUsers/components/superviseDialog.vue"
+import {Register} from "@/layout/components";
+import {getUserById} from "@/api/sysUsers";
+import menu from "@/layout/components/Sidebar/menu";
 
 const appStore = useAppStore()
 const userStore = useUserStore()
 const settingsStore = useSettingsStore()
 
 const reviewRef = ref();
+const regRef = ref(null)
 const superRef = ref();
 const userInfo = ref();
 onMounted(()=>{
   if(getToken()){
     userInfo.value = JSON.parse(Cookies.get('userInfo'))
     console.log("userInfo",userInfo.value )
-
   }
+  getState();
 })
+const getState = async () => {
+  console.log('navbar')
+  const param = {
+    userId: userInfo.value.id
+  }
+  const res = await getUserById(param)
+  if(res.code == 200){
+    userInfo.value.state = res.data.state;
+    // if(userInfo.value.state===2){
+    //   sidebarRouters.value =  menu.agencyMenu
+    //   Cookies.set('routers',JSON.stringify(sidebarRouters.value))
+    //   location.href = '/project';
+    // }
+    // else {
+    //   location.href = '/noMenu';
+    // }
+
+
+  }else{
+    ElMessage({
+      type: 'warning',
+      message: res.message
+    })
+  }
+}
 function toggleSideBar() {
   appStore.toggleSideBar()
 }
@@ -107,13 +137,24 @@
 }
 
 function getInfo() {
-  console.log("getInfo")
+  console.log("getInfo",userInfo.value)
   //机构用户
   if(userInfo.value.identity === 1){
-    const obj = {
-      agencyId: userInfo.value.agentId
+    //审核驳回(可修改)
+    if(userInfo.value.state === 3){
+      const obj = {
+        id: userInfo.value.id,
+        username: userInfo.value.username,
+        agencyId: userInfo.value.agentId
+      }
+      regRef.value.openDialog('reject', obj);
+    }else{
+      //审核通过、未审核状态(不可修改)
+      const obj = {
+        agencyId: userInfo.value.agentId
+      }
+      reviewRef.value.openDialog(obj,'view')
     }
-    reviewRef.value.openDialog(obj,'view')
   }
   //监管用户
   else if (userInfo.value.identity === 0) {
@@ -126,6 +167,19 @@
 function editPsd() {
   superRef.value.openDialog('pwd', userInfo.value);
 }
+const sidebarRouters = ref([])
+
+const getList = () => {
+  // getState()
+  location.href = '/noMenu';
+  // if(userInfo.value.state===2){
+  //   sidebarRouters.value =  menu.agencyMenu
+  //   Cookies.set('routers',JSON.stringify(sidebarRouters.value))
+  //   location.href = '/project';
+  // }else {
+  //   location.href = '/noMenu';
+  // }
+}
 
 function logout() {
   ElMessageBox.confirm('确定注销并退出系统吗?', '提示', {
diff --git a/src/layout/components/Register/index.vue b/src/layout/components/Register/index.vue
index ddd287b..de6d5b9 100644
--- a/src/layout/components/Register/index.vue
+++ b/src/layout/components/Register/index.vue
@@ -205,8 +205,8 @@
           </el-col>
         </el-row>
         <el-row :gutter="30">
-          <el-col :span="8">
-            <el-form-item prop="agency.reportPath" label="加盖公章的《机构信息上报表》">
+          <el-col :span="24">
+            <el-form-item prop="agency.reportPath" label="加盖公章的《机构信息上报表》(请上传加盖公章的营业执照)">
               <!--              <el-upload-->
               <!--                  v-model:file-list="state.fileList"-->
               <!--                  class="upload-demo"-->
@@ -319,6 +319,7 @@
 import { Base64 } from 'js-base64'
 import {getAgencyById} from "../../../api/sysUsers";
 import Cookies from "js-cookie";
+import {getInstitutionDetail} from "@/api/backManage/insitution";
 const emit = defineEmits(["getList"]);
 
 const props = {
@@ -520,10 +521,11 @@
   // });
 })
 const isAbleEdit = ref(false);
+const isReject = ref(false);
 const openDialog=(type, value)=>{
-  state.title = type === 'add' ? '新增/注册' : type ==='edit' ? '编辑' : '查看' ;
-    getArea()
-  if(type === 'edit' || type == 'view') {
+  state.title = type === 'add' ? '新增/注册' : (type ==='edit' || type ==='reject') ? '编辑' : '查看' ;
+  getArea()
+  if(type === 'edit' || type == 'view' || type ==='reject') {
     state.registerForm.id = value.id
     state.registerForm.username = value.username
     state.registerForm.phone = value.phone
@@ -544,7 +546,8 @@
           }
         }
         getArea()
-
+        state.registerForm.phone = info.user.phone
+        startPhone.value = info.user.phone
         state.registerForm.agency.business = info.business.split(',').map(Number)
           if(state.registerForm.agency.attribute === 0){
               state.registerForm.agency.area = [info.city,info.district].filter(item => { return item && item.trim() })
@@ -560,6 +563,7 @@
             state.certList = imgUrl ? imgUrl.split(',').map(url => {return {url} }) : []
           }
 
+
       }else{
         ElMessage.warning(res.message)
       }
@@ -567,8 +571,12 @@
     if(type == 'view'){
       state.isView = true
     }
+    if(type === 'reject'){
+      isReject.value = true;
+    }
   }
   dialogVisible.value = true
+  console.log('state.registerForm',state.registerForm)
 }
 
 const validKey=(key,obj)=>{
@@ -712,8 +720,10 @@
       }else {
           const {confirmPassword, ...data} = JSON.parse(JSON.stringify(state.registerForm))
           data.password = Base64.encode(data.password)
-          console.log('data',data)
           data.agency.business = data.agency.business.join(',')
+          if(isReject.value) {
+            data.state = 1;
+          }
           // delete data.agency.area
           console.log('data',data)
           editAgency(data).then(res => {
@@ -722,7 +732,7 @@
                       type: 'success',
                       message: '编辑成功'
                   })
-                  emit("getList")
+
                   dialogVisible.value = false
                   state.registerForm.agency.attribute = 0
                   proxy.$refs.registerRef.resetFields()
@@ -730,7 +740,7 @@
                   state.fileList = []
                   state.certList = []
                   loading.value = false
-
+                emit("getList")
               }else{
                   ElMessage({
                       type: 'warning',
diff --git a/src/layout/components/Sidebar/menu.js b/src/layout/components/Sidebar/menu.js
index 95c8ca5..e2bd32f 100644
--- a/src/layout/components/Sidebar/menu.js
+++ b/src/layout/components/Sidebar/menu.js
@@ -113,6 +113,13 @@
                 } ,
             ]
         },
+    ],
+    noMenu: [
+        {
+            path: '/noMenu',
+            name: 'noMenu',
+            meta: { title: '提示',icon: 'form',affix: true }
+        },
     ]
 
 }
diff --git a/src/router/index.js b/src/router/index.js
index 2ef8d6a..59f54a4 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -91,6 +91,19 @@
   //   ]
   // },
   {
+    path: '/noMenu',
+    component: Layout,
+    redirect: '/noMenu',
+    children: [
+      {
+        path: '/noMenu',
+        component: () => import('@/views/error/noMenu.vue'),
+        name: 'noMenu',
+        meta: { title: '提示',icon: 'form',  affix: true }
+      }
+    ]
+  },
+  {
     path: '',
     component: Layout,
     redirect: '/institution',
diff --git a/src/store/modules/user.js b/src/store/modules/user.js
index 201f2d2..beee1d5 100644
--- a/src/store/modules/user.js
+++ b/src/store/modules/user.js
@@ -2,6 +2,7 @@
 import { getToken, setToken, removeToken } from '@/utils/auth'
 import defAva from '@/assets/images/profile.jpg'
 import Cookies from "js-cookie";
+import {getUserById} from "@/api/sysUsers";
 const useUserStore = defineStore(
   'user',
   {
@@ -21,10 +22,13 @@
         const code = userInfo.code
         const uuid = userInfo.uuid
         const identity = userInfo.identity
-        return new Promise((resolve, reject) => {
-          login(username, password, code, uuid, identity).then(res => {
+        return new Promise( (resolve, reject) => {
+          login(username, password, code, uuid, identity).then( async res => {
             setToken(res.data.token)
             Cookies.set('userInfo',JSON.stringify(res.data))
+            await getUserById({userId:res.data.id}).then(res => {
+              Cookies.set('userState',JSON.stringify(res.data.state))
+            })
             this.token = res.data.token
             resolve()
           }).catch(error => {
diff --git a/src/utils/request.js b/src/utils/request.js
index 5f7ce45..d2da40a 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -55,7 +55,7 @@
       const s_url = sessionObj.url;                // 请求地址
       const s_data = sessionObj.data;              // 请求数据
       const s_time = sessionObj.time;              // 请求时间
-      const interval = 1;                       // 间隔时间(ms),小于此时间视为重复提交
+      const interval = 0;                       // 间隔时间(ms),小于此时间视为重复提交
       if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url && s_url!=='/system/common/uploadFile') {
         const message = '数据正在处理,请勿重复提交';
         console.warn(`[${s_url}]: ` + message)
diff --git a/src/views/components/loginForm.vue b/src/views/components/loginForm.vue
index 57b41b7..e2e2f2a 100644
--- a/src/views/components/loginForm.vue
+++ b/src/views/components/loginForm.vue
@@ -109,7 +109,7 @@
 const redirect = ref(undefined);
 
 onMounted(()=>{
-
+  Cookies.remove("userState");
 })
 
 const openRegist = ()=>{
@@ -156,11 +156,21 @@
         // }, {});
         const userInfo = JSON.parse(Cookies.get('userInfo'))
           if(userInfo.identity === 0 ) {
+              //监管用户
               sidebarRouters.value =  menu.adminMenu
               Cookies.set('routers',JSON.stringify(sidebarRouters.value))
           }else if(userInfo.identity === 1) {
-              sidebarRouters.value =  menu.agencyMenu
-              Cookies.set('routers',JSON.stringify(sidebarRouters.value))
+            const userState = JSON.parse(Cookies.get('userState'))
+            console.log("userState",userState)
+              //机构用户
+              //未审核状态不显示菜单
+              if(userState !==2 ){
+                sidebarRouters.value = menu.noMenu
+                Cookies.set('routers',JSON.stringify(sidebarRouters.value))
+              }else {
+                sidebarRouters.value =  menu.agencyMenu
+                Cookies.set('routers',JSON.stringify(sidebarRouters.value))
+              }
           }
           let path = ""
           if(sidebarRouters.value[0].children && sidebarRouters.value[0].children.length > 0){
diff --git a/src/views/error/noMenu.vue b/src/views/error/noMenu.vue
new file mode 100644
index 0000000..89c8ffc
--- /dev/null
+++ b/src/views/error/noMenu.vue
@@ -0,0 +1,63 @@
+<template>
+    <div class="app-container">
+      <div style="display: flex;align-items: center">
+        <span style="font-size: 18px">当前帐号状态:</span>
+        <el-tag :type=" data.state == 0 ? 'info' : data.state == 1 ? '' : data.state == 2 ?'success': data.state == 3 || data.state == 4 ?'danger':''">
+          {{data.stateMsg}}
+        </el-tag>
+      </div>
+      <span style="font-size: 25px;font-weight: 600;margin-top: 20px">请<span v-if="data.state ===3">整改提交后</span>联系监管部门审核</span>
+    </div>
+</template>
+
+<script setup>
+import {getCurrentInstance, onMounted, reactive, ref, toRefs, watch} from "vue";
+import Cookies from "js-cookie";
+import {getUserById} from "@/api/sysUsers";
+import {ElMessage} from "element-plus";
+import menu from "@/layout/components/Sidebar/menu";
+const { proxy } = getCurrentInstance();
+const data = reactive({
+  state: null,
+  stateMsg: ''
+});
+
+const userInfo = ref();
+//页面加载
+onMounted( () => {
+  userInfo.value = JSON.parse(Cookies.get('userInfo'))
+  getState();
+});
+const sidebarRouters = ref([])
+const getState = async () => {
+  console.log('menu')
+  const param = {
+    userId: userInfo.value.id
+  }
+  const res = await getUserById(param)
+  if(res.code == 200){
+    data.state = res.data.state;
+    data.stateMsg = res.data.state === 0?'暂存':res.data.state === 1 ? '审核中':res.data.state === 2 ? '审批通过':res.data.state === 3? '审批驳回':'已作废';
+    if(res.data.state === 2) {
+      sidebarRouters.value =  menu.agencyMenu
+      Cookies.set('routers',JSON.stringify(sidebarRouters.value))
+      location.href = '/project';
+    }
+  }else{
+    ElMessage({
+      type: 'warning',
+      message: res.message
+    })
+  }
+}
+</script>
+
+<style scoped lang="scss">
+.app-container{
+  margin-top: 10%;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  flex-direction: column;
+}
+</style>
diff --git a/src/views/safetyReview/projectManage/components/expertsList.vue b/src/views/safetyReview/projectManage/components/expertsList.vue
index 2d78c70..931216c 100644
--- a/src/views/safetyReview/projectManage/components/expertsList.vue
+++ b/src/views/safetyReview/projectManage/components/expertsList.vue
@@ -147,12 +147,12 @@
               v-model:limit="queryParams.pageSize"
               @pagination="getList"
           />
-            <template #footer>
-                    <span class="dialog-footer">
-                        <el-button @click="dialogVisible = false" size="default">取 消</el-button>
-                        <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>
-                    </span>
-            </template>
+<!--            <template #footer>-->
+<!--                    <span class="dialog-footer">-->
+<!--                        <el-button @click="dialogVisible = false" size="default">取 消</el-button>-->
+<!--                        <el-button type="primary"  @click="onSubmit" size="default" v-preReClick>确认</el-button>-->
+<!--                    </span>-->
+<!--            </template>-->
         </el-dialog>
       <project-dialog ref="projectRef" @getList="getList"></project-dialog>
     </div>
@@ -292,6 +292,12 @@
 
 const handleSelectionChange = (val) => {
   data.selected = val
+  if(data.selected.length>0){
+    emit('getName',data.title,data.selected[data.selected.length - 1])
+    data.dialogVisible = false
+  }
+
+
 }
 
 const search = ()=>{

--
Gitblit v1.9.2