wyq 3 vuotta sitten
vanhempi
commit
28fd3b575c

+ 40 - 11
src/components/OrgManager/AddSubOrg.js

@@ -98,7 +98,9 @@ function StepContent(props) {
     const [activeTab, setActiveTab] = useState('');
     const [sysCheckeds, setSysCheckeds] = useState([]);
     const [name, setName] = useState('');
-    const { type, hisTypeList, save, detail } = useContext(OrgContext);
+    const [hisTypeList, setHisTypeList] = useState([]);
+    const [orgType, setOrgType] = useState(localStorage.getItem('type'));
+    const { type, save, detail } = useContext(OrgContext);
     const { current, pre, next, form } = props;
     const initialValues = detail
     const vilidateRules = {
@@ -123,6 +125,15 @@ function StepContent(props) {
 
         })
     }
+    function getStaticInfos() {
+        post(api.getManagerBoxInfo).then((res) => {
+            if (res.data.code === 200) {
+                const data = res.data.data;
+                const list = localStorage.getItem('type') == 4 ? data[45] : data[43]
+                setHisTypeList(list)
+            }
+        })
+    }
     //数据转换为树形结构所需字段
     function structureTreeData(data) {
         const arr = [];
@@ -142,11 +153,13 @@ function StepContent(props) {
     }
     useEffect(() => {
         if (type == 2) {
-            const treeDatas = structureTreeData(detail.getRoleDTO.loginUserMenuResourceTree);
+            const treeDatas = detail.getRoleDTO?structureTreeData(detail.getRoleDTO.loginUserMenuResourceTree):[];
             setTabDatas(treeDatas);
             setSysCheckeds(detail.sids);
+            getStaticInfos()
         } else {
             getTreeData();
+            getStaticInfos()
         }
     }, []);
     function handlePre() {
@@ -168,7 +181,6 @@ function StepContent(props) {
     }
     //树形结构选中事件
     function checkTreeEvent(i, idsArr, sourceIds) {
-        console.log(activeTab);
 
         const formData = form.getFieldsValue();
         const arr = formData.softwares;
@@ -184,7 +196,6 @@ function StepContent(props) {
 
     }
     function onTabChange(activeTab) {
-        console.log(activeTab);
 
         setName(activeTab.split('-')[0])
         setActiveTab(activeTab.split('-')[1])
@@ -264,14 +275,32 @@ function StepContent(props) {
                     name='type'
                     hidden={current !== 0}
                     rules={[{ required: true }]}>
-                    <Select placeholder='请选择类型'>
-                        {hisTypeList.map((item, i) => {
-                            return (
-                                <Option value={item.name} key={i}>{item.val}</Option>
-                            )
-                        })}
-                    </Select>
+                    {orgType == 4 ?
+                        <Input placeholder='科室'  disabled />
+                        :
+                        <Select placeholder='请选择类型'>
+                            {hisTypeList.map((item, i) => {
+                                return (
+                                    <Option value={item.name} key={i}>{item.val}</Option>
+                                )
+                            })}
+                        </Select>
+                    }
                 </Form.Item>
+                {orgType == 4 ?
+                    <Form.Item
+                        label="病区"
+                        name='regionId'
+                        hidden={current !== 0}>
+                        <Select placeholder='请选择类型'>
+                            {hisTypeList.map((item, i) => {
+                                return (
+                                    <Option value={item.name} key={i}>{item.val}</Option>
+                                )
+                            })}
+                        </Select>
+                    </Form.Item> : null
+                }
                 <Form.Item
                     label="排序"
                     hidden={current !== 0}

+ 121 - 55
src/components/OrgManager/index.js

@@ -18,11 +18,13 @@ function OrgManager() {
         //     setTableHt(window.innerHeight - 260);
         // });
         //刷新列表
+        setOrgType(localStorage.getItem('type'))
         getTableData();
         //解绑事件
         // return function clear() {
         //     window.removeEventListener("resize");
         // }
+
     }, []);
 
     const [dataSource, setDataSource] = useState([]);   //列表数据
@@ -37,14 +39,14 @@ function OrgManager() {
     const [orgName, setOrgName] = useState('');      //上级组织名称,新增修改用
     const [orgDetail, setOrgDetail] = useState(null);
     const [typeId, setTypeId] = useState('');
-    
+    const [orgType, setOrgType] = useState(localStorage.getItem('type'));
+    // const [hisTypeList, setHisTypeList] = useState([]);
     const [type, setType] = useState('');
     //从state中取出状态、类型列表
     const staticInfo = useSelector(state => {
         return state.staticInfo;
     });
     const { hisTypeList, statusList } = staticInfo;
-
     const tipText = {
         1: '确定要删除该组织?',
         2: '当前组织内可能包含子组织或其相关用户,删除后所包含信息将一并被删除',
@@ -58,7 +60,17 @@ function OrgManager() {
     function getTableData(param = {}) {
         post(api.getHospitalListInfo, param).then((res) => {
             if (res.data.code === 200) {
-                const data = res.data.data;
+                let data = res.data.data
+                let obj = {};
+                if (orgType == 4) {
+                    data.map((it, i) => {
+                        delete it.children
+                        it.depts.forEach(its => {
+                            its.hospitalId = it.hospitalId
+                        });
+                        it.children = it.depts
+                    });
+                }
                 setOrgId(data[0] ? data[0].hospitalId : '');
                 setOrgName(data[0] ? data[0].hospitalName : '')
                 setDataSource(data);
@@ -98,7 +110,7 @@ function OrgManager() {
     }
     //删除
     function onDelete() {
-        const param = { HospitalId: operId, type:typeId  };
+        const param = { HospitalId: operId, type: typeId };
         xPost(api.deleteHospital, param).then((res) => {
             if (res.data.code === 200) {
                 getTableData();
@@ -141,11 +153,12 @@ function OrgManager() {
         setOrgDetail({
             parentId: orgId,
             parentName: orgName,
-            status: 1
+            status: 1,
+            type: orgType==4?'科室':''
         })
     }
     function getOrgDetail(id, type) {
-        xPost(api.getHospitalById, { HospitalId: id, type }).then((res) => {
+        xPost(api.getHospitalById, { HospitalId: id, type:type }).then((res) => {
             const { data, code } = res.data;
             if (code === 200) {
                 structDetail(data);
@@ -157,7 +170,7 @@ function OrgManager() {
     }
     function structDetail(data) {
         const content = JSON.parse(JSON.stringify(data).replace(/getHospitalUserDTO/g, "addHospitalUserVO"));
-        const menuData = content.getRoleDTO.loginUserMenuResourceTree;
+        const menuData = content.getRoleDTO?content.getRoleDTO.loginUserMenuResourceTree:[];
         content.confirmPsd = content.addHospitalUserVO.password
         let softwares = [], sids = [];
         for (let i = 0; i < menuData.length; i++) {
@@ -184,11 +197,14 @@ function OrgManager() {
                 return it;
             }
         });
+        if (orgType == 4){
+            param.type = 4
+        }
         if (type == 2) {
             url = api.updateHospital
             param.id = operId
-            // delete param.addHospitalUserVO
-            // delete param.confirmPsd      
+            delete param.addHospitalUserVO
+            delete param.confirmPsd
         }
         formData.softwares = arr;
         post(url, param).then((res) => {
@@ -197,7 +213,7 @@ function OrgManager() {
                 setAddVisible(false);
                 setOrgDetail(null)
                 message.success("添加成功");
-                
+
             } else {
                 message.warning(res.data.msg || '操作失败');
             }
@@ -211,56 +227,106 @@ function OrgManager() {
     }
     //表格渲染
     function RenderTable() {
-        const columns = [
-            { title: '组织机构层级', dataIndex: 'hospitalName', key: 'hospitalName' },
-            {
-                title: '类型', width: 150, key: 'type', render: (row) => {
-                    if (row.children) {
-                        return '-'
-                    } else {
-                        return row.typeName;
+        let columns
+        if (orgType == 4) {
+            columns = [
+                { title: '组织机构层级', dataIndex: 'hospitalName', key: 'hospitalName' },
+                {
+                    title: '病区', width: 150, key: 'type', render: (row) => {
+                        if (row.children) {
+                            return '-'
+                        } else {
+                            return row.deptName;
+                        }
                     }
-                }
-            },
-            {
-                title: '状态', width: 120, key: 'status', render: (row) => {
-                    if (row.children) {
-                        return '-'
-                    } else {
-                        return (<span className={(row.status === '1') ? 'Enable' : 'Disable'}>{row.statusName}</span>);
+                },
+                { title: '类型', width: 150, key: 'type', dataIndex: 'typeName'},
+                {
+                    title: '状态', width: 120, key: 'status', render: (row) => {
+                        if (row.children) {
+                            return '-'
+                        } else {
+                            return (<span className={(row.status === '1') ? 'Enable' : 'Disable'}>{row.statusName}</span>);
+                        }
                     }
-                }
-            },
-            { title: '创建时间', width: 240, dataIndex: 'gmtCreate', key: 'gmtCreate' },
-            {
-                title: '操作', width: 240, key: 'operation', render: (row) => {
-                    //console.log(21,row)
-                    if (row.rootFlag) {
-                        return '-'
+                },
+                { title: '创建时间', width: 240, dataIndex: 'gmtCreate', key: 'gmtCreate' },
+                {
+                    title: '操作', width: 240, key: 'operation', render: (row) => {
+                        //console.log(21,row)
+                        if (row.rootFlag) {
+                            return '-'
+                        }
+                        const menu = (
+                            <Menu>
+                                <Menu.Item key="0" onClick={() => showModal(5, row.hospitalId)}>重置密码</Menu.Item>
+                                <Menu.Item key="1" onClick={() => showModal((row.hasUserFlag || row.hasHospitalFlag ? 2 : 1), row.hospitalId, row.type)}>删除</Menu.Item>
+                            </Menu>
+                        );
+                        return (<Space size="middle">
+                            <a onClick={() => editSubOrg(row.hospitalId, row.type)}>修改</a>
+                            {row.status === '1' ? (<a onClick={() => showModal(row.hasUserFlag || row.hasHospitalFlag ? 4 : 3, row.hospitalId, row.type)}>禁用</a>) : (<a onClick={() => enable(1, row.hospitalId, row.type)}>启用</a>)}
+                            <Dropdown overlay={menu} trigger={['click']}>
+                                <a className="ant-dropdown-link">
+                                    更多 <DownOutlined />
+                                </a>
+                            </Dropdown>
+                        </Space>)
                     }
-                    const menu = (
-                        <Menu>
-                            <Menu.Item key="0" onClick={() => showModal(5, row.hospitalId)}>重置密码</Menu.Item>
-                            <Menu.Item key="1" onClick={() => showModal((row.hasUserFlag || row.hasHospitalFlag ? 2 : 1), row.hospitalId, row.type)}>删除</Menu.Item>
-                        </Menu>
-                    );
-                    return (<Space size="middle">
-                        <a onClick={() => editSubOrg(row.hospitalId, row.type)}>修改</a>
-                        {row.status === '1' ? (<a onClick={() => showModal(row.hasUserFlag || row.hasHospitalFlag ? 4 : 3, row.hospitalId, row.type)}>禁用</a>) : (<a onClick={() => enable(1, row.hospitalId, row.type)}>启用</a>)}
-                        <Dropdown overlay={menu} trigger={['click']}>
-                            <a className="ant-dropdown-link">
-                                更多 <DownOutlined />
-                            </a>
-                        </Dropdown>
-                    </Space>)
-                }
-            },
-        ];
+                },
+            ];
+        } else {
+            columns = [
+                { title: '组织机构层级', dataIndex: 'hospitalName', key: 'hospitalName' },
+                {
+                    title: '类型', width: 150, key: 'type', render: (row) => {
+                        if (row.children) {
+                            return '-'
+                        } else {
+                            return row.typeName;
+                        }
+                    }
+                },
+                {
+                    title: '状态', width: 120, key: 'status', render: (row) => {
+                        if (row.children) {
+                            return '-'
+                        } else {
+                            return (<span className={(row.status === '1') ? 'Enable' : 'Disable'}>{row.statusName}</span>);
+                        }
+                    }
+                },
+                { title: '创建时间', width: 240, dataIndex: 'gmtCreate', key: 'gmtCreate' },
+                {
+                    title: '操作', width: 240, key: 'operation', render: (row) => {
+                        //console.log(21,row)
+                        if (row.rootFlag) {
+                            return '-'
+                        }
+                        const menu = (
+                            <Menu>
+                                <Menu.Item key="0" onClick={() => showModal(5, row.hospitalId)}>重置密码</Menu.Item>
+                                <Menu.Item key="1" onClick={() => showModal((row.hasUserFlag || row.hasHospitalFlag ? 2 : 1), row.hospitalId, row.type)}>删除</Menu.Item>
+                            </Menu>
+                        );
+                        return (<Space size="middle">
+                            <a onClick={() => editSubOrg(row.hospitalId, row.type)}>修改</a>
+                            {row.status === '1' ? (<a onClick={() => showModal(row.hasUserFlag || row.hasHospitalFlag ? 4 : 3, row.hospitalId, row.type)}>禁用</a>) : (<a onClick={() => enable(1, row.hospitalId, row.type)}>启用</a>)}
+                            <Dropdown overlay={menu} trigger={['click']}>
+                                <a className="ant-dropdown-link">
+                                    更多 <DownOutlined />
+                                </a>
+                            </Dropdown>
+                        </Space>)
+                    }
+                },
+            ];
+        }
         return (
             <Table
                 pagination={false}
                 className="components-table-demo-nested"
-                rowKey={record => record.hospitalId}
+                rowKey={record => record.hospitalId + record.deptId}
                 columns={columns}
                 dataSource={dataSource}
             />
@@ -278,7 +344,7 @@ function OrgManager() {
     };
     if (addVisible && orgDetail) {
         return (
-            <OrgContext.Provider value={{ type,hisTypeList, save: addSubOrg, detail: orgDetail }}>
+            <OrgContext.Provider value={{ type, save: addSubOrg, detail: orgDetail }}>
                 <AddSubOrg back={goBack} />
             </OrgContext.Provider>
         )
@@ -294,7 +360,7 @@ function OrgManager() {
                             </Form.Item>
                         </Col>
                         <Col span={5} key={1}>
-                            <Form.Item name="type" label="类型">
+                            <Form.Item name="type" label={orgType == 4 ? '所属病区' : '类型'}>
                                 <Select
                                     allowClear
                                 >

+ 7 - 6
src/components/RoleManager/AddRole.js

@@ -18,11 +18,11 @@ function AddRole(props){
     function handleOk() {
         back()
     }
-    function handleCancel() {
-        setVisible(false)
+    function getChange(){
+        setIsChange(true)
     }
     const goback = () => {
-        if (form.getFieldsValue().name != undefined || form.getFieldsValue().softwares != undefined) {
+        if (form.getFieldsValue().name != undefined || isChange) {
             setVisible(true)
         } else {
             back()
@@ -37,7 +37,7 @@ function AddRole(props){
                 <Breadcrumb.Item>新增角色</Breadcrumb.Item>
             </Breadcrumb>
             <div className="add-container">
-                <ContentForm back={goback} form={form}></ContentForm>
+                <ContentForm back={goback} form={form} getChange={getChange}></ContentForm>
             </div>
             <Modal
                 title="提示"
@@ -46,7 +46,7 @@ function AddRole(props){
                 width={400}
                 visible={visible}
                 onOk={handleOk}
-                onCancel={handleCancel}
+                onCancel={goback}
             >
                 <p>您还有内容未保存,确定要退出?</p>
             </Modal>
@@ -60,7 +60,7 @@ function ContentForm(props){
     const [activeTab, setActiveTab] = useState('');
     const { save,detail }  = useContext(RoleContext);
     const [sysCheckeds, setSysCheckeds] = useState();
-    const { back,form } = props;
+    const { back, form, getChange } = props;
     const initialValues=detail||{
         status:'1'
     };
@@ -154,6 +154,7 @@ function ContentForm(props){
         form.setFieldsValue({
             softwares:arr
         });
+        getChange()
     }
     function onTabChange(activeTab){ 
         setActiveTab(activeTab.split('-')[0])

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

@@ -53,10 +53,9 @@ function SysChoose({history}) {
                 dispatch(setUser(userInfo));
                 //默认显示第一个系统的组织
                 setHisList(software[0]?software[0].hospitals:[]);
-                
                 setTimeout(()=>{
                     if (data.jump) {
-                        getIn(software[0].hospitals[0].hospitalId, software[0].id)
+                        getIn(software[0].hospitals[0].hospitalId)
                     }
                 },500)
                 
@@ -66,10 +65,11 @@ function SysChoose({history}) {
         })
     }
     //点击进入
-    function getIn(id,sysid){
+    function getIn(id, type, sysid){
         dispatch(setSys({sysId,sysName,hisId:id}));
         localStorage.setItem('systemId', sysId || sysid);
         localStorage.setItem('hospitalId',id);
+        localStorage.setItem('type', type);
         interceptors();
         history.push("/manage");
     }
@@ -145,7 +145,7 @@ function SysChoose({history}) {
                                                                     }
                                                                 </Select>
                                                                 <Button type='primary' size='small' onClick={()=>getIn(subHisId)}>进入</Button>
-                                                            </div>:''}</>):(<a className='get-in' onClick={()=>getIn(it.hospitalId)}>点击进入 <img src={rightIcon} alt="箭头"/></a>)}
+                                                                </div> : ''}</>) : (<a className='get-in' onClick={() => getIn(it.hospitalId,it.type)}>点击进入 <img src={rightIcon} alt="箭头"/></a>)}
                                                         </div>
                                                     </div>
                                                 </Col>