import React, { useEffect, useRef, useState } from "react"; import { type ProColumns, type ActionType, type ProFormInstance, EditableProTable } from '@ant-design/pro-components'; import type {FormInstance} from 'antd' import { SDPage,SDFormText,SDModalForm,SDTable,SDButton,SDSubmitButton,EditType, SDAreaTtile, SDOperate, baseFun, validateFun, SDFormDict, } from "@sundata/ui-frame"; import type { IndexConfigModel, IndexSourceModel } from '@/services/internalEvaluation/configuration/indexconfig'; import { WomanOutlined } from "@ant-design/icons"; import { ProductProps } from "@/sundataImport"; import { deleteRows, getDataList, selectDetailData, updateExistData, createData } from "@/services/internalEvaluation/configuration/indexconfig"; import { countChineseChars } from "../utils/rwacheckutils"; import { useModel } from '@umijs/max'; type widowRush = { onCancel: () => void; onChangeVisible(visible: boolean, type: string): unknown; onChangeVisdible:(visible:boolean,type ?: 'none' | 'raload' )=>void; }& ProductProps; const indexconfig : React.FC = (prop:widowRush) => { /** 编辑方式,查看、修改、新增按钮时设置,详细信息表单中使用 */ const [editType, setEditType] = useState(prop.editType || 'display'); /** 是否显示详细信息窗口 */ const [detailVisible, setDetailVisible] = useState(false); const [currentRow, setCurrentRow] = useState(); /** 表格引用对象,刷新表格使用 */ const actionRef = useRef(); const formRef = useRef>(); const templateRef = useRef>(); // 页面数据 var formDataList = new Array; const { fetchDict } = useModel('dict'); const [indexSourceList, setIndexSourceList] = useState(); useEffect(() => { }, []); // 修改查询查询 const selectData = async (formdata : IndexConfigModel) => { const data = await selectDetailData(formdata); formRef.current?.setFieldsValue(data); setIndexSourceList(data.indexDataSource); } // 删除 const delRows =async(record:any)=>{ baseFun.confirm('确认删除?',async() =>{ await deleteRows(record); baseFun.info("删除成功"); closeAndRefresh(); }); } //关闭窗口刷新父页面 const closeAndRefresh = ()=>{ actionRef.current?.reloadAndRest?.(); } // 插入或者更新数据 const handleSave = async(data: IndexConfigModel,) => { data.indexDataSource = indexSourceList; if (editType == 'update' ) { await updateExistData(data); closeAndRefresh(); } else if (editType == 'create' ) { await createData(data); closeAndRefresh(); } setDetailVisible(false); } // 数据项配置页面展示元素 const columns: ProColumns[] = [ { title: '指标编号', dataIndex: 'indexNo', hideInTable: false, }, { title: '指标名称', dataIndex: 'indexName', search: false, hideInTable: false, formItemProps:{ rules:[ {validator:validateFun.chineseRex,message:'请输入中文'}, ] } }, { title: '指标逻辑', dataIndex: 'indexLogic', search: false, hideInTable: false, }, { title: '操作', dataIndex: 'operate', valueType: 'option', render: (_, record) => [ } successMessage="" onClick={ ()=>{ selectData(record); setDetailVisible(true); setEditType('update') } } > 修改 , } successMessage="" onClick={()=>{delRows(record) } } > 删除 , ], }, ]; // 数据项配置页面展示元素 const indexSourceColumns: ProColumns[] = [ { title: '指标数据来源编号', dataIndex: 'indexSourceNo', search: false, hideInTable: true, }, { title: '指标编号', dataIndex: 'indexNo', search:false, hideInTable: true, }, { title: '其他指标编号', dataIndex: 'otherIndexNo', hideInTable: false, valueType:'select', request:()=>fetchDict('@selectAllIndexToDict'), fieldProps: { treeDefaultExpandAll: true, treeCheckable:true, }, }, { title: '数据集编号', dataIndex: 'dataSetNo', search: false, hideInTable: false, valueType:'select', request:()=>fetchDict('@selectDataSet'), fieldProps: { treeDefaultExpandAll: true, treeCheckable:true, }, }, { title: '数据类型', dataIndex: 'dataSourceType', search: false, hideInTable: false, request:()=>fetchDict('INDEXSOURCETYPE'), valueType:'select', fieldProps: { treeDefaultExpandAll: true, treeCheckable:true, }, }, { title: '操作', valueType: 'option', width: 200, render: (text, record, _, action) => [ { action?.startEditable?.(record.indexSourceNo); }} > 编辑 , { setIndexSourceList(indexSourceList?.filter((item) => item.indexSourceNo !== record.indexSourceNo)); }} > 删除 , ], }, ]; return ( { const formDatas = await getDataList(formdata); // 解构数组(导出用) formDataList=[...formDatas]; return {data: formDatas} } } columns={columns} actionRef={actionRef} toolBarRender={(_: any, { selectedRows }: any) => [ { setEditType('create'); setDetailVisible(true); }} > 新增 ]} formRef={formRef} setDetailVisible={() => {setDetailVisible(true)}} setEditType={setEditType} setCurrentRow={setCurrentRow} /> {detailVisible && ( {setDetailVisible(false)}} footer={[ 保存, { setDetailVisible(false); }}>关闭 ]} tableRef={actionRef} formRef={formRef} > rowKey="indexSourceNo" headerTitle="可编辑表格" columns={indexSourceColumns} value={indexSourceList} dataSource={indexSourceList} onChange={(value)=>{ setIndexSourceList([...value]); }} recordCreatorProps={ { position:'bottom', record: () => ({ indexSourceNo: (Math.random() * 1000000).toFixed(0), }) } } /> )} ); } export default indexconfig;