瀏覽代碼

总账勾稽前端代码

zhang_qk 6 月之前
父節點
當前提交
ffedfcdc9a
共有 23 個文件被更改,包括 1034 次插入616 次删除
  1. 12 0
      Procedure/frontend/projectb/config/config.ts
  2. 128 0
      Procedure/frontend/projectb/src/pages/project/commom/coding.tsx
  3. 228 0
      Procedure/frontend/projectb/src/pages/project/commom/common.tsx
  4. 1 3
      Procedure/frontend/projectb/src/pages/project/dataquality/DiscountTable.tsx
  5. 0 142
      Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/ListOfPublicSector.tsx
  6. 1 1
      Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/faGlBalanceSheet.tsx
  7. 12 4
      Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/fcCommitment.tsx
  8. 13 14
      Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/fcLoan.tsx
  9. 1 1
      Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/fcOffSheet.tsx
  10. 2 1
      Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/ffRepo.tsx
  11. 1 1
      Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/govFinancialAssetComp.tsx
  12. 1 1
      Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/itItfRate.tsx
  13. 1 1
      Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/norepurchasePledgeInfo.tsx
  14. 1 1
      Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/policybank.tsx
  15. 1 1
      Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/repurchasePledgeInfo.tsx
  16. 1 1
      Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/sovereign.tsx
  17. 32 0
      Procedure/frontend/projectb/src/pages/rwa_calc_config_dataparam/product_list.tsx
  18. 415 426
      Procedure/frontend/projectb/src/pages/rwa_data_check/diffconfig_list.tsx
  19. 157 12
      Procedure/frontend/projectb/src/pages/rwa_data_check/result_list.tsx
  20. 10 2
      Procedure/frontend/projectb/src/services/rwa/diffconfig_list.ts
  21. 8 2
      Procedure/frontend/projectb/src/services/rwa/fcCommitment.ts
  22. 3 2
      Procedure/frontend/projectb/src/services/rwa/fcLoan.ts
  23. 5 0
      Procedure/frontend/projectb/src/services/rwa/product_list.ts

+ 12 - 0
Procedure/frontend/projectb/config/config.ts

@@ -100,6 +100,18 @@ export default defineConfig({
    { path: '/diffconfig_list' , component: './rwa_data_check/diffconfig_list' },
    { path: '/result_list' , component: './rwa_data_check/result_list' },
 
+   { path: '/CustomerTable' , component: './project/dataquality/CustomerTable'},
+   { path: '/CollateralTable' , component: './project/dataquality/CollateralTable'},
+   { path: '/GuaranteeTable' , component: './project/dataquality/GuaranteeTable'},
+   { path: '/RepoRelatedTable' , component: './project/dataquality/RepoRelatedTable'},
+   { path: '/PledgeRelatedTable' , component: './project/dataquality/PledgeRelatedTable'},
+   { path: '/DiscountTable' , component: './project/dataquality/DiscountTable'},
+   { path: '/OnCreditCard' , component: './project/dataquality/OnCreditCard'},
+   { path: '/OffCreditCard' , component: './project/dataquality/OffCreditCard'},
+   { path: '/InterbankDepositOrLendingTable' , component: './project/dataquality/InterbankDepositOrLendingTable'},
+   { path: '/BondInvestment' , component: './project/dataquality/BondInvestment'},
+   { path: '/NonStandardInvestment' , component: './project/dataquality/NonStandardInvestment'},
+
    { path: '/GuaranteeTable' , component: './project/dataquality/GuaranteeTable' },
 
 

+ 128 - 0
Procedure/frontend/projectb/src/pages/project/commom/coding.tsx

@@ -0,0 +1,128 @@
+
+import React, { Suspense, useRef } from 'react';
+import { SDModal } from '@sundata/ui-frame';
+
+
+import { CallBackData } from './common';
+import { UniversalModel } from '@/services/rdpMng/Template/common';
+import { OpenType } from '@/sundataImport';
+
+export type CodingProps = {
+  /** 待调用功能组件的相对路径,组件必须在 src\pages\rdpMng\Template\Coding\components 目录下 */
+  componentPath: string;
+  /** 待调用功能组件所需参数 */
+  funParams?: UniversalModel;
+  /** 弹窗标题 */
+  funcTitle?: string;
+  /** 弹窗是否可见 */
+  visible?: boolean;
+  /**
+   * 控制模态窗口的展示隐藏
+   * @param primaryKey 打开功能的唯一标识
+   * @param visible 现实隐藏状态
+   * @param type 是否刷新列表
+   */
+  onChangeVisible?: (
+    primaryKey: string | number,
+    visible: boolean,
+    type?: 'none' | 'reload',
+  ) => void;
+  /** 当前窗口唯一标识组成部分,通常为上级组件的产品代码 */
+  parentKey?: string;
+  /** 当前窗口唯一标识组成部分,通常为上级组件的按钮key */
+  primaryKey?: string;
+  /** 模板的调用方式 */
+  openType?: OpenType;
+  /** 弹窗回调 */
+  callbackFun?: (callbackData: CallBackData) => void;
+};
+
+/** 非平台开发功能模板,应在平台功能中调用,不支持菜单调用 */
+const Coding: React.FC<CodingProps> = (props) => {
+
+  /**窗口关闭是否刷新父组件状态,默认不刷新 */
+  const refresh = useRef<'none' | 'reload'>('none');
+
+  /**刷新状态置为刷新 */
+  const canRefresh = ()=>{
+    refresh.current = 'reload';
+  }
+
+  const Component = React.lazy(() => import(`../dataquality/${props.componentPath}`));
+  // if (Component === undefined) {
+  //     return <Result status='error' title={`组件${props.componentPath}不存在或路径不正确`} />;
+  // }
+  if (props.openType && props.openType === 'model') {
+    return (
+      <SDModal
+        title={props.funcTitle}
+        visible={props.visible || false}
+        footer={null}
+        onCancel={() => {
+          if (props.onChangeVisible) {
+            props.onChangeVisible(props.parentKey + '_' + props.primaryKey || '', false, refresh.current);
+          }
+        }}
+      >
+        <div style={{ position: 'relative', width: '100%' }}>
+          <Suspense fallback="功能加载中,请稍候...">
+            <Component
+              {...props.funParams}
+              onChangeVisible={(visible: boolean, type?: 'none' | 'reload') => {
+                if (props.onChangeVisible) {
+                  props.onChangeVisible(
+                    props.parentKey + '_' + props.primaryKey || '',
+                    visible,
+                    type || 'none',
+                  );
+                }
+              }}
+              canRefresh={canRefresh}
+            />
+          </Suspense>
+        </div>
+      </SDModal>
+    );
+  } else if(props.openType && props.openType === 'window'){
+    return (
+      <Suspense fallback="功能加载中,请稍候...">
+        <Component
+          {...props.funParams}
+          onChangeVisible={(visible: boolean, type?: 'none' | 'reload') => {
+            if (props.onChangeVisible) {
+              props.onChangeVisible(
+                props.parentKey + '_' + props.primaryKey || '',
+                visible,
+                type || 'none',
+              );
+            }
+          }}
+          visible={props.visible}
+          callbackFun={props.callbackFun}
+        />
+      </Suspense>
+    )
+  } else {
+    return (
+      <div style={{ position: 'relative', width: '100%' }}>
+        <Suspense fallback="功能加载中,请稍候...">
+          <Component 
+            {...props.funParams} 
+            onChangeVisible={(visible: boolean, type?: 'none' | 'reload') => {
+              if (props.onChangeVisible) {
+                props.onChangeVisible(
+                  props.parentKey + '_' + props.primaryKey || '',
+                  visible,
+                  type || 'none',
+                );
+              }
+            }}
+            canRefresh={canRefresh}
+          />
+        </Suspense>
+      </div>
+    );
+  }
+};
+
+export default Coding;

+ 228 - 0
Procedure/frontend/projectb/src/pages/project/commom/common.tsx

@@ -0,0 +1,228 @@
+
+import { Result } from 'antd';
+import React from 'react';
+
+import { baseFun } from '@sundata/ui-frame';
+
+
+import InfoMaintain from '@/pages/rdpMng/Template/InfoMaintain/infoMaintain';
+import QueryList from '@/pages/rdpMng/Template/QueryList/queryList';
+import TabFrame from '@/pages/rdpMng/Template/TabFrame/tabFrame';
+import Coding from './coding';
+import { UniversalModel, OpenPage, AnalType } from '@/services/rdpMng/Template/common';
+import { OpenType } from '@/sundataImport';
+
+export type CallBackData = {
+  /**选中数据的主键 */
+  selectedRowKeys?: React.Key[],
+  /**选中的完整数据 */
+  selectedRows?: UniversalModel[]
+} & UniversalModel;
+
+export type TemplateProps = {
+  /** path参数 */
+  match?: {
+    params: {
+      prodCode?: string;
+    };
+  };
+  /** url参数 */
+  location?: {
+    pathname?: string;
+    query?: UniversalModel;
+  };
+  key: string;
+  prodCode: string;
+  /** 模板的调用方式 */
+  openType?: OpenType;
+  /** 引用模式,测试时传入选定值 */
+  state?: string;
+  /**当调用方式为window时生效,是否不显示确认选择按钮 */
+  winOkNo?: boolean;
+  /** 以下属性在openType=model时必填 */
+  /** 弹窗标题 */
+  funcTitle?: string;
+  /** 弹窗是否可见 */
+  visible?: boolean;
+  /**
+   * 控制模态窗口的展示隐藏
+   * @param primaryKey 打开功能的唯一标识
+   * @param visible 现实隐藏状态
+   * @param type 是否刷新列表
+   */
+  onChangeVisible?: (
+    primaryKey: string | number,
+    visible: boolean,
+    type?: 'none' | 'reload',
+    data?: UniversalModel | undefined,
+    closeParent?: boolean,
+  ) => void;
+  /** 当前窗口唯一标识组成部分,通常为上级组件的产品代码 */
+  parentKey?: string;
+  /** 当前窗口唯一标识组成部分,通常为上级组件的按钮key */
+  primaryKey?: string;
+  /** 初始查询条件,查询表格信息维护模板需要 */
+  initParams?: UniversalModel;
+  /**选择列类型 */
+  chooseType?: 'not' | 'checkbox' | 'radio';
+  /** 默认打开的tab页,页签模板需要 */
+  selectedKey?: string;
+  /** 父功能传递给子功能的通用回调函数,可用于搜索框等需要子功能给父功能传递数据的情况 */
+  callbackFun?: (callbackData: CallBackData) => void;
+  /** 工作流设置业务单元完成图标方法 */
+  setUnitFinish?: () => void;
+  /** 工作流自动保存传递的引用属性 */
+  childRef?: React.MutableRefObject<any>;
+  /**页签模式下,保存操作更新页签刷新状态 */
+  tabRefreshFun?: (key: string) => void;
+  /**保存操作更新刷新状态 */
+  refreshFun?: (r: boolean) => void;
+  //页面逻辑内的自定义方法({方法名:方法体,...})
+  customJs?: React.MutableRefObject<UniversalModel | undefined>;
+  /**是否固定表头 */
+  topAffix?:string;
+  /**父组件showModel弹窗页面容器,用于连续弹窗 */
+  openShowModelPages?: Record<string, OpenPage>;
+  /**设置父组件showModel弹窗页面容器,用于连续弹窗 */
+  setOpenShowModelPages?: React.Dispatch<React.SetStateAction<Record<string, OpenPage>>>;
+  winSize?: 'l' | 'm' | 's' | 'large' | 'medium' | 'small';
+};
+export const renderTemplate1 = (templateProps: TemplateProps, templateType?: AnalType) => {
+  const visible = templateProps.visible === undefined ? true : templateProps.visible;
+  if (!visible) {
+    return <React.Fragment key={templateProps.key} />;
+  }
+  if (templateType === 'maintain') {
+    return (
+      <InfoMaintain
+        key={templateProps.key}
+        prodCode={templateProps.prodCode}
+        openType={templateProps.openType}
+        state={templateProps.state}
+        funcTitle={templateProps.funcTitle}
+        visible={visible}
+        parentKey={templateProps.parentKey}
+        primaryKey={templateProps.primaryKey}
+        onChangeVisible={templateProps.onChangeVisible}
+        callbackFun={templateProps.callbackFun}
+        initParams={templateProps.initParams}
+        //editType={editType}
+        setUnitFinish={templateProps.setUnitFinish}
+        childRef={templateProps.childRef}
+        openShowModelPages={templateProps.openShowModelPages}
+        setOpenShowModelPages={templateProps.setOpenShowModelPages}
+        winSize={templateProps.winSize}
+        refreshFun={templateProps.refreshFun}
+        tabRefreshFun={templateProps.tabRefreshFun}
+      />
+    );
+  } else if (templateType === 'query') {
+    return (
+      <QueryList
+        key={templateProps.key}
+        prodCode={templateProps.prodCode}
+        openType={templateProps.openType}
+        state={templateProps.state}
+        funcTitle={templateProps.funcTitle}
+        visible={visible}
+        parentKey={templateProps.parentKey}
+        primaryKey={templateProps.primaryKey}
+        onChangeVisible={templateProps.onChangeVisible}
+        callbackFun={templateProps.callbackFun}
+        initParams={templateProps.initParams}
+        chooseType={templateProps.chooseType}
+        winSize={templateProps.winSize}
+        refreshFun={templateProps.refreshFun}
+        tabRefreshFun={templateProps.tabRefreshFun}
+        // openShowModelPages={templateProps.openShowModelPages}
+        // setOpenShowModelPages={templateProps.setOpenShowModelPages}
+      />
+    );
+  } else if (templateType === 'tabFrame') {
+    return (
+      <TabFrame
+        key={templateProps.key}
+        prodCode={templateProps.prodCode}
+        openType={templateProps.openType}
+        state={templateProps.state}
+        funcTitle={templateProps.funcTitle}
+        visible={visible}
+        parentKey={templateProps.parentKey}
+        primaryKey={templateProps.primaryKey}
+        onChangeVisible={templateProps.onChangeVisible}
+        selectedKey={templateProps.selectedKey}
+        initParams={templateProps.initParams}
+        winSize={templateProps.winSize}
+        refreshFun={templateProps.refreshFun}
+        tabRefreshFun={templateProps.tabRefreshFun}
+      />
+    );
+  } else if (templateType === 'coding') {
+    return (
+      <Coding
+        componentPath={templateProps.prodCode}
+        openType={templateProps.openType}
+        funParams={templateProps.initParams}
+        funcTitle={templateProps.funcTitle}
+        visible={visible}
+        parentKey={templateProps.parentKey}
+        primaryKey={templateProps.primaryKey}
+        onChangeVisible={templateProps.onChangeVisible}
+        callbackFun={templateProps.callbackFun}
+      />
+    );
+  }
+  return <Result status="error" title="未指定模板类型,无法解析" />;
+};
+
+export const commontUtilJs = {
+  //弹窗调用功能
+  showModel: (
+    openPages: Record<string, OpenPage>,
+    setOpenPages: (openPage: Record<string, OpenPage>) => void,
+    pcode: string, //功能参数
+    templateType: AnalType, //模板类型
+    //openLevel: EditType, //编辑方式
+    initParams?: UniversalModel, //调用参数
+    title?: string, //弹窗标题
+  ) => {
+    let openPageProps: OpenPage = openPages['ShowModel_' + pcode];
+    openPageProps = {
+      /** 功能代码 */
+      openPageProdCode: pcode,
+      /** 是否可见 */
+      visible: true,
+      /** 功能模板类型 */
+      templateType: templateType,
+      /** 触发弹窗的按钮的唯一标志 */
+      primaryKey: pcode,
+      /** 触发弹窗的按钮所属组件的唯一标志,通常为功能代码 */
+      parentKey: 'ShowModel',
+      /** 功能标题 */
+      funcTitle: title || ' ',
+      /** 初始化数据 */
+      initParams: initParams || {},
+      /**功能打开方式 */
+      //editType: openLevel,
+      /** 功能原标题 */
+      oldFuncTitle: title || ' ',
+    };
+    const tmpOpenPage: Record<string, OpenPage> = { ...openPages };
+    tmpOpenPage['ShowModel_' + pcode] = openPageProps;
+    setOpenPages(tmpOpenPage);
+  },
+  //列表数据查询
+  doSearch: (actionRefs: any, reloadRef: any) => {
+    actionRefs.current.forEach((actionRef: any) => {
+      reloadRef.current = true;
+      actionRef.ref.current?.reload();
+      reloadRef.current = false;
+    });
+  },
+  //页面逻辑通过自定义js调用后台逻辑
+  post: (url: string, params?: UniversalModel) => {
+    return baseFun.request(`/api/${url}`, {
+      data: params,
+    });
+  },
+};

+ 1 - 3
Procedure/frontend/projectb/src/pages/project/dataquality/DiscountTable.tsx

@@ -8,9 +8,7 @@ import {getDataList,selectDetailData,exportExcelModel} from '@/services/rwa/data
 import { ProductProps } from "@/sundataImport";
 
 type widowRush = {
-  onCancel:  () => void;
-  onChangeVisible(visible: boolean, type: string): unknown;
-  onChangeVisdible:(visible:boolean,type ?: 'none' | 'raload' )=>void;
+
 }& ProductProps;
 // 票据表
 const DiscountTable : React.FC<widowRush> = (prop:widowRush) => {

+ 0 - 142
Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/ListOfPublicSector.tsx

@@ -1,142 +0,0 @@
-import React, { useEffect, useRef, useState } from "react";
-import type { ProColumns, ActionType } from '@ant-design/pro-components';
-import type {FormInstance} from 'antd'
-import { SDPage,SDFormText,SDModalForm,SDTable,SDFormDict,multiSelData2Backend,SDForm } from "@sundata/ui-frame";
-import { EditType, SDAreaTtile, SDLayout, SDSubmitButton} from '@sundata/ui-frame';
-import { baseFun, validateFun } from '@sundata/ui-frame';
-import type { SysListModel } from '@/services/rwa/ListOfPublicSector';
-import {getDataList,deleteRows,fetchDetailData,selectDetailData} from '@/services/rwa/ListOfPublicSector';
-
-
-const ListOfPublicSector : React.FC = () => {
-
-    /** 编辑方式,查看、修改、新增按钮时设置,详细信息表单中使用 */
-    const [editType, setEditType] = useState<EditType>('display');
-    /** 是否显示详细信息窗口 */
-    const [detailVisible, setDetailVisible] = useState<boolean>(false);
-    const [currentRow, setCurrentRow] = useState<boolean>(false);
-    /** 表格引用对象,刷新表格使用   */
-    const actionRef = useRef<ActionType>();
-    const formRef = useRef<FormInstance<any>>();
-    useEffect(() => {
-      actionRef.current?.reload();
-        // init().then((data) => {
-          
-        // });
-      }, []);
-    
-    const selectData = async (formdata : SysListModel) => {
-      setEditType('update');
-      const data = await selectDetailData(formdata);
-      formRef.current?.setFieldsValue(data);
-     }
-
-    // 页面展示元素
-    const columns: ProColumns<SysListModel>[] = [
-        {
-          title: '计算实例号',
-          dataIndex: 'calcIndex',
-          search: true,
-          hideInTable: false,
-        },
-        {
-          title: '起始数据日期',
-          dataIndex: 'startDate',
-          search: false,
-          hideInTable: false,
-        },
-        {
-          title: '截止数据日期',
-          dataIndex: 'endDate',
-          search: false,
-          hideInTable: false,
-        },
-        {
-          title: '保证人交易对手名称', 
-          dataIndex: 'customerName', // 查询结果中的隐藏列 
-          search: true,
-          hideInTable: false,
-        },
-        {
-          title: '缓释一级分类', 
-          dataIndex: 'crmFirstLevel',
-          search: false,
-          hideInTable: false,
-        },
-        {
-          title: '合格信用风险缓释工具类型', 
-          dataIndex: 'crmToolTypename',
-          search: true,
-          hideInTable: false,
-        },
-        {
-          title: '基础缓释权重',
-          dataIndex: 'baseWeight',
-          search: false,
-          hideInTable: false,
-        },
-        {
-          title: '豁免后缓释权重', // 查询结果
-          dataIndex: 'exemptionWeight',
-          search: false,
-          hideInTable: false,
-        },
-
-      ];
-    
-      const handleSave = async(data: SysListModel) => {
-           setDetailVisible(false);
-     }
-
-    return (
-        <SDPage>
-        <SDTable<SysListModel>
-         title="查询表格"
-         rowKey="calcIndex"
-         request={async () =>{
-           return {data: await getDataList()}
-         }  }
-         columns={columns}
-         singleSelect={false}
-         operations="all"
-         actionRef={actionRef}
-         handleRemove={
-           async (record) => {
-             await deleteRows(record[0].customerName )
-           }
-         }
-         setDetailVisible={() => {setDetailVisible(true)}}
-         setEditType={setEditType}
-         setCurrentRow={setCurrentRow}
-         />
-        {detailVisible && (
-        <SDModalForm          
-          title={'详细信息'}
-          editType={editType}
-          params={currentRow}
-          request={selectData}
-          visible={detailVisible}
-          onVisibleChange={() => {setDetailVisible(false)}}
-          footer={[<SDSubmitButton  editType={editType}   formRef={formRef} doSubmit={handleSave} >保存</SDSubmitButton>]}
-          tableRef={actionRef}
-          formRef={formRef}
-        >
-            <SDAreaTtile title='缓释品信息'/>
-            <SDFormText name="calcindex" label="计算实例号"/>
-            <SDFormText name="startDate" label="起始数据日期" max={60} width='md'/>
-            <SDFormText name="endDate" label="截止数据日期"  max={40} />
-            <SDFormText name="customerName" label="保证人交易对手名称" />
-            <SDFormText name="crmFirstLevel" label="缓释一级分类" max={40} />
-            <SDFormText name="crmToolTypename" label="合格信用风险缓释工具类型" />
-            <SDFormText name="baseWeight" label="基础缓释权重" />
-            <SDFormText name="exemptionWeight" label="豁免后缓释权重"/>
-         
-        </SDModalForm>
-        
-      )}
-
-        </SDPage>
-        
-    );
-}
-export default ListOfPublicSector;

+ 1 - 1
Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/faGlBalanceSheet.tsx

@@ -9,7 +9,7 @@ import { exportExcelModel, FaGlBalanceSheetModel, getFaGlBalanceSheet } from '@/
 
 type aaa = {
     
-}
+}//总账科目余额表
 
 const faGlBalanceSheetModel: React.FC<aaa>= (prop : aaa) => {
     const [editType, setEditType] = useState<EditType>('update');

+ 12 - 4
Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/fcCommitment.tsx

@@ -4,12 +4,13 @@ import { EditType, SDForm, SDFormDict, SDFormText, SDModal, SDModalForm, SDOpera
 import { ActionType, ProColumns } from '@ant-design/pro-table';
 import { WomanOutlined } from '@ant-design/icons';
 import { deletedata } from '@/services/idataMng/impandauditp';
-import { exportExcelModel, FcCommitmentModel, getFcCommitment } from '@/services/rwa/fcCommitment';
+import { exportExcelModel, FcCommitmentModel, getFcCommitment, getFcCommitment1 } from '@/services/rwa/fcCommitment';
 import { useModel } from '@umijs/max';
 
-type aaa = {
-    
-}
+export type aaa ={
+  subjectNumber ?:any;
+  search ?:any;
+}//承诺表
 
 const fcOffSheetts: React.FC<aaa>= (prop : aaa) => {
     const [editType, setEditType] = useState<EditType>('update');
@@ -26,6 +27,7 @@ const fcOffSheetts: React.FC<aaa>= (prop : aaa) => {
 
     var formDataList = new Array<FcCommitmentModel>;
     const { fetchDict } = useModel('dict');
+    const [id ,setId] =useState<boolean>(false);
     const columns: ProColumns<FcCommitmentModel>[] = [
         {
         title  : '计算实例号',
@@ -313,14 +315,20 @@ const fcOffSheetts: React.FC<aaa>= (prop : aaa) => {
       title="查询表格"
       rowKey="custName"
       request={async(formData : FcCommitmentModel)=>{
+        if(prop.search==='0'){
+          setId(false);
+          const sd1  =await getFcCommitment1(prop.subjectNumber);
+        }
         const sd = await getFcCommitment(formData);
         formDataList =[...sd];
         return {data :sd };
+        
       }}
       columns={columns}
      //  singleSelect={false}
      //operations={["create"]}
       //displayColumn="custName"
+      search={id}
      actionRef={actionRef}
      formRef={formRef}
      //handleRemove={deletedata}

+ 13 - 14
Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/fcLoan.tsx

@@ -9,9 +9,9 @@ import { request, useModel } from '@umijs/max';
 import { type } from '@/pages/rf-eng/rfDefine/compnents/param_new';
 
 export type FcLoanModel1 ={
-  loanReferenceNo ?:any;
+  subjectNumber ?:any;
   search ?:any;
-}
+}//信贷表
 
 
 const fcLoan: React.FC<FcLoanModel1>= (props : FcLoanModel1) => {
@@ -33,13 +33,14 @@ const fcLoan: React.FC<FcLoanModel1>= (props : FcLoanModel1) => {
     
     const [id ,setId] =useState<boolean>(false);
 
-    console.log(props.loanReferenceNo);
+    console.log(props.subjectNumber);
     console.log(props.search);
-    // if(props.search=="true"){
-    //   setId(true);
-    // }else{ setId(false);}
-
-
+    // const [a,setA]=useState<any>(false);
+    // if(props.search==='0'){
+    //   setA(true);
+    //   }else{
+    //     setA(false);
+    //   }
      const columns: ProColumns<FcLoanModel>[] = [
       { 
         title  : '数据日期',
@@ -516,8 +517,6 @@ const fcLoan: React.FC<FcLoanModel1>= (props : FcLoanModel1) => {
         width:150,  
         order:-1
       },
-       
-
         { 
         title  : '债务重组标识',
         dataIndex : 'reconstructionFlag',
@@ -525,8 +524,6 @@ const fcLoan: React.FC<FcLoanModel1>= (props : FcLoanModel1) => {
         search: false,
         width:150,  
       },
-       
-      
         { 
         title  : '起始数据日期',
         dataIndex : 'sdate',
@@ -544,6 +541,7 @@ const fcLoan: React.FC<FcLoanModel1>= (props : FcLoanModel1) => {
       },
 
     ]
+  
     return(
         <SDPage >
         <SDTable
@@ -552,14 +550,15 @@ const fcLoan: React.FC<FcLoanModel1>= (props : FcLoanModel1) => {
       request={async(formData : FcLoanModel)=>{
         if(props.search==='0'){
           setId(false);
-          const sd1 =await getFcLoan1(props.loanReferenceNo);
+          const sd1 =await getFcLoan1(props.subjectNumber);
           formDataList =[...sd1];
           return {data :sd1 };
 
-        }else{ setId(true);}
+        }else{ setId(true);
         const sd = await getFcLoan(formData);
         formDataList =[...sd];
         return {data :sd };
+        }
       }}
       columns={columns}
      //  singleSelect={false}

+ 1 - 1
Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/fcOffSheet.tsx

@@ -9,7 +9,7 @@ import { useModel } from '@umijs/max';
 
 type aaa = {
 
-  }
+  }//银承、保函、信用证等表外业务
 
   const fcOffSheetts: React.FC<aaa>= (prop : aaa) => {
     const [editType, setEditType] = useState<EditType>('update');

+ 2 - 1
Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/ffRepo.tsx

@@ -10,7 +10,7 @@ import { useModel } from '@umijs/max';
 
 type aaa = {
     
-}
+}//回购表
 
   const fcOffSheetts: React.FC<aaa>= (prop : aaa) => {
     const [editType, setEditType] = useState<EditType>('update');
@@ -21,6 +21,7 @@ type aaa = {
     const [detailVisible, setDetailVisible] = useState<boolean>(false);
 
     const [visible,setVisible] = useState<boolean>(false);//弹窗是否显示
+  
 
     const actionRef = useRef<ActionType>();
     const tableActionRef = useRef<ActionType>();

+ 1 - 1
Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/govFinancialAssetComp.tsx

@@ -8,7 +8,7 @@ import { deleteGovFinancialAssetComp, exportExcelModel, getGovFinancialAssetComp
 
 type bbb ={
 
-}
+}//中央政府投资的金融资产管理公司清单表
 
 const govFinancialAssetCompts: React.FC<bbb>= (prop : bbb) => {
 

+ 1 - 1
Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/itItfRate.tsx

@@ -10,7 +10,7 @@ import { useModel } from '@umijs/max';
 
 type aaa = {
     
-}
+}//回购表
 
 const itItfRateModel: React.FC<aaa>= (prop : aaa) => {
 

+ 1 - 1
Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/norepurchasePledgeInfo.tsx

@@ -8,7 +8,7 @@ import { deleteNoRepurchasePledgeInfo, getNoRepurchasePledgeInfo, inserteNoRepur
 
 type bbb ={
 
-}
+}//非回购业务的质押信息 
 
 const repurchasePledgeInfots: React.FC<bbb>= (prop : bbb) => {
 

+ 1 - 1
Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/policybank.tsx

@@ -9,7 +9,7 @@ import { result } from 'lodash';
 
 type aaa ={
 
-}
+}//我国开发性金融机构和政策性银行发行人名称清单
 
 const policybankts: React.FC<aaa>= (prop : aaa) => {
 

+ 1 - 1
Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/repurchasePledgeInfo.tsx

@@ -8,7 +8,7 @@ import { deleteRepurchasePledgeInfo, getRepurchasePledgeInfo, inserteRepurchaseP
 
 type bbb ={
 
-}
+}//回购业务的质押信息
 
 const repurchasePledgeInfots: React.FC<bbb>= (prop : bbb) => {
 

+ 1 - 1
Procedure/frontend/projectb/src/pages/rdpMng/Template/Coding/components/sovereign.tsx

@@ -16,7 +16,7 @@ type aaa = {
   onChangeVisible(visible: boolean, type: string): unknown;
   onChangeVisdible:(visible:boolean,type ?: 'none' | 'raload' )=>void;
   formRef: React.MutableRefObject<ProFormInstance<any> | undefined>;
-}
+}//主权清单
 
 
 const sovereignts: React.FC<aaa>= (prop : aaa) => {

+ 32 - 0
Procedure/frontend/projectb/src/pages/rwa_calc_config_dataparam/product_list.tsx

@@ -0,0 +1,32 @@
+import React, { useEffect, useRef, useState } from 'react';
+import { Button, Form, FormInstance, Input, Space, Tooltip, Upload } from 'antd';
+import { ActionType, ProColumns, ProFormInstance, ProTable } from '@ant-design/pro-components';
+import { EditType, SDPage } from '@sundata/ui-frame';
+import { productListModel } from '@/services/rwa/product_list';
+
+type aaa = {
+      onCancel:  () => void;
+      onChangeVisible(visible: boolean, type: string): unknown;
+      onChangeVisdible:(visible:boolean,type ?: 'none' | 'raload' )=>void;
+      formRef: React.MutableRefObject<ProFormInstance<any> | undefined>;
+    }
+    
+const product_list: React.FC<aaa>= (prop : aaa) => {
+
+    const [visible,setVisible] = useState<boolean>(false);//弹窗是否显示
+    const formRef = useRef<FormInstance<any>>();
+    const [editType, setEditType] = useState<EditType>('update');
+
+
+    const columns: ProColumns<productListModel>[] = [
+
+    ]
+
+    return(
+        <SDPage>
+
+        </SDPage>
+    )
+
+}
+export default product_list;

+ 415 - 426
Procedure/frontend/projectb/src/pages/rwa_data_check/diffconfig_list.tsx

@@ -2,475 +2,464 @@ import React, { Key, useEffect, useRef, useState } from 'react';
 import { Button, Form, FormInstance, Input, Radio, Space, Table, Tooltip, Upload } from 'antd';
 import { ActionType, ProColumns, ProFormInstance, ProTable } from '@ant-design/pro-components';
 import { baseFun, EditType, SDAreaTtile, SDButton, SDForm, SDFormDict, SDFormSearch, SDFormText, SDLayout, SDModal, SDModalForm, SDOperate, SDPage, SDSubmitButton, SDTable, validateFun } from '@sundata/ui-frame';
-import { diffconfig_addone, diffconfig_addone1, diffconfig_deleteone, difftoleranceModel, most, resultListModel, rule_list, rule_list1, rule_querylist, rule_queryone } from '@/services/rwa/diffconfig_list';
+import { diffconfig_addone, diffconfig_addone1, diffconfig_deleteone, difftoleranceModel, jiaoyan, most, resultListModel, rule_list, rule_list1, rule_querylist, rule_queryone } from '@/services/rwa/diffconfig_list';
 import { useModel } from '@umijs/max';
 import { WomanOutlined } from '@ant-design/icons';
 import { RuleObject } from 'antd/lib/form';
-import Footer from '@/components/Footer';
 
 type aaa = {
-    lowerLimit ?:any;
-    upperLimit ?:any;
-    ruleAreaType ?:any;
-    ruleNo ?:any;
-    ruleId ?:any;
-    onCancel:  () => void;
-    onChangeVisible(visible: boolean, type: string): unknown;
-    onChangeVisdible:(visible:boolean,type ?: 'none' | 'raload' )=>void;
-   // formRef: React.MutableRefObject<ProFormInstance<any> | undefined>;
-  }
+  lowerLimit ?:any;
+  upperLimit ?:any;
+  ruleAreaType ?:any;
+  ruleNo ?:any;
+  ruleId ?:any;
+  onCancel:  () => void;
+  onChangeVisible(visible: boolean, type: string): unknown;
+  onChangeVisdible:(visible:boolean,type ?: 'none' | 'raload' )=>void;
+ // formRef: React.MutableRefObject<ProFormInstance<any> | undefined>;
+}
 const diffconfig_list: React.FC<aaa>= (prop : aaa) => {
-    var formDataList = new Array<difftoleranceModel>;
-    var formDataList1 = new Array<resultListModel>;
-
-
-    const [windowProps, setWindowProps] = useState<{
-      //selectedRowKeys: React.Key[];
-      //selectedRows: resultListModel[];
-    }>({ selectedRows: [] });
- 
-    const [visible,setVisible] = useState<boolean>(false);//弹窗是否显示
-    const [visible1,setVisible1] = useState<boolean>(false);//弹窗是否显示
-    const [visible2,setVisible2] = useState<boolean>(false);//弹窗是否显示
-    const formRef = useRef<FormInstance<any>>();
-    const [editType, setEditType] = useState<EditType>('update');
-
-    const parentformRef = useRef<FormInstance<any>>();
-    const childenformRef= useRef<FormInstance<any>>();
-
-    const [mockData, setMockData] = useState<resultListModel[]>([]);
-
-    const [tableData, setTableData] = useState(mockData);
-
-      /** 当前行对象,查看详情、修改时,作为详细信息表单的查询条件 */
-    const [currentRow, setCurrentRow] = useState<resultListModel>();
-
-    const actionRef = useRef<ActionType>();
-    const { fetchDict } = useModel('dict');   
-
-    const [selectedValue, setSelectedValue] = useState('');
+  var formDataList = new Array<difftoleranceModel>;
+  var formDataList1 = new Array<resultListModel>;
+
+
+  const [windowProps, setWindowProps] = useState<{
+    //selectedRowKeys: React.Key[];
+    //selectedRows: resultListModel[];
+  }>({ selectedRows: [] });
+
+  const [visible,setVisible] = useState<boolean>(false);//弹窗是否显示
+  const [visible1,setVisible1] = useState<boolean>(false);//弹窗是否显示
+  const [visible2,setVisible2] = useState<boolean>(false);//弹窗是否显示
+  const formRef = useRef<FormInstance<any>>();
+  const [editType, setEditType] = useState<EditType>('update');
+
+  const parentformRef = useRef<FormInstance<any>>();
+  const childenformRef= useRef<FormInstance<any>>();
+
+  const [mockData, setMockData] = useState<resultListModel[]>([]);
+
+  const [tableData, setTableData] = useState(mockData);
+
+    /** 当前行对象,查看详情、修改时,作为详细信息表单的查询条件 */
+  const [currentRow, setCurrentRow] = useState<resultListModel>();
+  const [removeSelectedRow,setRemoveSelectedRow] = useState<resultListModel[]>();
+  const actionRef = useRef<ActionType>();
+  const parentActionRef = useRef<ActionType>();
+  const { fetchDict } = useModel('dict');   
+  const [selectedValue, setSelectedValue] = useState('');
+  const [allSelectedRowKeys, setAllSelectedRowKeys] = useState<Key[]>();
+
+
+  const selectdata = async (record:any)=>{
+      const sd =await rule_queryone(record.ruleNo);
+      parentformRef.current?.setFieldsValue(sd.result1[0]);
+       setMockData(sd.result2);
+       if(sd.result1[0].ruleAreaType=='05'){
+        setVisible2(true)
+      }else{
+        setVisible2(false);
+      }
 
+  }
 
+  
+  const deldata = async (record:any)=>{
+      baseFun.confirm("请确认是否继续操作",async()=>{
+       const s =   await diffconfig_deleteone(record.ruleNo);
+          closeAndRefresh();
+      })
+  }
 
-    const [allSelectedRowKeys, setAllSelectedRowKeys] = useState<Key[]>();
+  
+  const closeAndRefresh = ()=>{
+      setVisible(false);
+      actionRef.current?.reloadAndRest?.();
+    }
 
+    const upperLimit =(_?: RuleObject, value?: any)=>{
 
-    const selectdata = async (record:any)=>{
-        const sd =await rule_queryone(record.ruleNo);
-        parentformRef.current?.setFieldsValue(sd.result1[0]);
-        // if(editType==='update')
-         setMockData(sd.result2);
-        // } else {
-        //   setMockData([]);
-        // }
-         
     }
-
-    
-    const deldata = async (record:any)=>{
-        baseFun.confirm("请确认是否继续操作",async()=>{
-         const s =   await diffconfig_deleteone(record.ruleNo);
-            closeAndRefresh();
-        })
+    const inst =  async(formData : difftoleranceModel) => {
+      setEditType('create')
+    if(mockData.length==0){
+      baseFun.warning("总分勾稽规则列表不允许为空");
+    }else{
+      const  sd:any = await jiaoyan(formData);
+      if(sd>=1 && editType==='create'){
+        baseFun.warning("规则编号已重复,请重新输入")
+      }else{
+   const b= await diffconfig_addone(formData);
+    var obg ={...mockData,ruleNo:formData.ruleNo}
+    inst1(formData.ruleNo,obg);
+    closeAndRefresh();
+  }
+  }
     }
-
-    
-    const closeAndRefresh = ()=>{
-        setVisible(false);
-        actionRef.current?.reloadAndRest?.();
-      }
-
-      const upperLimit =(_?: RuleObject, value?: any)=>{
-
-      }
-      const inst =  async(formData : difftoleranceModel) => {
-        setEditType('create')
-      //  const ResultList =await rule_addone(formData)  
-      //  if("规则编号已重复,请重新输入"===ResultList){
-      //   baseFun.warning(ResultList);
-      //  }else{
-      //   baseFun.info(ResultList);
-      //  closeAndRefresh();
-      //  }
-      
-     const b= await diffconfig_addone(formData);
-      var obg ={...mockData,ruleNo:formData.ruleNo}
-      inst1(formData.ruleNo,obg);
+    const inst1 = async(ruleNo:any,obg:any)=>{
+    const a=  await diffconfig_addone1(ruleNo,mockData);
       closeAndRefresh();
-      }
-      const inst1 = async(ruleNo:any,obg:any)=>{
-      const a=  await diffconfig_addone1(ruleNo,mockData);
-        closeAndRefresh();
-      }
-    const columns: ProColumns<difftoleranceModel>[] = [
-        { title : '计算实例号',
-        dataIndex : 'calcindex',
-        search:false,
-        hideInTable: true,
-        width : 150
-        },
-        
-        { title : '起始数据日期',
-        dataIndex : 'sdate',
-        search:false,
-        hideInTable: true,
-        width : 150
-        },
-        
-        { title : '截止数据日期',
-        dataIndex : 'edate',
-        search:false,
-        hideInTable: true,
-        width : 150
-        },
-        
-        { title : '年月',
-        dataIndex : 'term',
-        search:false,
-        hideInTable: true,
-        width : 150
-        },
-        
-        { title : '数据日期',
-        dataIndex : 'dataDate',
-        search:false,
-        hideInTable: true,
-        width : 150
-        },
-        
-        { title : '规则编号',
-        dataIndex : 'ruleNo',
-        width : 150
-        },
-        
-        { title : '规则名称',
-        dataIndex : 'ruleName',
-        width : 150
-        },
-        
-        { title : '容忍度下限%',
-        dataIndex : 'upperLimit',
-        search:false,
-        width : 150
-        },
-        
-        { title : '容忍度上限%',
-        dataIndex : 'lowerLimit',
-        search:false,
-        width : 150
-        },
-        
-        { title : '区间开闭类型',
-        dataIndex : 'intervalType',
-        search:false,
-        width : 150
-        },
-        
-        { title : '适用范围类型',
-        dataIndex : 'ruleAreaType',
-        search:false,
-        hideInTable: true,
-        width : 150
-        },
-        {
-            title: '操作',
-            dataIndex: 'operate',
-            valueType: 'option',
-            render: (_, record) => [
-              <SDOperate
-                key="roleCfg"
-                icon={<WomanOutlined />}
-                successMessage=""
-                
-                onClick={()=>{ 
-                  setEditType('update');
-                  selectdata(record);
-                  setVisible(true);
-                 } }
-              >
-                修改
-              </SDOperate>,
-        
-             <SDOperate
-             key="roleCfg"
-             icon={<WomanOutlined />}
-             successMessage=""
-             onClick={()=>{ 
-              deldata(record);
-             
-              } }
-           >
-            删除
-           </SDOperate>,
-    ]}
-    ]
-
-    const columns1: ProColumns<resultListModel>[] = [
-        { title : '规则编号',
-        dataIndex : 'ruleId',
-        width : 150
-        },
-        { title : '科目代码',
-        dataIndex : 'glCode',
-        width : 150
-        },
-        
-        { title : '科目名称',
-        dataIndex : 'subjectDesc',
-        width : 150
-        },
-
-    ]
-
-    const columns2: ProColumns<resultListModel>[] = [
-      { title : '规则编号',
-      dataIndex : 'ruleId',
+    }
+  const columns: ProColumns<difftoleranceModel>[] = [
+      { title : '计算实例号',
+      dataIndex : 'calcindex',
       search:false,
+      hideInTable: true,
       width : 150
       },
-      { title : '科目代码',
-      dataIndex : 'glCode',
+      
+      { title : '起始数据日期',
+      dataIndex : 'sdate',
+      search:false,
+      hideInTable: true,
       width : 150
       },
       
-      { title : '科目名称',
-      dataIndex : 'subjectDesc',
+      { title : '截止数据日期',
+      dataIndex : 'edate',
+      search:false,
+      hideInTable: true,
+      width : 150
+      },
+      
+      { title : '年月',
+      dataIndex : 'term',
+      search:false,
+      hideInTable: true,
       width : 150
       },
       
-      { title : '科目性质',
-      dataIndex : 'subjectNature',
-      valueType:'select',
-      request: () => fetchDict('SUBJECT_DESC'),//码值后续添加
+      { title : '数据日期',
+      dataIndex : 'dataDate',
+      search:false,
+      hideInTable: true,
       width : 150
       },
-      { title : '表内外标识',
-      dataIndex : 'onoroff',
-      valueType:'select',
-      request: () => fetchDict('ONOROFF'),//码值后续添加
+      
+      { title : '规则编号',
+      dataIndex : 'ruleNo',
       width : 150
       },
+      
+      { title : '规则名称',
+      dataIndex : 'ruleName',
+      width : 150
+      },
+      
+      { title : '容忍度下限%',
+      dataIndex : 'upperLimit',
+      search:false,
+      width : 150
+      },
+      
+      { title : '容忍度上限%',
+      dataIndex : 'lowerLimit',
+      search:false,
+      width : 150
+      },
+      
+      { title : '区间开闭类型',
+      dataIndex : 'intervalType',
+      search:false,
+      width : 150
+      },
+      
+      { title : '适用范围类型',
+      dataIndex : 'ruleAreaType',
+      search:false,
+      hideInTable: true,
+      width : 150
+      },
+      {
+          title: '操作',
+          dataIndex: 'operate',
+          valueType: 'option',
+          render: (_, record) => [
+            <SDOperate
+              key="roleCfg"
+              icon={<WomanOutlined />}
+              successMessage=""
+              
+              onClick={()=>{ 
+                setEditType('update');
+                selectdata(record);
+                setVisible(true);
+               } }
+            >
+              修改
+            </SDOperate>,
+      
+           <SDOperate
+           key="roleCfg"
+           icon={<WomanOutlined />}
+           successMessage=""
+           onClick={()=>{ 
+            deldata(record);
+           
+            } }
+         >
+          删除
+         </SDOperate>,
+  ]}
+  ]
 
-    ]
-
-
-    const removeRow = (key: any) => {
-     const String =`${key.join(' ')}`;
-      setMockData(mockData .filter((item) => item.ruleId !== String));
-    };
+  const columns1: ProColumns<resultListModel>[] = [
+      { title : '规则编号',
+      dataIndex : 'ruleId',
+      width : 150
+      },
+      { title : '科目代码',
+      dataIndex : 'glCode',
+      width : 150
+      },
+      
+      { title : '科目名称',
+      dataIndex : 'subjectDesc',
+      width : 150
+      },
 
-    const rule_list11 =async(formData : resultListModel)=>{
-      const sd = await rule_list(formData);
-          formDataList1=[...sd];
-            setMockData(formDataList1)
-          
+  ]
+
+  const columns2: ProColumns<resultListModel>[] = [
+    { title : '规则编号',
+    dataIndex : 'ruleId',
+    search:false,
+    width : 150
+    },
+    { title : '科目代码',
+    dataIndex : 'glCode',
+    width : 150
+    },
+    
+    { title : '科目名称',
+    dataIndex : 'subjectDesc',
+    width : 150
+    },
+    
+    { title : '科目性质',
+    dataIndex : 'subjectNature',
+    valueType:'select',
+    request: () => fetchDict('SUBJECT_DESC'),//码值后续添加
+    width : 150
+    },
+    { title : '表内外标识',
+    dataIndex : 'onoroff',
+    valueType:'select',
+    request: () => fetchDict('ONOROFF'),//码值后续添加
+    width : 150
+    },
+
+  ]
+
+
+  const removeRow = (key: any) => {
+    let removeSelectedRowKeys = new Array<Key>;
+    let removeArray = new Array<resultListModel>;
+   const String =`${key.join(' ')}`;
+    setMockData(mockData .filter((item) => item.ruleId !== String));
+    mockData.forEach(function(item){
+      if (item.ruleId !== String) {
+        removeSelectedRowKeys.push(item.ruleId);
+        removeArray.push(item);
+      }
+    });
+    setRemoveSelectedRow(removeArray);
+    setAllSelectedRowKeys(removeSelectedRowKeys);
+  };
 
-    }
 
 
-    return(
-        <SDPage>
-            <SDTable
-      rowKey="custName"
-      
-      request={async(formData : difftoleranceModel)=>{
-        const sd = await rule_querylist(formData);
-        formDataList =[...sd];
-        
-        return {data :sd };
+  return(
+      <SDPage>
+          <SDTable
+    rowKey="custName"
+    
+    request={async(formData : difftoleranceModel)=>{
+      const sd = await rule_querylist(formData);
+      formDataList =[...sd];
+      return {data :sd };
+    }}
+    columns={columns}
+    actionRef={actionRef}
+   formRef={formRef}
+   setEditType={setEditType}
+   //handleRemove={deletedata}
+    toolBarRender={(_, { selectedRows }) => [
+      <SDButton
+      key="create"
+      successMessage=''
+      onClick={() => {
+        //setVisible(true);
+        setEditType('create');
+        setVisible2(false);
+        if (removeSelectedRow && removeSelectedRow.length !== 0) {
+          setMockData(removeSelectedRow)
+        } else {
+          setMockData([])
+        }
+        setVisible(true);
       }}
-      columns={columns}
-      actionRef={actionRef}
+      >
+        新增
+      </SDButton>
+    ]} 
+    />
+    {visible &&(
       
-     //  singleSelect={false}
-   //  operations={["create"]}
-      //displayColumn="custName"
-     formRef={formRef}
+    <SDModalForm title={''} visible={visible} editType={editType} onVisibleChange={() => {  setVisible(false);  }
+  } 
+  footer={[<SDSubmitButton  editType={editType}   formRef={parentformRef} successMessage="" doSubmit={inst} >保存</SDSubmitButton>,
+  <SDButton     successMessage="" onClick={()=>closeAndRefresh()} >关闭</SDButton>
+]}
+    >
+    <SDAreaTtile title='差异容忍度规则新增' />
+    {
      
-     //handleRemove={deletedata}
-      toolBarRender={(_, { selectedRows }) => [
-        <SDButton
-        key="create"
-        successMessage=''
-        onClick={() => {
-          setVisible(true);
-          setEditType('create');
-          setVisible2(false);
-        }}
-        >
-          新增
-        </SDButton>
-      ]} 
-      />
-      {visible &&(
-        
-      <SDModalForm title={''} visible={visible} editType={editType} onVisibleChange={() => {  setVisible(false);  }
-    } 
-    footer={[<SDSubmitButton  editType={editType}   formRef={parentformRef} successMessage="" doSubmit={inst} >保存</SDSubmitButton>,
-    <SDButton     successMessage="" onClick={()=>closeAndRefresh()} >关闭</SDButton>
-  ]}
-      >
-      <SDAreaTtile title='差异容忍度规则新增' />
-      {
-       
-        <SDForm editType={editType} formRef={parentformRef}  onValuesChange={(changedValues,Values)=>{
-            if(Values.upperLimit!="" && Values.lowerLimit!="" && Values.upperLimit!=undefined && Values.lowerLimit!=undefined){
-              const  upperLimit =Values.upperLimit;
-              const  lowerLimit =Values.lowerLimit;
-              if(lowerLimit<upperLimit){
-                if(Object.keys(changedValues).toString()=="lowerLimit"){
-                    baseFun.warning("忍度上限要大于等于容忍度下限")
-                }
-                if(Object.keys(changedValues).toString()=="upperLimit"){
-                    baseFun.warning("忍度下限要小于等于容忍度上限")
-                }
-               
+      <SDForm editType={editType} formRef={parentformRef} 
+      initialValues={{intervalType:'close-close',lowerLimit:prop.lowerLimit,upperLimit:prop.upperLimit,ruleAreaType:prop.ruleAreaType }}
+      onValuesChange={(changedValues,Values)=>{
+          if(Values.upperLimit!="" && Values.lowerLimit!="" && Values.upperLimit!=undefined && Values.lowerLimit!=undefined){
+            const  upperLimit =Values.upperLimit;
+            const  lowerLimit =Values.lowerLimit;
+            if(lowerLimit<upperLimit){
+              if(Object.keys(changedValues).toString()=="lowerLimit"){
+                  baseFun.warning("忍度上限要大于等于容忍度下限")
               }
+              if(Object.keys(changedValues).toString()=="upperLimit"){
+                  baseFun.warning("忍度下限要小于等于容忍度上限")
+              }
+             
             }
-            if(Values.ruleAreaType=='05'){
-                setVisible2(true)
-            }else{
-                setVisible2(false)
-            }
-        }
-    }
-        >
-        <SDFormText name="ruleNo"   label="规则编号"  required  readonlyCond='update'/>
-        <SDFormText name="ruleName"   label="规则名称"  required />
-        <SDFormDict name="ruleAreaType"   label="适用范围类型" dictKey='RULE_AREA_TYPE'  required/>
-        <SDFormDict name="intervalType"   label="区间开闭类型"  dictKey='limitinterval' required/>
-        <SDFormText name="lowerLimit"   label="容忍度上限%"   required />
-        <SDFormText name="upperLimit"   label="容忍度下限%"   required/>
-        </SDForm>
+          }
+          if(Values.ruleAreaType=='05'){
+              setVisible2(true)
+          }else{
+              setVisible2(false)
+          }
       }
-      <SDAreaTtile title='总分勾稽规则列表'  />
-      <SDLayout>
-        <ProTable 
-        rowKey="ruleId"
-        search={false} 
-        dataSource={mockData}
-        actionRef={actionRef}
-        request={async(formData : resultListModel)=>{
-          if(editType!='update')
-          {const sd = await rule_list(formData);
-              formDataList1=[...sd];
-              setMockData(sd);
-              return {data:sd}
-             
-             } else {
-              return setMockData([]);
-             }
-           
-        }}
-        columns={columns1}
-        //singleSelect={false}
-       actionRef={actionRef}
-       formRef={childenformRef}
-       //handleRemove={selectedValue}
-       // setEditType={setEditType}
-        //setDetailVisible={setVisible} 
-        toolBarRender={(_, { selectedRowKeys }) => {
-            if(visible2){
-                return[  <SDButton
-                key="create"
-                successMessage=''
-                icon={<WomanOutlined />}
-                onClick={async() => {
-                  setVisible1(true);
-                  setEditType('create');
-                  mockData.forEach(function (item){
-                    setCurrentRow(item);
-                  });
-                }}
-                >
-                  新增
-                </SDButton>,
-                <SDButton
-                key="create"
-                successMessage=''
-                icon={<WomanOutlined />}
-                onClick={()=>{removeRow(selectedRowKeys) ;}}
-                >
-                  删除
-                </SDButton>
-           ] }else{return []}
+  }
+      >
+      <SDFormText name="ruleNo"   label="规则编号"  required  readonlyCond='update' max='50'/>
+      <SDFormText name="ruleName"   label="规则名称" max='400' width={210}  required />
+      <SDFormDict name="ruleAreaType"   label="适用范围类型" dictKey='RULE_AREA_TYPE'  required/>
+      <SDFormDict name="intervalType"   label="区间开闭类型"  dictKey='limitinterval' required/>
+      <SDFormText name="lowerLimit"   label="容忍度上限%"   required />
+      <SDFormText name="upperLimit"   label="容忍度下限%"   required/>
+      </SDForm>
+    }
+    <SDAreaTtile title='总分勾稽规则列表'  />
+    <SDLayout>
+      <ProTable 
+      rowKey="ruleId"
+      search={false} 
+      dataSource={mockData}
+      actionRef={actionRef}
+      request={async(formData : resultListModel)=>{
+        if(editType!='update')
+        {const sd = await rule_list(formData);
+            formDataList1=[...sd];
+            setMockData(sd);
+            return {data:sd}
            
-        } }
-          rowSelection={
-            {
-  selections:[Table.SELECTION_ALL, Table.SELECTION_INVERT],
-  type:'checkbox'
+           } else {
+            return setMockData([]);
+           }
+         
+      }}
+      columns={columns1}
+     formRef={childenformRef}
+      toolBarRender={(_, { selectedRowKeys }) => {
+          if(visible2){
+              return[  <SDButton
+              key="create"
+              successMessage=''
+              icon={<WomanOutlined />}
+              onClick={async() => {
+                setVisible1(true);
+                setEditType('create');
+                mockData.forEach(function (item){
+                  setCurrentRow(item);
+                });
+              }}
+              >
+                新增
+              </SDButton>,
+              <SDButton
+              key="create"
+              successMessage=''
+              icon={<WomanOutlined />}
+              onClick={()=>{removeRow(selectedRowKeys) ;}}
+              >
+                删除
+              </SDButton>
+         ] }else{return []}
+         
+      } }
+        rowSelection={
+          {
+selections:[Table.SELECTION_ALL, Table.SELECTION_INVERT],
+type:'checkbox'
 }
 }
-        />
-      </SDLayout>
-      {visible1 &&(
-        <SDModalForm title={''} visible={visible1} editType={editType} onVisibleChange={() => { setVisible1(false);}
-      } >
-        <SDLayout>
-            <ProTable
-            rowKey="ruleId"
-            request={async(formData : resultListModel)=>{
-              const sd = await rule_list1(formData);
-              return {data :sd };
-            }}
-            columns={columns2}
-           //  singleSelect={false}
-         //  operations={["create"]}
-            //displayColumn="custName"
-           actionRef={actionRef}
-           formRef={formRef}
-           //handleRemove={deletedata}
-           // setEditType={setEditType}
-            setDetailVisible={setVisible1} 
-            singleSelect={false}
-            
-            toolBarRender={(_, { selectedRows }) => {    
-              return [
-                <SDButton
-                key="create"
-                successMessage=''
-                icon={<WomanOutlined />}
-                onClick={() => {
-                  if (selectedRows) {
-                    setMockData(selectedRows);
-                    setVisible1(false);
+      />
+    </SDLayout>
+    {visible1 &&(
+      <SDModalForm title={''} visible={visible1} editType={editType} onVisibleChange={() => { setVisible1(false);}
+    } >
+      <SDLayout>
+          <ProTable
+          rowKey="ruleId"
+          request={async(formData : resultListModel)=>{
+            const sd = await rule_list1(formData);
+            return {data :sd };
+          }}
+          columns={columns2}
+         actionRef={actionRef}
+         formRef={formRef}
+          toolBarRender={(_, { selectedRows }) => {    
+            return [
+              <SDButton
+              key="create"
+              successMessage=''
+              icon={<WomanOutlined />}
+              onClick={() => {
+                if (selectedRows) {
+                  actionRef.current?.reload();
+                  if (selectedRows.length !== 0 && selectedRows[0] === undefined && removeSelectedRow) {
+                    setMockData(removeSelectedRow);
                   } else {
-                    setMockData([]);
+                    setRemoveSelectedRow(selectedRows);
+                    setMockData(selectedRows);
                   }
-                 // actionRef.current?.reload?.(true)
-                }}
-                >
-                  选择
-                </SDButton>,
-              ]
-            }
+                } else {
+                  setMockData([]);
+                }
+                setVisible1(false);
+               // actionRef.current?.reload?.(true)
+              }}
+              >
+                选择
+              </SDButton>,
+            ]
           }
-          
-          rowSelection={
-            {
-              selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT],
-              selectedRowKeys: allSelectedRowKeys,
-              onChange: (selectedRowKeys, selectedRows) => {
-                setAllSelectedRowKeys(selectedRowKeys);
-              }
-              
-            }
+        }
+        rowSelection={
+          {
+            selections: [Table.SELECTION_ALL, Table.SELECTION_INVERT],
+            selectedRowKeys: allSelectedRowKeys,
+            onChange: (selectedRowKeys, selectedRows) => {
+              setAllSelectedRowKeys(selectedRowKeys);
+            }            
           }
-            />
-            </SDLayout>
-            </SDModalForm>
-      )
-
-      }
-
-
-
-      </SDModalForm>
-
-      )}
-        </SDPage>
-
-    );
+        }
+          />
+          </SDLayout>
+          </SDModalForm>
+    )
+    }
+    </SDModalForm>
+    )}
+      </SDPage>
+  );
 }
-export default diffconfig_list;
+export default diffconfig_list;

+ 157 - 12
Procedure/frontend/projectb/src/pages/rwa_data_check/result_list.tsx

@@ -6,7 +6,8 @@ import { resultListModel, result_list } from '@/services/rwa/result_list';
 import { WomanOutlined } from '@ant-design/icons';
 import { renderTemplate } from '../rdpMng/Template/components/common';
 import { FcLoanModel } from '@/services/rwa/fcLoan';
-
+import DiscountTable from '../project/dataquality/DiscountTable';
+import { renderTemplate1 } from '../project/commom/common';
 
 
 type aaa = {
@@ -166,39 +167,183 @@ const resultlist: React.FC<aaa>= (prop : aaa) => {
       search={false}
       ></ProTable> */}
 <SDTabs defaultActiveKey="t2" tabPosition="top" type="card" 
+
                 items={[                    
                     {
                         key:'t1',
                         label:'信贷表',
                         type:"card",
                         children: (
-                            renderTemplate({
-                                key: "fcLoan",
-                                prodCode:"fcLoan",
-                                openType:"child",
-                                initParams:{editType:'display',loanReferenceNo:subjcode.current,search:'0'},
-                            },"coding")
+                          renderTemplate({
+                            key: "scbaseinfo",
+                            prodCode:"fcLoan",
+                            openType:"child",
+                            initParams:{editType:'display',subjectNumber:subjcode.current,search:'0'},
+                        },"coding")
                         )
                         
                     },
                     {
                       key:'t2',
-                      label:'回购表',
+                      label:'票据表',
+                      type:"card",
+                      
+                      children: (
+                        
+                          renderTemplate1({
+                              key: "scbaseinfo",
+                              prodCode:"DiscountTable",
+                              openType:"child",
+                              initParams:{editType:'display',subjectNumber:subjcode.current,search:'0'},
+                          },"coding")
+                      )
+                      
+                    },
+                    {
+                      key:'t3',
+                      label:'信用卡表',
+                      type:"card",
+                      children: (
+                          renderTemplate1({
+                              key: "scbaseinfo",
+                              prodCode:"OnCreditCard",
+                              openType:"child",
+                              initParams:{editType:'display',subjectNumber:subjcode.current,search:'0'},
+                          },"coding")
+                      )
+                      
+                    },
+                    {
+                      key:'t4',
+                      label:'信用卡未使用额度表',
+                      type:"card",
+                      children: (
+                          renderTemplate1({
+                              key: "scbaseinfo",
+                              prodCode:"OffCreditCard",
+                              openType:"child",
+                              initParams:{editType:'display',subjectNumber:subjcode.current,search:'0'},
+                          },"coding")
+                      )
+                      
+                    },
+                    {
+                      key:'t5',
+                      label:'存拆放表',
+                      type:"card",
+                      children: (
+                          renderTemplate1({
+                              key: "scbaseinfo",
+                              prodCode:"InterbankDepositOrLendingTable",
+                              openType:"child",
+                              initParams:{editType:'display',subjectNumber:subjcode.current,search:'0'},
+                          },"coding")
+                      )
+                      
+                    },
+                    {
+                      key:'t6',
+                      label:'债券投资表',
+                      type:"card",
+                      children: (
+                          renderTemplate1({
+                              key: "scbaseinfo",
+                              prodCode:"BondInvestment",
+                              openType:"child",
+                              initParams:{editType:'display',subjectNumber:subjcode.current,search:'0'},
+                          },"coding")
+                      )
+                      
+                    },
+                    {
+                      key:'t7',
+                      label:'非标投资表',
+                      type:"card",
+                      children: (
+                          renderTemplate1({
+                              key: "scbaseinfo",
+                              prodCode:"NonStandardInvestment",
+                              openType:"child",
+                              initParams:{editType:'display',subjectNumber:subjcode.current,search:'0'},
+                          },"coding")
+                      )
+                      
+                    },
+                    {
+                      key:'t8',
+                      label:'表外业务表',
+                      type:"card",
+                      children: (
+                          renderTemplate({
+                              key: "scbaseinfo",
+                              prodCode:"fcOffSheet",
+                              openType:"child",
+                              initParams:{editType:'display',subjectNumber:subjcode.current,search:'0'},
+                          },"coding")
+                      )
+                      
+                    },
+                    {
+                      key:'t9',
+                      label:'承诺表',
                       type:"card",
                       children: (
                           renderTemplate({
                               key: "scbaseinfo",
                               prodCode:"fcCommitment",
                               openType:"child",
-                              initParams:{editType:'display',subjcode:subjcode.current},
+                              initParams:{editType:'display',subjectNumber:subjcode.current,search:'0'},
                           },"coding")
                       )
                       
-                  },
+                    },
+                    {
+                      key:'t10',
+                      label:'回购表',
+                      type:"card",
+                      children: (
+                          renderTemplate({
+                              key: "scbaseinfo",
+                              prodCode:"ffRepo",
+                              openType:"child",
+                              initParams:{editType:'display',subjectNumber:subjcode.current,search:'0'},
+                          },"coding")
+                      )
+                      
+                    },
+                    // {
+                    //   key:'t11',
+                    //   label:'股权投资补录表',
+                    //   type:"card",
+                    //   children: (
+                    //       renderTemplate({
+                    //           key: "scbaseinfo",
+                    //           prodCode:"fcCommitment",//目前没有做页面
+                    //           openType:"child",
+                    //           initParams:{editType:'display',subjectNumber:subjcode.current,search:'0'},
+                    //       },"coding")
+                    //   )
+                      
+                    // },
+                    // {
+                    //   key:'t12',
+                    //   label:'不动产信息补录表',
+                    //   type:"card",
+                    //   children: (
+                    //       renderTemplate({
+                    //           key: "scbaseinfo",
+                    //           prodCode:"fcCommitment",//目前没有做页面
+                    //           openType:"child",
+                    //           initParams:{editType:'display',subjectNumber:subjcode.current,search:'0'},
+                    //       },"coding")
+                    //   )
+                      
+                    // },
+                  
                     
                 ]}
-
-                >        
+>
+                      
                 </SDTabs>
                 </SDModal>
 )}

+ 10 - 2
Procedure/frontend/projectb/src/services/rwa/diffconfig_list.ts

@@ -58,7 +58,7 @@ term : String;
 //数据日期
 dataDate : String;
 //规则编号
-ruleId : String;
+ruleId : string;
 //规则名称
 ruleName : String;
 //总账科目号
@@ -111,8 +111,16 @@ export async function rule_list(body:any){
     ;
 }
 
+//差异容忍度规则校验
+export async function jiaoyan(body:difftoleranceModel){
+    return baseFun.request<String>('/api/product/rwa/resultList/DiffconfigListAction/jiaoyan',{
+        data:body
+    })
+    ;
+}
+
 export async function rule_list1(body:resultListModel){
-    return baseFun.request<TableData<resultListModel>[]>('/api/product/rwa/resultList/DiffconfigListAction/rule_list1',{
+    return baseFun.request<resultListModel[]>('/api/product/rwa/resultList/DiffconfigListAction/rule_list1',{
         data:body
     })
     ;

+ 8 - 2
Procedure/frontend/projectb/src/services/rwa/fcCommitment.ts

@@ -64,6 +64,7 @@ orgname1: String ;
 orgname2: String ; 
 custTypeId: String ; 
 busLineId: String ; 
+subjectNumber :String;
 
 }
 export async function getFcCommitment(body:any){
@@ -72,8 +73,13 @@ export async function getFcCommitment(body:any){
     // dats:modelcode
     })
     ;
-    
-    
+}
+export async function getFcCommitment1(subjectNumber:String){
+    return baseFun.request<FcCommitmentModel[]>('/api/product/rwa/parameter/FcCommitmentAction/getFcCommitment',{
+        params:{subjectNumber}
+    // dats:modelcode
+    })
+    ;
 }
      /** 全部导出 */
      export async function exportExcelModel(fileName:string,body:any) {

+ 3 - 2
Procedure/frontend/projectb/src/services/rwa/fcLoan.ts

@@ -108,6 +108,7 @@ export type FcLoanModel ={
      domDocFlagId: String ; 
      orgname1 :String;
      orgname2 :String;
+     subjectNumber :String;
 
 }
 export async function getFcLoan(body:any){
@@ -117,9 +118,9 @@ export async function getFcLoan(body:any){
     })
     ;
 }
-export async function getFcLoan1(loanReferenceNo:String){
+export async function getFcLoan1(subjectNumber:String){
     return baseFun.request<FcLoanModel[]>('/api/product/rwa/parameter/FcLoanAction/getFcLoan1',{
-        params:{loanReferenceNo}
+        params:{subjectNumber}
     // dats:modelcode
     })
     ;

+ 5 - 0
Procedure/frontend/projectb/src/services/rwa/product_list.ts

@@ -0,0 +1,5 @@
+import { baseFun, TableData } from "@sundata/ui-frame"
+
+export type productListModel={
+    
+}