|
@@ -4,11 +4,13 @@ import type {FormInstance} from 'antd'
|
|
|
import {Upload} from 'antd'
|
|
|
import { SDPage,SDFormText,SDModalForm,SDTable,SDFormItem,SDButton,SDSubmitButton,EditType, SDAreaTtile, SDOperate, baseFun,SDModal, validateFun, SDLayout, SDFormDict, } from "@sundata/ui-frame";
|
|
|
import type { SupplementTaskDefineModel,SupplementTemplateRelationModel,TemplateDataValidationRuleModel, } from '@/services/rwa/product/datasupplementary/supplementtaskmanagement';
|
|
|
-import {getDataList,selectDetailData,getTemplateCheckDataList,getTemplateDataList,deleteInfoData,updateRowData,
|
|
|
+import {getDataList,selectDetailData,getTemplateCheckDataList,getTemplateDataList,deleteInfoData,updateRowData,isNotExist,
|
|
|
createRowData,createTemplateListRowData,createTemplateCheckRowData} from '@/services/rwa/product/datasupplementary/supplementtaskmanagement';
|
|
|
import { PlusSquareTwoTone, WomanOutlined } from "@ant-design/icons";
|
|
|
import { ProductProps } from "@/sundataImport";
|
|
|
import { toNumber } from "lodash";
|
|
|
+import { useModel } from '@umijs/max';
|
|
|
+import { countChineseChars } from "@/services/rwa/product/rwacheckutils";
|
|
|
|
|
|
type widowRush = {
|
|
|
onCancel: () => void;
|
|
@@ -21,7 +23,9 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
|
|
|
const [editType, setEditType] = useState<EditType>(prop.editType || 'display');
|
|
|
/** 是否显示详细信息窗口 */
|
|
|
const [detailVisible, setDetailVisible] = useState<boolean>(false);
|
|
|
-
|
|
|
+ /** 是否excel公式字段是否必输 */
|
|
|
+ const [excelFormulaFlag, setExcelFormulaFlag] = useState<boolean>(false);
|
|
|
+ const [sqlCode,setSqlCode] = useState<boolean>(false);
|
|
|
const [currentRow, setCurrentRow] = useState<SupplementTaskDefineModel>();
|
|
|
/** 表格引用对象,刷新表格使用 */
|
|
|
const actionRef = useRef<ActionType>();
|
|
@@ -37,6 +41,7 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
|
|
|
|
|
|
// 页面数据
|
|
|
var formDataList = new Array<SupplementTaskDefineModel>;
|
|
|
+ const { fetchDict } = useModel('dict');
|
|
|
|
|
|
/** 字段关系序号编辑 */
|
|
|
var dataInfoIndex = 1;
|
|
@@ -71,20 +76,32 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
|
|
|
const handleSave = async(data: SupplementTaskDefineModel,) => {
|
|
|
|
|
|
if (editType == 'update' ) {
|
|
|
- await updateRowData(data).then(()=>{
|
|
|
+ const updateRes = await updateRowData(data);
|
|
|
+ if (updateRes == true) {
|
|
|
if (templateListData && templateCheckData) {
|
|
|
- createTemplateListRowData(templateListData,data.taskCode);
|
|
|
- createTemplateCheckRowData(templateCheckData);
|
|
|
+ if (templateListData.length >= 1) {
|
|
|
+ const res01 = await createTemplateListRowData(templateListData,data.taskCode);
|
|
|
+ if ( res01 == true) {
|
|
|
+ createTemplateCheckRowData(templateCheckData);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ baseFun.error('补录数据模板列表至少有一条记录');
|
|
|
+ }
|
|
|
}
|
|
|
- });
|
|
|
+ }
|
|
|
closeAndRefresh();
|
|
|
} else if (editType == 'create' ) {
|
|
|
- await createRowData(data).then(()=>{
|
|
|
+ const createRes= await createRowData(data);
|
|
|
+ if (createRes == true) {
|
|
|
if (templateListData && templateCheckData) {
|
|
|
- createTemplateListRowData(templateListData,data.taskCode);
|
|
|
- createTemplateCheckRowData(templateCheckData);
|
|
|
+ const res01 = await createTemplateListRowData(templateListData,data.taskCode);
|
|
|
+ if ( res01 == true) {
|
|
|
+ createTemplateCheckRowData(templateCheckData);
|
|
|
+ } else {
|
|
|
+ baseFun.error('补录数据模板列表至少有一条记录');
|
|
|
+ }
|
|
|
}
|
|
|
- });
|
|
|
+ }
|
|
|
closeAndRefresh();
|
|
|
}
|
|
|
setDetailVisible(false);
|
|
@@ -202,8 +219,6 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
|
|
|
onClick={
|
|
|
()=>{
|
|
|
deleteData(record);
|
|
|
- setDetailVisible(true);
|
|
|
- setEditType('update');
|
|
|
} }
|
|
|
>
|
|
|
作废
|
|
@@ -276,12 +291,29 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
|
|
|
dataIndex: 'remark',
|
|
|
search: false,
|
|
|
hideInTable: false,
|
|
|
+ formItemProps:{
|
|
|
+ rules:[
|
|
|
+ {validator:(rules,value,callback)=>{
|
|
|
+ let chineseCount = countChineseChars(value);
|
|
|
+ if (chineseCount > 200) {
|
|
|
+ callback('最多200个汉字');
|
|
|
+ } else if (chineseCount<=0) {
|
|
|
+ callback('请输入补录模板说明(汉字)');
|
|
|
+ } else{
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ }},]
|
|
|
+ }
|
|
|
},
|
|
|
{
|
|
|
title: '数据初始化逻辑',
|
|
|
dataIndex: 'sqlCode',
|
|
|
search: false,
|
|
|
hideInTable: false,
|
|
|
+ formItemProps:{
|
|
|
+ rules:[
|
|
|
+ {required:true},]
|
|
|
+ }
|
|
|
},
|
|
|
{
|
|
|
title: '操作',
|
|
@@ -305,15 +337,15 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
|
|
|
|
|
|
// 补录模板校验规则
|
|
|
const templateCheckColumns: ProColumns<TemplateDataValidationRuleModel>[] = [
|
|
|
- {
|
|
|
- title: '序号',
|
|
|
- dataIndex: 'id',
|
|
|
- search: false,
|
|
|
- render: (text, record, index) => { index = index + 1;dataDetailIndex =index; return index},
|
|
|
- width:100,
|
|
|
- ellipsis:true,
|
|
|
- editable:false
|
|
|
- },
|
|
|
+ {
|
|
|
+ title: '序号',
|
|
|
+ dataIndex: 'id',
|
|
|
+ search: false,
|
|
|
+ render: (text, record, index) => { index = index + 1;dataDetailIndex =index; return index},
|
|
|
+ width:100,
|
|
|
+ ellipsis:true,
|
|
|
+ editable:false
|
|
|
+ },
|
|
|
{
|
|
|
title: '计算实例号',
|
|
|
dataIndex: 'calcIndex',
|
|
@@ -328,7 +360,7 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
|
|
|
search: false,
|
|
|
hideInTable: true,
|
|
|
width:150,
|
|
|
- ellipsis:true
|
|
|
+ ellipsis:true
|
|
|
},
|
|
|
{
|
|
|
title: '截止数据日期',
|
|
@@ -336,7 +368,7 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
|
|
|
search: false,
|
|
|
hideInTable: true,
|
|
|
width:150,
|
|
|
- ellipsis:true
|
|
|
+ ellipsis:true
|
|
|
},
|
|
|
{
|
|
|
title: '期次',
|
|
@@ -344,35 +376,65 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
|
|
|
search: false,
|
|
|
hideInTable: true,
|
|
|
width:150,
|
|
|
- ellipsis:true
|
|
|
+ ellipsis:true
|
|
|
},
|
|
|
{
|
|
|
title: '规则名称',
|
|
|
dataIndex: 'tmpverificationName',
|
|
|
hideInTable: false,
|
|
|
width:150,
|
|
|
- ellipsis:true
|
|
|
+ ellipsis:true,
|
|
|
+ formItemProps:{
|
|
|
+ rules:[
|
|
|
+ {validator:(rules,value,callback)=>{
|
|
|
+ let chineseCount = countChineseChars(value);
|
|
|
+ if (chineseCount > 100) {
|
|
|
+ callback('最多100个汉字');
|
|
|
+ } else if (chineseCount<=0) {
|
|
|
+ callback('请输入规则名称(汉字)');
|
|
|
+ } else{
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ }},]
|
|
|
+ }
|
|
|
},
|
|
|
{
|
|
|
title: '补录模板',
|
|
|
dataIndex: 'tmpCode',
|
|
|
hideInTable: false,
|
|
|
width:150,
|
|
|
- ellipsis:true
|
|
|
+ ellipsis:true,
|
|
|
+ formItemProps:{
|
|
|
+ rules:[
|
|
|
+ {required:true},]
|
|
|
+ }
|
|
|
},
|
|
|
{
|
|
|
title: '行列类型',
|
|
|
dataIndex: 'tmpverRowColType',
|
|
|
hideInTable: false,
|
|
|
width:150,
|
|
|
- ellipsis:true
|
|
|
+ ellipsis:true,
|
|
|
+ formItemProps:{
|
|
|
+ rules:[
|
|
|
+ {required:true},]
|
|
|
+ }
|
|
|
},
|
|
|
{
|
|
|
- title: '模板验证时点',
|
|
|
- dataIndex: 'vartimmer',
|
|
|
- hideInTable: false,
|
|
|
- width:150,
|
|
|
- ellipsis:true
|
|
|
+ title: '模板验证时点',
|
|
|
+ dataIndex: 'vartimmer',
|
|
|
+ hideInTable: false,
|
|
|
+ width:150,
|
|
|
+ ellipsis:true,
|
|
|
+ valueType: 'treeSelect',
|
|
|
+ request: () => fetchDict('TEMPLATE_VERIFY_TIME'),
|
|
|
+ fieldProps: {
|
|
|
+ treeDefaultExpandAll: true,
|
|
|
+ },
|
|
|
+ formItemProps:{
|
|
|
+ rules:[
|
|
|
+ {required:true},]
|
|
|
+ }
|
|
|
},
|
|
|
{
|
|
|
title: '行范围',
|
|
@@ -382,7 +444,9 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
|
|
|
ellipsis:true,
|
|
|
formItemProps:{
|
|
|
rules:[
|
|
|
- {pattern: RegExp(`[0-9]+\\-[0-9]+|[n|N]`),message:'请输入正确范围'},]
|
|
|
+ {pattern: RegExp(`[0-9]+\\-[0-9]+|[n|N]`),message:'请输入正确范围'},
|
|
|
+ {required:true},
|
|
|
+ ]
|
|
|
}
|
|
|
},
|
|
|
{
|
|
@@ -390,46 +454,78 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
|
|
|
dataIndex: 'tmpverColumnRange',
|
|
|
hideInTable: false,
|
|
|
width:150,
|
|
|
- ellipsis:true
|
|
|
+ ellipsis:true,
|
|
|
+ formItemProps:{
|
|
|
+ rules:[
|
|
|
+ {pattern: RegExp(`[0-9]+\\-[0-9]+|[n|N]`),message:'请输入正确范围'},
|
|
|
+ {required:true},
|
|
|
+ ]
|
|
|
+ }
|
|
|
},
|
|
|
{
|
|
|
title: '约束方式',
|
|
|
dataIndex: 'checkType',
|
|
|
hideInTable: false,
|
|
|
width:150,
|
|
|
- ellipsis:true
|
|
|
+ ellipsis:true,
|
|
|
+ valueType: 'treeSelect',
|
|
|
+ request: () => fetchDict('CONSTRAINT_METHOD'),
|
|
|
+ fieldProps: {
|
|
|
+ treeDefaultExpandAll: true,
|
|
|
+ },
|
|
|
+ formItemProps:{
|
|
|
+ rules:[
|
|
|
+ {required:true},]
|
|
|
+ },
|
|
|
},
|
|
|
{
|
|
|
title: '数据类型',
|
|
|
- dataIndex: 'remark',
|
|
|
+ dataIndex: 'dataType',
|
|
|
hideInTable: false,
|
|
|
width:150,
|
|
|
- ellipsis:true
|
|
|
+ ellipsis:true
|
|
|
},
|
|
|
{
|
|
|
title: '约束公式',
|
|
|
- dataIndex: 'remark',
|
|
|
+ dataIndex: 'excelFormula',
|
|
|
hideInTable: false,
|
|
|
width:150,
|
|
|
- ellipsis:true
|
|
|
+ ellipsis:true,
|
|
|
+ formItemProps:{
|
|
|
+ rules:[
|
|
|
+ {required:excelFormulaFlag},]
|
|
|
+ }
|
|
|
},
|
|
|
{
|
|
|
title: '约束规则SQL',
|
|
|
- dataIndex: 'remark',
|
|
|
+ dataIndex: 'sqlCode',
|
|
|
hideInTable: false,
|
|
|
width:150,
|
|
|
- ellipsis:true
|
|
|
+ ellipsis:true,
|
|
|
+ formItemProps:{
|
|
|
+ rules:[
|
|
|
+ {required:sqlCode},]
|
|
|
+ }
|
|
|
},
|
|
|
{
|
|
|
title: '越界处理方式',
|
|
|
- dataIndex: 'remark',
|
|
|
+ dataIndex: 'exceedType',
|
|
|
hideInTable: false,
|
|
|
width:150,
|
|
|
- ellipsis:true
|
|
|
+ ellipsis:true,
|
|
|
+ valueType: 'treeSelect',
|
|
|
+ request: () => fetchDict('CROSS_BORDER_DISPOSAL'),
|
|
|
+ fieldProps: {
|
|
|
+ treeDefaultExpandAll: true,
|
|
|
+ },
|
|
|
+ formItemProps:{
|
|
|
+ rules:[
|
|
|
+ {required:true},]
|
|
|
+ }
|
|
|
},
|
|
|
{
|
|
|
title: '提示信息模板',
|
|
|
- dataIndex: 'remark',
|
|
|
+ dataIndex: 'errorMsgTmplate',
|
|
|
hideInTable: false,
|
|
|
width:150,
|
|
|
ellipsis:true
|
|
@@ -510,8 +606,22 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
|
|
|
formRef={formRef}
|
|
|
>
|
|
|
<SDAreaTtile title='补录任务新增页面'/>
|
|
|
- <SDFormText name="taskCode" readonlyCond="update" required={true} label="任务编号"/>
|
|
|
- <SDFormText name="taskName" label="任务名称"/>
|
|
|
+ <SDFormText name="taskCode" readonlyCond="update" required={true} rules={[{max:60,message:'最多60个字符'}]}
|
|
|
+ bgValidater={(taskCode: string) => isNotExist({
|
|
|
+ taskCode: taskCode,
|
|
|
+ taskName: "",
|
|
|
+ })}
|
|
|
+ label="任务编号"/>
|
|
|
+ <SDFormText name="taskName" rules={[{validator:(rules,value,callback)=>{
|
|
|
+ let chineseCount = countChineseChars(value);
|
|
|
+ if (chineseCount > 100) {
|
|
|
+ callback('最多100个汉字');
|
|
|
+ } else if (chineseCount<=0) {
|
|
|
+ callback('请输入汉字');
|
|
|
+ } else{
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ }}]} label="任务名称"/>
|
|
|
<SDFormDict dictKey="" name="orgCode" label="责任机构"/>
|
|
|
<SDFormDict dictKey="" name="account" label="首选责任人"/>
|
|
|
<SDFormDict dictKey="CALC_TASK_RATE" name="frequency" label="补录频率"/>
|
|
@@ -560,6 +670,19 @@ const supplementtaskmanagement : React.FC<widowRush> = (prop:widowRush) => {
|
|
|
scroll={{ x: 1500 }}
|
|
|
value={templateCheckData}
|
|
|
editable={{
|
|
|
+ onValuesChange(value) {
|
|
|
+ if (value?.checkType) {
|
|
|
+ if (value.checkType == 'EXCEL_FORMULA') {
|
|
|
+ setExcelFormulaFlag(true);
|
|
|
+ } else if (value.checkType == 'SQL_STATEMENT') {
|
|
|
+ setSqlCode(true);
|
|
|
+ setExcelFormulaFlag(false);
|
|
|
+ } else {
|
|
|
+ setSqlCode(false);
|
|
|
+ setExcelFormulaFlag(false);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
actionRender: (row,config,defaultDoms)=>{
|
|
|
return [defaultDoms.save,defaultDoms.delete,defaultDoms.cancel]
|
|
|
}
|