/* * @Author: code4eat awesomedema@gmail.com * @Date: 2023-03-03 11:30:33 * @LastEditors: code4eat awesomedema@gmail.com * @LastEditTime: 2023-05-12 14:04:00 * @FilePath: /KC-MiddlePlatform/src/pages/platform/setting/pubDicTypeMana/index.tsx * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ import BMSPagecontainer from '@/components/BMSPageContainer'; import { BMSTable } from '@/components/BMSTable'; import { createFromIconfontCN } from '@ant-design/icons'; import { ActionType } from '@ant-design/pro-components'; import { ModalForm, ProFormText, ProFormTextArea } from '@ant-design/pro-form'; import { ProColumns } from '@ant-design/pro-table'; import { Button, Dropdown, Input, MenuProps, message, Modal, Popconfirm, Space, Switch, Table } from 'antd'; import { TransferItem, TransferProps } from 'antd/es/transfer'; import React, { Key } from 'react'; import { useEffect, useImperativeHandle, useRef, useState } from 'react'; import { getMedicalGroup, getEmpTableDataFromMedicalGroup, addMedicalGroup, editMedicalGroup, delLeftReportData, getMedicalAllEmp, addMedicalGroupEmp, MedicalEmpInfoType, updateMedicalGroupEmpInfo, delTableData } from './service'; import './style.less'; const IconFont = createFromIconfontCN({ scriptUrl: '//at.alicdn.com/t/c/font_1927152_4nm5kxbv4m3.js', }); const MedicalGroupSet = () => { const [tableDataFilterParams, set_tableDataFilterParams] = useState(); const [typeList, set_typeList] = useState([]); const [showTypeListArr, set_showTypeListArr] = useState([]); const [currentSelectedType, set_currentSelectedType] = useState(undefined); const [tableSelectedKeys, set_tableSelectedKeys] = useState([]); const [selectedAddKeys, set_selectedAddKeys] = useState([]); const [ifShowModal, set_ifShowModal] = useState(false); const [currentEditLeftData, set_currentEditLeftData] = useState(undefined); const [ifEditTable, set_ifEditTable] = useState(false); const tableRef = useRef(); const ref = React.createRef<{ save: any; getSelectedKeys: any }>(); const column = [ { title: '工号', ellipsis: true, dataIndex: 'account', }, { title: '姓名', dataIndex: 'name', }, { title: '组长', dataIndex: 'medicalGroupManager', render: (_: any, record: any) => { return switchChangeHandle(bool, record, 'medicalGroupManager')} /> } }, { title: '操作', key: 'option', valueType: 'option', render: (_: any, record: any) => { return [ delTableDataHanfle(record)} > 删除 ] }, }, ] const delTableDataHanfle = async (record?: { id: number; }) => { const resp = await delTableData(record ? [record.id] : [...tableSelectedKeys]); if (resp) { set_tableSelectedKeys([]); tableRef.current?.reload(); } } const [tableColumn, set_tableColumn] = useState(column); const getTableData = async (params: any, sort: any, filter: any) => { const { medicalGroupCode } = params; if (medicalGroupCode) { const resp = await getEmpTableDataFromMedicalGroup(params); if (resp) { return { data: resp.list, success: true, total: resp.totalCount, pageSize: resp.pageSize, totalPage: resp.totalPage, } } } return { data: [], success: true } } const switchChangeHandle = async (checked: boolean, record: any, key: string) => { const result = { ...record, medicalGroupManager: checked ? 1 : 0 } const resp = await updateMedicalGroupEmpInfo(result); if (resp) { tableRef.current?.reload(); } } //获取左侧数据 const getPageLeftData = async () => { const resp = await getMedicalGroup(); if (resp) { set_typeList(resp); set_showTypeListArr(resp); } } const updateTable = async (formVal: any, type: 'EDIT' | "ADD" | 'ADD_LEFTDATA' | 'EDIT_LEFTDATA') => { // console.log({formVal,type}); if (type == 'ADD_LEFTDATA') { const resp = await addMedicalGroup({ name: formVal.name, remark: formVal.remark, }); if (resp) { getPageLeftData(); } } if (type == 'EDIT_LEFTDATA') { const resp = await editMedicalGroup({ id: formVal.id, name: formVal.name, remark: formVal.remark }); if (resp) { getPageLeftData(); } } return true; } const UpDataActBtn = ({ record, type }: { record: any, type: 'EDIT' | 'ADD' | 'ADD_LEFTDATA' | 'EDIT_LEFTDATA' }) => { const getTrriger = () => { if (type == 'ADD') { return 添加 } if (type == 'EDIT') { return 编辑 } if (type == 'ADD_LEFTDATA') { return (
) } if (type == 'EDIT_LEFTDATA') { return 编辑 } } return ( { return updateTable(type == 'EDIT_LEFTDATA' ? { ...record, ...val } : val, type); }} > ) } interface TableSelecterProps extends TransferProps { tableSelecterColumn: any[]; record: any } const tableSelecterColumn: any[] = [ { title: '工号', dataIndex: 'account', }, { title: '姓名', dataIndex: 'name', }, ]; const addGroupEmpHandle = () => { const ref = React.createRef<{ save: any; getSelectedKeys: any }>(); set_ifShowModal(true); // Modal.confirm({ // title: `添加医疗组人员信息`, // icon: <>, // width: 400, // centered: true, // content: , // // onOk: () => { // // return ref.current && ref.current.save(); // // } // }) } const TableSelecter = React.forwardRef(({ tableSelecterColumn, record }: TableSelecterProps, ref) => { const [datasource, set_datasource] = useState([]); const [selectedKeys, setSelectedKeys] = useState([]); const [showList, set_showList] = useState([]); //获取表格数据 const getFuncList = async () => { const resp = await getMedicalAllEmp({ medicalGroupCode: currentSelectedType.code }); if (resp) { set_datasource(resp); set_showList(resp); } } const onSelectChange = (newSelectedRowKeys: React.Key[]) => { setSelectedKeys([...newSelectedRowKeys]); }; const save = async () => { const needData = datasource.filter(item => selectedKeys.includes(item.userId)); const result = { medicalGroupCode: currentSelectedType.code as string, employee: needData as MedicalEmpInfoType[] }; const resp = await addMedicalGroupEmp(result); if (resp) { message.success('添加成功!'); set_ifShowModal(false); tableRef.current?.reload(); } } useEffect(() => { getFuncList(); }, []) return (
} style={{ marginBottom: 8 }} onChange={(e) => { if (e.target.value.length != 0) { const result = datasource.filter(item => item.name.indexOf(e.target.value) != -1); set_showList(result); } else { set_showList(datasource); } }} />
set_ifShowModal(false)}>取消 save()}>{`确认(${selectedKeys.length > 0 && selectedKeys.length})`}
) }); const moreItems: MenuProps['items'] = [ { key: '1', label: , }, { key: '2', label: ( { e.preventDefault(); const resp = await delLeftReportData(currentEditLeftData.id); if (resp) { getPageLeftData(); } }}> 删除 ), } ]; const onTableSelectChange = (newSelectedRowKeys: React.Key[]) => { set_tableSelectedKeys([...newSelectedRowKeys]); }; useEffect(() => { if (currentSelectedType) { set_tableDataFilterParams({ ...tableDataFilterParams, medicalGroupCode: currentSelectedType.code }); } }, [currentSelectedType]) useEffect(() => { if (showTypeListArr.length > 0) { set_currentSelectedType(showTypeListArr[0]); //set_tableDataFilterParams({ ...tableDataFilterParams, medicalGroupCode: showTypeListArr[0].code }); } }, [showTypeListArr]); useEffect(() => { getPageLeftData(); }, []) return ( [] }} open={ifShowModal} modalProps={{ closable: false, }}>
} style={{ width: 156 }} onChange={(e) => { const result = typeList.filter(item => item.name.indexOf(e.target.value) != -1); set_showTypeListArr(result); }} />
{ showTypeListArr.map((item, index) => { return (
{ if (ifEditTable) { //编辑状态还未保存 Modal.confirm({ title: '当前存在编辑未保存,请保存后再操作!', okText: '放弃编辑', cancelText: '继续编辑', onOk(...args) { set_ifEditTable(false); set_currentSelectedType(item); }, }) } else { set_currentSelectedType(item) } }} >
{item.name}
{ bool && set_currentEditLeftData(item) }}>
) }) }
{currentSelectedType ? currentSelectedType.name : ''}
{ addGroupEmpHandle()}>添加}
{currentSelectedType && { return ( delTableDataHanfle()} > 批量删除 ); }} params={tableDataFilterParams} request={(params, sort, filter) => getTableData(params, sort, filter)} />}
{ tableSelectedKeys.length > 0 && (
已选择{tableSelectedKeys.length}
tableRef.current?.clearSelected&&tableRef.current?.clearSelected()}>取消选择 delTableDataHanfle()} > 批量删除
) }
) } export default MedicalGroupSet;