importSqlConfig.tsx 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import type { EditableFormInstance, ProColumns } from '@ant-design/pro-components';
  2. import { baseFun, EditType, SDButton, SDEditableTable, SDLayout, SDModal } from '@sundata/ui-frame';
  3. import { useEffect, useRef, useState } from 'react';
  4. import { getImpSqlConfigList, ImpSqlConfigModel, saveImpSqlConfigList } from '../../../services/idataMng/excelMng';
  5. export type ImportSqlConfigProp = {
  6. editType?: EditType;
  7. mType?: string;//模板代码
  8. visible: boolean;
  9. onCancelfun?: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void;
  10. };
  11. const ImportSqlConfig: React.FC<ImportSqlConfigProp> = (props) => {
  12. const sqlTableRef = useRef<EditableFormInstance>();
  13. const [sqlConfigList, setSqlConfigList] = useState<readonly ImpSqlConfigModel[]>();
  14. const [max,setMax] = useState<number>(2000);
  15. useEffect(() => {
  16. getImpSqlConfigList({mtype: props.mType}).then((data) => {
  17. setSqlConfigList(data?.data);
  18. });
  19. }, []);
  20. const saveSqlConfig = async () => {
  21. const editingRows = sqlTableRef.current?.getRowsData?.();
  22. if (editingRows && editingRows.length > 0) {
  23. baseFun.warning('列表中有正在编辑的参数,请确认或取消修改后再保存');
  24. return;
  25. }
  26. // if(sqlConfigList?.length==0){
  27. // baseFun.warning('列表中没有数据,请新增后再保存');
  28. // return;
  29. // }
  30. sqlConfigList?.forEach((data: ImpSqlConfigModel)=>{
  31. data.mtype = props.mType;
  32. })
  33. await saveImpSqlConfigList(sqlConfigList || []);
  34. baseFun.info('处理完成');
  35. };
  36. const sqlColumns: ProColumns<ImpSqlConfigModel>[] = [
  37. {
  38. title: '处理类型',
  39. dataIndex: 'methodtype',
  40. width: '15%',
  41. valueType:'select',
  42. valueEnum: {
  43. "SQL": {
  44. text: 'SQL'
  45. },
  46. "JAVA": {
  47. text: 'JAVA'
  48. },
  49. },
  50. formItemProps: () => {
  51. return {
  52. rules: [{ required: true }],
  53. };
  54. },
  55. fieldProps: () => {
  56. return {
  57. onChange: (methodtype: string) => {
  58. if(methodtype=="JAVA"){
  59. setMax(30);
  60. }else{
  61. setMax(2000);
  62. }
  63. }
  64. }
  65. }
  66. },
  67. {
  68. title: '逻辑体',
  69. dataIndex: 'lbody',
  70. valueType: 'textarea',
  71. tooltip:'处理类型为SQL时,配置sql语句;处理类型为JAVA时,配置java接口方法所在类配置bean的name',
  72. width: '65%',
  73. ellipsis:true,
  74. formItemProps: () => {
  75. return {
  76. rules: [
  77. { required: true, message: '此项为必填项' },
  78. { max: max, message: `最多输入 [${max}] 个字符` },
  79. ],
  80. };
  81. },
  82. },
  83. ]
  84. return (
  85. <SDModal
  86. title={'转换逻辑'}
  87. visible={props.visible}
  88. onCancel={props.onCancelfun}
  89. footer={props.editType != 'display'? <SDButton successMessage='' autoLoading={true} onClick={saveSqlConfig} >保存</SDButton> : undefined}
  90. >
  91. <SDLayout>
  92. <SDEditableTable
  93. columns={sqlColumns}
  94. value={sqlConfigList || []}
  95. formRef={sqlTableRef}
  96. onChange={(value: readonly ImpSqlConfigModel[]) => {
  97. setSqlConfigList(value);
  98. }}
  99. dragable
  100. editable={props.editType != 'display'} />
  101. </SDLayout>
  102. </SDModal>
  103. );
  104. };
  105. export default ImportSqlConfig;