zsw007 преди 3 години
родител
ревизия
aeb242d802

+ 0 - 1
public/index.html

@@ -27,7 +27,6 @@
     <title>AI质控权限系统</title>
   </head>
   <body>
-    <noscript>You need to enable JavaScript to run this app.</noscript>
     <div id="root"></div>
     <!--
       This HTML file is a template.

+ 39 - 3
src/api/index.js

@@ -1,7 +1,33 @@
 import api from './request';
-import {message} from 'antd'
+import { message, Spin } from 'antd'
+import ReactDOM from 'react-dom';
+import '../common/common.less'
 const axios=require('axios');
 //axios.defaults.baseURL = 'http://192.168.3.184:8871';//'http://192.168.2.237:8871/';
+
+// 当前正在请求的数量
+let requestCount = 0
+
+// 显示loading
+function showLoading () {
+    if (requestCount === 0) {
+        var dom = document.createElement('div')
+        dom.setAttribute('id', 'loading')
+        document.body.appendChild(dom)
+        ReactDOM.render(<Spin tip="加载中..." size="large"/>, dom)
+    }
+    requestCount++
+}
+
+// 隐藏loading
+function hideLoading () {
+    requestCount--
+    if (requestCount === 0) {
+        document.body.removeChild(document.getElementById('loading'))
+    }
+}
+
+
 const post=(url,data)=>{
     return axios({
         method:'post',
@@ -49,30 +75,40 @@ function interceptors(){
         const tokenStr = localStorage.getItem('token');
         const sysId = localStorage.getItem('systemId');
         const hisId = localStorage.getItem('hospitalId');
-        if (tokenStr) {
+        if (tokenStr && req.headers.isLoading !== false) {
             (req.headers.Authorization = `Bearer ${tokenStr}`);
             sysId&&(req.headers.softwareId=sysId);
             hisId&&(req.headers.hospitalId=hisId);
+            showLoading()
             return req;
         } else {
+            showLoading()
             return req;
         }
     }, function (error) {
+        if(error.config.headers.isLoading !== false){
+            hideLoading()
+        }
         return Promise.reject(error);
     });
     //拦截响应
     axios.interceptors.response.use(function (res) {
         const code = res.data.code;
-        if (code===401) {   //401/403返回登录
+        if (code===401 || code === 403 && res.config.headers.isLoading !== false) {   //401/403返回登录
             localStorage.removeItem("token");
             localStorage.removeItem("systemId");
             localStorage.removeItem("hospitalId");
             message.error("登录信息失效,请重新登录");
             window.location = '/';
+            hideLoading()
         }else{
+            hideLoading()
             return res;
         }
     }, function (error) {
+        if(error.config.headers.isLoading !== false){
+            hideLoading()
+        }
         return Promise.reject(error);
     });
 }

+ 5 - 1
src/api/request.js

@@ -2,6 +2,7 @@ const request = {
     login:'/security-center/userManage/login',
     midifyPassword: '/security-center/userManage/midifyPassword',//修改密码
     getUserHospitals:'/security-center/userManage/getUserHospitals',      //用户关联的医院列表
+    
     //组织管理相关接口
     getHospitalListInfo:'/security-center/hospitalManage/getHospitalListInfo',  //列表数据
     getManagerBoxInfo:'/security-center/hospitalManage/getManagerBoxInfo',  //筛选下拉数据
@@ -11,6 +12,8 @@ const request = {
     updateHospital:'/security-center/hospitalManage/updateHospital',   //修改
     getHospitalById:'/security-center/hospitalManage/getHospitalById', //获取详情
     resetPassword:'/security-center/hospitalManage/resetPassword',  //重置密码
+
+    
     //角色管理相关接口
     getUserMenuResourceTree:'/security-center/roleManage/getUserMenuResourceTree',      //获取菜单权限树
     addRole:'/security-center/roleManage/addRole',      //添加角色
@@ -25,7 +28,7 @@ const request = {
 
     //用户管理相关接口
     getUserPage: '/security-center/userManage/getUserPage',//用户列表
-    getHospitalTree: "/security-center/userManage/getHospitalTree",
+    getHospitalTree: "/security-center/userManage/getHospitalTree", // 所属组织
     addUser: '/security-center/userManage/addUser',//添加用户
     updateUser: '/security-center/userManage/updateUser',//修改用户
     getUserById: '/security-center/userManage/getUserById',//查看用户
@@ -33,6 +36,7 @@ const request = {
     deleteUser: '/security-center/userManage/deleteUser',//删除用户
     resetPasswordUser: '/security-center/userManage/resetPassword',//重置密码
 
+
     // 字典管理相关接口
     getDictionary: '/security-center/dictionaryManage/getDictionary',//字典管理列表
     getCodeCategory: '/security-center/dictionaryManage/getCodeCategory',//字典管理代码类别

+ 20 - 2
src/common/common.less

@@ -2,12 +2,13 @@
 @bg-color:#fff;  /**主题背景色**/
 @header-height:50px;  /***Header高度**/
 @table-th-color:#F2F4F6;  /***表头背景色***/
-@active-bg:#DEF1FF;   /***下拉项选中背景色***/
+@active-bg:#cfe6f7;   /***下拉项选中背景色***/
 
 body{
   background: @body-bg;
   overflow-y: hidden;
 }
+
 .clearfix:after{
   content: "";
   display: block;
@@ -80,6 +81,7 @@ body{
 .ant-steps-item-icon, .ant-steps-item-content{
   vertical-align: unset;
 }
+
 //启用
 .Enable::before{
   content: "";
@@ -92,6 +94,7 @@ body{
   background: @link-color;
   border-radius: 50%;
 }
+
 //禁用
 .Disable::before{
   content: "";
@@ -155,4 +158,19 @@ body{
     vertical-align: middle;
     text-align: center;
   }
-}
+}
+
+// 加载中的样式
+#loading {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  background: rgba(0, 0, 0, 0.75);
+  display: flex;
+  align-items: center;
+  justify-content: center;
+  z-index: 9999;
+  font-size: 20px;
+}

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

@@ -130,6 +130,7 @@ function AHeader({ history, hideName }) {
             {hideName ? '' : <><span className='break-line'>|</span>
                 <span className='sys-name'>{sysName}</span></>}
             <div className='infos'>
+                {/* 头部日期 */}
                 <span className='time'>{dateTime}</span>
                 <span className='break-line'>|</span>
                 <div className="unRead-msg-cont" onClick={showMyMsgPage}>

+ 14 - 7
src/components/AMenu/index.js

@@ -42,8 +42,9 @@ const pageMap = {
 let firstMenuPage = {}; //第一个菜单,自动激活时用
 function AMenu() {
     const [menuList, setMenuList] = useState([]); //菜单列表数据
-    const dispatch = useDispatch();
-    //当前选中的菜单
+    console.log('菜单数据:', menuList);
+    const dispatch = useDispatch(); 
+    //当前选中的菜单 useSelector: 用来从redux的store对象中提取数据(state)
     const { activeTab, panes } = useSelector(state => {
         return state.tabPanes;
     });
@@ -62,28 +63,30 @@ function AMenu() {
             add({ title: idName[1], content: pageMap[idName[0]] || <NullPage />, key: val.key })
         )
     }
+
     //获取菜单数据
     function getUserMenus() {
         post(api.getUserShowMemuTree).then((res) => {
             if (res.data.code === 200) {
                 const data = res.data.data;
                 const menuData = data.showMenuInfo;
-                console.log('菜单导航:', menuData);
                 setMenuList(menuData);
                 firstMenuPage = menuData[0].children ? menuData[0].children[0] : menuData[0]
-                
+                console.log('firstMenuPage???', firstMenuPage);
             } else {
                 message.error(res.data.msg || '获取菜单失败');
             }
         })
     }
+
+    // 渲染菜单导航列表
     function getSubMenu(data) {
         return data.map((it) => {
             if (it.menuType === '1') {
                 return (
                     <Menu.Item key={it.code+"&"+it.menuName}>{it.menuName}</Menu.Item>
                 )
-            } else if (it.menuType === '0') {
+            } else if (it.menuType === '0' ) {
                 return (
                     <SubMenu key={it.code+"&"+it.menuName} title={it.menuName}>
                         {it.children ? getSubMenu(it.children) : ''}
@@ -94,7 +97,10 @@ function AMenu() {
             }
         })
     }
-    useEffect(() => {
+
+    // 函数组件中没有生命周期  可以用 useEffect代替
+    // useEffect是:componentDidMount,componentDidUpdate 和 componentWillUnmount 这三个函数的组合。
+    useEffect(() => { 
         getUserMenus();
         const timeO = setTimeout(() => { 
             dispatch(
@@ -104,9 +110,10 @@ function AMenu() {
         return function clearOut() {
             clearTimeout(timeO);
         }
-
     }, []);
+
     return (
+            // 菜单导航
             <Menu
                 /*defaultSelectedKeys={[menuList[0].menuName]}
                 defaultOpenKeys={[menuList[0].menuId]}*/

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

@@ -13,10 +13,11 @@ const propTypes = {
 }
 const defaultProps = {};
 function ATabs(){
+    // useSelector: 从store中获取state中的数据的
     const panes =useSelector(state => {
         return state.tabPanes.panes
     });
-    const dispatch = useDispatch();
+    const dispatch = useDispatch(); // dispatch: 可以找到store中所封装的方法 例如:close、active等方法
     const activeTab = useSelector(state => {
         return state.tabPanes.activeTab
     });

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

@@ -5,7 +5,7 @@ import {
     Redirect
 } from "react-router-dom";
 import RouteWithSubRoutes from '@utils/RouteWithSubRoutes'
-import routes from '@utils/routes';
+import routes from '@utils/routes'; 
 
 export default function AuthIndex() {
     //const user = localStorage.getItem("token");

+ 12 - 26
src/components/DictManager/AddDict.js

@@ -12,10 +12,9 @@ import React, {
   const { organizationData } = utils;
   const { SHOW_PARENT } = TreeSelect;
   const { TextArea } = Input;
-  function AddUser(props) {
+  function AddDict(props) {
     useEffect(() => {
       getHospitalTree();
-      getCreateRoles();
     }, []);
     const [form] = Form.useForm();
     const { id, type, formData, roleList } = useContext(UserContext);
@@ -29,8 +28,8 @@ import React, {
       return state.staticInfo;
     });
     const { titleList } = staticInfo;
-    const initialValues = formData;
-    console.log('需修改的数据:',formData);
+    // 通过setFormData里面的formData来传递setFormData里面的参数然后赋值给initialValues 再将initialValues数据赋值给Form表单上
+    const initialValues = formData; 
     console.log(form.getFieldsValue())
     let addHospitalTreeVOs = {
       depts: [],
@@ -46,21 +45,7 @@ import React, {
         }
       })
     }
-    //获取当前用于所属角色
-    function getCreateRoles() {
-      const params = {
-        softwareId: ''
-      }
-      xPost(api.getCreateRoles, params).then((res) => {
-        if (res.data.code === 200) {
-          const data = res.data.data;
-          console.log(data);
-          
-          let arr = JSON.parse(JSON.stringify(data).replace(/name/g, 'title').replace(/id/g, 'value'))
-          setTreeRloe(arr)
-        }
-      })
-    }
+    
     // 去重
     function unique(arr) {
       return arr.filter(function (item, index, arr) {
@@ -136,14 +121,15 @@ import React, {
       params.addHospitalTreeVO = addHospitalTreeVO
       if (type == 2) {
         params.id = id
-        editUser(params)
+        editDict(params)
       } else {
-        addUser(params)
+        AddDict(params)
       }
   
     };
-    function addUser(param) {
-      post(api.addHospitalSet, param).then((res) => {
+    // 新增字典
+    function AddDict(param) {
+      post(api.addDictionary, param).then((res) => {
         if (res.data.code === 200) {
           props.userChange()
           message.success(res.data.message);
@@ -153,7 +139,8 @@ import React, {
         }
       })
     }
-    function editUser(param) {
+    // 修改字典
+    function editDict(param) {
       post(api.updateDictionary, param).then((res) => {
         console.log('修改字典管理:', res);
         if (res.data.code === 200) {
@@ -203,7 +190,6 @@ import React, {
             ]}
           >
             <Input placeholder="请输入字典编码" autoComplete='off'/>
-  
           </Form.Item>
           <Form.Item
             name="name"
@@ -260,4 +246,4 @@ import React, {
     );
   }
   
-  export default AddUser;
+  export default AddDict;

+ 9 - 3
src/components/DictManager/index.js

@@ -93,6 +93,7 @@ function DictManager() {
     post(api.getDictionary, param || params).then((res) => {
       if (res.data.code === 200) {
         const data = res.data.data;
+        console.log('表格数据???', data);
         setDictList(data.records);
         setTotal(data.total)
       }
@@ -190,6 +191,7 @@ function DictManager() {
     setQuery(query)
     getDictionary()
   }
+
   function changePage(page, pageSize) {
     params.current = page
     params.size = pageSize
@@ -210,13 +212,17 @@ function DictManager() {
     setQuery(param)
     getDictionary(param);
   };
+
+  // 重置
   const onReset = () => {
-    // setCurrent(1)
-    // setParams(data)
-    // setQuery(query)
+    setCurrent(1)
+    setParams(data)
+    //setQuery(query)
     form.resetFields();
     getDictionary(data);
   };
+
+  // 删除
   const messageBox = (type, id) => {
     setMsvisible(true)
     setDictId(id)

+ 9 - 3
src/components/Login/index.js

@@ -11,19 +11,22 @@ function Login({history}) {
     if(user){
         history.push('/manage');
     }
+
+    // 登录数据接口
     function onLogin(data){
         post(api.login,data).then((res)=>{
             if(res.data.code===200){
                 const data = res.data.data;
                 localStorage.setItem('token',data.token);
-                message.success('登录成功',1);
-                interceptors();
+                message.success('登录成功', 1);
+                interceptors(); // 请求响应拦截器
                 history.push('/choose')
             }else{
                 message.error(res.data.msg||'数据有误')
             }
         })
     }
+    
     return (
         <div className="login-container clearfix">
             <div className="bg-box">
@@ -41,7 +44,10 @@ function Login({history}) {
                         name="username"
                         rules={[{ required: true, message: '请输入用户名!' }]}
                     >
-                        <Input prefix={<UserOutlined className="site-form-item-icon" />} placeholder="请输入用户名" autoComplete='off'/>
+                        <Input 
+                            prefix={<UserOutlined className="site-form-item-icon" />}
+                            placeholder="请输入用户名" 
+                            autoComplete='off'/>
                     </Form.Item>
                     <Form.Item
                         label='密码'

+ 7 - 4
src/components/PageLayout/index.js

@@ -9,9 +9,7 @@ import { setStatusList, setHisTypeList, setTitleList, setDataList,setMsgTypeList
 
 const {  Content, Sider } = Layout;
 const {post,api,xPost} = apiObj;
-const propTypes = {
-
-}
+const propTypes = {}
 const defaultProps = {};
 
 function PageLayout(){
@@ -25,6 +23,7 @@ function PageLayout(){
         //     return;
         // }
         post(api.getManagerBoxInfo).then((res) => {
+            console.log('筛选下拉数据???', res);
             if (res.data.code === 200) {
                 const data = res.data.data;
                 dispatch(setHisTypeList(data[43]||data[45])); //非单家医院为医院类型43,单家医院为病区45
@@ -41,11 +40,14 @@ function PageLayout(){
     },[]);
     return (
         <Layout>
+            {/* 头部区域 */}
             <AHeader></AHeader>
             <Layout>
+                {/* 侧边导航区域 */}
                 <Sider className='page-sider'>
                     <AMenu></AMenu>
                 </Sider>
+                {/* 内容区域 */}
                 <Content className='page-content'>
                     <ATabs></ATabs>
                 </Content>
@@ -53,7 +55,8 @@ function PageLayout(){
         </Layout>
     )
 }
-
+ 
+// propTypes : 进行类型检查
 PageLayout.propTypes = propTypes;
 PageLayout.defaultProps = defaultProps;
 export default PageLayout;

+ 39 - 26
src/components/ParaManager/AddPara.js

@@ -12,9 +12,9 @@ const { Option, OptGroup } = Select;
 const { organizationData } = utils;
 const { SHOW_PARENT } = TreeSelect;
 const { TextArea } = Input;
-function AddUser(props) {
+function AddPara(props) {
   useEffect(() => {
-    getHospitalTree();
+    getHospitalNames();
     getCreateRoles();
   }, []);
   const [form] = Form.useForm();
@@ -29,6 +29,9 @@ function AddUser(props) {
   const staticInfo = useSelector(state => {
     return state.staticInfo;
   });
+  const [query, setQuery] = useState({
+    hospitalName: ''
+  });
   const { titleList } = staticInfo;
   const initialValues = formData;
   console.log(formData);
@@ -37,12 +40,16 @@ function AddUser(props) {
     depts: [],
     hospitals: [],
   }
+
   //获取当前用户组织
-  function getHospitalTree() {
-    post(api.getHospitalTree).then((res) => {
+  function getHospitalNames() {
+    xPost(api.getHospitalNames, query).then((res) => {
       if (res.data.code === 200) {
         const data = res.data.data;
-        const treeData = organizationData(data)
+        let treeData = []
+        treeData = data.map(item => {
+          return item.hospitalName
+        })
         setTreeData(treeData)
       }
     })
@@ -139,21 +146,22 @@ function AddUser(props) {
   const onChangeRloe = value => {
     form.setFieldsValue({ roles: value })
   };
-  
+  // 点击保存
   const onFinish = values => {
     let params = values
     addHospitalTreeVO.hospitals = unique(addHospitalTreeVO.hospitals)
     params.addHospitalTreeVO = addHospitalTreeVO
     if (type == 2) {
       params.id = id
-      editUser(params)
+      editPara(params)
     } else {
-      addUser(params)
+      AddPara(params)
     }
-
   };
-  function addUser(param) {
-    post(api.addDictionary, param).then((res) => {
+
+  // 添加
+  function AddPara(param) {
+    post(api.addHospitalSet, param).then((res) => {
       if (res.data.code === 200) {
         props.userChange()
         message.success(res.data.message);
@@ -163,9 +171,11 @@ function AddUser(props) {
       }
     })
   }
-  function editUser(param) {
+  
+  // 修改
+  function editPara(param) {
     post(api.updateHospitalSet, param).then((res) => {
-      console.log('修改字典管理:', res);
+      console.log('修改参数管理:', res);
       if (res.data.code === 200) {
         props.userChange()
         message.success(res.data.message);
@@ -190,20 +200,17 @@ function AddUser(props) {
         initialValues={initialValues}
       >
         <Form.Item
-          name="addHospitalTreeVO"
+          name="hospitalName"
           label="所属组织"
           rules={[{ required: true, message: '请选择所属组织' }]}
         >
-          <TreeSelect
-            showSearch={false}
-            treeData={treeData}
-            onChange={onChange}
-            maxTagCount={1}
-            treeCheckable
-            showCheckedStrategy={SHOW_PARENT}
-            placeholder="请选择组织"
-            style={{ width: '100%' }}
-          />
+          <Select placeholder="请选择职称">
+              {treeData.map((item) => {
+                return (
+                  <Option value={item} key={item}>{item}</Option>
+                )
+              })}
+            </Select>
         </Form.Item>
         <Form.Item
           name="name"
@@ -224,7 +231,6 @@ function AddUser(props) {
           rules={[{ required: true, message: '请输入参数值', whitespace: true }]}
         >
           <Input placeholder="请输入参数值" autoComplete='off'/>
-
         </Form.Item>
 
         <Form.Item
@@ -250,6 +256,13 @@ function AddUser(props) {
         >
             <TextArea placeholder='请输入参数说明' rows={4} />
         </Form.Item>
+        <Form.Item
+            name="status"
+            valuePropName="checked"
+            label="当前状态"
+          >
+            <Switch onChange={swichChange} />
+          </Form.Item>
         {type == 3 ?
           <Form.Item wrapperCol={{ offset: 10, span: 16 }}>
             <Space size="middle">
@@ -275,4 +288,4 @@ function AddUser(props) {
   );
 }
 
-export default AddUser;
+export default AddPara;

+ 36 - 32
src/components/ParaManager/index.js

@@ -1,5 +1,5 @@
 import React, { useState, useEffect, useRef } from 'react';
-import { Form, Input, Button, Table, Select, TreeSelect, Pagination, Space, Menu, Dropdown, Modal, Breadcrumb, message, Row, Col } from 'antd';
+import { Form, Input, Button, Table, Select, TreeSelect, Pagination, Space, Menu, Dropdown, Modal, Breadcrumb, message, Row, Col, Spin  } from 'antd';
 import { DownOutlined, PlusOutlined, ExclamationCircleOutlined } from '@ant-design/icons';
 import AddUser from './AddPara'
 import '@common/common.less';
@@ -13,7 +13,7 @@ const { Option } = Select;
 function DictManager() {
   useEffect(() => {
     getHospitalSet();
-    getHospitalTree();
+    getHospitalNames();
   }, []);
   const [dictList, setDictList] = useState([]);
   const [title, setTitle] = useState("");
@@ -22,6 +22,7 @@ function DictManager() {
   const [val, setParaVal] = useState("");
   const [hospitalName, setHospitalName] = useState([]);
   const [code, setParaCode] = useState("");
+  const [status, setParaStatus] = useState("");
   const [remark, setParaRemark] = useState("");
   const [msvisible, setMsvisible] = useState(false);
   const [modalType, setModalType] = useState("");
@@ -30,7 +31,7 @@ function DictManager() {
   const [username, setUsername] = useState(null);
   const [roleList, setRoleList] = useState([]);
   const [size, setSize] = useState(15);
-  const [treeData, setTreeData] = useState([]);
+  const [HospitalNamesList, setHospitalNamesList] = useState([]);
   const [total, setTotal] = useState(0);
   const [current, setCurrent] = useState(1);
   const { organizationData } = utils;
@@ -48,8 +49,7 @@ function DictManager() {
     code: ''
   });
   const [query, setQuery] = useState({
-    hospitalName: '',
-    code: ''
+    hospitalName: ''
   });
   const [form] = Form.useForm();
   const tipText = {
@@ -74,15 +74,16 @@ function DictManager() {
   }
 
   //新增弹窗
-  const showModal = (name, type, flag, id, hospitalName, val, code, remark) => {
+  const showModal = (title, type, flag, id, hospitalName, name, val, code, remark, status) => {
     setVisible(type);
-    setTitle(name);
     setType(flag)
     setParaId(id)
-    setParaVal(val)
     setHospitalName(hospitalName)
+    setParaVal(val)
+    setTitle(title);
     setParaCode(code)
     setParaRemark(remark)
+    setParaStatus(status)
     if (flag == 1) {
       setFormData({
         status: '1'
@@ -90,13 +91,13 @@ function DictManager() {
     }
     if ( flag == 2) {
       setFormData({
-        status: '1',
         id: id,
         hospitalName: hospitalName,
         name: name,
         val: val,
         code: code,
-        remark: remark
+        remark: remark,
+        status: '1',
       })
     }
   }
@@ -114,12 +115,17 @@ function DictManager() {
   }
 
   //获取当前所属组织
-  function getHospitalTree() {
-    post(api.getHospitalTree).then((res) => {
+  function getHospitalNames() {
+    xPost(api.getHospitalNames, query).then((res) => {
+      console.log('所属组织??', res);
       if (res.data.code === 200) {
         const data = res.data.data;
-        const treeData = organizationData(data)
-        setTreeData(treeData)
+        console.log('所属组织??', data);
+        let HospitalNamesList = []
+        HospitalNamesList = data.map(item => {
+          return item.hospitalName
+        })
+        setHospitalNamesList(HospitalNamesList)
       }
     })
   }
@@ -130,7 +136,7 @@ function DictManager() {
         addHospitalTreeVOs.depts.push(it.split('-')[1])
       } else {
         addHospitalTreeVOs.hospitals.push(it)
-        gethospitals(treeData, it)
+        gethospitals(HospitalNamesList, it)
       }
     })
     setAddHospitalTreeVO(addHospitalTreeVOs)
@@ -328,7 +334,8 @@ function DictManager() {
     { title: '参数名', dataIndex: 'name', key: 'index' },
     { title: '参数值', dataIndex: 'val', key: 'index' },
     { title: '参数说明', dataIndex: 'code', key: 'index' },
-    {title: '参数描述', dataIndex: 'remark', key: 'status'},
+    {title: '参数描述', dataIndex: 'remark', key: 'index'},
+    {title: '状态', dataIndex: 'status', key: 'status'},
     {
       title: '操作', dataIndex: 'key', render: (text, record) => (
         <Space size="middle">
@@ -340,7 +347,8 @@ function DictManager() {
             record.name,
             record.val,
             record.code,
-            record.remark
+            record.remark,
+            record.status,
             )} >修改</a>
           <a className='delete' onClick={() => messageBox(1, record.id)}>删除</a>
         </Space>
@@ -360,21 +368,17 @@ function DictManager() {
         >
           <Row gutter={24}>
           <Col span={5} key={0}>
-          <Form.Item
-          name="addHospitalTreeVO"
-          label="所属组织"
-        >
-          <TreeSelect
-            showSearch={false}
-            treeData={treeData}
-            onChange={onChange}
-            maxTagCount={1}
-            treeCheckable
-            showCheckedStrategy={SHOW_PARENT}
-            placeholder="请选择组织"
-            style={{ width: '100%' }}
-          />
-        </Form.Item>
+              <Form.Item name="hospitalName" label="所属组织">
+                <Select
+                  allowClear
+                >
+                  {HospitalNamesList.map((item) => {
+                    return (
+                      <Option value={item} key={item}>{item}</Option>
+                    )
+                  })}
+                </Select>
+              </Form.Item>
             </Col>
             <Col span={5} key={1}>
               <Form.Item label="参数名" name="name" getValueFromEvent={getValueFromEvent}>

+ 30 - 16
src/components/SysChoose/index.js

@@ -33,19 +33,22 @@ function SysChoose({history}) {
             content: 'Second-content',
         },
     ];
+
     //系统单选
     function onChange(e){
         const id = e.target.value;
-        const checkOrg = orgList.find((it)=>it.id===id);
-        const his =checkOrg.hospitals;
+        const checkOrg = orgList.find((it)=>it.id===id);  // 拿到的id
+        const his =checkOrg.hospitals; // id对应的AI质控平台
         setSysId(id);
         setHisList(his);
     }
+
     //获取组织列表
     function getOrgList(){
         xPost(api.getUserHospitals).then((res)=>{console.log(res)
             if(res.data.code===200){
                 const data = res.data.data;
+                console.log('组织列表数据???', data);
                 const { software,userInfo } = data;
                 setOrgList(software);
                 setSysName(software[0].name)
@@ -64,6 +67,7 @@ function SysChoose({history}) {
             }
         })
     }
+
     //点击进入
     function getIn(id, type, sysid){
         console.log(type);
@@ -75,6 +79,7 @@ function SysChoose({history}) {
         interceptors();
         history.push("/manage");
     }
+
     //显示子医院列表,传空为隐藏,传id为显示
     function showSubPop(id){
         setShowId(id);
@@ -134,20 +139,29 @@ function SysChoose({history}) {
                                                         </div>
                                                         <div className="card-content">
                                                             <div className='name'>{it.hospitalName}</div>
-                                                            {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>
-                                                                    <a className='close' onClick={()=>showSubPop('')}>收起</a>
-                                                                </p>
-                                                                <Select size='small' placeholder='请选择' onChange={(id)=>onSelect(id)} style={{ width: 278,marginRight:'6px' }}>
-                                                                    {(it.children||[]).map((item)=>{
-                                                                       return (<Option value={item.hospitalId} key={item.hospitalId}>{item.hospitalName}</Option>)
-                                                                    })
-                                                                    }
-                                                                </Select>
-                                                                <Button type='primary' size='small' onClick={()=>getIn(subHisId)}>进入</Button>
-                                                                </div> : ''}</>) : (<a className='get-in' onClick={() => getIn(it.hospitalId,it.type)}>点击进入 <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>
+                                                                                    <a className='close' onClick={()=>showSubPop('')}>收起</a>
+                                                                                </p>
+                                                                                <Select size='small' placeholder='请选择' onChange={(id)=>onSelect(id)} style={{ width: 278,marginRight:'6px' }}>
+                                                                                    {(it.children||[]).map((item)=>{
+                                                                                    return (<Option value={item.hospitalId} key={item.hospitalId}>{item.hospitalName}</Option>)
+                                                                                    })
+                                                                                    }
+                                                                                </Select>
+                                                                                <Button type='primary' size='small' onClick={()=>getIn(subHisId)}>进入</Button>
+                                                                            </div> : ''
+                                                                        }
+                                                                    </>
+                                                                ) : (<a className='get-in' onClick={() => getIn(it.hospitalId,it.type)}>点击进入 <img src={rightIcon} alt="箭头"/></a>)
+                                                            }
                                                         </div>
                                                     </div>
                                                 </Col>

+ 3 - 1
src/components/UserManager/addUser.js

@@ -138,6 +138,8 @@ function AddUser(props) {
   const onChangeRloe = value => {
     form.setFieldsValue({ roles: value })
   };
+
+  // 点击保存
   const onFinish = values => {
     let params = values
     addHospitalTreeVO.hospitals = unique(addHospitalTreeVO.hospitals)
@@ -148,8 +150,8 @@ function AddUser(props) {
     } else {
       addUser(params)
     }
-
   };
+  
   function addUser(param) {
     post(api.addUser, param).then((res) => {
       if (res.data.code === 200) {

+ 1 - 1
src/index.js

@@ -2,7 +2,7 @@ import React from 'react';
 import { render } from 'react-dom'
 import './index.less';
 import App from './App';
-import { Provider } from 'react-redux'
+import { Provider } from 'react-redux'  // 通过 redux中的Provider把state注入全局
 import configureStore from './store/reducerExtras/configureStore'
 import utils from '@api/index';
 import { ConfigProvider } from 'antd'

+ 1 - 0
src/store/reducers/index.js

@@ -1,3 +1,4 @@
+// combineReducers 进行复合,实现状态的模块化
 import { combineReducers } from 'redux';
 import tabPanes from './tabPanes';
 import userInfo from './userInfo';

+ 3 - 1
src/utils/RouteWithSubRoutes.js

@@ -7,11 +7,13 @@ export default route => {
         path: route.path,
         exact: route.exact,
         render: props => {
+            console.log('props数据???', props);
             if (route.name) document.title = route.name
-            return <route.component {...props} routes={route.routes} />
+            return <route.component {...props} routes={route.routes} />   
         }
     }
     return (
+        // Suspense 让组件“等待”某个异步操作,直到该异步操作结束即可渲染。
         <Suspense fallback={<div />}>
             <Route {...attrs} />
         </Suspense>

+ 3 - 0
src/utils/index.js

@@ -28,6 +28,7 @@ function pickCheckedTreeIds(data, menuIds = [], resourceIds = []) {
         softwareResourceIds: resourceIds
     }
 }
+
 // 处理组织结构数据
 function organizationData(arr) {
     arr.forEach(item => {
@@ -53,6 +54,7 @@ function unique(arr) {
         return arr.indexOf(item, 0) === index;
     });
 }
+
 //时间获取
 function getTimeDetail() {
     const d = new Date();
@@ -66,6 +68,7 @@ function getTimeDetail() {
 function getValueFromEvent(e) {
     return e.target.value.replace(/(^\s*)|(\s*$)/g, '');
 }
+
 //从对象数组中遍历出id
 function filterIds(arr,str){    //arr需遍历的数组;str需拼接的字段数组
     let tempStr = '',temp='';