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