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) => ( {record.status == 1 ? 启用 : 禁用 } ) }, { title: '操作', dataIndex: 'key', render: (text, record) => ( showModal(3, record.id)}>修改 {record.status === '1' ? ( messageBox(2, record.id)}>禁用) : ( disableAuth(record.id, 1)}>启用)} messageBox(1, record.id)} >删除 ) } ] function showAddData() { setaddVisible(true) } //提示框确认事件 function handleOk() { if (modalType == 1) { deleteAuth(currentId, 0) } else if (modalType == 2) { disableAuth(currentId, 0) } } //提示框取消 function handleCancel() { setMsvisible(false); } function goBack() { setaddVisible(false) setFormData(null) getDataAuthPage() } function onSizeChange(current, pageSize) { params.current = current params.size = pageSize setSize(pageSize) setCurrent(current) setParams(params) getDataAuthPage() } function changePage(page, pageSize) { params.current = page params.size = pageSize setCurrent(page) setParams(params) getDataAuthPage() } if (addVisible && formData) { //新增/修改界面 return ( ) } return (

数据权限

record.id + record.roleName} pagination={{ current: current, pageSize: size, size: 'small', showSizeChanger: true, pageSizeOptions: ['15', '30', '60', '120'], showTotal: (total, range) => `第${range[0]}-${range[1]} 条/共 ${total} 条数据`, onShowSizeChange: (current, pageSize) => onSizeChange(current, pageSize), // 改变每页数量时更新显示 onChange: (page, pageSize) => changePage(page, pageSize),//点击页码事件 total: total }} />

{tipText[modalType]}

) } export default DataManager;