|
@@ -23,6 +23,7 @@ function DataManager() {
|
|
const [formData, setFormData] = useState(null);
|
|
const [formData, setFormData] = useState(null);
|
|
const [total, setTotal] = useState(0);
|
|
const [total, setTotal] = useState(0);
|
|
const [authChecksArr, setAuthChecksArr] = useState({}); //选中数据
|
|
const [authChecksArr, setAuthChecksArr] = useState({}); //选中数据
|
|
|
|
+ const [originData,setOriginData] = useState({}); //编辑的原始数据
|
|
const [tag, setTag] = useState([[]]);
|
|
const [tag, setTag] = useState([[]]);
|
|
const [val, setVal] = useState([]);
|
|
const [val, setVal] = useState([]);
|
|
const [size, setSize] = useState(15);
|
|
const [size, setSize] = useState(15);
|
|
@@ -114,104 +115,33 @@ function DataManager() {
|
|
}
|
|
}
|
|
//重组成提交需要的数据
|
|
//重组成提交需要的数据
|
|
function structEditData(data){
|
|
function structEditData(data){
|
|
- const {id,name,status,softwares} = data;console.log('id:',id)
|
|
|
|
|
|
+ const {id,name,status,softwares} = data;
|
|
let formObj = {
|
|
let formObj = {
|
|
id,
|
|
id,
|
|
name,
|
|
name,
|
|
status,
|
|
status,
|
|
softwareVOS:[]
|
|
softwareVOS:[]
|
|
};
|
|
};
|
|
- let tempArr = [],authArr=[],checkedsObj={}; //权限数据
|
|
|
|
|
|
+ setOriginData(softwares);
|
|
|
|
+ let tempArr = [],authArr=[],checkedsObj={},arrVal=[]; //权限数据
|
|
softwares.map((software,i)=>{
|
|
softwares.map((software,i)=>{
|
|
const {id,name,roles,dataAuthDetail,dataType} = software;
|
|
const {id,name,roles,dataAuthDetail,dataType} = software;
|
|
const {depts,doctors,hospitals} = dataAuthDetail||{};
|
|
const {depts,doctors,hospitals} = dataAuthDetail||{};
|
|
tempArr = [...depts||[],...doctors||[],...hospitals||[]];
|
|
tempArr = [...depts||[],...doctors||[],...hospitals||[]];
|
|
- checkedsObj[i] = fullfillVals(dataAuthDetail);
|
|
|
|
|
|
+ //arrVal =
|
|
|
|
+ checkedsObj[i] = fullfillVals(tempArr);
|
|
authArr[i] = {
|
|
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;
|
|
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);
|
|
setAuthChecksArr(checkedsObj);
|
|
setFormData(formObj) //表单数据
|
|
setFormData(formObj) //表单数据
|
|
setaddVisible(true);
|
|
setaddVisible(true);
|
|
}
|
|
}
|
|
function fullfillVals(data){
|
|
function fullfillVals(data){
|
|
- data.map((it)=>{
|
|
|
|
|
|
+ if(!data) return null;
|
|
|
|
+ return data.map((it)=>{
|
|
return Object.assign(it,{dataType:'7',detailId:it.id});
|
|
return Object.assign(it,{dataType:'7',detailId:it.id});
|
|
})
|
|
})
|
|
}
|
|
}
|
|
@@ -332,7 +262,7 @@ function DataManager() {
|
|
}
|
|
}
|
|
if (addVisible && formData) { //新增/修改界面
|
|
if (addVisible && formData) { //新增/修改界面
|
|
return (
|
|
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} />
|
|
<AddData back={goBack} />
|
|
</DataContext.Provider>
|
|
</DataContext.Provider>
|
|
)
|
|
)
|