Prechádzať zdrojové kódy

数据权限编辑--

zhouna 3 rokov pred
rodič
commit
8e3878a583

+ 3 - 0
src/common/MyDeptStruct.js

@@ -62,6 +62,9 @@ function MyDeptStruct(props) {
     }
     function onSelect() { }
     //const defaultCheckedKeys = checkeds && checkeds.softwareMenuIds ? checkeds.softwareMenuIds.slice() : []
+    if(!treeData){
+        return null;
+    }
     return (
         <div className='treeContent' >
             <p className='title'>组织结构</p>

+ 2 - 2
src/components/DataManager/AddData.js

@@ -40,7 +40,7 @@ function AddData(props) {
   const [tags, setTags] = useState([[]]);
   const [orgList, setOrgList] = useState([]);
   const [selectedRowKeys, setSelectedRowKeys] = useState([]);
-  const { save, formData, operType, val, tag,authChecksArr } = useContext(DataContext);
+  const { save, formData, operType, val, tag,authChecksArr, originData} = useContext(DataContext);
   const isEdit = operType===3;      //是否为编辑
   const staticInfo = useSelector(state => {
     return state.staticInfo;
@@ -65,7 +65,7 @@ function AddData(props) {
   };
   //编辑数据填充
     function setEditData(){
-        const data = authChecksArr[tabIndex]||{};
+        const data = (originData[tabIndex]||{}).dataAuthDetail||{};
         const sysObj = form.getFieldValue().softwareVOS[tabIndex]||{};
         const dataType = sysObj.dataType;
         const isCustom = dataType === '7';

+ 10 - 80
src/components/DataManager/index.js

@@ -23,6 +23,7 @@ function DataManager() {
   const [formData, setFormData] = useState(null);
   const [total, setTotal] = useState(0);
   const [authChecksArr, setAuthChecksArr] = useState({});   //选中数据
+  const [originData,setOriginData] = useState({});   //编辑的原始数据
   const [tag, setTag] = useState([[]]);
   const [val, setVal] = useState([]);
   const [size, setSize] = useState(15);
@@ -114,104 +115,33 @@ function DataManager() {
   }
   //重组成提交需要的数据
     function structEditData(data){
-        const {id,name,status,softwares} = data;console.log('id:',id)
+        const {id,name,status,softwares} = data;
         let formObj = {
             id,
             name,
             status,
             softwareVOS:[]
         };
-        let tempArr = [],authArr=[],checkedsObj={};   //权限数据
+        setOriginData(softwares);
+        let tempArr = [],authArr=[],checkedsObj={},arrVal=[];   //权限数据
         softwares.map((software,i)=>{
             const {id,name,roles,dataAuthDetail,dataType} = software;
             const {depts,doctors,hospitals} = dataAuthDetail||{};
             tempArr = [...depts||[],...doctors||[],...hospitals||[]];
-            checkedsObj[i] = fullfillVals(dataAuthDetail);
+            //arrVal =
+            checkedsObj[i] = fullfillVals(tempArr);
             authArr[i] = {
-                id,name,dataType:(dataType||'')+''||'7',roles:filterIds(roles||[]),dataAuthDetails:dataType==='7'?tempArr:null
+                id,name,dataType:(dataType||'')+''||'7',roles:filterIds(roles||[]),dataAuthDetails:+dataType===7?arrVal:null
             };
-            //setTag[i] = tempArr;
         });
         formObj.softwareVOS = authArr;
-        /*let roles = []
-        let dataAuthDetails = []
-        let selectedRowKeys = []
-        let softwareMenuIds = []
-        let arr = JSON.parse(JSON.stringify(data).replace(/softwares/g, 'softwareVOS').replace(/dataAuthDetail/g, 'dataAuthDetails'))
-        arr.softwareVOS.map((it, i) => {
-          roles[i] = []
-          dataAuthDetails[i] = []
-          selectedRowKeys[i] = []
-          softwareMenuIds[i] = []
-          tag[i] = []
-            //所属角色数据另存
-          arr.softwareVOS[i].roles.forEach(item => {
-            roles[i].push(item.id)
-          })
-            //遍历出权限范围数据,已选中的数据遍历出来
-          const authDetails = arr.softwareVOS[i].dataAuthDetails
-          authDetails && authDetails.depts && authDetails.depts.forEach(item => {
-            dataAuthDetails[i].push({
-              dataType: 7,
-              detailId: item.hospitalId,
-              detailType: item.detailType
-            })
-            tag[i].push({
-              id: item.id,
-              name: item.name,
-              type: item.detailType
-            })
-              //科室树形结构选中的id
-            softwareMenuIds[i].push(item.hospitalId + '-' + item.id + '-' + item.name)
-          })
-          authDetails && authDetails.doctors && authDetails.doctors.forEach(item => {
-            dataAuthDetails[i].push({
-              dataType: 7,
-              detailId: item.id,
-              detailType: item.detailType
-            })
-            tag[i].push({
-              id: item.id,
-              name: item.name,
-              type: item.detailType
-            })
-            selectedRowKeys[i].push(item.id + '-' + item.name)
-          })
-          authDetails && authDetails.hospitals && authDetails.hospitals.forEach(item => {
-            dataAuthDetails[i].push({
-              dataType: 7,
-              detailId: item.id,
-              detailType: item.detailType
-            })
-            tag[i].push({
-              id: item.id,
-              name: item.name,
-              type: item.detailType
-            })
-            softwareMenuIds[i].push(item.id + '-' + item.name)
-          })
-          arr.softwareVOS[i].roles = roles[i]
-          arr.softwareVOS[i].dataAuthDetails = dataAuthDetails[i] && dataAuthDetails[i].length > 0 ? dataAuthDetails[i] : [{ dataType: it.dataType }]
-          arr.softwareVOS[i].selectedRowKeys = selectedRowKeys[i]
-          arr.softwareVOS[i].softwareMenuIds = softwareMenuIds[i]
-          if (arr.softwareVOS[i].dataAuthDetails && arr.softwareVOS[i].dataAuthDetails.length > 0) {
-            arr.softwareVOS[i].datatype = JSON.stringify(arr.softwareVOS[i].dataAuthDetails[0].dataType)
-            val[i] = arr.softwareVOS[i].dataAuthDetails[0].dataType
-          } else {
-            arr.softwareVOS[i].datatype = JSON.stringify(arr.softwareVOS[i].dataType)
-            val[i] = arr.softwareVOS[i].dataType
-          }
-        });
-        console.log(tag);
-
-        setTag(tag)   //要显示的标签数据
-        setVal(val)   //数据权限类型*/
         setAuthChecksArr(checkedsObj);
         setFormData(formObj)    //表单数据
         setaddVisible(true);
     }
   function fullfillVals(data){
-    data.map((it)=>{
+    if(!data) return null;
+    return data.map((it)=>{
       return Object.assign(it,{dataType:'7',detailId:it.id});
     })
   }
@@ -332,7 +262,7 @@ function DataManager() {
   }
   if (addVisible && formData) { //新增/修改界面
     return (
-      <DataContext.Provider value={{ save: addData, formData: formData, operType,authChecksArr, val, tag }}>
+      <DataContext.Provider value={{ save: addData, formData,originData, operType,authChecksArr, val, tag }}>
         <AddData back={goBack} />
       </DataContext.Provider>
     )