Explorar o código

添加合作单位完成

code4eat %!s(int64=3) %!d(string=hai) anos
pai
achega
b4743d601d

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

@@ -2,7 +2,7 @@
  * @Author: your name
  * @Date: 2022-03-07 11:05:19
 
- * @LastEditTime: 2022-03-14 11:48:28
+ * @LastEditTime: 2022-03-15 14:53:08
 
  * @LastEditors: Please set LastEditors
  * @Description: 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
@@ -36,22 +36,22 @@ const SetDrawer = () => {
         setCurrentActivedTree,
         scoreList,
         getDepartmentRequest,
-        departmentManagers,
-        getDepartmentUsers,
+
         ...restModelData
     } = articleManagement;
 
     const drawerFormRef = useRef<ProFormInstance>();
 
     const [ifsetTargetScore, setifsetTargetScore] = useState(true); //设置目标分数是否必填
-
+    const [rows,setrows] = useState(0);
+    const [respDepartmentList,setrespDepartmentList] = useState<{label:string;value:any}[]|[]>([]);  //可选单位
 
 
     const onVisibleChangeHandle = (visible: boolean) => {
         //drawer展示控制
         if (visible) {
             if (restModelData.leafData) {
-                getDepartmentUsers(restModelData.leafData?.reviewArticle.responsibilityDepartmentId);
+                // getDepartmentUsers(restModelData.leafData?.reviewArticle.responsibilityDepartmentId);
             }
         }
         !visible && restModelData.setArticleSettingFormInit(undefined);//清空默认值
@@ -72,6 +72,8 @@ const SetDrawer = () => {
     const onFinishHandle = (values: any) => {
 
         if (restModelData.drawerFormType == 'ARTICLE_SET') {
+            console.log({values});
+            return;
             restModelData.setArticle(values)
         }
         if (restModelData.drawerFormType == 'BATCHSETTING') {
@@ -79,6 +81,10 @@ const SetDrawer = () => {
         }
     }
 
+    const setRespDepartment =async () => {
+          const data = await getDepartmentRequest();
+          setrespDepartmentList(data);
+    }
 
 
     useEffect(() => {
@@ -89,6 +95,10 @@ const SetDrawer = () => {
         }
     }, [articleManagement.articleSettingFormInit?.targetScores]);
 
+    useEffect(()=>{
+        setRespDepartment();
+    },[])
+
 
 
     return (
@@ -97,59 +107,34 @@ const SetDrawer = () => {
             width={500}
             formRef={drawerFormRef}
             visible={restModelData.drawerVisible}
-            initialValues={restModelData.drawerFormType == 'ARTICLE_SET' ? { ...articleManagement.articleSettingFormInit } : undefined}
+            initialValues={restModelData.drawerFormType == 'ARTICLE_SET' ? { 
+                ...articleManagement.articleSettingFormInit,
+                Co_DepartmentAndManager:[],
+                main_DepartmentAndManager:[{
+                    responsibilityDepartment:articleManagement.articleSettingFormInit?.responsibilityDepartment,
+                    responsibilityUser:articleManagement.articleSettingFormInit?.responsibilityUser
+                }]
+            } : undefined}
             onFinish={(values: any) => onFinishHandle(values)}
             onVisibleChange={onVisibleChangeHandle}
         >
             <div>
                 <div className='formItemTitle require'>负责人及单位</div>
-                <Row gutter={16}>
-                    <Col className="gutter-row" span={10}>
-                        <ProFormSelect
-                            name="responsibilityDepartment"
-                            width='sm'
-                            showSearch
-                            request={getDepartmentRequest}
-                            placeholder="选择单位"
-                            fieldProps={{
-                                labelInValue: true,
-                                onChange: (item, option) => {
-                                    //责任单位修改时清空责任人
-                                    drawerFormRef.current?.setFieldsValue({ ...articleManagement.articleSettingFormInit, responsibilityUser: { label: '', value: '' } });
-                                    getDepartmentUsers(item.value, option)
-                                }
-                            }}
-                            rules={[{ required: true, message: '请选择单位!' }]}
-                        />
-                    </Col>
-
-                    <Col className="gutter-row" span={8}>
-                        <ProFormDependency name={['responsibilityDepartment']}>
-                            {({ responsibilityDepartment }) => {
-                                return (
-                                    <ProFormSelect
-                                        name="responsibilityUser"
-                                        width='sm'
-                                        disabled={!responsibilityDepartment || JSON.stringify(responsibilityDepartment) == '{}'}
-                                        options={departmentManagers}
-                                        placeholder="选择负责人"
-                                        fieldProps={{
-                                            labelInValue: true,
-                                        }}
-                                        rules={[{ required: true, message: '请选择负责人!' }]}
-                                    />
-                                )
-                            }}
-                        </ProFormDependency>
+                <Row >
+                    <Col span={24}>
+                           <Form.Item name='main_DepartmentAndManager'>
+                               <MultiResponsibilitySelecter options={respDepartmentList}  rows={1}  />
+                           </Form.Item>
                     </Col>
                 </Row>
+                
 
-                <div className='formItemTitle require'>合作负责人及单位</div>
+                <div className='formItemTitle'>合作负责人及单位<span onClick={() => setrows(rows+1)}>添加</span></div>
                 <Row >
                     <Col span={24}>
-                        <Row gutter={24}>
-                           <MultiResponsibilitySelecter />
-                        </Row>
+                           <Form.Item name='Co_DepartmentAndManager'>
+                               <MultiResponsibilitySelecter options={respDepartmentList} editable={true}  rows={rows}  />
+                           </Form.Item>
                     </Col>
                 </Row>
 

+ 167 - 42
src/pages/GradeHospitalAccreditation/articleManagement/components/articleDetailModule/drawer/multi.tsx

@@ -1,61 +1,186 @@
 /*
  * @Author: your name
  * @Date: 2022-03-14 11:17:12
- * @LastEditTime: 2022-03-14 11:48:48
+ * @LastEditTime: 2022-03-15 15:07:48
  * @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 { Col } from "antd";
+import { Button, Col } from "antd";
+import { useEffect, useState } from "react";
+import { getDepartmentList } from "../../../server";
+
+
+export type DataItemType = {
+    id: number;
+    responsibilityDepartment: { label: string; value: number };
+    responsibilityUser: { label: string; value: number };
+    [key: string]: any
+}
+
+type PayloadType = {
+    key?: number;
+    label: string;
+    value: number;
+}
+
+export type MultiResponsibilitySelecterValueType = {
+    responsibilityDepartment: { label: string; value: number };
+    responsibilityUser: { label: string; value: number };
+
+}
 
 //多级责任人及单位设置
+const MultiResponsibilitySelecter = ({ 
+    rows = 0, options = [], value,onChange,editable=false
+}: { 
+    rows: number;
+    options: any[],
+    editable?:boolean;
+    value?: MultiResponsibilitySelecterValueType[],
+    onChange?: (val: DataItemType[]) => void 
+}) => {
+
+    const [data, setdata] = useState<DataItemType[] | []>([]);
+
+    const [selecterTwoList, setSelecterTwoList] = useState<{ label: string; value: number }[]>([]);
+
+    const setDepartmentUsers = async (editItemId: number, payload: any, currentEditItem?: DataItemType) => {
+        // 获取责任单位对应的责任人
+
+        const index = data.findIndex(t => t.id == editItemId);
+
+        if (!payload && currentEditItem) {
+            const resp = await getDepartmentList({ responsibilityDepartmentId: currentEditItem.responsibilityDepartment?.value });
+
+            if (resp) {
+                const { list = [] } = resp;
+                if (list.length > 0) {
+                    const tempPeople = list[0].sysEmployeeVOList.map((item) => ({
+                        label: item ? item.name : '-',
+                        value: item ? item.id : 0,
+                    }));
+                    setSelecterTwoList(tempPeople);
+
+                    currentEditItem['responsibilityUser'] = tempPeople[0];
+
+                    if (index >= 0) {
+                        const _data = data;
+                        _data.splice(index, 1, currentEditItem);
+                        setdata([..._data]);
+                    }
+
+                }
+            }
+        } else {
+            let a = data.filter((v: DataItemType) => v.id == editItemId);
+
+            if (a[0]) {
+                a[0]['responsibilityUser'] = payload;
+                const _data = data;
+                _data.splice(index, 1, a[0]);
+                setdata([..._data]);
+            }
+        }
+
+    };
 
-const SelectFormItem = () => {
+    const editDataItem = (id: number, payload: PayloadType) => {
+
+        let currentEditItem = data.filter((v: DataItemType) => v.id == id);
+
+        if (currentEditItem[0]) {
+
+            currentEditItem[0]['responsibilityDepartment'] = payload;
+            setDepartmentUsers(id, undefined, currentEditItem[0]);
+
+        }
+
+    }
+
+    const delhandle = (id:number)=>{
+        const index = data.findIndex(t => t.id == id);
+        const _data = data;
+        _data.splice(index, 1);
+        setdata([..._data]);
+    }
+
+
+    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}
+                        options={selecterTwoList}
+                        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}}])
+        }
+    }, [rows]);
+
+    useEffect(()=>{
+        onChange&&onChange(data)
+    },[data])
+
+    useEffect(() => {
+
+        const _value = value?.map(v => ({ id: Math.random(), ...v }));
+
+        if (_value) {
+            setdata(_value);
+        }
+
+    }, []);
 
     return (
-        <div style={{display:'flex',flexDirection:'row'}}>
-            <Col className="gutter-row" span={12}>
-                <ProFormSelect
-                    name="responsibilityDepartment"
-                    width='sm'
-                    showSearch
-                    placeholder="选择单位"
-                    options={[]}
-                    fieldProps={{
-                        labelInValue: true,
-                        onChange: (item, option) => {
-
-                        }
-                    }}
-                    rules={[{ required: true, message: '请选择单位!' }]}
-                />
-            </Col>
-            <Col className="gutter-row" span={10}>
-                <ProFormSelect
-                    name="responsibilityUser"
-                    width='sm'
-                    disabled={true}
-                    options={[]}
-                    placeholder="选择负责人"
-                    fieldProps={{
-                        labelInValue: true,
-                    }}
-                    rules={[{ required: true, message: '请选择负责人!' }]}
-                />
-            </Col>
+        <div style={{ display: 'flex', flexDirection: 'column' }}>
+            {
+                [...data].map((v, k) => {
+                    return (
+                        <SelectFormItem key={k} itemData={v} />
+                    )
+                })
+            }
         </div>
     )
 }
 
-const MultiResponsibilitySelecter = ()=>{
-      return (
-          <div style={{display:'flex',flexDirection:'column'}}>
-                 <SelectFormItem />
-                 <div style={{display:'flex',height:'40px',justifyContent:'center',alignContent:'center'}}>+</div>
-          </div>
-      )
-}
-
 export default MultiResponsibilitySelecter;

+ 3 - 4
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-14 10:48:47
+ * @LastEditTime: 2022-03-15 14:48:21
  * @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
@@ -62,8 +62,6 @@ const ArticleDetail = ({ isModeTwo = false }) => {
         setCurrentActivedTree,
         scoreList,
         getDepartmentRequest,
-        departmentManagers,
-        getDepartmentUsers,//获取责任单位人
         currentSelectedActObj,
         ...restModelData
     } = articleManagement;
@@ -264,10 +262,11 @@ const ArticleDetail = ({ isModeTwo = false }) => {
 
     const setDrawerFormInit =  ()=>{
         if (restModelData.leafData) {
-            const { responsibilityDepartmentId, responsibilityDepartmentName, responsibilityUserId, targetEvaluation, responsibilityUserName, accountType } = restModelData.leafData.reviewArticle;
+            const { responsibilityDepartmentId, responsibilityDepartmentName, responsibilityUserId, targetEvaluation, responsibilityUserName, accountType,pfmReviewArticleDepartList } = restModelData.leafData.reviewArticle;
             if (responsibilityDepartmentName && responsibilityDepartmentId) {
 
                 restModelData.setArticleSettingFormInit({
+                    Co_DepartmentAndManager:pfmReviewArticleDepartList,
                     responsibilityDepartment: { label: responsibilityDepartmentName, value: responsibilityDepartmentId },
                     responsibilityUser: { label: responsibilityUserName, value: responsibilityUserId },
                     targetScores: { label: targetEvaluation, value: targetEvaluation },

+ 1 - 4
src/pages/GradeHospitalAccreditation/articleManagement/index.tsx

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2021-09-14 10:22:09
- * @LastEditTime: 2022-03-14 10:42:10
+ * @LastEditTime: 2022-03-15 09:17:06
  * @LastEditors: Please set LastEditors
  * @Description: In User Settings Edit
  * @FilePath: /MedicalWisdomCheckSys/src/pages/GradeHospitalAccreditation/articleManagement/index.tsx
@@ -69,9 +69,6 @@ const ArticleManagement: React.FC<ArticleManagementProps> = (props) => {
         currentActivedTree,
         setCurrentActivedTree,
         scoreList,
-        getDepartmentRequest,
-        departmentManagers,
-        getDepartmentUsers,//获取责任单位人
         currentSelectedActObj,
         setdetailDrawerVisible,
         detailDrawerVisible,

+ 49 - 42
src/pages/GradeHospitalAccreditation/articleManagement/model.ts

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2021-09-14 10:46:45
- * @LastEditTime: 2022-03-14 10:35:10
+ * @LastEditTime: 2022-03-15 15:16:59
  * @LastEditors: Please set LastEditors
  * @Description: In User Settings Edit
  * @FilePath: /MedicalWisdomCheckSys/src/pages/GradeHospitalAccreditation/articleManagement/model.ts
@@ -32,6 +32,7 @@ import {
 } from '@/pages/PlatformMana/generalSetting/serve';
 
 import { notification } from 'antd';
+import { DataItemType } from './components/articleDetailModule/drawer/multi';
 
 export interface ImplementationDataItem {
   level: string;
@@ -47,9 +48,7 @@ const articleManagement = () => {
   const [isLeaf, setIsLeaf] = useState(false);
   const [scoreList, setScoreList] = useState<{ label: string; value: string }[]>([]);
   const [leafData, setLeafData] = useState<API.LeafDataType>(); // 叶子结点数据
-  const [departmentManagers, setDepartmentManagers] = useState<{ label: string; value: number }[]>(
-    [],
-  );
+  
 
   const [targetScores, setTargetScores] = useState<MccsClickableTabs.TabType[]>([]);
   const [ruleTypes, setRuleTypes] = useState<MccsClickableTabs.TabType[]>([]);
@@ -100,6 +99,7 @@ const articleManagement = () => {
   const [articleSettingFormInit, setArticleSettingFormInit] = useState<{
     responsibilityDepartment:{label:string;value:any};
     responsibilityUser:{label:string;value:any};
+    Co_DepartmentAndManager:{responsibilityDepartment:{label:string;value:any};responsibilityUser:{label:string;value:any};}[];
     targetScores:{label:string;value:any};
     articleType:{label:string;value:any};
   }|undefined>(undefined);  //条文设置表单回显默认值
@@ -178,7 +178,8 @@ const articleManagement = () => {
               responsibilityUserName: '-',
               accountType: '-',
               hospId: -1,
-              userId: -1
+              userId: -1,
+              pfmReviewArticleDepartList:[]
             },
             pfmViewRuleDetailDataVoList: [],
             pfmImplementations: [],
@@ -205,34 +206,47 @@ const articleManagement = () => {
 
   type FormValueType = {
     articleType: { label: string; value: any };
-    responsibilityDepartment: { label: string; value: number;[key: string]: any };
-    responsibilityUser: { label: string; value: number;[key: string]: any };
+
+    Co_DepartmentAndManager:DataItemType[];
+    main_DepartmentAndManager:DataItemType[];
+
     targetScores: { label: string; value: any };
   };
 
   const batchSetting = async (values: FormValueType) => {
     // 批量设置
-    const resp = await batchSettingArticle({
-      ruleIds: selectedRowKeys,
-      responsibilityDepartmentId: values.responsibilityDepartment.value,
-      responsibilityDepartmentName: values.responsibilityDepartment.label,
-      responsibilityUserId: values.responsibilityUser.value,
-      responsibilityUserName: values.responsibilityUser.label,
-      targetEvaluation: values.targetScores.value,
-      articleType: values.articleType.value,
-    });
-
-    if (resp) {
+    const {main_DepartmentAndManager,Co_DepartmentAndManager} = values;
+    
+    if(main_DepartmentAndManager[0]){
+      const resp = await batchSettingArticle({
+        ruleIds: selectedRowKeys,
+        responsibilityDepartmentId: main_DepartmentAndManager[0].responsibilityDepartment.value,
+        responsibilityDepartmentName: main_DepartmentAndManager[0].responsibilityDepartment.label,
+        responsibilityUserId: main_DepartmentAndManager[0].responsibilityUser.value,
+        responsibilityUserName:main_DepartmentAndManager[0].responsibilityUser.label,
+        targetEvaluation: values.targetScores.value,
+        articleType: values.articleType.value,
+        responsibilityList:Co_DepartmentAndManager.map(t=>({
+          responsibilityDepartmentId: t.responsibilityDepartment.value,
+          responsibilityDepartmentName: t.responsibilityDepartment.label,
+          responsibilityUserId: t.responsibilityUser.value,
+          responsibilityUserName:t.responsibilityUser.label,
+        }))
+      });
   
-      setReloadRightContent(true);
-
-      return true;
+      if (resp) {
+    
+        setReloadRightContent(true);
+  
+        return true;
+      }
     }
+    
   };
 
   const setArticle = async (values: FormValueType) => {
     // 条文设置
-
+    
     setifHasEdit(true);
 
     if (currentActivedTree && leafData) {
@@ -249,15 +263,23 @@ const articleManagement = () => {
 
       const { id } = leafData.reviewArticle;
 
+      const {main_DepartmentAndManager,Co_DepartmentAndManager} = values;
+
       const paramsData = {
         id,
         ruleId: ruleId,
-        responsibilityDepartmentId: values.responsibilityDepartment.value,
-        responsibilityDepartmentName: values.responsibilityDepartment.label,
-        responsibilityUserId: values.responsibilityUser.value,
-        responsibilityUserName: values.responsibilityUser.label,
+        responsibilityDepartmentId: main_DepartmentAndManager[0].responsibilityDepartment.value,
+        responsibilityDepartmentName: main_DepartmentAndManager[0].responsibilityDepartment.label,
+        responsibilityUserId: main_DepartmentAndManager[0].responsibilityUser.value,
+        responsibilityUserName:main_DepartmentAndManager[0].responsibilityUser.label,
         targetEvaluation: values.targetScores.value,
         articleType: values.articleType.value,
+        responsibilityList:Co_DepartmentAndManager.map(t=>({
+          responsibilityDepartmentId: t.responsibilityDepartment.value,
+          responsibilityDepartmentName: t.responsibilityDepartment.label,
+          responsibilityUserId: t.responsibilityUser.value,
+          responsibilityUserName:t.responsibilityUser.label,
+        }))
       };
 
       const resp = await settingArticle(paramsData);
@@ -276,20 +298,7 @@ const articleManagement = () => {
     }
   };
 
-  const getDepartmentUsers = async (id:number, option?: any) => {
-    // 获取责任单位对应的责任人
-    const resp = await getDepartmentList({ responsibilityDepartmentId: id});
-    if (resp) {
-      const { list = [] } = resp;
-      if (list.length > 0) {
-        const tempPeople = list[0].sysEmployeeVOList.map((item) => ({
-          label: item ? item.name : '-',
-          value: item ? item.id : 0,
-        }));
-        setDepartmentManagers(tempPeople);
-      }
-    }
-  };
+  
 
   const getSelfEvaluationRecordList = async (id: number) => {
     const resp = await getSelfEvaluation(id);
@@ -706,8 +715,6 @@ const articleManagement = () => {
     setCurrentActivedTree,
     scoreList, // 评分
     getDepartmentRequest,
-    departmentManagers,
-    getDepartmentUsers,
     targetScores,
     ruleTypes,
     leafData,

+ 14 - 1
src/pages/GradeHospitalAccreditation/articleManagement/typings.d.ts

@@ -1,7 +1,7 @@
 /*
  * @Author: your name
  * @Date: 2021-09-14 10:22:42
- * @LastEditTime: 2021-12-31 14:51:31
+ * @LastEditTime: 2022-03-15 15:11:19
  * @LastEditors: Please set LastEditors
  * @Description: In User Settings Edit
  * @FilePath: /MedicalWisdomCheckSys/src/pages/GradeHospitalAccreditation/articleManagement/typings.d.ts
@@ -82,6 +82,7 @@ declare namespace API {
     accountType: string; // 条文组别
     hospId: number;
     userId: number,
+    pfmReviewArticleDepartList:any[];  //合作单位及负责人
     // recordDay: number;
     // createTime: number;
     // updateTime: number;
@@ -103,6 +104,12 @@ declare namespace API {
     responsibilityUserName: string;
     targetEvaluation: string;
     articleType: string;
+    responsibilityList:{
+      responsibilityDepartmentId:number;
+      responsibilityDepartmentName:string;
+      responsibilityUserId:number;
+      responsibilityUserName:string;
+    }[];
   };
 
   type tableDataItemType = {
@@ -126,6 +133,12 @@ declare namespace API {
     responsibilityUserName: string;
     targetEvaluation: string;
     articleType: string;
+    responsibilityList:{
+      responsibilityDepartmentId:number;
+      responsibilityDepartmentName:string;
+      responsibilityUserId:number;
+      responsibilityUserName:string;
+    }[];
   };
 
   type GetSelfEvaluationRequestType = {