import { KCIMTable } from "@/components/KCIMTable"; import SQLEditor from "@/components/SQLEditor"; import { FormInstance, ModalForm, ProColumns, ProFormDependency, ProFormDigit, ProFormInstance, ProFormRadio, ProFormSelect, ProFormText, ProFormTextArea } from "@ant-design/pro-components"; import { useEffect, useRef, useState } from "react"; import { addData, editData, getReportListTableData, getReportListType } from "./service"; import { Form, Switch, Input, message } from 'antd' import React from 'react'; import { createFromIconfontCN } from "@ant-design/icons"; const IconFont = createFromIconfontCN({ scriptUrl: '', }); interface UpDataActBtnProps { record: any; // 根据实际情况定义类型 type: 'EDIT' | 'ADD' | 'EDIT_CHILD'; tableRef?: any, onUpdated?: () => void } const getTableData_form = async (params: any) => { const resp = await getReportListTableData(params); if (resp) { return { data: resp.list, success: true, total: resp.totalCount, pageSize: resp.pageSize, totalPage: resp.totalPage, } } return [] } const UpDateActBtn: React.FC = ({ record, type, tableRef, onUpdated }) => { // 组件逻辑 const [tableDataSearchKeywords_form, set_tableDataSearchKeywords_form] = useState(''); const [tableDataFilterParams_form, set_tableDataFilterParams_form] = useState(); const [initialValues, set_initialValues] = useState(undefined); const [isModalVisible, setIsModalVisible] = useState(false); const formRef = useRef(); const columnsTwo: ProColumns[] = [ { title: '列代码', width: 80, dataIndex: 'code', }, // { // title: '列名称', // dataIndex: 'name', // ellipsis: true // }, { title: '列标题', dataIndex: 'headerText', ellipsis: true }, { title: '列类型', dataIndex: 'typeName', ellipsis: true, // render:(_:any)=>_ == 1?'指标':'自定义SQL' }, { title: '操作', key: 'option', width: 50, valueType: 'option', render: (_: any, record: any) => { return [ { const _formula = formRef.current?.getFieldValue('formula'); formRef.current?.setFieldValue('formula', `${_formula ? _formula : ''}[${record.code}]`) }}>选择, ] }, }, ]; const tableDataSearchHandle_form = (paramName: string) => { set_tableDataFilterParams_form({ ...tableDataFilterParams_form, [`${paramName}`]: tableDataSearchKeywords_form }) } const updateTable = async (formVal: any, type: 'EDIT' | "ADD" | 'EDIT_CHILD') => { let result = { name: formVal.name, headerText: formVal.headerText, type: formVal.type, dataType: formVal.dataType, dataSource: formVal.dataSource, formula: formVal.dataSource == 1 ? formVal.formula : '', sql: formVal.dataSource == 2 ? formVal.sql : '', decimalPlace: (formVal.dataType == 3 || formVal.dataType == 2) ? formVal.decimalPlace : undefined, permil: formVal.dataType == 3 ? (formVal.permil ? '1' : '0') : undefined } if (type == 'ADD') { const resp = await addData({ ...result }); if (resp) { tableRef.current?.reload(); message.success('操作成功!'); } } if (type == 'EDIT') { const resp = await editData({ ...result, id: formVal.id }); if (resp) { tableRef?.current?.reload(); message.success('操作成功!'); } } setIsModalVisible(false); onUpdated && onUpdated(); return true; } const setFormInit = async (record: any) => { const { columnHeaderText, columnCode } = record; const resp = await getReportListTableData({ columnName: columnHeaderText, pageSize: 500 }); if (resp) { const { list } = resp; if (list.length > 1) { const result = list.filter((a) => a.code == columnCode); set_initialValues(result[0]); } else { set_initialValues(list[0]); } } } const openModal = async () => { if (record) { const { request } = record; if (request) { await setFormInit(record); } else { set_initialValues(type === 'EDIT' ? { ...record, permil: record.permil === '1' ? true : false } : { decimalPlace: 2, dataSource: 2, permil: false }); } } setIsModalVisible(true); // 在状态更新后显示模态框 }; return ( <> {type === 'EDIT_CHILD' ? 子列 : type === 'EDIT' ? 编辑 : 新增 } { ( setIsModalVisible(bool)} onFinish={(val) => { return updateTable(type == 'EDIT' ? (record.request?{...val,id:initialValues.id, sql: val.sql ? val.sql : ''}:{ ...record, ...val, sql: val.sql ? val.sql : '', }) : { ...val }, type); }} colProps={{ span: 24 }} modalProps={{ destroyOnClose: true, afterClose: () => setIsModalVisible(false), }} grid > { (type != 'EDIT_CHILD') && (
{ const resp = await getReportListType(); if (resp) { return resp.map((a: any) => ({ label: a.name, value: a.code })); } return [] }} rules={[{ required: true, message: '列类型不能为空!' }]} /> { ({ dataType }) => (dataType == 3 || dataType == 2) && (
{ dataType == 3 && ( <> 千分号 ) }
) }
{ ({ dataSource }) => dataSource == 1 && ( <> 计算公式:} // colProps={{ span: 16 }} placeholder="例:([1]+[2])/[3]" rules={[{ required: true, message: '计算公式不能为空!' }]} />
计算公式插入列:
{ const resp = await getReportListType(); if (resp) { return resp.map((a: any) => ({ label: a.name, value: a.code })); } return [] }} fieldProps={{ onChange(value, option) { set_tableDataFilterParams_form({ ...tableDataFilterParams_form, columnType: value }); }, }} />
tableDataSearchHandle_form('columnName')} /> } onChange={(e) => { set_tableDataSearchKeywords_form(e.target.value); if (e.target.value.length == 0) { set_tableDataFilterParams_form({ ...tableDataFilterParams_form, columnName: '' }); } }} onPressEnter={(e) => { set_tableDataFilterParams_form({ ...tableDataFilterParams_form, columnName: (e.target as HTMLInputElement).value }); }} />
getTableData_form(params)} />
) }
{ ({ dataSource }) => dataSource == 2 && ( // ) }
) }
) } ); }; export default UpDateActBtn;