/* * @Author: code4eat awesomedema@gmail.com * @Date: 2023-03-03 11:30:33 * @LastEditors: code4eat awesomedema@gmail.com * @LastEditTime: 2024-09-09 10:39:38 * @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, DrawerForm, EditableFormInstance, EditableProTable, ProFormInstance, ProFormSelect } from '@ant-design/pro-components'; import { ModalForm, ProFormDigit, ProFormText, ProFormTextArea } from '@ant-design/pro-form' import { ProColumns } from '@ant-design/pro-table'; import { Input, message, Popconfirm } from 'antd'; import { useEffect, useRef, useState } from 'react' import { addData, delData, editData, getData } from './service'; import './style.less'; import KCIMPagecontainer from '@/components/KCIMPageContainer'; import { KCIMTable } from '@/components/KCIMTable'; import KCIMDrawerForm from '@/components/KCIMDrawerForm'; const IconFont = createFromIconfontCN({ scriptUrl: '', }); type TableDataResponse = { data: any[]; success: boolean; total: number; pageSize: number; totalPage: number; }; export default function FenyeTemplate() { const [tableDataFilterParams, set_tableDataFilterParams] = useState(); const [tableDataSearchKeywords, set_tableDataSearchKeywords] = useState(''); const tableRef = useRef(); const columns: ProColumns[] = [ { title: 'ID', dataIndex: 'id', }, { title: '模板名称', dataIndex: 'name', }, { title: '创建时间', dataIndex: 'date', }, { title: '创建人', dataIndex: 'createUserName', }, { title: '备注说明', dataIndex: 'remark', }, { title: '操作', key: 'option', width: 120, valueType: 'option', render: (_: any, record: any) => { return [ , delTableData(record)} > 作废 ] }, }, ] const getTableData = async (params: any):Promise => { const resp = await getData(params); if (resp) { if(resp.totalCount == 0 && resp.currPage != 1){ return getTableData({...params,current:resp.currPage - 1}); }else{ return { data: resp.list, success: true, total: resp.totalCount, pageSize: resp.pageSize, totalPage: resp.totalPage, } } } return [] } const delTableData = async (record: any) => { const resp = await delData(record.id); if (resp) { message.success('操作成功!'); tableRef.current?.reload(); // message.success('操作成功!'); } } const updateTable = async (formVal: any, type: 'EDIT' | "ADD") => { const content = formVal.table.map((a: any) => ({ })) if (type == 'ADD') { const result = { name: formVal.name, content: JSON.stringify(formVal.table), remark: formVal.remark } const resp = await addData({ ...result }); if (resp) { tableRef.current?.reload(); message.success('操作成功!'); } } if (type == 'EDIT') { const result = { id: formVal.id, name: formVal.name, content: JSON.stringify(formVal.table), remark: formVal.remark } const resp = await editData({ ...result }); if (resp) { tableRef.current?.reload(); message.success('操作成功!'); } } return true; } const UpDataActBtn = ({ record, type }: { record: any, type: 'EDIT' | 'ADD' }) => { const editableFormRef = useRef(); const formRef = useRef>(); const editorFormRef = useRef>(); const editableColumns: ProColumns[] = [ { title: '标题', dataIndex: 'title', editable: () => true }, { title: '类型', dataIndex: 'filedType', editable: () => false }, { title: '是否必填', dataIndex: 'required', request: async () => [ { value: 1, label: '是', }, { value: 0, label: '否', }, ], fieldProps: (_, { rowIndex }) => { return { onSelect: () => { // 每次选中重置参数 editableFormRef.current?.setRowData?.(rowIndex, { fraction: [] }); }, }; }, renderText(text) { return text ? '是' : '否' }, }, { title: '是否展示信息', dataIndex: 'showFiled', request: async () => [ { value: 1, label: '是', }, { value: 0, label: '否', }, ], fieldProps: (_, { rowIndex }) => { return { onSelect: () => { // 每次选中重置参数 editableFormRef.current?.setRowData?.(rowIndex, { fraction: [] }); }, }; }, renderText(text) { return text ? '是' : '否' }, }, { title: '操作', valueType: 'option', render: (text, record, _, action) => [ { console.log({record}); action?.startEditable?.(record.tempId); }} > 编辑 , { const tableDataSource = formRef.current?.getFieldValue( 'table', ) as any[]; formRef.current?.setFieldsValue({ table: tableDataSource.filter((item) => item.tempId !== record.tempId), }); }} > 删除 , ], }, ]; let defaultTableData = JSON.parse(record.content ? record.content : '[]'); defaultTableData = defaultTableData.map((a: any) => ({ ...a, tempId: (Math.random() * 1000000).toFixed(0) })); const [tempData, setTempData] = useState(defaultTableData); // console.log({defaultTableData}); return ( 编辑 : 新增 } onFinish={(val: any) => { return updateTable(type == 'EDIT' ? { ...record, ...val } : { ...val }, type); }} formRef={formRef} drawerProps={{ destroyOnClose: true }} colProps={{ span: 24 }} grid > ({ tempId: (Math.random() * 1000000).toFixed(0), filedType: 'Text' }), }} /> ) } const tableDataSearchHandle = (paramName: string) => { set_tableDataFilterParams({ ...tableDataFilterParams, [`${paramName}`]: tableDataSearchKeywords }) } useEffect(() => { }, []) return (
检索: tableDataSearchHandle('filter')} /> } onChange={(e) => { set_tableDataSearchKeywords(e.target.value); if (e.target.value.length == 0) { set_tableDataFilterParams({ ...tableDataFilterParams, filter: '' }); } }} onPressEnter={(e) => { set_tableDataFilterParams({ ...tableDataFilterParams, filter: (e.target as HTMLInputElement).value }); }} />
getTableData(params)} />
) }