dataqualityruledefine.tsx 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297
  1. import React, { useEffect, useRef, useState } from "react";
  2. import { type ProColumns, type ActionType, type ProFormInstance, ProTable, EditableProTable } from '@ant-design/pro-components';
  3. import type {FormInstance} from 'antd'
  4. import {Upload} from 'antd'
  5. import { SDPage,SDFormText,SDModalForm,SDTable,SDFormItem,SDButton,SDSubmitButton,EditType, SDAreaTtile, SDOperate, baseFun,SDModal, validateFun, SDLayout, SDFormDict, } from "@sundata/ui-frame";
  6. import { DataQualityRuleDefineModel, isNotExist } from '@/services/rwa/product/dataquality/dataqualityruledefine';
  7. import {getDataList,deleteRows,createRowData,updateRowData,selectDetailData} from '@/services/rwa/product/dataquality/dataqualityruledefine';
  8. import { PlusSquareTwoTone, WomanOutlined } from "@ant-design/icons";
  9. import { ProductProps } from "@/sundataImport";
  10. import { ReportCalculationModel } from "@/services/rwa/product/report_form_config_reportcreater/reportfillingconfig";
  11. import { useModel } from "@umijs/max";
  12. import { countChineseChars } from "@/services/rwa/product/rwacheckutils";
  13. type widowRush = {
  14. onCancel: () => void;
  15. onChangeVisible(visible: boolean, type: string): unknown;
  16. onChangeVisdible:(visible:boolean,type ?: 'none' | 'raload' )=>void;
  17. }& ProductProps;
  18. const dataqualityruledefine : React.FC<widowRush> = (prop:widowRush) => {
  19. /** 编辑方式,查看、修改、新增按钮时设置,详细信息表单中使用 */
  20. const [editType, setEditType] = useState<EditType>(prop.editType || 'display');
  21. /** 是否显示详细信息窗口 */
  22. const [detailVisible, setDetailVisible] = useState<boolean>(false);
  23. const [currentRow, setCurrentRow] = useState<DataQualityRuleDefineModel>();
  24. /** 表格引用对象,刷新表格使用 */
  25. const actionRef = useRef<ActionType>();
  26. const formRef = useRef<FormInstance<any>>();
  27. const templateRef = useRef<FormInstance<any>>();
  28. // 页面数据
  29. var formDataList = new Array<DataQualityRuleDefineModel>;
  30. /** 字段关系序号编辑 */
  31. var dataIndex = 1;
  32. useEffect(() => {
  33. }, []);
  34. const { fetchDict } = useModel('dict');
  35. // 修改查询查询
  36. const selectData = async (formdata : DataQualityRuleDefineModel) => {
  37. const data = await selectDetailData(formdata);
  38. formRef.current?.setFieldValue("checkTableName",data.checkTableNames);
  39. const {checkTableName,...data1} =data
  40. formRef.current?.setFieldsValue(data1);
  41. }
  42. // 删除
  43. const delRows =async(record:any)=>{
  44. baseFun.confirm('请确认是否继续操作?',async() =>{
  45. await deleteRows(record);
  46. baseFun.info("删除成功");
  47. closeAndRefresh();
  48. });
  49. }
  50. //关闭窗口刷新父页面
  51. const closeAndRefresh = ()=>{
  52. actionRef.current?.reloadAndRest?.();
  53. }
  54. // 插入或者更新数据
  55. const handleSave = async(data: DataQualityRuleDefineModel,) => {
  56. if (editType == 'update' ) {
  57. await updateRowData(data);
  58. closeAndRefresh();
  59. setDetailVisible(false);
  60. baseFun.info("保存成功")
  61. } else if (editType == 'create' ) {
  62. const sd = await isNotExist(data.checkRuleNo);
  63. if(Number(sd)>1){
  64. await createRowData(data);
  65. closeAndRefresh();
  66. setDetailVisible(false);
  67. baseFun.info("保存成功")
  68. }else{
  69. baseFun.warning("规则编号已存在,请重新输入!");
  70. }
  71. }
  72. }
  73. // 页面展示元素
  74. const columns: ProColumns<DataQualityRuleDefineModel>[] = [
  75. {
  76. title: '序号',
  77. dataIndex: 'index',
  78. search: false,
  79. render: (text, record, index) => { index = index + 1;dataIndex = index; return index},
  80. width:100,
  81. ellipsis:true
  82. },
  83. {
  84. title: '计算实例号',
  85. dataIndex: 'calcIndex',
  86. search: false,
  87. hideInTable: true,
  88. },
  89. {
  90. title: '起始数据日期',
  91. dataIndex: 'startDate',
  92. search: false,
  93. hideInTable: true,
  94. },
  95. {
  96. title: '截止数据日期',
  97. dataIndex: 'endDate',
  98. search: false,
  99. hideInTable: true,
  100. },
  101. {
  102. title: '规则编号',
  103. dataIndex: 'checkRuleNo',
  104. hideInTable: false,
  105. },
  106. {
  107. title: '规则名称',
  108. dataIndex: 'checkRuleName',
  109. hideInTable: false,
  110. },
  111. {
  112. title: '被检查表',
  113. dataIndex: 'checkTableNames',
  114. // request:()=>fetchDict({dictKey:'@checkTableName'}),
  115. hideInTable: false,
  116. },
  117. {
  118. title: '状态',
  119. dataIndex: 'checkStates',
  120. hideInTable: true,
  121. valueType:'treeSelect',
  122. request:()=>fetchDict("YESORNO"),
  123. fieldProps:{
  124. treeCheckable:true,
  125. }
  126. },
  127. {
  128. title: '状态',
  129. dataIndex: 'checkState',
  130. hideInTable: false,
  131. search:false,
  132. valueType:'treeSelect',
  133. request:()=>fetchDict("YESORNO"),
  134. fieldProps:{
  135. treeCheckable:true,
  136. }
  137. },
  138. {
  139. title: '操作',
  140. dataIndex: 'operate',
  141. valueType: 'option',
  142. render: (_, record) => [
  143. <SDOperate
  144. key="roleCfg"
  145. icon={<WomanOutlined />}
  146. successMessage=""
  147. onClick={
  148. ()=>{
  149. selectData(record);
  150. setCurrentRow(record);
  151. setDetailVisible(true);
  152. setEditType('update');
  153. } }
  154. >
  155. 修改
  156. </SDOperate>,
  157. <SDOperate
  158. key="roleCfg"
  159. icon={<WomanOutlined />}
  160. successMessage=""
  161. onClick={()=>{delRows(record) } }
  162. >
  163. 废止
  164. </SDOperate>,
  165. <SDOperate
  166. key="roleCfg"
  167. icon={<WomanOutlined />}
  168. successMessage=""
  169. onClick={()=>{
  170. selectData(record);
  171. setDetailVisible(true);
  172. setEditType('display');
  173. } }
  174. >
  175. 查看
  176. </SDOperate>,
  177. ],
  178. },
  179. ];
  180. return (
  181. <SDPage>
  182. <SDTable
  183. title="查询表格"
  184. rowKey="customerName"
  185. request={async (formdata:DataQualityRuleDefineModel) =>{
  186. const formDatas = await getDataList(formdata);
  187. // 解构数组(导出用)
  188. formDataList=[...formDatas];
  189. return {data: formDatas}
  190. } }
  191. columns={columns}
  192. toolBarRender={(_, { selectedRows }) => [
  193. <SDButton
  194. key="export"
  195. icon={<PlusSquareTwoTone/>}
  196. successMessage=''
  197. onClick={() => {
  198. setEditType('create');
  199. setDetailVisible(true);
  200. }}
  201. >
  202. 新增
  203. </SDButton>,
  204. ]}
  205. actionRef={actionRef}
  206. formRef={formRef}
  207. setDetailVisible={() => {setDetailVisible(true)}}
  208. setEditType={setEditType}
  209. setCurrentRow={setCurrentRow}
  210. />
  211. {detailVisible && (
  212. <SDModalForm
  213. title={'详细信息'}
  214. editType={editType}
  215. params={currentRow}
  216. visible={detailVisible}
  217. onVisibleChange={() => {setDetailVisible(false)}}
  218. footer={[
  219. <SDSubmitButton editType={editType} successMessage='' formRef={formRef} doSubmit={handleSave} >保存</SDSubmitButton>,
  220. <SDButton
  221. key="closeUpdate"
  222. successMessage=''
  223. onClick={() => {
  224. setDetailVisible(false);
  225. }}>关闭</SDButton>
  226. ]}
  227. tableRef={actionRef}
  228. formRef={formRef}
  229. >
  230. <SDAreaTtile title='规则信息'/>
  231. <SDFormText name="checkRuleNo" readonlyCond="update" required={true} label="规则编号" rules={[{max:60,message:'最多50个字符'}]}/>
  232. <SDFormText name="checkRuleName" label="规则名称" rules={[{validator:(rules,value,callback)=>{
  233. let chineseCount = countChineseChars(value);
  234. if (chineseCount > 30) {
  235. callback('最多30个汉字');
  236. } else if (chineseCount<=0) {
  237. callback('请输入汉字');
  238. } else{
  239. callback();
  240. }
  241. }}]}/>
  242. <SDFormDict name="checkRate" label="检查频率" dictKey="CHECK_RATE" />
  243. <SDFormText name="adjustDate" label="天数调整"/>
  244. <SDFormDict name="checkRuleType" label="校验类型" dictKey="CHECK_RULE_TYPE"/>
  245. <SDFormDict name="checkTableName" label="被检查表" dictKey="@checkTableName" multiple={true}/>
  246. <SDFormDict name="ruleStageId" label="所属阶段" dictKey="@ruleStageId"/>
  247. <SDFormText type="textarea" name="checkProposal" label="处理方案建议" rules={[{validator:(rules,value,callback)=>{
  248. let chineseCount = countChineseChars(value);
  249. if (chineseCount > 200) {
  250. callback('最多200个汉字');
  251. } else if (chineseCount<=0) {
  252. callback('请输入汉字');
  253. } else{
  254. callback();
  255. }
  256. }}]}/>
  257. <SDFormText type="textarea" name="checkRuleDesc" label="检查规则说明" rules={[{validator:(rules,value,callback)=>{
  258. let chineseCount = countChineseChars(value);
  259. if (chineseCount > 200) {
  260. callback('最多200个汉字');
  261. } else if (chineseCount<=0) {
  262. callback('请输入汉字');
  263. } else{
  264. callback();
  265. }
  266. }}]}/>
  267. <SDFormText type="textarea" name="checkRule" label="检查规则sql"/>
  268. </SDModalForm>
  269. )}
  270. </SDPage>
  271. );
  272. }
  273. export default dataqualityruledefine;