Browse Source

修复部分bug

code4eat 3 năm trước cách đây
mục cha
commit
284cc2d173

+ 4 - 3
src/components/MccsClickableTabs/index.tsx

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2021-09-15 18:38:41
- * @LastEditTime: 2021-12-27 17:39:06
+ * @LastEditTime: 2022-03-16 16:13:26
  * @LastEditors: Please set LastEditors
  * @Description: In User Settings Edit
  * @FilePath: /MedicalWisdomCheckSys/src/components/MccsClickableTabs/index.tsx
@@ -22,7 +22,7 @@ const MccsClickableTabs: React.FC<MccsClickableTabs.propsType> = (props)=>{
     const [disabled,setDisabled] = useState(false);
 
     const clickHandle = (item: MccsClickableTabs.TabType,supItem: {label: string,value: string|number})=>{
-
+       
         if(!disabled){
             // console.log(item,type);
             if(type=='single'){
@@ -39,7 +39,7 @@ const MccsClickableTabs: React.FC<MccsClickableTabs.propsType> = (props)=>{
     }
 
     useEffect(()=>{
-        // console.log('tabProps',props);
+   
         const {data=[],value,clear,disabled} = props;
         setList(data);
         disabled&&setDisabled(true);
@@ -65,6 +65,7 @@ const MccsClickableTabs: React.FC<MccsClickableTabs.propsType> = (props)=>{
                     <>
                         {
                         list.map((item,index)=>{
+                               
                                 return (
                                     <div className={activedTab?.value==item.value?(disabled?`${styles.tab} ${styles.on} ${styles.disabled}`:`${styles.tab} ${styles.on}`):disabled?`${styles.disabled} ${styles.tab}`:`${styles.tab}`} key={index} onClick={()=>clickHandle(item,{label:'null',value:'null'})}>{item.label}</div>
                                 )

+ 2 - 2
src/components/MccsClickableTabs/typings.d.ts

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2021-09-15 18:39:49
- * @LastEditTime: 2021-10-28 09:29:32
+ * @LastEditTime: 2022-03-16 16:11:37
  * @LastEditors: Please set LastEditors
  * @Description: In User Settings Edit
  * @FilePath: /MedicalWisdomCheckSys/src/components/MccsClickableTabs/typings.d.ts
@@ -13,7 +13,7 @@ declare namespace MccsClickableTabs {
         data: TabType[],
         defaultTabValue?: any[],
         onChange?: ({label:string,value:any}) => void,
-        tabClickHandle?: (data: TabType|null) => {},
+        tabClickHandle?: (data: TabType|null) => void,
         type?: 'single'|'multi',
         value?: {label: string,value: any},
         disabled?: boolean,// 是否禁用

+ 2 - 1
src/pages/GradeHospitalAccreditation/articleManagement/components/articleDetailModule/drawer/index.tsx

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2022-03-07 11:05:19
- * @LastEditTime: 2022-03-15 17:43:41
+ * @LastEditTime: 2022-03-16 16:12:03
  * @LastEditors: Please set LastEditors
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: /MedicalWisdomCheckSys/src/pages/GradeHospitalAccreditation/articleManagement/drawer/set.tsx
@@ -147,6 +147,7 @@ const SetDrawer = () => {
                             <MccsClickableTabs
                                 clear={!ifsetTargetScore}
                                 data={restModelData.targetScores}
+                                tabClickHandle={(val)=>{setifsetTargetScore(true)}}
                             />
                         </Form.Item>
                     </Col>

+ 127 - 75
src/pages/GradeHospitalAccreditation/articleManagement/components/articleDetailModule/drawer/multi.tsx

@@ -1,14 +1,14 @@
 /*
  * @Author: your name
  * @Date: 2022-03-14 11:17:12
- * @LastEditTime: 2022-03-15 18:29:47
+ * @LastEditTime: 2022-03-16 15:50:24
  * @LastEditors: Please set LastEditors
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: /MedicalWisdomCheckSys/src/pages/GradeHospitalAccreditation/articleManagement/components/articleDetailModule/drawer/multi.tsx
  */
 
 import { ProFormSelect } from "@ant-design/pro-form";
-import { Button, Col,Empty } from "antd";
+import { Button, Col, Empty } from "antd";
 import { useEffect, useState } from "react";
 import { getDepartmentList } from "../../../server";
 
@@ -17,7 +17,9 @@ export type DataItemType = {
     id: number;
     responsibilityDepartment: { label: string; value: number };
     responsibilityUser: { label: string; value: number };
-    // selectableUsers:{label: string; value: number}[];   //供可选的下拉列表
+    selectableUsers: { label: string; value: number }[];   //供可选的下拉列表
+    loading?: boolean;
+    open?: boolean;
     [key: string]: any
 }
 
@@ -33,19 +35,83 @@ export type MultiResponsibilitySelecterValueType = {
 
 }
 
+
+
+const SelectFormItem = ({
+    itemData, editable, options, editDataItem, onFocusHandle, loading, setDepartmentUsers, delhandle
+}: {
+    itemData: DataItemType;
+    editable: boolean;
+    options: PayloadType[];
+    loading?: boolean;
+    setDepartmentUsers: (editItemId: number, payload: any, currentEditItem?: DataItemType) => void;
+    onFocusHandle: (id: number) => void;
+    editDataItem: (id: number, payload: PayloadType) => void;
+    delhandle: (id: number) => void;
+
+}) => {
+  
+    return (
+        <div style={{ display: 'flex', flexDirection: 'row' }}>
+            <Col className="gutter-row" span={12}>
+                <ProFormSelect
+                    width='sm'
+                    showSearch
+                    placeholder="选择单位"
+                    options={options}
+                    fieldProps={{
+                        labelInValue: true,
+                        defaultValue: itemData.responsibilityDepartment,
+                        onChange: (item, option) => {
+                            editDataItem(itemData.id, item)
+                        }
+                    }}
+                    rules={[{ required: true, message: '请选择单位!' }]}
+                />
+            </Col>
+            <Col className="gutter-row" span={editable ? 8 : 10}>
+                <ProFormSelect
+                    width='sm'
+                    // disabled={true}
+                    // params={{}}
+                    // request={()=>getSelecterTwoList(itemData.responsibilityDepartment.value)}
+
+                    options={itemData.selectableUsers}
+                    placeholder="选择负责人"
+                    fieldProps={{
+                        // open: itemData.open,
+                        labelInValue: true,
+                        value: itemData.responsibilityUser,
+                        onFocus: () =>{onFocusHandle(itemData.id)} ,
+                        loading: loading,
+                        onChange: (item, option) => {
+                            setDepartmentUsers(itemData.id, item)
+                        }
+                    }}
+                    rules={[{ required: true, message: '请选择负责人!' }]}
+                />
+            </Col>
+            {editable && <Col><Button onClick={() => delhandle(itemData.id)} style={{ fontSize: 14 }}>-</Button></Col>}
+        </div>
+    )
+}
+
+
 //多级责任人及单位设置
-const MultiResponsibilitySelecter = ({ 
-    rows = 0, options = [], value,onChange,editable=false
-}: { 
+const MultiResponsibilitySelecter = ({
+    rows = 0, options = [], value, onChange, editable = false
+}: {
     rows: number;
     options: any[],
-    editable?:boolean;
+    editable?: boolean;
     value?: MultiResponsibilitySelecterValueType[],
-    onChange?: (val: DataItemType[]) => void 
+    onChange?: (val: DataItemType[]) => void
 }) => {
 
     const [data, setdata] = useState<DataItemType[] | []>([]);
 
+    const [loading, setloading] = useState(false);
+
     const setDepartmentUsers = async (editItemId: number, payload: any, currentEditItem?: DataItemType) => {
         // 获取责任单位对应的责任人
 
@@ -63,9 +129,8 @@ const MultiResponsibilitySelecter = ({
                         label: item ? item.name : '-',
                         value: item ? item.id : 0,
                     }));
-                    
+
                     currentEditItem['responsibilityUser'] = tempPeople[0];
-                    // currentEditItem['selectableUsers'] = tempPeople;
 
                     if (index >= 0) {
                         const _data = data;
@@ -81,6 +146,7 @@ const MultiResponsibilitySelecter = ({
 
             if (a[0]) {
                 a[0]['responsibilityUser'] = payload;
+                a[0]['open'] = false;
                 const _data = data;
                 _data.splice(index, 1, a[0]);
                 setdata([..._data]);
@@ -89,14 +155,14 @@ const MultiResponsibilitySelecter = ({
 
     };
 
-    const getSelecterTwoList = async (id:number) => {
-        const resp = await getDepartmentList({ responsibilityDepartmentId:id});
+    const getSelecterTwoList = async (id: number) => {
+        const resp = await getDepartmentList({ responsibilityDepartmentId: id });
         if (resp) {
             const { list = [] } = resp;
             if (list.length > 0) {
                 const tempList = list[0].sysEmployeeVOList.map((item) => ({
                     label: item ? item.name : '-',
-                    value: item ? item.id : 0,
+                    value: item ? item.id : Math.random(),
                 }));
                 return tempList;
             }
@@ -104,6 +170,21 @@ const MultiResponsibilitySelecter = ({
         return [];
     }
 
+    const onFocusHandle = async (id: number) => {
+        //传入data id
+        const index = data.findIndex(t => t.id == id);
+        const _data = data;
+        setloading(true);
+        
+        const selectableList = await getSelecterTwoList(data[index].responsibilityDepartment.value);
+        _data[index].selectableUsers = selectableList;
+        _data[index].open = true;
+        
+        setloading(false);
+        
+        setdata([..._data]);
+    }
+
     const editDataItem = (id: number, payload: PayloadType) => {
 
         let currentEditItem = data.filter((v: DataItemType) => v.id == id);
@@ -117,7 +198,7 @@ const MultiResponsibilitySelecter = ({
 
     }
 
-    const delhandle = (id:number)=>{
+    const delhandle = (id: number) => {
         const index = data.findIndex(t => t.id == id);
         const _data = data;
         _data.splice(index, 1);
@@ -125,71 +206,31 @@ const MultiResponsibilitySelecter = ({
     }
 
 
-    const SelectFormItem = ({ itemData }: { itemData: DataItemType }) => {
-  
-        return (
-            <div style={{ display: 'flex', flexDirection: 'row' }}>
-                <Col className="gutter-row" span={12}>
-                    <ProFormSelect
-                        width='sm'
-                        showSearch
-                        placeholder="选择单位"
-                        options={options}
-                        fieldProps={{
-                            labelInValue: true,
-                            defaultValue: itemData.responsibilityDepartment,
-                            onChange: (item, option) => {
-                                editDataItem(itemData.id, item)
-                            }
-                        }}
-                        rules={[{ required: true, message: '请选择单位!' }]}
-                    />
-                </Col>
-                <Col className="gutter-row" span={editable?8:10}>
-                    <ProFormSelect
-                        width='sm'
-                        // disabled={true}
-                        params={{}}
-                        request={()=>getSelecterTwoList(itemData.responsibilityDepartment.value)}
-                        // options={itemData.selectableUsers}
-                        placeholder="选择负责人"
-                        fieldProps={{
-                            labelInValue: true,
-                            value: itemData.responsibilityUser,
-                            onChange: (item, option) => {
-                                setDepartmentUsers(itemData.id, item)
-                            }
-                        }}
-                        rules={[{ required: true, message: '请选择负责人!' }]}
-                    />
-                </Col>
-                {editable&&<Col><Button onClick={()=>delhandle(itemData.id)} style={{fontSize:14}}>-</Button></Col>}
-            </div>
-        )
-    }
-    
-  
-
     useEffect(() => {
         if (rows > 0) {
-            setdata([...data, { id: Math.random(),responsibilityDepartment:{label:'-',value:-1},responsibilityUser:{label:'-',value:-1}}])
+            setdata([
+                ...data, {
+                    id: Math.random(), responsibilityDepartment: { label: '-', value: -1 },
+                    responsibilityUser: { label: '-', value: -1 }, selectableUsers: []
+                }
+            ])
         }
     }, [rows]);
 
-    useEffect(()=>{
-        onChange&&onChange(data);
-    },[data]);
+    useEffect(() => {
+        onChange && onChange(data);
+    }, [data]);
 
     useEffect(() => {
 
         const _value = value?.map(v => {
-            
-            return { 
-            id: Math.random(),
-            // selectableUsers:[],
-             ...v 
+
+            return {
+                id: Math.random(),
+                selectableUsers: [],
+                ...v
             }
-         });
+        });
 
         if (_value) {
             setdata(_value);
@@ -201,18 +242,29 @@ const MultiResponsibilitySelecter = ({
     return (
         <div style={{ display: 'flex', flexDirection: 'column' }}>
             {
-                data.length>0?(
+                data.length > 0 ? (
                     [...data].map((v, k) => {
                         return (
-                            <SelectFormItem key={k} itemData={v} />
+                            <SelectFormItem
+
+                                onFocusHandle={onFocusHandle}
+                                delhandle={delhandle}
+                                editDataItem={editDataItem}
+                                loading={loading}
+                                key={k}
+                                setDepartmentUsers={setDepartmentUsers}
+                                options={options}
+                                editable={editable}
+                                itemData={v}
+                            />
                         )
                     })
-                ):(
-                    <div style={{border:'1px solid #eee',height:100,width:'91%',display:'flex',alignItems:'center',justifyContent:'center'}}>
-                         <Empty  image={Empty.PRESENTED_IMAGE_SIMPLE} />
+                ) : (
+                    <div style={{ border: '1px solid #eee', height: 100, width: '91%', display: 'flex', alignItems: 'center', justifyContent: 'center' }}>
+                        <Empty image={Empty.PRESENTED_IMAGE_SIMPLE} />
                     </div>
                 )
-                
+
             }
         </div>
     )

+ 33 - 12
src/pages/GradeHospitalAccreditation/articleManagement/components/articleDetailModule/index.tsx

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2022-03-08 10:41:15
- * @LastEditTime: 2022-03-15 16:53:03
+ * @LastEditTime: 2022-03-16 16:46:14
  * @LastEditors: Please set LastEditors
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
  * @FilePath: /MedicalWisdomCheckSys/src/pages/GradeHospitalAccreditation/articleManagement/components/articleDetailModule/index.tsx
@@ -61,7 +61,7 @@ const ArticleDetail = ({ isModeTwo = false }) => {
         currentSelectedActObj,
         ...restModelData
     } = articleManagement;
-    
+
     // console.log({isModeTwo});
 
     const [scrollAreaH, setScrollAreaH] = useState(100);
@@ -239,7 +239,7 @@ const ArticleDetail = ({ isModeTwo = false }) => {
     const telescopicBtnHandle = (e: React.MouseEvent) => {
         //展开/收起
         e.preventDefault();
-        
+
         setifCollapse(!ifCollapse);
         if (!ifCollapse) {
             followWindowResize(0, 55);
@@ -256,15 +256,15 @@ const ArticleDetail = ({ isModeTwo = false }) => {
     }
 
 
-    const setDrawerFormInit =  ()=>{
+    const setDrawerFormInit = () => {
         if (restModelData.leafData) {
-            const { responsibilityDepartmentId, responsibilityDepartmentName, responsibilityUserId, targetEvaluation, responsibilityUserName, accountType,pfmReviewArticleDepartList } = restModelData.leafData.reviewArticle;
+            const { responsibilityDepartmentId, responsibilityDepartmentName, responsibilityUserId, targetEvaluation, responsibilityUserName, accountType, pfmReviewArticleDepartList } = restModelData.leafData.reviewArticle;
             if (responsibilityDepartmentName && responsibilityDepartmentId) {
 
                 restModelData.setArticleSettingFormInit({
-                    Co_DepartmentAndManager:pfmReviewArticleDepartList.map(t=>({
-                        responsibilityDepartment:{label:t.responsibilityDepartmentName,value:t.responsibilityDepartmentId},
-                        responsibilityUser:{label:t.responsibilityUserName,value:t.responsibilityUserId}
+                    Co_DepartmentAndManager: pfmReviewArticleDepartList.map(t => ({
+                        responsibilityDepartment: { label: t.responsibilityDepartmentName, value: t.responsibilityDepartmentId },
+                        responsibilityUser: { label: t.responsibilityUserName, value: t.responsibilityUserId }
                     })),
                     responsibilityDepartment: { label: responsibilityDepartmentName, value: responsibilityDepartmentId },
                     responsibilityUser: { label: responsibilityUserName, value: responsibilityUserId },
@@ -334,12 +334,15 @@ const ArticleDetail = ({ isModeTwo = false }) => {
                 //抽屉
             }
 
-            {restModelData.drawerVisible&&<SetDrawer />}
-            
+            {/* {restModelData.drawerVisible && <SetDrawer />} */}
+
+            <SetDrawer />
+
             {
                 isLeaf && (
                     <div className={ifCollapse ? 'leafContent collapse' : 'leafContent'} ref={leafContentRef}>
                         <div className='leafContentTitle'>{currentActivedTree ? currentActivedTree.title : ''}</div>
+                        <div style={{marginBottom:'24px'}}>
                         <div className='peopleGroup'>
                             <span>条文组别:</span>
                             <span>{restModelData.leafData?.reviewArticle?.accountType}</span>
@@ -348,7 +351,25 @@ const ArticleDetail = ({ isModeTwo = false }) => {
                             <span>负责人:</span>
                             <span>{restModelData.leafData?.reviewArticle?.responsibilityUserName}</span>
                         </div>
-                        {/* <MccsScoreBanner list={scoreList} /> */}
+                        {
+                            (restModelData.leafData?.reviewArticle.pfmReviewArticleDepartList
+                                && restModelData.leafData?.reviewArticle.pfmReviewArticleDepartList.length > 0) && (
+                                <div className='coOperateList'>
+                                    <div>合作单位及负责人:</div>
+                                    <div>
+                                        {
+                                            restModelData.leafData?.reviewArticle.pfmReviewArticleDepartList.map((item, index) => {
+                                                return (
+                                                    <span key={index} style={{border:'1px solid #DADEE6',marginRight:2}}>{`${item.responsibilityDepartmentName}|${item.responsibilityUserName}`}</span>
+                                                )
+                                            })
+                                        }
+                                    </div>
+                                </div>
+                            )
+                        }
+                        </div>
+                        
                         <div className='scoreRow'>
                             <div className='scoreInfo'>
                                 {
@@ -454,7 +475,7 @@ const ArticleDetail = ({ isModeTwo = false }) => {
                                                         columns={MccsLightTableColumns}
                                                         request={(current, pageSize) => getCurrentLevelTable({
                                                             level: item.level,
-                                                            numStr: currentSelectedActObj ? (currentSelectedActObj.numStr?currentSelectedActObj.numStr:currentSelectedActObj.code) : 'null',
+                                                            numStr: currentSelectedActObj ? (currentSelectedActObj.numStr ? currentSelectedActObj.numStr : currentSelectedActObj.code) : 'null',
                                                             version: restModelData.leafData ? (restModelData.leafData.reviewArticle.version) : 'null',
                                                             current,
                                                             pageSize

+ 7 - 1
src/pages/GradeHospitalAccreditation/articleManagement/components/articleDetailModule/style.less

@@ -50,7 +50,7 @@
           flex-direction: row;
           justify-content: flex-start;
           align-items: center;
-          margin-bottom: 24px;
+          margin-bottom: 12px;
       
           span {
             font-size: 14px;
@@ -64,6 +64,12 @@
             }
           }
         }
+
+        .coOperateList {
+            display: flex;
+            flex-direction: row;
+
+        }
       
         .scoreRow {
           display: flex;