/*
* @Author: your name
* @Date: 2021-07-26 10:13:13
* @LastEditTime: 2021-08-13 20:18:17
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: /TracerMethodology_PC/src/pages/UserMana/index.js
*/
import { PlusOutlined } from '@ant-design/icons';
import { Button, Popconfirm } from 'antd';
import React, { useState, useRef, useEffect } from 'react';
import { PageContainer } from '@ant-design/pro-layout';
import ProTable from '@ant-design/pro-table';
import { ModalForm, ProFormText, ProFormSelect } from '@ant-design/pro-form';
import UpdateForm from './updateForm';
import DrawerContent from './components/DrawerContent';
import { getVisitsAndBedDayCostSettingList, delVisitsAndBedDayCostSettingList, addVisitsAndBedDayCostSettingList,
getVisitsAndBedDayCostSettingListById,editVisitsAndBedDayCostSettingList } from './service';
import { getCostshareparamList } from '@/pages/costAllocationParamsSetting/service';
import { getReportProjectSettingList } from '@/pages/baseSetting/reportProjectSetting/service';
const DistrictMana = () => {
const columns = [
{
title: '分配方式',
dataIndex: 'allocation',
key: 'allocation',
hideInSearch: true,
render: num => <>{num == 1 ? '按照收入比例分配' : '按照固定比例分配'}>
},
{
title: '收入类型',
dataIndex: 'incomeType',
key: 'incomeType',
hideInSearch: true,
render: num => <>{num == 1 ? '门诊方式' : '住院方式'}>
},
{
title: '对应值',
dataIndex: 'incomeFileName',
key: 'incomeFileName',
hideInSearch: false,
},
{
title: '分摊参数编码',
dataIndex: 'shareParamCode',
key: 'shareParamCode',
hideInSearch: true,
},
{
title: '分摊参数名称',
dataIndex: 'shareParamName',
key: 'shareParamName',
hideInSearch: true,
},
{
title: '成本对应',
dataIndex: 'costCorrespondingName',
key: 'costCorrespondingName',
hideInSearch: true,
},
{
title: '操作',
dataIndex: 'option',
valueType: 'option',
render: (_, record) => [
{
edithandle(record);
}}
>
编辑
,
{
setCurrentRow(record);
delListHandler(record);
}}
>
删除
,
],
},
];
const drawerTableColumns = [
{
title: '分摊参数名称',
dataIndex: 'shareParamName',
key: 'shareParamName',
hideInSearch: true,
},
{
title: '分摊参数代码',
dataIndex: 'shareParamCode',
key: 'shareParamCode',
hideInSearch: true,
}
]
const drawerTableReportColumns = [
{
title: '报表项目名',
dataIndex: 'reportName',
key: 'reportName',
hideInSearch: true,
},
{
title: '编号',
dataIndex: 'num',
key: 'num',
hideInSearch: true,
}
]
const [createModalVisible, handleModalVisible] = useState(false);
const [updateModalVisible, handleUpdateModalVisible] = useState(false);
const actionRef = useRef();
const ref = useRef(); //新增表单
const [updateFormRef,setUpdateFormRef] = useState(null);
const [currentRow, setCurrentRow] = useState({});
const [drawerVisible, setDrawerVisible] = useState(false);
const [type, setType] = useState(0); //1 分摊参数,2 报表
const [selectedShareparams, setSelectedShareparams] = useState(null);
const [selectedIncome, setSelectedIncome] = useState(null);
const [activeKey, setActiveKey] = useState('0');
const [selectedCost, setSelectedCost] = useState(null);
const [ifcostCorresponding, setIfcostCorresponding] = useState(true);
const [dataById, setDataById] = useState(null);
const [edit,setEdit] = useState(false);
const [expandedRowKeys,setExpandedRowKeys] = useState([]);
const [defaultReportTableSelected,setDefaultReportTableSelected] = useState([]);
const reportTableTypes = ['损益表','完全成本法表','变动成本表','全院损益表','全成本报表'];
/**
*
* @param {Boolean} bool 弹窗展示状态
*/
const updateModalVisibleChange = (bool) => {
handleUpdateModalVisible(bool);
if (!bool) setCurrentRow(undefined);
};
//获取列表
const getList = async (params = {}, sort, filter) => {
const res = await getVisitsAndBedDayCostSettingList({...params});
// console.log({res});
return {
data: res.data.list,
total: res.data.totalCount,
success: res.success,
};
};
//获取drawer 列表
const getDrawerTableList = async (params = {}, sort, filter) => {
if (type == 1) {
const res = await getCostshareparamList({ ...params });
return {
data: res.data.list,
total: res.data.totalCount,
success: res.success,
};
}
if (type == 2) {
const res = await getReportProjectSettingList({ ...params, reportType: activeKey });
const arr = res.data.list.map(item=>item.num);
setExpandedRowKeys(arr);
return {
data: res.data.list,
total: res.data.totalCount,
success: res.success,
};
}
};
/**
*
* @param {Object} value 删除项数据
*/
const delListHandler = async (value) => {
const resp = await delVisitsAndBedDayCostSettingList(value);
// console.log({ resp });
if (resp.status) {
if (actionRef.current) {
actionRef.current.reload();
}
}
};
const edithandle = async (record) => {
setEdit(true);
const { id } = record;
//获取指定id数据
const resp = await getVisitsAndBedDayCostSettingListById({ id });
// console.log({ resp });
const { status, data } = resp;
if (status == 200) {
setDataById(data);
}
setCurrentRow(record);
handleUpdateModalVisible(true);
}
const openDrawerHandle = (num, bool) => {
setType(num);
setIfcostCorresponding(bool);
if(!edit)setDefaultReportTableSelected([].concat([]));
if(bool&&edit){
console.log('成本');
const {costFileType,costCorresponding} = dataById;
setDefaultReportTableSelected([].concat([costCorresponding]));
setActiveKey(`${costFileType}`);
}
if(!bool&&edit){
console.log('收入');
const {incomeFileType,incomeFieldNum} = dataById;
setDefaultReportTableSelected([].concat([incomeFieldNum]));
setActiveKey(`${incomeFileType}`);
}
setDrawerVisible(true);
}
useEffect(() => {
}, []);
return (
[
}
type="primary"
onClick={() => {
setEdit(false);
handleModalVisible(true);
}}
>
新增
]}
pagination={{
pageSize: 10,
}}
search={{
defaultCollapsed: false,
labelWidth: 'auto',
}}
/>
{
{
if (ref.current) {
ref.current.resetFields();
}
handleModalVisible(bool);
}}
onFinish={async (value) => {
const { allocation, incomeType } = value;
const { shareParamCode, shareParamName } = selectedShareparams;
const { num: incomeFieldNum, reportName: incomeFileName,reportType:incomeFileType } = selectedIncome;
const { num: costCorresponding, reportName: costCorrespondingName,reportType:costFileType } = selectedCost;
const data = {
allocation, incomeType, shareParamCode, shareParamName, incomeFieldNum,
incomeFileName:`[${reportTableTypes[incomeFileType]}] ${incomeFileName}`,
costCorresponding, costCorrespondingName:`[${reportTableTypes[costFileType]}] ${costCorrespondingName}`,
incomeFileType,costFileType}
// console.log({data});
const success = await addVisitsAndBedDayCostSettingList(data);
if (success) {
handleModalVisible(false);
if (actionRef.current) {
actionRef.current.reload();
}
}
//清空
setSelectedCost(null);
setSelectedShareparams(null);
setSelectedIncome(null);
}}
>
{ openDrawerHandle(1) },
allowClear:false
}}
rules={[
{
required: true,
message: '请选择分摊参数',
},
]}
width="sm"
name="shareParamName"
label="选择分摊参数"
/>
{ openDrawerHandle(2, false); },
allowClear:false
}}
rules={[
{
required: true,
message: '请选择对应收入字段',
},
]}
width="sm"
name="incomeFileName"
label="对应收入字段"
/>
{ openDrawerHandle(2, true); },
allowClear:false
}}
rules={[
{
required: true,
message: '请选择对应成本字段',
},
]}
width="sm"
name="costCorrespondingName"
label="对应成本字段"
/>
}
{/* 抽屉内容 */}
{
type == 1 ? setDrawerVisible(bool)}
renderListFunc={getDrawerTableList}
config={{ tableSearch: false, rowKeys: 'shareParamCode' }}
onFinishFunc={async (value, selectedRowKeys, selectedRows) => {
// console.log({ '分摊': selectedRows })
setSelectedShareparams(selectedRows[0]);
const { shareParamName } = selectedRows[0];
if(edit){
updateFormRef?.current?.setFieldsValue({
shareParamName: shareParamName,
});
}else{
ref?.current?.setFieldsValue({
shareParamName: shareParamName,
});
}
setDrawerVisible(false);
}}
/> : {
const { children } = record;
if (!children || children.length == 0) {
return originNode
} else {
return null
}
}}
onTabChange={(key, ref) => {
setActiveKey(key);
if (ref.current) ref.current.reload()
}}
expandable={{
expandedRowKeys:expandedRowKeys
}}
defaultSelected={defaultReportTableSelected}
onVisibleChange={(bool) => setDrawerVisible(bool)}
renderListFunc={getDrawerTableList}
config={{ tableSearch: false,rowKeys:'num'}}
tabActiveKey={activeKey}
onFinishFunc={async (value, selectedRowKeys, selectedRows) => {
// console.log({ '报表': selectedRows,'ifcostCorresponding':ifcostCorresponding,value });
if(selectedRows.length>0){
const { reportName,reportType } = selectedRows[0];
if (!ifcostCorresponding) {
setSelectedIncome(selectedRows[0]);
if(edit){
updateFormRef?.current?.setFieldsValue({
incomeFileName: reportName,
});
}else{
ref?.current?.setFieldsValue({
incomeFileName: reportName,
});
}
}
if (ifcostCorresponding) {
setSelectedCost(selectedRows[0]);
if(edit){
updateFormRef?.current?.setFieldsValue({
costCorrespondingName: reportName,
});
}else{
ref?.current?.setFieldsValue({
costCorrespondingName: reportName,
});
}
}
}
setDrawerVisible(false);
setActiveKey('0');
}}
/>
}
{/* 更新 */}
{
// console.log({ '编辑': value });
const {id} = currentRow;
const { allocation, incomeType } = value;
let data = {id,allocation,incomeType};
if(selectedShareparams){
const { shareParamCode, shareParamName } = selectedShareparams;
data = {...data,shareParamCode, shareParamName}
}else{
const { shareParamCode, shareParamName } = dataById;
data = {...data,shareParamCode, shareParamName}
}
if(selectedIncome){
const { num: incomeFieldNum, reportName: incomeFileName,reportType:incomeFileType } = selectedIncome;
data = {...data,incomeFieldNum,incomeFileName,incomeFileType}
}else{
const { incomeFieldNum, incomeFileName,incomeFileType } = dataById;
data = {...data,incomeFieldNum,incomeFileName,incomeFileType}
}
if(selectedCost){
const { num: costCorresponding, reportName: costCorrespondingName,reportType:costFileType } = selectedCost;
data = {...data,costCorresponding,costCorrespondingName,costFileType}
}else{
const { costCorresponding, costCorrespondingName,costFileType } = dataById;
data = {...data,costCorresponding,costCorrespondingName,costFileType}
}
const success = await editVisitsAndBedDayCostSettingList(data);
if (success) {
handleUpdateModalVisible(false);
setCurrentRow(undefined);
if (actionRef.current) {
actionRef.current.reload();
}
}
//清空
setSelectedCost(null);
setSelectedShareparams(null);
setSelectedIncome(null);
setDataById(null);
setDefaultReportTableSelected([]);
}}
openDrawerHandle={openDrawerHandle}
onCancel={() => {
handleUpdateModalVisible(false);
setCurrentRow(undefined);
}}
getFormRef={ref=>setUpdateFormRef(ref)}
updateModalVisible={updateModalVisible}
updateModalVisibleChange={updateModalVisibleChange}
values={currentRow || {}}
/>
);
};
export default DistrictMana;