datasetconfig.tsx 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. import React, { useEffect, useRef, useState } from "react";
  2. import type { ProColumns, ActionType, ProFormInstance } from '@ant-design/pro-components';
  3. import type {FormInstance} from 'antd'
  4. import { SDPage,SDFormText,SDModalForm,SDTable,SDButton,SDSubmitButton,EditType, SDAreaTtile, SDOperate, baseFun, validateFun, SDFormDict, } from "@sundata/ui-frame";
  5. import type { DataSetConfigModel } from '@/services/internalEvaluation/configuration/datasetconfig';
  6. import { WomanOutlined } from "@ant-design/icons";
  7. import { ProductProps } from "@/sundataImport";
  8. import { deleteRows, getDataList, selectDetailData, updateExistData, createData } from "@/services/internalEvaluation/configuration/datasetconfig";
  9. import { countChineseChars, firstCharIsNotNumber } from "../utils/rwacheckutils";
  10. type widowRush = {
  11. onCancel: () => void;
  12. onChangeVisible(visible: boolean, type: string): unknown;
  13. onChangeVisdible:(visible:boolean,type ?: 'none' | 'raload' )=>void;
  14. }& ProductProps;
  15. const datasetconfig : React.FC<widowRush> = (prop:widowRush) => {
  16. /** 编辑方式,查看、修改、新增按钮时设置,详细信息表单中使用 */
  17. const [editType, setEditType] = useState<EditType>(prop.editType || 'display');
  18. /** 是否显示详细信息窗口 */
  19. const [detailVisible, setDetailVisible] = useState<boolean>(false);
  20. const [currentRow, setCurrentRow] = useState<DataSetConfigModel>();
  21. /** 表格引用对象,刷新表格使用 */
  22. const actionRef = useRef<ActionType>();
  23. const formRef = useRef<FormInstance<any>>();
  24. const templateRef = useRef<FormInstance<any>>();
  25. // 页面数据
  26. var formDataList = new Array<DataSetConfigModel>;
  27. useEffect(() => {
  28. }, []);
  29. // 修改查询查询
  30. const selectData = async (formdata : DataSetConfigModel) => {
  31. const data = await selectDetailData(formdata);
  32. formRef.current?.setFieldsValue(data);
  33. }
  34. // 删除
  35. const delRows =async(record:any)=>{
  36. baseFun.confirm('确认删除?',async() =>{
  37. await deleteRows(record);
  38. baseFun.info("删除成功");
  39. closeAndRefresh();
  40. });
  41. }
  42. //关闭窗口刷新父页面
  43. const closeAndRefresh = ()=>{
  44. actionRef.current?.reloadAndRest?.();
  45. }
  46. // 插入或者更新数据
  47. const handleSave = async(data: DataSetConfigModel,) => {
  48. if (editType == 'update' ) {
  49. await updateExistData(data);
  50. closeAndRefresh();
  51. }
  52. else if (editType == 'create' ) {
  53. await createData(data);
  54. closeAndRefresh();
  55. }
  56. setDetailVisible(false);
  57. }
  58. // 数据项配置页面展示元素
  59. const columns: ProColumns<DataSetConfigModel>[] = [
  60. {
  61. title: '数据集编号',
  62. dataIndex: 'dataSetNo',
  63. hideInTable: false,
  64. },
  65. {
  66. title: '数据集名称',
  67. dataIndex: 'dataSetName',
  68. search: false,
  69. hideInTable: false,
  70. },
  71. {
  72. title: '操作',
  73. dataIndex: 'operate',
  74. valueType: 'option',
  75. render: (_, record) => [
  76. <SDOperate
  77. key="roleCfg"
  78. icon={<WomanOutlined />}
  79. successMessage=""
  80. onClick={
  81. ()=>{
  82. selectData(record);
  83. setDetailVisible(true);
  84. setEditType('update')
  85. } }
  86. >
  87. 修改
  88. </SDOperate>,
  89. <SDOperate
  90. key="roleCfg"
  91. icon={<WomanOutlined />}
  92. successMessage=""
  93. onClick={()=>{delRows(record) } }
  94. >
  95. 删除
  96. </SDOperate>,
  97. ],
  98. },
  99. ];
  100. return (
  101. <SDPage>
  102. <SDTable
  103. title="查询表格"
  104. rowKey="customerName"
  105. request={async (formdata:DataSetConfigModel) =>{
  106. const formDatas = await getDataList(formdata);
  107. // 解构数组(导出用)
  108. formDataList=[...formDatas];
  109. return {data: formDatas}
  110. } }
  111. columns={columns}
  112. actionRef={actionRef}
  113. toolBarRender={(_: any, { selectedRows }: any) => [
  114. <SDButton
  115. successMessage=""
  116. onClick={()=>{
  117. setEditType('create');
  118. setDetailVisible(true);
  119. }}
  120. >
  121. 新增
  122. </SDButton>
  123. ]}
  124. formRef={formRef}
  125. setDetailVisible={() => {setDetailVisible(true)}}
  126. setEditType={setEditType}
  127. setCurrentRow={setCurrentRow}
  128. />
  129. {detailVisible && (
  130. <SDModalForm
  131. title={'详细信息'}
  132. editType={editType}
  133. params={currentRow}
  134. visible={detailVisible}
  135. onVisibleChange={() => {setDetailVisible(false)}}
  136. footer={[
  137. <SDSubmitButton editType={editType} formRef={formRef} doSubmit={handleSave} >保存</SDSubmitButton>,
  138. <SDButton
  139. key="closeUpdate"
  140. successMessage=''
  141. onClick={() => {
  142. setDetailVisible(false);
  143. }}>关闭</SDButton>
  144. ]}
  145. tableRef={actionRef}
  146. formRef={formRef}
  147. >
  148. <SDAreaTtile title='数据集配置信息'/>
  149. <SDFormText name="dataSetNo" readonlyCond="update" required={true} rules={[
  150. { required: true, message: '请输入编号' },
  151. {
  152. validator:validateFun.account
  153. },
  154. {
  155. validator: (rule, value, callback)=> {
  156. if (firstCharIsNotNumber(value)>0) {
  157. callback('编号不能以数字开头');
  158. } else {
  159. callback();
  160. }
  161. }
  162. }
  163. ]} label="数据集编号"/>
  164. <SDFormText name="dataSetName" rules={[{validator:validateFun.chineseRex,message:'请输入中文'}]} label="数据集名称"/>
  165. <SDFormDict dictKey="@selectDataSource" name="dataSourcesNos" rules={[{required:true}]} multiple={true} label="数据源编号"/>
  166. </SDModalForm>
  167. )}
  168. </SDPage>
  169. );
  170. }
  171. export default datasetconfig;