Browse Source

补录数据查询初步开发+数据补录模板定义代码整改(行列范围检查)

ZhangYanJie 6 months ago
parent
commit
74c3964e8d

+ 13 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/action/SupplementDataQueryAction.java

@@ -0,0 +1,13 @@
+package com.sundata.product.rwa.datasupplementary.action;
+
+
+import com.sundata.common.base.BaseAction;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/product/rwa/datasupplementary/SupplementDataQueryAction")
+public class SupplementDataQueryAction extends BaseAction {
+
+
+}

+ 4 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/mapper/SupplementDataQueryMapper.java

@@ -0,0 +1,4 @@
+package com.sundata.product.rwa.datasupplementary.mapper;
+
+public interface SupplementDataQueryMapper {
+}

+ 9 - 8
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/mapper/SupplementTemplateDefineMapper.java

@@ -2,23 +2,24 @@ package com.sundata.product.rwa.datasupplementary.mapper;
 
 import com.sundata.product.rwa.datasupplementary.model.TemplateBasicInfoDefineModel;
 import com.sundata.product.rwa.datasupplementary.model.TemplateFieldDetailDefineModel;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
 public interface SupplementTemplateDefineMapper {
-    List<TemplateBasicInfoDefineModel> getDataList(TemplateBasicInfoDefineModel model);
+    List<TemplateBasicInfoDefineModel> getDataList(@Param("model") TemplateBasicInfoDefineModel model);
 
-    List<TemplateFieldDetailDefineModel> getFieldDetailDataList(TemplateBasicInfoDefineModel model);
+    List<TemplateFieldDetailDefineModel> getFieldDetailDataList(@Param("model")TemplateBasicInfoDefineModel model);
 
-    TemplateBasicInfoDefineModel selectDetailData(TemplateBasicInfoDefineModel model);
+    TemplateBasicInfoDefineModel selectDetailData(@Param("model") TemplateBasicInfoDefineModel model);
 
-    void deleteInfoData(TemplateBasicInfoDefineModel model);
+    void deleteInfoData(@Param("model") TemplateBasicInfoDefineModel model);
 
-    void updateRowData(TemplateBasicInfoDefineModel model);
+    void updateRowData(@Param("model") TemplateBasicInfoDefineModel model);
 
-    void updateFieldRowData(TemplateBasicInfoDefineModel model);
+    void updateFieldRowData(@Param("model") TemplateBasicInfoDefineModel model);
 
-    void createRowData(TemplateBasicInfoDefineModel model);
+    void createRowData(@Param("model") TemplateBasicInfoDefineModel model);
 
-    void createFieldRowData(TemplateBasicInfoDefineModel model);
+    void createFieldRowData(@Param("model") TemplateBasicInfoDefineModel model);
 }

+ 13 - 12
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/mybatis/SupplementTemplateDefineMapper.xml

@@ -13,11 +13,11 @@
         EDATE                 AS   endDate,
         TERM                  AS   term,
         DATA_DATE             AS   dataDate,
-        TMPCODE               AS   tmpCode
-        TMPNAME               AS   tmpName
-        TMPTYPE               AS   tmpType
-        ROWRANGE              AS   rowRange
-        COLUMNRANGE	          AS   columnRange
+        TMPCODE               AS   tmpCode,
+        TMPNAME               AS   tmpName,
+        TMPTYPE               AS   tmpType,
+        ROWRANGE              AS   rowRange,
+        COLUMNRANGE	          AS   columnRange,
         TMPFILECODE	          AS   tmpFileCode
         FROM RWA_IMPUT_TMPCONF_BASEINFO
         <where>
@@ -204,22 +204,23 @@
 
 
     <!-- 报表的初始化 -->
-    <select id="selectCalcReportData" resultType="com.sundata.product.rwa.datasupplementary.model.TemplateBasicInfoDefineModel">
+    <select id="selectDetailData" resultType="com.sunda
+    ta.product.rwa.datasupplementary.model.TemplateBasicInfoDefineModel">
         SELECT
         CALCINDEX             AS   calcIndex,
         SDATE                 AS   startDate,
         EDATE                 AS   endDate,
         TERM                  AS   term,
         DATA_DATE             AS   dataDate,
-        TMPCODE               AS   tmpCode
-        TMPNAME               AS   tmpName
-        TMPTYPE               AS   tmpType
-        ROWRANGE              AS   rowRange
-        COLUMNRANGE	          AS   columnRange
+        TMPCODE               AS   tmpCode,
+        TMPNAME               AS   tmpName,
+        TMPTYPE               AS   tmpType,
+        ROWRANGE              AS   rowRange,
+        COLUMNRANGE	          AS   columnRange,
         TMPFILECODE	          AS   tmpFileCode
         FROM RWA_IMPUT_TMPCONF_BASEINFO
         <where>
-            <if test="tmpCode != null and tmpCode !=''">
+            <if test="model.tmpCode != null and model.tmpCode !=''">
                 TMPCODE = #{model.tmpCode}
             </if>
         </where>

+ 8 - 0
Procedure/backend/project/src/main/java/com/sundata/product/rwa/datasupplementary/service/SupplementDataQueryService.java

@@ -0,0 +1,8 @@
+package com.sundata.product.rwa.datasupplementary.service;
+
+
+import org.springframework.stereotype.Service;
+
+@Service
+public class SupplementDataQueryService {
+}

+ 21 - 64
Procedure/frontend/projectb/src/pages/product/datasupplementary/supplementdataquery.tsx

@@ -3,7 +3,7 @@ import { type ProColumns, type ActionType, type ProFormInstance, ProTable, Edita
 import type {FormInstance} from 'antd'
 import  {Upload} from 'antd'
 import { SDPage,SDFormText,SDModalForm,SDTable,SDFormItem,SDButton,SDSubmitButton,EditType, SDAreaTtile, SDOperate, baseFun,SDModal, validateFun, SDLayout, } from "@sundata/ui-frame";
-import type { DataSupplementTaskExampleModel,DataSupplementInstancesIntaskModel } from '@/services/rwa/product/datasupplementary/supplementdataquery';
+import type { SupplementDataSelectModel, } from '@/services/rwa/product/datasupplementary/supplementdataquery';
 import {getDataList,selectDetailData} from '@/services/rwa/product/datasupplementary/supplementdataquery';
 import { PoweroffOutlined, WomanOutlined } from "@ant-design/icons";
 import { ProductProps } from "@/sundataImport";
@@ -20,17 +20,17 @@ const supplementdataquery : React.FC<widowRush> = (prop:widowRush) => {
     /** 是否显示详细信息窗口 */
     const [detailVisible, setDetailVisible] = useState<boolean>(false);
     const [fieldDetailVisible, setFieldDetailVisible] = useState<boolean>(false);
-    const [currentRow, setCurrentRow] = useState<DataSupplementTaskExampleModel>();
+    const [currentRow, setCurrentRow] = useState<SupplementDataSelectModel>();
     /** 表格引用对象,刷新表格使用   */
     const actionRef = useRef<ActionType>();
     const formRef = useRef<FormInstance<any>>();
     const templateRef = useRef<FormInstance<any>>();
 
-    const [formDetailData, setFormDetailData] = useState<DataSupplementInstancesIntaskModel[]>();
-    const [templateCheckData, setTemplateCheckData] = useState<DataSupplementInstancesIntaskModel[]>();
+    const [formDetailData, setFormDetailData] = useState<SupplementDataSelectModel[]>();
+    const [templateCheckData, setTemplateCheckData] = useState<SupplementDataSelectModel[]>();
 
     // 页面数据
-    var formDataList = new Array<DataSupplementTaskExampleModel>;
+    var formDataList = new Array<SupplementDataSelectModel>;
     /**上传文件 */
     const [fileData, setFileData] = useState<File>();
     // 导入窗口显示
@@ -56,7 +56,7 @@ const supplementdataquery : React.FC<widowRush> = (prop:widowRush) => {
     
 
     // 修改查询查询
-    const selectData = async (formdata : DataSupplementTaskExampleModel) => {
+    const selectData = async (formdata : SupplementDataSelectModel) => {
       const data = await selectDetailData(formdata);
       formRef.current?.setFieldsValue(data);
      
@@ -81,7 +81,7 @@ const supplementdataquery : React.FC<widowRush> = (prop:widowRush) => {
 
      
     // 数据补录模板定义
-    const columns: ProColumns<DataSupplementTaskExampleModel>[] = [
+    const columns: ProColumns<SupplementDataSelectModel>[] = [
         {
           title: '序号',
           dataIndex: 'index',
@@ -177,7 +177,7 @@ const supplementdataquery : React.FC<widowRush> = (prop:widowRush) => {
         <SDTable
          title="查询表格"
          rowKey="customerName"
-         request={async (formdata:DataSupplementTaskExampleModel) =>{
+         request={async (formdata:SupplementDataSelectModel) =>{
            const formDatas = await getDataList(formdata);
            // 解构数组(导出用)
            formDataList=[...formDatas];
@@ -212,7 +212,7 @@ const supplementdataquery : React.FC<widowRush> = (prop:widowRush) => {
           visible={detailVisible}
           onVisibleChange={() => {setDetailVisible(false)}}
           footer={[
-            <SDSubmitButton  editType={editType}   formRef={formRef} doSubmit={handleExecute} >发起</SDSubmitButton>,
+            <SDSubmitButton  editType={editType}   formRef={formRef} doSubmit={handleExecute} >导出excel</SDSubmitButton>,
             <SDButton
               key="closeUpdate"
               successMessage=''
@@ -225,65 +225,22 @@ const supplementdataquery : React.FC<widowRush> = (prop:widowRush) => {
         >
             <SDAreaTtile title='补录数据任务发起'/>
             <SDFormText name="term"       label="数据期次"/>
-            <SDFormText name="tmpType"       label="数据补录任务"/>
-            <SDFormText name="rowRange"      label="数据补录模板"/>
-        </SDModalForm>
-      )}
+            <SDFormText name="tmpType"       label="首选责任人"/>
+            <SDFormText name="rowRange"      label="责任机构"/>
+            <SDFormText name="rowRange"      label="数据补录任务"/>
+            <SDFormText name="rowRange"      label=" 数据补录模板"/>
+            <SDLayout>
+        <SDAreaTtile title='导入结果'/>
+        <ProTable
+          search={false}
+          rowKey="index"
+          dataSource={formDetailData}
+        />
+        </SDLayout>
 
-      
-
-      {importVisible && (
-         <SDModalForm
-        title={'上传文件窗口'}
-        visible={importVisible}
-        editType={editType}
-        onVisibleChange={() => {setImportVisible(false)}}
-        tableRef={actionRef}
-        formRef={templateRef}
-        footer={[
-        <SDSubmitButton  editType={'update'}  formRef={formRef} 
-          doSubmit={async() => {}} >提交</SDSubmitButton>,
-          <SDButton
-          key="template"
-          onClick={() => {
-            // if (selectedRows === undefined || selectedRows.length < 1) {
-            //   baseFun.warning('请先选择要倒出的模板');
-            //   return;
-            // }
-            //baseFun.info('处理完成');
-          }}
-        >
-          模板下载
-        </SDButton>
-        ]
-        }
-        >
-         <SDFormItem nestType="form">
-            <Upload maxCount={1} {...fileProps} name="rfile">
-              <div style={{ paddingLeft: '5.5vw' }}>
-                选择上传文件: &nbsp;&nbsp;
-                <SDOperate>上传</SDOperate>
-                <SDOperate>引用上期数据</SDOperate>
-                <SDOperate>保存</SDOperate>
-                <SDOperate>关闭</SDOperate>
-              </div>
-            </Upload>
-        </SDFormItem>
         </SDModalForm>
       )}
 
-
-    {selectVisible && (
-         <SDModalForm
-         visible={fieldDetailVisible}
-         onVisibleChange={() => {setFieldDetailVisible(false)}}
-         >
-         <SDAreaTtile title='补录数据任务发起'/>
-          <SDFormText name="term"        label="数据期次"/>
-          <SDFormText name="tmpType"     label="数据补录任务"/>
-          <SDFormText name="rowRange"    label="数据补录模板"/>
-         </SDModalForm>
-    )}
         </SDPage>
     );
 }

+ 154 - 56
Procedure/frontend/projectb/src/pages/product/datasupplementary/supplementtemplatedefine.tsx

@@ -1,15 +1,18 @@
 import React, { useEffect, useRef, useState } from "react";
 import { type ProColumns, type ActionType, type ProFormInstance, ProTable, EditableProTable } from '@ant-design/pro-components';
 import type {FormInstance} from 'antd'
-import  {Upload} from 'antd'
-import { SDPage,SDFormText,SDModalForm,SDTable,SDFormItem,SDButton,SDSubmitButton,EditType, SDAreaTtile, SDOperate, baseFun,SDModal, validateFun, SDLayout, } from "@sundata/ui-frame";
+import  {Form, Input, Upload} from 'antd'
+import { SDPage,SDFormText,SDModalForm,SDTable,SDFormItem,SDButton,SDSubmitButton,EditType, SDAreaTtile, SDOperate, baseFun,SDModal, validateFun, SDLayout, SDFormAttach, SDFormDict, } from "@sundata/ui-frame";
 import type { TemplateBasicInfoDefineModel,TemplateFieldDetailDefineModel } from '@/services/rwa/product/datasupplementary/supplementtemplatedefine';
 import {getDataList,selectDetailData,getFieldDetailDataList,deleteInfoData,
   updateRowData,createRowData,createFieldRowData
 } from '@/services/rwa/product/datasupplementary/supplementtemplatedefine';
 import { PlusSquareTwoTone, WomanOutlined } from "@ant-design/icons";
 import { ProductProps } from "@/sundataImport";
+import { useModel } from '@umijs/max';
 import { ReportCalculationModel } from "@/services/rwa/product/report_form_config_reportcreater/reportfillingconfig";
+import { number } from "echarts";
+import { toNumber } from "lodash";
 type widowRush = {
   onCancel:  () => void;
   onChangeVisible(visible: boolean, type: string): unknown;
@@ -23,17 +26,26 @@ const supplementtemplatedefine : React.FC<widowRush> = (prop:widowRush) => {
     const [detailVisible, setDetailVisible] = useState<boolean>(false);
     const [fieldDetailVisible, setFieldDetailVisible] = useState<boolean>(false);
     const [currentRow, setCurrentRow] = useState<TemplateBasicInfoDefineModel>();
+    const { fetchDict } = useModel('dict');
     /** 表格引用对象,刷新表格使用   */
     const actionRef = useRef<ActionType>();
     const formRef = useRef<FormInstance<any>>();
     const templateRef = useRef<FormInstance<any>>();
+    const fillInActionRef = useRef<ActionType>();
+    /** 附件上传组件主键 */
+    const [busiPk, setBusiPk] = useState<string>('');
 
     const [formDetailData, setFormDetailData] = useState<TemplateFieldDetailDefineModel[]>();
     // 页面数据
     var formDataList = new Array<TemplateBasicInfoDefineModel>;
 
+     /** 编辑方式,查看、修改、新增按钮时设置,详细信息表单中使用 */
+     const [readRowType, setReadRowType] = useState<boolean>(false);
+     const [readColType, setReadColType] = useState<boolean>(false);
+
     /** 字段关系序号编辑 */
-    var dataIndex = 1;
+    var dataInfoIndex = 1;
+    var dataDetailIndex = 0;
 
     useEffect(() => {
       }, []);
@@ -42,7 +54,7 @@ const supplementtemplatedefine : React.FC<widowRush> = (prop:widowRush) => {
     // 修改查询查询
     const selectData = async (formdata : TemplateBasicInfoDefineModel) => {
       const data = await selectDetailData(formdata);
-      formRef.current?.setFieldsValue(data);
+      templateRef.current?.setFieldsValue(data);
       const dataList = await getFieldDetailDataList(formdata);
       setFormDetailData(dataList);
      }
@@ -57,7 +69,7 @@ const supplementtemplatedefine : React.FC<widowRush> = (prop:widowRush) => {
     }
 
     // 插入或者更新数据
-  const handleSave = async(data: TemplateBasicInfoDefineModel,) => {
+  const handleSave = async(data: TemplateBasicInfoDefineModel) => {
     
     if (editType == 'update' ) {
        await updateRowData(data);
@@ -73,7 +85,6 @@ const supplementtemplatedefine : React.FC<widowRush> = (prop:widowRush) => {
     const handleFieldSave = async(data: TemplateBasicInfoDefineModel,) => {
       await createFieldRowData(data);
       closeAndRefresh();
-      setFieldDetailVisible(false);
     }
 
     //关闭窗口刷新父页面
@@ -89,7 +100,7 @@ const supplementtemplatedefine : React.FC<widowRush> = (prop:widowRush) => {
           title: '序号',
           dataIndex: 'index',
           search: false,
-          render: (text, record, index) => { index  = index + 1;dataIndex = index; return index},
+          render: (text, record, index) => { index  = index + 1;dataInfoIndex = index; return index},
           width:100,
           ellipsis:true
         },
@@ -158,6 +169,7 @@ const supplementtemplatedefine : React.FC<widowRush> = (prop:widowRush) => {
                 selectData(record);
                 setDetailVisible(true);
                 setEditType('update');
+                setBusiPk(String(dataInfoIndex));
                } }
             >
               修改
@@ -197,11 +209,12 @@ const supplementtemplatedefine : React.FC<widowRush> = (prop:widowRush) => {
        const detailColumns: ProColumns<TemplateFieldDetailDefineModel>[] = [
         {
           title: '序号',
-          dataIndex: 'index',
+          dataIndex: 'id',
           search: false,
-          render: (text, record, index) => { index  = index + 1; return index},
+          render: (text, record, index) => { index  = index + 1;dataDetailIndex = index; return index},
           width:100,
-          ellipsis:true
+          ellipsis:true,
+          editable:false
         },
           {
             title: '计算实例号',
@@ -231,16 +244,65 @@ const supplementtemplatedefine : React.FC<widowRush> = (prop:widowRush) => {
             title: '行列类型',
             dataIndex: 'rowColType',
             hideInTable: false,
+            valueType:'treeSelect',
+            request: () => fetchDict('ROW_COLUMN_TYPE'),
+            fieldProps: {
+            treeDefaultExpandAll: true,
+          },
           },
           {
             title: '行范围',
             dataIndex: 'filedRowRange',
             hideInTable: false,
+            formItemProps:{
+              rules:[
+                {pattern: RegExp(`[0-9]+\\-[0-9]+|[n|N]`),message:'请输入正确范围'},
+                {validator:(rules,value,callback)=>{
+                  if (String(value).split('-').length == 2) {
+                    let rowStart = String(value).split('-')[0];
+                    let rowEnd = String(value).split('-')[1];
+                    let formRange = templateRef.current?.getFieldValue('rowRange');
+                    if (formRange) {
+                      let formRowStart = String(formRange).split('-')[0];
+                      let formRowEnd = String(formRange).split('-')[1];
+                      if (toNumber(rowStart) > toNumber(formRowStart) || toNumber(rowEnd) > toNumber(formRowEnd)){
+                        callback('输入范围超出上方规定范围');
+                      }
+                    } else {
+                      callback('上方输入框内行范围必输');
+                    }
+                  }
+                  callback();
+                }},
+              ]
+            }
           },
           {
             title: '列范围', 
             dataIndex: 'filedColumnRange',
             hideInTable: false,
+            formItemProps:{
+              rules:[
+                {pattern: RegExp(`[0-9]+\\-[0-9]+|[n|N]`),message:'请输入正确范围'},
+                {validator:(rules,value,callback)=>{
+                  if (String(value).split('-').length == 2) {
+                    let rowStart = String(value).split('-')[0];
+                    let rowEnd = String(value).split('-')[1];
+                    let formRange = templateRef.current?.getFieldValue('rowRange');
+                    if (formRange) {
+                      let formRowStart = String(formRange).split('-')[0];
+                      let formRowEnd = String(formRange).split('-')[1];
+                      if (toNumber(rowStart) > toNumber(formRowStart) || toNumber(rowEnd) > toNumber(formRowEnd)){
+                        callback('输入范围超出上方规定范围');
+                      }
+                    } else {
+                      callback('上方输入框内行范围必输');
+                    }
+                  }
+                  callback();
+                }},
+              ]
+            }
           },
           {
               title: '字段类型与长度', 
@@ -252,6 +314,36 @@ const supplementtemplatedefine : React.FC<widowRush> = (prop:widowRush) => {
             dataIndex: 'remark',
             hideInTable: false,
           },
+          {
+            title: '操作',
+            dataIndex: 'operate',
+            valueType: 'option',
+            render: (_, record) => [
+              <SDOperate
+                key="roleCfg"
+                icon={<WomanOutlined />}
+                successMessage=""
+                onClick={
+                  ()=>{ 
+                  fillInActionRef.current?.startEditable(dataDetailIndex);
+                 } }
+              >
+                修改
+              </SDOperate>,
+              <SDOperate
+              key="roleCfg"
+              icon={<WomanOutlined />}
+              successMessage=""
+              onClick={
+                ()=>{ 
+                  setFormDetailData(...[formDetailData?.filter((item)=>{return item.id != record.id})]);
+                  fillInActionRef.current?.cancelEditable(dataDetailIndex);
+               } }
+            >
+              删除
+            </SDOperate>,
+            ],
+          },
         ];
     
     return (
@@ -303,62 +395,68 @@ const supplementtemplatedefine : React.FC<widowRush> = (prop:widowRush) => {
               }}>关闭</SDButton>
             ]}
           tableRef={actionRef}
-          formRef={formRef}
+          formRef={templateRef}
+          onValuesChange={(changedValues,values)=>{
+            if (changedValues.tmpType && changedValues.tmpType == 'FIXED_COLUMN') { 
+              templateRef.current?.setFieldValue("rowRange",'');
+              setReadRowType(true);
+              setReadColType(false);
+            } else if (changedValues.tmpType && changedValues.tmpType == 'FIXED_ROW') {
+              templateRef.current?.setFieldValue("columnRange",'');
+              setReadColType(true);
+              setReadRowType(false);
+            } else {
+              setReadRowType(false);
+              setReadColType(false);
+            }
+          }}
         >
-            <SDAreaTtile title='规则信息'/>
+            <SDAreaTtile title='补录模板新增页面'/>
             <SDFormText name="tmpCode" readonlyCond="update" required={true} label="模板编号"/>
             <SDFormText name="tmpName" label="模板名称"/>
-            <SDFormText name="tmpType"  label="模板类型"/>
-            <SDFormText name="rowRange"  label="行范围"/>
-            <SDFormText name="columnRange"  label="列范围"/>
-            <SDFormText name="tmpFileCode"  label="模板文件上传"/>
-        
+            <SDFormDict dictKey="TEMPLATE_TYPE" name="tmpType"  label="模板类型"/>
+            <SDFormText name="rowRange" disabled={readRowType}
+             rules={[{pattern: RegExp(`[0-9]+\\-[0-9]+|[n|N]`),message:'请输入正确范围'}]}
+            label="行范围" placeholder={'例:1-3'}/>
+            <SDFormText name="columnRange" disabled={readColType}
+             rules={[{pattern: RegExp(`[0-9]+\\-[0-9]+|[n|N]`),message:'请输入正确范围'}]}
+            label="列范围" placeholder={'例:1-3'}/>
+            <SDFormAttach name={"tmpFileCode"}   label="模板文件上传"  funcType={"supplementtemplatedefine"} filetype="" maxFileNum={1} busiPkId={busiPk}/>
             <SDLayout>
         <SDAreaTtile title='模板范围配置'/>
-        <ProTable
-          search={false}
-          rowKey="index"
-          columns={detailColumns}
-          dataSource={formDetailData}
-          toolBarRender={(_, { selectedRowKeys }) => editType == 'create' || editType == 'update' ? [
-            <SDButton
-              key="export"
-              successMessage=''
-              onClick={() => {
+        <EditableProTable
+              rowKey="id"
+              columns={detailColumns}
+              recordCreatorProps={false}
+              actionRef={fillInActionRef}
+              value={formDetailData}
+              editable={{
+                actionRender: (row,config,defaultDoms)=>{
+                  return [defaultDoms.save,defaultDoms.cancel]
+                }
               }}
-            >
-              新增
-            </SDButton>,
-          ]:[]}
-        />
+              toolBarRender={(_, { selectedRowKeys }) =>  [
+                <SDButton
+                  key="export"
+                  successMessage=''
+                  onClick={() => {
+                    fillInActionRef.current?.addEditRecord?.({
+                      id: dataDetailIndex+1,
+                      title: 'NEWROW',
+                    });
+                  }}
+                >
+                  新增
+                </SDButton>,
+              ]}
+              onChange={ (value: readonly TemplateFieldDetailDefineModel[]) => {
+                setFormDetailData([...value]);
+              } }
+           />
         </SDLayout>
         </SDModalForm>
       )}
 
-      {fieldDetailVisible && (
-        <SDModalForm
-        visible={fieldDetailVisible}
-        onVisibleChange={() => {setFieldDetailVisible(false)}}
-        footer={[
-          <SDSubmitButton  editType={editType}   formRef={formRef} doSubmit={handleFieldSave} >保存</SDSubmitButton>,
-          <SDButton
-            key="closeUpdate"
-            successMessage=''
-            onClick={() => {
-              setFieldDetailVisible(false);
-            }}>关闭</SDButton>
-          ]}
-        >
-         <SDFormText name="tmpName"       label="行列类型"/>
-         <SDFormText name="tmpType"       label="行范围"/>
-         <SDFormText name="rowRange"      label="列范围"/>
-         <SDFormText name="columnRange"   label="字段类型与长度"/>
-         <SDFormText name="tmpFileCode"   label="数据项说明"/>
-        </SDModalForm>
-      )
-      }
-
-
         </SDPage>
         
     );

+ 10 - 32
Procedure/frontend/projectb/src/services/rwa/product/datasupplementary/supplementdataquery.ts

@@ -2,7 +2,7 @@ import type { BasePageModel, TableData } from '@sundata/ui-frame';
 import { baseFun } from '@sundata/ui-frame';
 
 // 数据补录任务实例表
-export type DataSupplementTaskExampleModel = {
+export type SupplementDataSelectModel = {
     // 计算实例号
     calcIndex: string;
     // 起始数据日期
@@ -37,53 +37,31 @@ export type DataSupplementTaskExampleModel = {
     taskReviewedPerson: string;
     // 补录说明
     remark: string;
+
+
     // 数据补录任务
     taskName: string;
+
+    
     // 首选责任人
     account: string;
   } & BasePageModel;
 
 
-  // 数据补录任务中的数据实例表
-  export type DataSupplementInstancesIntaskModel = {
-    // 计算实例号
-    calcIndex: string;
-    // 起始数据日期
-    startDate: string;
-    // 截止数据日期
-    endDate: string;
-    // 年月
-    term: string;
-    // 数据日期
-    dataDate: string;
-    // 任务实例编号
-    taskBussinessId: string;
-    // 补录任务编号
-    taskCode: string;
-    // 补录任务版本号
-    taskVersion: string;
-    // 补录模板编号
-    tmpCode: string;
-    // 补录结果
-    tmpRemark: string;
-  } & BasePageModel;
-
-
-
 
 /** 获取页面初始化及条件查询 POST*/
-export async function getDataList(body:DataSupplementTaskExampleModel) {
-    return baseFun.request<DataSupplementTaskExampleModel[]>('/api/product/rwa/datasupplementary/SupplementTemplateDefineAction/getDataList.do',{data: body});
+export async function getDataList(body:SupplementDataSelectModel) {
+    return baseFun.request<SupplementDataSelectModel[]>('/api/product/rwa/datasupplementary/SupplementTemplateDefineAction/getDataList.do',{data: body});
 }
 
 /** 获取页面初始化及条件查询 POST*/
-export async function selectDetailData(body:DataSupplementTaskExampleModel) {
-    return baseFun.request<DataSupplementTaskExampleModel>('/api/product/rwa/datasupplementary/SupplementTemplateDefineAction/selectDetailData.do',{data: body});
+export async function selectDetailData(body:SupplementDataSelectModel) {
+    return baseFun.request<SupplementDataSelectModel>('/api/product/rwa/datasupplementary/SupplementTemplateDefineAction/selectDetailData.do',{data: body});
 }
 
 
 /** 唯一性校验 POST */
-export async function isNotExist(body: DataSupplementTaskExampleModel) {
+export async function isNotExist(body: SupplementDataSelectModel) {
     return baseFun.request<any>('/api/product/rwa/datasupplementary/SupplementTemplateDefineAction/isNotExist.do', {
       data: body,
     });

+ 2 - 0
Procedure/frontend/projectb/src/services/rwa/product/datasupplementary/supplementtemplatedefine.ts

@@ -30,6 +30,8 @@ export type TemplateBasicInfoDefineModel = {
 
   // 模板字段详情定义表
   export type TemplateFieldDetailDefineModel = {
+    // 序号
+    id: string;
     // 计算实例号
     calcIndex: string;
     // 起始数据日期

+ 19 - 1
Procedure/frontend/projectb/src/services/rwa/product/rwacheckutils.ts

@@ -1,3 +1,5 @@
+import { toNumber } from "lodash";
+
 // 中文字数校验
 export function countChineseChars(str:any) {
     const chineseRegex = /[\u4e00-\u9fa5]/g; // 匹配任何中文字符
@@ -6,4 +8,20 @@ export function countChineseChars(str:any) {
     } else {
         return str.match(chineseRegex)?.length || 0;
     }
-  }
+  }
+
+// 范围超出校验
+export function inputRangeCheck(value:any,formRange:any) {
+    let rowStart = String(value).split('-')[0];
+    let rowEnd = String(value).split('-')[1];
+    //let formRange = templateRef.current?.getFieldValue('rowRange');
+    if (formRange) {
+      let formRowStart = String(formRange).split('-')[0];
+      let formRowEnd = String(formRange).split('-')[1];
+      if (toNumber(rowStart) > toNumber(formRowStart) || toNumber(rowEnd) > toNumber(formRowEnd)){
+        return('输入范围超出上方规定范围');
+      }
+    } else {
+      return('上方输入框内行范围必输');
+    }
+}