/* * @Author: code4eat awesomedema@gmail.com * @Date: 2023-03-03 11:30:33 * @LastEditors: code4eat awesomedema@gmail.com * @LastEditTime: 2024-08-16 10:41:16 * @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 { createFromIconfontCN } from '@ant-design/icons'; import { ActionType } from '@ant-design/pro-components'; import { ModalForm, ProFormDigit, ProFormSelect, ProFormText, ProFormTextArea } from '@ant-design/pro-form'; import { ProColumns } from '@ant-design/pro-table'; import { Dropdown, Input, MenuProps, message, Form, Tooltip, Popconfirm } from 'antd'; import { Key } from 'react'; import { useEffect, useRef, useState } from 'react'; import { getOrderList, getOrderItemList, addLeftList, editLeftList, delLeftList, batchDelTableData, addTableData, delData, getOrderType, importLeftListData, editTableData } from './service'; import './style.less'; import { SortableContainer, SortableElement, SortableHandle } from 'react-sortable-hoc'; import '../../../../utils/zhongtaiB' import KCIMPagecontainer from '@/components/KCIMPageContainer'; import { KCIMTable } from '@/components/KCIMTable'; import { getTargetDic } from '@/services/auth'; import TableSelecter from './tableSelector'; import { downloadTemplateReq } from '@/utils/tooljs'; import KCIMUpload from '@/components/KCIMUpload'; const IconFont = createFromIconfontCN({ scriptUrl: '', }); let _currentSelectedType: any = undefined; const MedicalOrderProjectMana = () => { const [tableDataFilterParams, set_tableDataFilterParams] = useState(); const [tableDataSearchKeywords, set_tableDataSearchKeywords] = useState(''); const [selectedRowKeys, set_selectedRowKeys] = useState([]); const [typeList, set_typeList] = useState([]); const [showTypeListArr, set_showTypeListArr] = useState([]); const [currentSelectedType, set_currentSelectedType] = useState(undefined); const [tableSelecterVisible, set_tableSelecterVisible] = useState(false); const [currentEditLeftData, set_currentEditLeftData] = useState(undefined); const [currentEditRow, set_currentEditRow] = useState(undefined); const [leftDataSearchKeyVal, set_leftDataSearchKeyVal] = useState(undefined); const tableRef = useRef(); const [orderType, set_orderType] = useState(undefined); const column: ProColumns[] = [ { title: '收费项目代码', ellipsis: true, width:120, dataIndex: 'itemCode', }, { title: '收费项目名称', dataIndex: 'itemName', }, { title: '收费项目类别', width: 100, dataIndex: 'itemTypeName', }, { title: '数量', dataIndex: 'num', width: 100, renderText(num, record, index, action) { return (
{ (currentEditRow && currentEditRow.id == record.id) && ( <> updateTable({ ...record }, 'EDIT')} style={{ width: 16, height: 16, display: 'inline-block', marginLeft: 8, cursor: 'pointer' }} src={require('../../../../../static/confirmIcon.png')} /> ) } { (!currentEditRow || (currentEditRow&¤tEditRow.id != record.id)) && ( <>
{num}
set_currentEditRow(record)} style={{ width: 16, height: 16, display: 'inline-block', marginLeft: 8, cursor: 'pointer' }} src={require('../../../../../static/editIcon.png')} /> ) }
) }, }, { title: '操作', key: 'option', width:60, valueType: 'option', render: (_: any, record: any) => { return [ delTableData(record.id)} > 删除 ] }, }, ] const getTableData = async (params: any) => { const resp = await getOrderItemList({ ...params }); if (resp) { return { data: resp.list, success: true, total: resp.totalCount, pageSize: resp.pageSize, totalPage: resp.totalPage, } } else { return [] } } //获取左侧列表 const getPageLeftReports = async (orderType?: string) => { const resp = await getOrderList(orderType); if (resp) { set_typeList(resp); set_showTypeListArr(resp); } } const delTableData = async (id: number) => { const resp = await delData(id); if (resp) { message.success('操作成功!'); tableRef.current?.reload(); } } const batchDelHandle = async () => { const resp = await batchDelTableData(selectedRowKeys); if (resp) { message.success('操作成功!'); set_selectedRowKeys([]); tableRef.current?.reload(); } } const tableSelecterCommit = async (keys: Key[], rows: any[]) => { const arr = rows.map((a, index) => ({ itemCode: a.itemCode, itemName: a.itemName, itemType: a.itemType, })); const result = { orderCode: currentSelectedType.code, items: arr } const resp = await addTableData(result); if (resp) { message.success('操作成功'); set_tableSelecterVisible(false); tableRef.current?.reload(); } } const updateTable = async (formVal: any, type: 'EDIT' | "ADD" | 'ADD_LEFTDATA' | 'EDIT_LEFTDATA', data?: any[]) => { // console.log({formVal,type}); if (type == 'ADD_LEFTDATA') { const resp = await addLeftList({ name: formVal.name, type: formVal.type, code: formVal.code, description: formVal.description }); if (resp) { getPageLeftReports(); } } if (type == 'EDIT_LEFTDATA') { const resp = await editLeftList({ id: formVal.id, name: formVal.name, code: formVal.code, type: formVal.type, description: formVal.description }); if (resp) { getPageLeftReports(); } } if (type == 'EDIT') { const resp = await editTableData({ id: formVal.id, orderCode: currentSelectedType.code, itemCode: formVal.itemCode, num: currentEditRow.num }); if (resp) { tableRef.current?.reload(); } } set_currentEditRow(undefined); return true; } const downloadTemplate = async () => { await downloadTemplateReq('/costAccount/setting/exportOrder'); }; const importData = () => { return ( 导入 } submitter={{ render: (props, defaultDoms) => { const needBtn = defaultDoms.filter((b) => { return b.key != 'rest'; }); return [ ...needBtn, ]; }, }} onFinish={async (values) => { const { importFile: { fileList }, } = values; let formData = new FormData(); formData.append('file', fileList[0].originFileObj); const resp = await importLeftListData(formData); if (resp) { getPageLeftReports(); return true; } }} > downloadTemplate()} /> ); }; 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); }} > { const resp = await getOrderType(); if (resp) { return resp.map((a: any) => ({ label: a.name, value: a.code })); } return [] }} rules={[{ required: true, message: '医嘱项目类别不能为空!' }]} /> ) } const optItems: MenuProps['items'] = [ { key: '1', label: , }, { key: '2', label: importData() }, ]; const moreItems: MenuProps['items'] = [ { key: '1', label: , }, { key: '2', label: ( { e.preventDefault(); const resp = await delLeftList(currentEditLeftData.id); if (resp) { getPageLeftReports(); } }}> 删除 ), }, ]; const tableDataSearchHandle = (paramName: string) => { set_tableDataFilterParams({ ...tableDataFilterParams, [`${paramName}`]: tableDataSearchKeywords }) } useEffect(() => { if (currentSelectedType) { set_tableDataFilterParams({ ...tableDataFilterParams, orderCode: currentSelectedType.code }); } }, [currentSelectedType]) useEffect(() => { if (showTypeListArr.length > 0) { set_currentSelectedType(showTypeListArr[0]); _currentSelectedType = showTypeListArr[0]; // set_tableDataFilterParams({ ...tableDataFilterParams, orderCode: showTypeListArr[0].code }); } }, [showTypeListArr]); useEffect(() => { const result = typeList.filter(item => item.name.indexOf(leftDataSearchKeyVal) != -1); set_showTypeListArr(result); }, [leftDataSearchKeyVal]); useEffect(() => { if (orderType != '-1') { getPageLeftReports(orderType); } else { getPageLeftReports(); } }, [orderType]) useEffect(() => { getPageLeftReports(); }, []) return ( set_tableSelecterVisible(bool)} title='添加' rowKey={'itemCode'} defaultSelectedKeys={[]} record={_currentSelectedType} open={tableSelecterVisible} onFinish={(keys, rows) => tableSelecterCommit(keys, rows)} /> {selectedRowKeys.length > 0 && ( )}
{ const resp = await getOrderType(); if (resp) { const arr = resp.map((a: any) => ({ label: a.name, value: a.code })); return [ { label: '全部医嘱类型', value:-1 }, ...arr ] } return [ { label: '全部医嘱类型', value:-1 } ] }} />
} value={leftDataSearchKeyVal} style={{ width: 156 }} onChange={(e) => { set_leftDataSearchKeyVal(e.target.value); }} />
{ showTypeListArr.map((item, index) => { return (
{ set_currentSelectedType(item) _currentSelectedType = item; }} >
{item.name}
{item.typeName}
{ bool && set_currentEditLeftData(item) }}>
) }) }
项目名称: tableDataSearchHandle('itemName')} /> } onChange={(e) => { set_tableDataSearchKeywords(e.target.value); if (e.target.value.length == 0) { set_tableDataFilterParams({ ...tableDataFilterParams, itemName: '' }); } }} onPressEnter={(e) => { set_tableDataFilterParams({ ...tableDataFilterParams, itemName: (e.target as HTMLInputElement).value }); }} />
set_tableSelecterVisible(true)}>添加
{currentSelectedType && getTableData(params)} tableAlertRender={false} rowSelection={{ onChange(selectedRowKeys, selectedRows, info) { set_selectedRowKeys(selectedRowKeys); }, }} />}
) } export default MedicalOrderProjectMana;