import React, { useState, useEffect } from 'react';
import { Form, Input, Button, Table, Select, Space, Modal, message, Row, Col } from 'antd';
import { DownOutlined, PlusOutlined, ExclamationCircleOutlined } from '@ant-design/icons';
// import NormalPlayer from './testComponent/testComponent'
import '@common/common.less';
import apiObj from '@api/index';
import utils from '@utils/index';
import DataContext from './data-context';
import AddData from './AddData';
const { post, api, xPost } = apiObj;
const { Option } = Select;
const {filterIds }=utils;
function DataManager() {
useEffect(() => {
getDataAuthPage();
}, []);
const [userList, setUserList] = useState([]);
const [currentId, setCurrentId] = useState(""); //编辑数据的id
const [modalType, setModalType] = useState("");
const [msvisible, setMsvisible] = useState(false);
const [operType, setOperType] = useState(""); //操作类型:1新增 3修改
const [addVisible, setaddVisible] = useState(false);
const [formData, setFormData] = useState(null);
const [total, setTotal] = useState(0);
const [authChecksArr, setAuthChecksArr] = useState({}); //选中数据
const [tag, setTag] = useState([[]]);
const [val, setVal] = useState([]);
const [size, setSize] = useState(15);
const [current, setCurrent] = useState(1);
const [params, setParams] = useState({
pages: 1,
current: 1,
size: 15
});
const [form] = Form.useForm();
const tipText = {
1: '确定要删除该数据权限?',
2: '确定要禁用该数据权限?',
};
let data = {
pages: 1,
current: 1,
size: size
}
const showModal = (flag, id) => {
setOperType(flag)
setCurrentId(id)
//新增
if (flag == 1) {
setaddVisible(true)
//新增时状态默认启用
setFormData({
status: '1'
});
setVal([])
}
//修改
if (flag == 3) {
getDataAuthById(id)
}
}
//表格数据
function getDataAuthPage(param) {
//const param = filterData;
post(api.getDataAuthPage, param || params).then((res) => {
if (res.data.code === 200) {
const data = res.data.data;
setUserList(data.records);
setTotal(data.total)
}
})
}
//禁用启用
const disableAuth = (id, status) => {
let params = {
id: id,
status: status
}
xPost(api.disableAuth, params).then((res) => {
if (res.data.code === 200) {
getDataAuthPage();
setMsvisible(false);
message.success((status ? '启用' : '禁用') + "成功");
} else {
message.warning(res.data.msg || '操作失败');
}
})
};
//删除
const deleteAuth = (id) => {
let params = {
id: id,
}
xPost(api.deleteAuth, params).then((res) => {
if (res.data.code === 200) {
getDataAuthPage();
setMsvisible(false);
message.success("删除成功");
} else {
message.warning(res.data.msg || '操作失败');
}
})
};
//查看
function getDataAuthById(id) {
xPost(api.getDataAuthById, { id: id }).then((res) => {
if (res.data.code === 200) {
const data = res.data.data;
structEditData(data);
}else{
message.warning(res.data.msg || '详情获取失败');
}
})
}
//重组成提交需要的数据
function structEditData(data){
const {id,name,status,softwares} = data;console.log('id:',id)
let formObj = {
id,
name,
status,
softwareVOS:[]
};
let tempArr = [],authArr=[],checkedsObj={}; //权限数据
softwares.map((software,i)=>{
const {id,name,roles,dataAuthDetail,dataType} = software;
const {depts,doctors,hospitals} = dataAuthDetail||{};
tempArr = [...depts||[],...doctors||[],...hospitals||[]];
checkedsObj[i] = fullfillVals(dataAuthDetail);
authArr[i] = {
id,name,dataType:(dataType||'')+''||'7',roles:filterIds(roles||[]),dataAuthDetails:dataType==='7'?tempArr: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)=>{
return Object.assign(it,{dataType:'7',detailId:it.id});
})
}
//保存
function addData(formData) {
let url = api.addAuth;
delete formData.roles
const arr = formData.softwareVOS.filter((it) => {
if (Object.keys(it).length && it.id ) {
return it;
}
});
formData.softwareVOS = arr;
let param = {
addDataAuthVO: formData,
}
if (operType == 3) {
url = api.updateAuth
param = {
updateDataAuthVO: {
...formData,
id: currentId
},
}
}
post(url, param).then((res) => {
if (res.data.code === 200) {
getDataAuthPage();
setaddVisible(false)
setFormData(null)
message.success("修改成功");
} else {
message.warning(res.data.msg || '操作失败');
}
}).catch(() => {
message.error("接口出错");
});
}
const onFinish = (value) => {
const param = {
...value,
...params
}
setCurrent(1)
setParams(param)
getDataAuthPage(param);
};
const onReset = () => {
setCurrent(1)
setParams(data)
form.resetFields();
getDataAuthPage(data);
};
const messageBox = (type, id) => {
setMsvisible(true)
setCurrentId(id)
setModalType(type)
};
const columns = [
{ title: '数据权限名称', dataIndex: 'name', key: 'index' },
{ title: '所属角色', dataIndex: 'roleName', key: 'index' },
{
title: '状态', dataIndex: 'status', key: 'status', render: (text, record) => (