supplementtaskmanagement.tsx 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839
  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 type { SupplementTaskDefineModel,SupplementTemplateRelationModel,TemplateDataValidationRuleModel, } from '@/services/rwa/product/datasupplementary/supplementtaskmanagement';
  7. import {getDataList,selectDetailData,getTemplateCheckDataList,getTemplateDataList,deleteInfoData,updateRowData,isNotExist,
  8. createRowData,createTemplateListRowData,createTemplateCheckRowData,selectDict,selectDictDefine,getNextId} from '@/services/rwa/product/datasupplementary/supplementtaskmanagement';
  9. import { PlusSquareTwoTone, WomanOutlined } from "@ant-design/icons";
  10. import { ProductProps } from "@/sundataImport";
  11. import { toNumber } from "lodash";
  12. import { useModel } from '@umijs/max';
  13. import { countChineseChars } from "@/services/rwa/product/rwacheckutils";
  14. import { DictTree } from "@sundata/ui-frame/es/types";
  15. type widowRush = {
  16. onCancel: () => void;
  17. onChangeVisible(visible: boolean, type: string): unknown;
  18. onChangeVisdible:(visible:boolean,type ?: 'none' | 'raload' )=>void;
  19. }& ProductProps;
  20. const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
  21. /** 编辑方式,查看、修改、新增按钮时设置,详细信息表单中使用 */
  22. const [editType, setEditType] = useState<EditType>(prop.editType || 'display');
  23. /** 是否显示详细信息窗口 */
  24. const [detailVisible, setDetailVisible] = useState<boolean>(false);
  25. /** 是否excel公式字段是否必输 */
  26. const [excelFormulaFlag, setExcelFormulaFlag] = useState<boolean>(false);
  27. const [sqlCode,setSqlCode] = useState<boolean>(false);
  28. const [dateType,setDateType] = useState<boolean>(false);
  29. const [currentRow, setCurrentRow] = useState<SupplementTaskDefineModel>();
  30. /** 表格引用对象,刷新表格使用 */
  31. const actionRef = useRef<ActionType>();
  32. const formRef = useRef<FormInstance<any>>();
  33. const templateListRef = useRef<FormInstance<any>>();
  34. const templateCheckRef = useRef<FormInstance<any>>();
  35. const templateListActionRef = useRef<ActionType>();
  36. const templateCheckActionRef = useRef<ActionType>();
  37. const [templateListData, setTemplateListData] = useState<SupplementTemplateRelationModel[]>();
  38. const [templateCheckData, setTemplateCheckData] = useState<TemplateDataValidationRuleModel[]>();
  39. // 页面数据
  40. var formDataList = new Array<TemplateDataValidationRuleModel>;
  41. const [dictionArray1,setDictionArray1] = useState<any[]>();
  42. const [dictionArray2,setDictionArray2] = useState<any[]>();
  43. // 字典
  44. const { fetchDict } = useModel('dict');
  45. const [account,setAccount] = useState <any>();
  46. /** 字段关系序号编辑 */
  47. var dataInfoIndex = 0;
  48. useEffect(() => {
  49. selectDict().then((data)=>{
  50. setDictionArray1(data);
  51. });
  52. selectDictDefine().then((data)=>{
  53. setDictionArray2(data);
  54. });
  55. }, []);
  56. // 修改查询查询
  57. const selectData = async (formdata : SupplementTaskDefineModel) => {
  58. const data = await selectDetailData(formdata);
  59. formRef.current?.setFieldsValue(data);
  60. const dataList = await getTemplateDataList(formdata);
  61. setTemplateListData(dataList);
  62. const templateList = await getTemplateCheckDataList(formdata);
  63. setTemplateCheckData(templateList);
  64. }
  65. // 删除
  66. const deleteData = async(formdata : SupplementTaskDefineModel) => {
  67. baseFun.confirm('请确认是否继续操作?',async() =>{
  68. await deleteInfoData(formdata);
  69. baseFun.info("删除成功");
  70. closeAndRefresh();
  71. });
  72. }
  73. // 插入或者更新数据
  74. const handleSave = async(data: SupplementTaskDefineModel,) => {
  75. if (editType == 'update' ) {
  76. const updateRes = await updateRowData(data);
  77. if (updateRes == true) {
  78. if (templateListData && templateCheckData) {
  79. if (templateListData.length >= 1) {
  80. const res01 = await createTemplateListRowData(templateListData,data.taskCode);
  81. if ( res01 == true) {
  82. const res02 = await createTemplateCheckRowData(templateCheckData);
  83. if (res02 == true) {
  84. closeAndRefresh();
  85. }
  86. }
  87. } else {
  88. baseFun.error('补录数据模板列表至少有一条记录');
  89. }
  90. }
  91. }
  92. } else if (editType == 'create' ) {
  93. const createRes= await createRowData(data);
  94. if (createRes == true) {
  95. if (templateListData && templateCheckData) {
  96. const res01 = await createTemplateListRowData(templateListData,data.taskCode);
  97. if ( res01 == true) {
  98. const res02 = await createTemplateCheckRowData(templateCheckData);
  99. if (res02 == true) {
  100. closeAndRefresh();
  101. }
  102. } else {
  103. baseFun.error('补录数据模板列表至少有一条记录');
  104. }
  105. }
  106. }
  107. }
  108. setDetailVisible(false);
  109. }
  110. //关闭窗口刷新父页面
  111. const closeAndRefresh = ()=>{
  112. actionRef.current?.reloadAndRest?.();
  113. }
  114. // 数据补录模板定义
  115. const columns: ProColumns<SupplementTaskDefineModel>[] = [
  116. {
  117. title: '序号',
  118. dataIndex: 'index',
  119. search: false,
  120. render: (text, record, index) => { index = index + 1;return index},
  121. width:100,
  122. ellipsis:true
  123. },
  124. {
  125. title: '计算实例号',
  126. dataIndex: 'calcIndex',
  127. search: false,
  128. hideInTable: true,
  129. },
  130. {
  131. title: '起始数据日期',
  132. dataIndex: 'startDate',
  133. search: false,
  134. hideInTable: true,
  135. },
  136. {
  137. title: '截止数据日期',
  138. dataIndex: 'endDate',
  139. search: false,
  140. hideInTable: true,
  141. },
  142. {
  143. title: '期次',
  144. dataIndex: 'term',
  145. search: false,
  146. hideInTable: true,
  147. },
  148. {
  149. title: '任务编号',
  150. dataIndex: 'taskCode',
  151. hideInTable: false,
  152. },
  153. {
  154. title: '任务名称',
  155. dataIndex: 'taskName',
  156. hideInTable: false,
  157. },
  158. {
  159. title: '负责机构',
  160. dataIndex: 'orgCodes',
  161. valueType:"treeSelect",
  162. request:()=>fetchDict("org"),
  163. fieldProps:{
  164. reeDefaultExpandAll:true,
  165. treeCheckable:true,
  166. popupMatchSelectWidth:300
  167. },
  168. hideInTable: true,
  169. },
  170. {
  171. title: '负责机构',
  172. dataIndex: 'orgCode',
  173. valueType:"treeSelect",
  174. search:false,
  175. request:()=>fetchDict("org"),
  176. hideInTable: false,
  177. },
  178. {
  179. title: '首选负责人',
  180. dataIndex: 'account',
  181. valueType:'select',
  182. request:()=>fetchDict({dictKey :'@account2' }),
  183. hideInTable: false,
  184. search: false,
  185. },
  186. {
  187. title: '补录频率',
  188. dataIndex: 'frequencys',
  189. valueType:'treeSelect',
  190. request:()=>fetchDict('FREQUENCY'),
  191. fieldProps: {
  192. treeDefaultExpandAll: true,
  193. treeCheckable:true,
  194. },
  195. hideInTable: true,
  196. //search: false,
  197. },
  198. {
  199. title: '补录频率',
  200. dataIndex: 'frequency',
  201. valueType:'select',
  202. request:()=>fetchDict('FREQUENCY'),
  203. hideInTable: false,
  204. search: false,
  205. },
  206. {
  207. title: '天数调整',
  208. dataIndex: 'adjustment',
  209. hideInTable: false,
  210. search: false,
  211. },
  212. {
  213. title: '模板编号',
  214. dataIndex: 'tmpCode',
  215. hideInTable: true,
  216. // search: false,
  217. },
  218. {
  219. title: '模板名称',
  220. dataIndex: 'tmpNames',
  221. hideInTable: true,
  222. // search: false,
  223. },
  224. {
  225. title: '包含模板',
  226. dataIndex: 'tmpNames',
  227. hideInTable: false,
  228. search: false,
  229. },
  230. {
  231. title: '状态',
  232. dataIndex: 'status',
  233. hideInTable: false,
  234. search: false,
  235. },
  236. {
  237. title: '操作',
  238. dataIndex: 'operate',
  239. valueType: 'option',
  240. render: (_, record) => [
  241. <SDOperate
  242. key="roleCfg"
  243. icon={<WomanOutlined />}
  244. successMessage=""
  245. onClick={
  246. ()=>{
  247. selectData(record);
  248. setDetailVisible(true);
  249. setEditType('update');
  250. setAccount(record.orgCode)
  251. } }
  252. >
  253. 修改
  254. </SDOperate>,
  255. <SDOperate
  256. key="roleCfg"
  257. icon={<WomanOutlined />}
  258. successMessage=""
  259. onClick={
  260. ()=>{
  261. deleteData(record);
  262. } }
  263. >
  264. 作废
  265. </SDOperate>,
  266. <SDOperate
  267. key="roleCfg"
  268. icon={<WomanOutlined />}
  269. successMessage=""
  270. onClick={
  271. ()=>{
  272. selectData(record);
  273. setDetailVisible(true);
  274. setEditType('update');
  275. } }
  276. >
  277. 查看
  278. </SDOperate>,
  279. ],
  280. },
  281. ];
  282. // 补录模板列表
  283. const templateListColumns: ProColumns<SupplementTemplateRelationModel>[] = [
  284. {
  285. title: '序号',
  286. dataIndex: 'id',
  287. search: false,
  288. render: (text, record, index) => { index = index + 1; return index},
  289. width:100,
  290. ellipsis:true,
  291. editable:false
  292. },
  293. {
  294. title: '计算实例号',
  295. dataIndex: 'calcIndex',
  296. search: false,
  297. hideInTable: true,
  298. },
  299. {
  300. title: '起始数据日期',
  301. dataIndex: 'startDate',
  302. search: false,
  303. hideInTable: true,
  304. },
  305. {
  306. title: '截止数据日期',
  307. dataIndex: 'endDate',
  308. search: false,
  309. hideInTable: true,
  310. },
  311. {
  312. title: '期次',
  313. dataIndex: 'term',
  314. search: false,
  315. hideInTable: true,
  316. },
  317. {
  318. title: '补录模板',
  319. dataIndex: 'tmpCodeOfDefine',
  320. search: false,
  321. hideInTable: false,
  322. valueType:'treeSelect',
  323. // request:()=>fetchDict({ dictKey : '@tmpCode'}),
  324. formItemProps:{
  325. rules:[
  326. {required:true},
  327. {validator:(rules,value,callback)=>{
  328. if (templateListData?.find(item => value === item?.tmpCodeOfDefine)) {
  329. callback('补录模板列表不可出现重复模板');
  330. } else if (value === '请选择补录模板'){
  331. callback('请选择补录模板');
  332. } else {
  333. callback();
  334. }
  335. }},
  336. ]
  337. },
  338. fieldProps: {
  339. options: dictionArray2,
  340. }
  341. },
  342. {
  343. title: '补录模板说明',
  344. dataIndex: 'remark',
  345. search: false,
  346. hideInTable: false,
  347. formItemProps:{
  348. rules:[
  349. {validator:(rules,value,callback)=>{
  350. let chineseCount = countChineseChars(value);
  351. if (chineseCount > 200) {
  352. callback('最多200个汉字');
  353. } else if (chineseCount<=0) {
  354. callback('请输入补录模板说明(汉字)');
  355. } else{
  356. callback();
  357. }
  358. }},]
  359. }
  360. },
  361. {
  362. title: '数据初始化逻辑',
  363. dataIndex: 'sqlCode',
  364. search: false,
  365. hideInTable: false,
  366. formItemProps:{
  367. rules:[
  368. {required:true},]
  369. }
  370. },
  371. {
  372. title: '操作',
  373. dataIndex: 'operate',
  374. valueType: 'option',
  375. render: (_, record) => [
  376. <SDOperate
  377. key="roleCfg"
  378. icon={<WomanOutlined />}
  379. successMessage=""
  380. onClick={async ()=>{
  381. templateListActionRef.current?.startEditable(record.tmpCodeOfDefine);
  382. } }
  383. >
  384. 编辑
  385. </SDOperate>,
  386. ],
  387. },
  388. ];
  389. // 补录模板校验规则
  390. const templateCheckColumns: ProColumns<TemplateDataValidationRuleModel>[] = [
  391. {
  392. title: '序号',
  393. dataIndex: 'id',
  394. search: false,
  395. render: (text, record, index) => { index = index + 1;return index},
  396. width:100,
  397. ellipsis:true,
  398. editable:false
  399. },
  400. {
  401. title: '计算实例号',
  402. dataIndex: 'calcIndex',
  403. search: false,
  404. hideInTable: true,
  405. width:150,
  406. ellipsis:true
  407. },
  408. {
  409. title: '起始数据日期',
  410. dataIndex: 'startDate',
  411. search: false,
  412. hideInTable: true,
  413. width:150,
  414. ellipsis:true
  415. },
  416. {
  417. title: '截止数据日期',
  418. dataIndex: 'endDate',
  419. search: false,
  420. hideInTable: true,
  421. width:150,
  422. ellipsis:true
  423. },
  424. {
  425. title: '期次',
  426. dataIndex: 'term',
  427. search: false,
  428. hideInTable: true,
  429. width:150,
  430. ellipsis:true
  431. },
  432. {
  433. title: '规则编号',
  434. dataIndex: 'tmpverificationCode',
  435. search: false,
  436. width:100,
  437. ellipsis:true,
  438. hideInTable:true,
  439. editable:false
  440. },
  441. {
  442. title: '规则名称',
  443. dataIndex: 'tmpverificationName',
  444. hideInTable: false,
  445. width:150,
  446. ellipsis:true,
  447. formItemProps:{
  448. rules:[
  449. {validator:(rules,value,callback)=>{
  450. let chineseCount = countChineseChars(value);
  451. if (chineseCount > 100) {
  452. callback('最多100个汉字');
  453. } else if (chineseCount<=0) {
  454. callback('请输入规则名称(汉字)');
  455. } else{
  456. callback();
  457. }
  458. }},]
  459. }
  460. },
  461. {
  462. title: '补录模板',
  463. dataIndex: 'tmpCode',
  464. hideInTable: false,
  465. width:150,
  466. ellipsis:true,
  467. valueType:'treeSelect',
  468. formItemProps:{
  469. rules:[
  470. {required:true},]
  471. },
  472. fieldProps: {
  473. options: dictionArray1,
  474. }
  475. },
  476. {
  477. title: '行列类型',
  478. dataIndex: 'tmpverRowColType',
  479. hideInTable: false,
  480. valueType:'select',
  481. request:()=>fetchDict({ dictKey :'ROW_COLUMN_TYPE'}),
  482. width:150,
  483. ellipsis:true,
  484. formItemProps:{
  485. rules:[
  486. {required:true},]
  487. }
  488. },
  489. {
  490. title: '模板验证时点',
  491. dataIndex: 'vartimmer',
  492. hideInTable: false,
  493. width:150,
  494. ellipsis:true,
  495. valueType: 'treeSelect',
  496. request: () => fetchDict('TEMPLATE_VERIFY_TIME'),
  497. fieldProps: {
  498. treeDefaultExpandAll: true,
  499. },
  500. formItemProps:{
  501. rules:[
  502. {required:true},]
  503. }
  504. },
  505. {
  506. title: '行范围',
  507. dataIndex: 'tmpverRowRange',
  508. hideInTable: false,
  509. width:150,
  510. ellipsis:true,
  511. formItemProps:{
  512. rules:[
  513. {pattern: RegExp(`[0-9]+\\-[0-9]+|[n|N]`),message:'请输入正确范围'},
  514. {required:true},
  515. ]
  516. }
  517. },
  518. {
  519. title: '列范围',
  520. dataIndex: 'tmpverColumnRange',
  521. hideInTable: false,
  522. width:150,
  523. ellipsis:true,
  524. formItemProps:{
  525. rules:[
  526. {pattern: RegExp(`[0-9]+\\-[0-9]+|[n|N]`),message:'请输入正确范围'},
  527. {required:true},
  528. ]
  529. }
  530. },
  531. {
  532. title: '约束方式',
  533. dataIndex: 'checkType',
  534. hideInTable: false,
  535. width:150,
  536. ellipsis:true,
  537. valueType: 'treeSelect',
  538. request: () => fetchDict('CONSTRAINT_METHOD'),
  539. fieldProps: {
  540. treeDefaultExpandAll: true,
  541. },
  542. formItemProps:{
  543. rules:[
  544. {required:true},]
  545. },
  546. },
  547. {
  548. title: '数据类型',
  549. dataIndex: 'dataType',
  550. hideInTable: false,
  551. width:150,
  552. ellipsis:true,
  553. formItemProps:{
  554. rules:[
  555. {required:excelFormulaFlag},]
  556. }
  557. },
  558. {
  559. title: '约束公式',
  560. dataIndex: 'excelFormula',
  561. hideInTable: false,
  562. width:150,
  563. ellipsis:true,
  564. formItemProps:{
  565. rules:[
  566. {required:excelFormulaFlag},]
  567. }
  568. },
  569. {
  570. title: '约束规则SQL',
  571. dataIndex: 'sqlCode',
  572. hideInTable: false,
  573. width:150,
  574. ellipsis:true,
  575. formItemProps:{
  576. rules:[
  577. {required:sqlCode},]
  578. }
  579. },
  580. {
  581. title: '越界处理方式',
  582. dataIndex: 'exceedType',
  583. hideInTable: false,
  584. width:150,
  585. ellipsis:true,
  586. valueType: 'treeSelect',
  587. request: () => fetchDict('CROSS_BORDER_DISPOSAL'),
  588. fieldProps: {
  589. treeDefaultExpandAll: true,
  590. },
  591. formItemProps:{
  592. rules:[
  593. {required:true},]
  594. }
  595. },
  596. {
  597. title: '提示信息模板',
  598. dataIndex: 'errorMsgTmplate',
  599. hideInTable: false,
  600. width:150,
  601. ellipsis:true
  602. },
  603. {
  604. title: '操作',
  605. dataIndex: 'operate',
  606. valueType: 'option',
  607. width:150,
  608. ellipsis:true,
  609. render: (_, record) => [
  610. <SDOperate
  611. key="roleCfg"
  612. icon={<WomanOutlined />}
  613. successMessage=""
  614. onClick={
  615. async()=>{
  616. templateCheckActionRef.current?.startEditable(record.tmpverificationCode);
  617. }}
  618. >
  619. 编辑
  620. </SDOperate>,
  621. ],
  622. },
  623. ];
  624. return (
  625. <SDPage>
  626. <SDTable
  627. title="查询表格"
  628. rowKey="customerName"
  629. request={async (formdata:SupplementTaskDefineModel) =>{
  630. const formDatas = await getDataList(formdata);
  631. return {data: formDatas}
  632. } }
  633. columns={columns}
  634. toolBarRender={(_, { selectedRows }) => [
  635. <SDButton
  636. key="export"
  637. icon={<PlusSquareTwoTone/>}
  638. successMessage=''
  639. onClick={() => {
  640. setEditType('create');
  641. setDetailVisible(true);
  642. setTemplateListData([]);
  643. setTemplateCheckData([]);
  644. }}
  645. >
  646. 新增
  647. </SDButton>,
  648. ]}
  649. actionRef={actionRef}
  650. formRef={formRef}
  651. setDetailVisible={() => {setDetailVisible(true)}}
  652. setEditType={setEditType}
  653. setCurrentRow={setCurrentRow}
  654. />
  655. {detailVisible && (
  656. <SDModalForm
  657. title={'详细信息'}
  658. editType={editType}
  659. params={currentRow}
  660. visible={detailVisible}
  661. onVisibleChange={() => {setDetailVisible(false)}}
  662. onValuesChange={(changedValues,values)=>{
  663. if(values.orgCode!=''||values.orgCode!=undefined){
  664. setAccount(values.orgCode);
  665. }
  666. }
  667. }
  668. footer={[
  669. <SDSubmitButton editType={editType} formRef={formRef} doSubmit={handleSave} >保存</SDSubmitButton>,
  670. <SDButton
  671. key="closeUpdate"
  672. successMessage=''
  673. onClick={() => {
  674. setDetailVisible(false);
  675. }}>关闭</SDButton>
  676. ]}
  677. tableRef={actionRef}
  678. formRef={formRef}
  679. >
  680. <SDAreaTtile title='补录任务新增页面'/>
  681. <SDFormText name="taskCode" readonlyCond="update" required={true} rules={[{max:60,message:'最多60个字符'}]}
  682. bgValidater={(taskCode: string) => isNotExist({
  683. taskCode: taskCode,
  684. taskName: "",
  685. })}
  686. label="任务编号"/>
  687. <SDFormText name="taskName" rules={[{validator:(rules,value,callback)=>{
  688. let chineseCount = countChineseChars(value);
  689. if (chineseCount > 100) {
  690. callback('最多100个汉字');
  691. } else if (chineseCount<=0) {
  692. callback('请输入汉字');
  693. } else{
  694. callback();
  695. }
  696. }}]} label="任务名称"/>
  697. <SDFormDict dictKey="org" name="orgCode" label="责任机构"/>
  698. <SDFormDict dictKey="@account1" name="account" label="首选责任人" dictParam={`{"account":"${account}"}`}/>
  699. <SDFormDict dictKey="FREQUENCY" name="frequency" label="补录频率"/>
  700. <SDFormText name="adjustment" label="天数调整"/>
  701. <SDFormDict dictKey="@tmpFileCode" name="tmpFileCode" label="所属阶段" />
  702. <SDLayout>
  703. <SDAreaTtile title='补录模板列表'/>
  704. <EditableProTable
  705. rowKey="tmpCodeOfDefine"
  706. columns={templateListColumns}
  707. recordCreatorProps={false}
  708. actionRef={templateListActionRef}
  709. value={templateListData}
  710. editable={{
  711. actionRender: (row,config,defaultDoms)=>{
  712. return [defaultDoms.save,defaultDoms.delete,defaultDoms.cancel]
  713. },
  714. }}
  715. toolBarRender={(_, { selectedRowKeys }) => editType == 'create' || editType == 'update' ? [
  716. <SDButton
  717. key="export"
  718. successMessage=''
  719. onClick={() => {
  720. templateListActionRef.current?.addEditRecord?.({
  721. tmpCodeOfDefine: '请选择补录模板',
  722. title: 'NEWROW',
  723. });
  724. }}
  725. >
  726. 新增
  727. </SDButton>,
  728. ]:[]}
  729. onChange={ (value: readonly SupplementTemplateRelationModel[]) => {
  730. setTemplateListData([...value]);
  731. // 判断array2中是否包含array1中的对象,并返回该对象的数组形式
  732. let foundObject = templateCheckData?.filter(obj1 => value?.find(obj2 =>
  733. obj2.tmpCodeOfDefine === obj1.tmpCode));
  734. if (foundObject) {
  735. setTemplateCheckData([...foundObject]);
  736. }
  737. // 补录模板内新增一条数据(模板是新的)补录模板校验规则的补录模板下拉列表应实时更新
  738. // 先将补录模板校验规则的补录模板下拉列表清空
  739. dictionArray1?.splice(0,dictionArray1.length);
  740. // 遍历补录模板列表。将新出现的模板用temcode在dictionArray2下拉列表的数组中找到相应对象并压进dictionArray1里
  741. value?.forEach((item)=>{
  742. const obj = dictionArray2?.find(e => e.value === item.tmpCodeOfDefine);
  743. if (!dictionArray1?.includes(obj)){
  744. dictionArray1?.push(obj);
  745. }
  746. })
  747. }}
  748. />
  749. </SDLayout>
  750. <SDLayout>
  751. <SDAreaTtile title='补录模板校验规则'/>
  752. <EditableProTable
  753. rowKey="tmpverificationCode"
  754. columns={templateCheckColumns}
  755. recordCreatorProps={false}
  756. actionRef={templateCheckActionRef}
  757. scroll={{ x: 1500 }}
  758. value={templateCheckData}
  759. editable={{
  760. onValuesChange(value) {
  761. if (value?.checkType) {
  762. if (value.checkType == 'EXCEL_FORMULA') {
  763. setExcelFormulaFlag(true);
  764. setExcelFormulaFlag(false);
  765. setDateType(false);
  766. } else if (value.checkType == 'SQL_STATEMENT') {
  767. setSqlCode(true);
  768. setExcelFormulaFlag(false);
  769. setDateType(false);
  770. }else if(value.checkType == 'DATA_TYPE'){
  771. setDateType(true);
  772. setSqlCode(false);
  773. setExcelFormulaFlag(false);
  774. } else {
  775. setSqlCode(false);
  776. setExcelFormulaFlag(false);
  777. }
  778. }
  779. },
  780. actionRender: (row,config,defaultDoms)=>{
  781. return [defaultDoms.save,defaultDoms.delete,defaultDoms.cancel]
  782. }
  783. }}
  784. toolBarRender={(_, { selectedRowKeys }) => editType == 'create' || editType == 'update' ? [
  785. <SDButton
  786. key="export"
  787. successMessage=''
  788. onClick={ async () => {
  789. let nextId = await getNextId();
  790. templateCheckActionRef.current?.addEditRecord?.({
  791. tmpverificationCode: nextId,
  792. title: 'NEWROW',
  793. });
  794. }}
  795. >
  796. 新增
  797. </SDButton>,
  798. ]:[]}
  799. onChange={ (value: readonly TemplateDataValidationRuleModel[]) => {
  800. setTemplateCheckData([...value]);
  801. } }
  802. />
  803. </SDLayout>
  804. </SDModalForm>
  805. )}
  806. </SDPage>
  807. );
  808. }
  809. export default supplementtaskmanagement;