浏览代码

刷新保留信息等

zhouna 3 年之前
父节点
当前提交
44121e9a15

+ 8 - 3
src/api/index.js

@@ -1,4 +1,5 @@
 import api from './request';
+import {message} from 'antd'
 const axios=require('axios');
 axios.defaults.baseURL = 'http://192.168.2.237:8871/';//'http://192.168.2.232:8871';
 const post=(url,data)=>{
@@ -39,13 +40,14 @@ const get=(url,data)=>{
     });
 };
 
-function interceptors(param){
+function interceptors(){
 //拦截所有请求添加token
-    const {token,sysId,hisId} = param;
     axios.interceptors.request.use(function (req) {
         const tokenStr = localStorage.getItem('token');
+        const sysId = localStorage.getItem('systemId');
+        const hisId = localStorage.getItem('hospitalId');
         if (tokenStr) {
-            token&&(req.headers.Authorization = `Bearer ${tokenStr}`);
+            (req.headers.Authorization = `Bearer ${tokenStr}`);
             sysId&&(req.headers.softwareId=sysId);
             hisId&&(req.headers.hospitalId=hisId);
             return req;
@@ -60,6 +62,9 @@ function interceptors(param){
         const code = res.data.code;
         if (code===401) {   //401返回登录
             localStorage.removeItem("token");
+            localStorage.removeItem("systemId");
+            localStorage.removeItem("hospitalId");
+            message.error("登录信息失效,请重新登录");
             window.location = '/';
         }else{
             return res;

+ 29 - 1
src/components/AHeader/index.js

@@ -1,14 +1,18 @@
 import { Layout, Dropdown ,Menu } from 'antd';
 import { withRouter } from 'react-router'
 import { useState, useEffect } from 'react';
-import { useSelector } from 'react-redux';
+import { useSelector,useDispatch } from 'react-redux';
 import utils from '@utils/index';
 import logo from '@images/logo.png';
 import msg from '@images/msg.png';
 import me from '@images/me.png';
 import down from '@images/down.png';
 import './index.less'
+import {message} from "antd/lib/index";
+import { setSys,setUser } from '@reducers/userInfo.js';
+import apiObj from '@api/index';
 
+const {xPost,api} =  apiObj;
 const propTypes = {
 
 }
@@ -16,6 +20,7 @@ const defaultProps = {};
 const { Header } = Layout;
 const { getTimeDetail } = utils;
 function AHeader({ history,hideName }){
+    const dispatch = useDispatch();
     const [dateTime,setDateTime] = useState('');
     const { user, sysName} = useSelector((state)=>{
         return state.userInfo;
@@ -23,8 +28,28 @@ function AHeader({ history,hideName }){
     //退出
     function loginOut(){
         localStorage.removeItem("token");
+        localStorage.removeItem("systemId");
+        localStorage.removeItem("hospitalId");
         history.push('/login');
     }
+    //获取组织列表
+    function getOrgList(){
+        xPost(api.getUserHospitals).then((res)=>{
+            if(res.data.code===200){
+                const data = res.data.data;
+                const { userInfo,software } = data;
+                const sysId = localStorage.getItem("systemId");
+                const hisId = localStorage.getItem("hospitalId");
+                const sys = software.find((it)=>{return +it.id===+sysId});
+                dispatch(setUser(userInfo));
+                dispatch(setSys({sysId,sysName:sys.name,hisId}));
+            }else{
+                message.warning(res.data.msg||'获取医院列表失败');
+            }
+        }).catch(()=>{
+            message.error("接口出错");
+        });
+    }
     //修改密码
     function changePsd(){
 
@@ -38,6 +63,9 @@ function AHeader({ history,hideName }){
     }
     useEffect(()=>{
         countTime();
+        if(!user.name){
+            getOrgList();
+        }
         return function clearUp(){
             clearInterval(interVal)
         }

+ 9 - 1
src/components/AMenu/index.js

@@ -23,8 +23,10 @@ const pageMap = {
     '病区管理': <InpaManager />
 }
 
+let firsted=false;
 function AMenu() {
-    const [menuList,setMenuList] = useState([]);
+    const [menuList,setMenuList] = useState([]);        //菜单列表数据
+    //let [firsted,setFirsted] = useState(false);      //是否已设置过第一个菜单选中
     const dispatch = useDispatch();
     //当前选中的菜单
     const {activeTab ,panes} = useSelector(state => {
@@ -50,6 +52,12 @@ function AMenu() {
                 const data =  res.data.data;
                 const menuData = data.showMenuInfo;
                 setMenuList(menuData);
+                /*if(!firsted){console.log(21)
+                    //dispatch(
+                        //add({ title: it.menuName, content: pageMap[it.menuName] || <NullPage />, key: it.menuName })
+                    //);
+                    firsted=true;console.log(44,firsted,panes)
+                }*/
             }else{
                 message.error(res.data.msg||'获取菜单失败');
             }

+ 5 - 1
src/components/ATabs/index.js

@@ -1,5 +1,5 @@
 import React from 'react';
-import { Tabs,Dropdown, Button,Menu } from 'antd';
+import { Tabs,Dropdown, Button,Menu,message } from 'antd';
 import { DownOutlined } from '@ant-design/icons';
 import { useDispatch,useSelector } from 'react-redux'
 import { active, close, closeOther} from '../../store/reducers/tabPanes'
@@ -26,6 +26,10 @@ function ATabs(){
     }
     //关闭当前tab
     function onDelTab(activeKey){
+        if(panes.length===1){
+            message.warning("至少保留一个标签哦~",1);
+            return;
+        }
         const paneIndex = panes.findIndex((it)=>it.key===activeKey);
         dispatch(close({del:paneIndex,active:panes[1].key}))
     }

+ 1 - 1
src/components/Login/index.js

@@ -17,7 +17,7 @@ function Login({history}) {
                 const data = res.data.data;
                 localStorage.setItem('token',data.token);
                 message.success('登录成功',1);
-                interceptors({token:data.token});
+                interceptors();
                 history.push('/choose')
             }else{
                 message.error(res.data.msg||'数据有误')

+ 4 - 2
src/components/SysChoose/index.js

@@ -63,7 +63,9 @@ function SysChoose({history}) {
     //点击进入
     function getIn(id){
         dispatch(setSys({sysId,sysName,hisId:id}));
-        interceptors({sysId,hisId:id});
+        localStorage.setItem('systemId',sysId);
+        localStorage.setItem('hospitalId',id);
+        interceptors();
         history.push("/manage");
     }
     //显示子医院列表,传空为隐藏,传id为显示
@@ -125,7 +127,7 @@ function SysChoose({history}) {
                                                         </div>
                                                         <div className="card-content">
                                                             <div className='name'>{it.hospitalName}</div>
-                                                            {it.type!==0?(<><a className='get-in' onClick={()=>showSubPop(it.hospitalId)}>点击选择 <img src={rightIcon} alt="箭头"/></a>
+                                                            {it.children?(<><a className='get-in' onClick={()=>showSubPop(it.hospitalId)}>点击选择 <img src={rightIcon} alt="箭头"/></a>
                                                                 {showId===it.hospitalId?<div className="pop-select">
                                                                 <p className='pop-title'>
                                                                     <span>选择子组织</span>

+ 1 - 1
src/index.js

@@ -8,7 +8,7 @@ import utils from '@api/index';
 
 const { interceptors } = utils;
 const store = configureStore();
-interceptors({});       //拦截所有请求,401跳登录
+interceptors();       //拦截所有请求,401跳登录
 const renderApp = () =>
     render(
         <Provider store={store}>