|
@@ -1,11 +1,13 @@
|
|
|
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 { baseFun, EditType, SDAreaTtile, SDButton, SDForm, SDFormText, SDLayout, SDModal, SDModalForm, SDOperate, SDPage, SDSubmitButton, SDTable } from '@sundata/ui-frame';
|
|
|
-import { exportExcelModel, productlist,selectRiskList, productListModel, product_addone, product_addone1, product_addone2, product_deleteone, product_deleteone1, product_modifyone, product_modifyone1, product_modifyone2, product_querylist, rwaCalcConfOffbalanceprotyperuleModel, rwaCalcConfProductrulesModel, select ,riskListModel} from '@/services/rwa/product_list';
|
|
|
+import { baseFun, EditType, SDAreaTtile, SDButton, SDForm, SDFormDict, SDFormText, SDLayout, SDModal, SDModalForm, SDOperate, SDPage, SDSubmitButton, SDTable } from '@sundata/ui-frame';
|
|
|
+import { exportExcelModel, productlist,selectRiskList, productListModel, product_addone, product_addone1, product_addone2, product_deleteone, product_deleteone1, product_modifyone, product_modifyone1, product_modifyone2, product_querylist, rwaCalcConfOffbalanceprotyperuleModel, rwaCalcConfProductrulesModel, select ,riskListModel, jiaoyan} from '@/services/rwa/product_list';
|
|
|
import { fetchDictList } from '@/services/sysMng/nounMng';
|
|
|
import { useModel } from '@umijs/max';
|
|
|
import { WomanOutlined } from '@ant-design/icons';
|
|
|
+import { toNumber } from 'lodash';
|
|
|
+
|
|
|
|
|
|
type aaa = {
|
|
|
productNo :String;
|
|
@@ -17,11 +19,9 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
const [visible1,setVisible1] = useState<boolean>(false);//弹窗是否显示
|
|
|
const [visible3,setVisible3] = useState<boolean>(false);//弹窗是否显示
|
|
|
const [riskExportVisible,setRiskExportVisible] = useState<boolean>(false);//弹窗是否显示
|
|
|
- const [count,setCount] = useState<number>(0);
|
|
|
- const [count1,setCount1] = useState<string>();
|
|
|
const formRef = useRef<FormInstance<any>>();
|
|
|
const [editType, setEditType] = useState<EditType>('create');
|
|
|
- const [editType1, setEditType1] = useState<EditType>('update');
|
|
|
+ const [editType1, setEditType1] = useState<EditType>('create');
|
|
|
const [state,setState] = useState<String>();
|
|
|
const { fetchDict } = useModel('dict');
|
|
|
const actionRef = useRef<ActionType>();
|
|
@@ -41,6 +41,7 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
|
|
|
const [mockData, setMockData] = useState<rwaCalcConfProductrulesModel[]>([]);
|
|
|
const [mockData1, setMockData1] = useState<rwaCalcConfOffbalanceprotyperuleModel[]>([]);
|
|
|
+ const [editRuleNo, setEditRuleNo] = useState<any>();
|
|
|
const [riskMockData, setRiskMockData] = useState<riskListModel[]>([]);
|
|
|
const closeAndRefresh = ()=>{
|
|
|
setVisible(false);
|
|
@@ -57,12 +58,26 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
}
|
|
|
//保存产品参数
|
|
|
const inst =async(formData1 : productListModel)=>{
|
|
|
- console.log(formData1);
|
|
|
- await product_addone(formData1);
|
|
|
+ if(mockData.length<=0){
|
|
|
+ baseFun.warning("科目取数规则列表中至少有一条记录");
|
|
|
+ }else{
|
|
|
+ if(editType=='create'){
|
|
|
+ const yamzheng = await jiaoyan(formData1.productNo);
|
|
|
+ if(yamzheng>=1){
|
|
|
+ baseFun.warning("产品代码已存在,请重新输入");
|
|
|
+ }else{
|
|
|
+ await product_addone({...formData1});
|
|
|
const aa =formData1.productNo
|
|
|
- console.log("11111111")
|
|
|
//科目取数规则
|
|
|
inst1(aa);
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ await product_addone({...formData1});
|
|
|
+ const aa =formData1.productNo
|
|
|
+ //科目取数规则
|
|
|
+ inst1(aa);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
const inst1 =async(aa:any)=>{
|
|
|
await product_addone1(mockData,aa);
|
|
@@ -75,12 +90,19 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
if (res=='新增成功') {
|
|
|
if(editType != 'update'){
|
|
|
const sd = await product_querylist(null);
|
|
|
+ setEditType1('update');
|
|
|
setMockData(sd)
|
|
|
+ }else{
|
|
|
+ const sd = await product_querylist(state1);
|
|
|
+ setEditType1('update');
|
|
|
+ setMockData(sd)
|
|
|
+
|
|
|
}
|
|
|
+ actionRef1.current?.reloadAndRest?.();
|
|
|
+ setVisible1(false);
|
|
|
}
|
|
|
|
|
|
- actionRef1.current?.reloadAndRest?.();
|
|
|
- setVisible1(false);
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
@@ -99,9 +121,15 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
|
|
|
}
|
|
|
//产品参数页面点修改的查询
|
|
|
+
|
|
|
const data1 =async(record:any)=>{
|
|
|
const sd = await product_modifyone1(record.productNo);
|
|
|
- formRef1.current?.setFieldsValue(sd);
|
|
|
+ const colorsArray = sd.productFromSystems.split(',');
|
|
|
+ let i=0;
|
|
|
+ formRef1.current?.setFieldValue("productFromSystem",colorsArray)
|
|
|
+ const {productFromSystem,...sd1}=sd
|
|
|
+ formRef1.current?.setFieldsValue(sd1);
|
|
|
+
|
|
|
setVisible(true)
|
|
|
data2(record.productNo)
|
|
|
|
|
@@ -182,7 +210,7 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
{ title : '产品大类',
|
|
|
dataIndex : 'productType',
|
|
|
valueType:"select",
|
|
|
- request:()=>fetchDict(''),
|
|
|
+ request:()=>fetchDict('PRODUCT_TYPE'),
|
|
|
width : 150
|
|
|
},
|
|
|
|
|
@@ -208,7 +236,7 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
},
|
|
|
|
|
|
{ title : '来源系统',
|
|
|
- dataIndex : 'productFromSystem',
|
|
|
+ dataIndex : 'productFromSystems',
|
|
|
search:false,
|
|
|
hideInTable:false,
|
|
|
width : 150
|
|
@@ -282,7 +310,7 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
>
|
|
|
风险暴露分类规则
|
|
|
</SDOperate>,
|
|
|
- <span style={record?.productBussinessCode==="作废" ? {display:'none'}: {}}>
|
|
|
+ <span style={record?.productBussinessCode=="表外业务" ? {display:'none'}: {}}>
|
|
|
<SDOperate
|
|
|
key="roleCfg"
|
|
|
icon={<WomanOutlined />}
|
|
@@ -398,7 +426,7 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
selectdata(record);
|
|
|
setVisible(true);
|
|
|
|
|
|
- setEditType('update')
|
|
|
+ setEditType1('update')
|
|
|
} }
|
|
|
>
|
|
|
修改
|
|
@@ -410,7 +438,7 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
onClick={()=>{
|
|
|
deldata1(record);
|
|
|
setVisible(true);
|
|
|
- setEditType('update')
|
|
|
+ setEditType1('update')
|
|
|
} }
|
|
|
>
|
|
|
删除
|
|
@@ -489,14 +517,28 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
},
|
|
|
]
|
|
|
|
|
|
- function counter(counts:number) {
|
|
|
- counts = counts+1;
|
|
|
- setCount(counts);
|
|
|
- // `${(counts)}`.padStart(3, '0');
|
|
|
- // count++; // 每次调用时自增
|
|
|
- return `${(counts)}`.padStart(3, '0');
|
|
|
- };
|
|
|
-
|
|
|
+
|
|
|
+ // 编辑规则编号
|
|
|
+const setRuleNoAdd = () => {
|
|
|
+ let lastEditRuleNo ="";
|
|
|
+ if (mockData !== null || mockData !== undefined) {
|
|
|
+ if (mockData?.length == 0) {
|
|
|
+ lastEditRuleNo = "PROD" + state1 + String('001');
|
|
|
+ } else {
|
|
|
+ let lastNo = mockData?.filter((item)=>{
|
|
|
+ return item.ruleCode == mockData[mockData.length-1].ruleCode;
|
|
|
+ })[0].ruleCode;
|
|
|
+ let numberNo = lastNo?.substring(lastNo.length-3,lastNo.length);
|
|
|
+ let castnumber = toNumber(numberNo);
|
|
|
+ castnumber = castnumber+1;
|
|
|
+ lastEditRuleNo = "PROD" + state1 + castnumber.toString().padStart(3,'0');
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ lastEditRuleNo = "PROD" + state1 + String('001');
|
|
|
+ }
|
|
|
+ setEditRuleNo(lastEditRuleNo);
|
|
|
+ // formRef2.current?.setFieldValue('ruleNo',lastEditRuleNo)
|
|
|
+}
|
|
|
|
|
|
const getButtons = ()=>{
|
|
|
const nodes: React.ReactNode[] = [];
|
|
@@ -532,7 +574,7 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
setVisible(true);
|
|
|
setEditType('create')
|
|
|
setState("1")
|
|
|
- setMockData([]);
|
|
|
+ //setMockData([]);
|
|
|
}}
|
|
|
>
|
|
|
新增
|
|
@@ -554,7 +596,7 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
<SDModalForm title={''} visible={visible} editType={editType} onVisibleChange={() => { setVisible(false); }}
|
|
|
// footer={<span style={editType =='display'?{display:'none'}:{}}>[<SDSubmitButton editType={editType} formRef={formRef1} successMessage="" doSubmit={inst} >保存</SDSubmitButton>,
|
|
|
// <SDButton successMessage="" onClick={()=>closeAndRefresh()} >关闭</SDButton>]</span>}
|
|
|
- footer={[editType == setEditType?[]:getButtons()]}
|
|
|
+ footer={[editType.toString== setEditType?[]:getButtons()]}
|
|
|
formRef={formRef1}
|
|
|
onValuesChange={(changedValues,Values)=>{setState1(Values.productNo)}}
|
|
|
>
|
|
@@ -565,14 +607,14 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
<SDFormText name="term" label="年月" />
|
|
|
<SDFormText name="dataDate" label="数据日期" />
|
|
|
</span>
|
|
|
- <SDFormText name="productNo" label="产品代码" />
|
|
|
- <SDFormText name="productName" label="产品名称" />
|
|
|
- <SDFormText name="productType" label="产品大类" />
|
|
|
+ <SDFormText name="productNo" label="产品代码" rules={[{max:20, message:'名称长度不能超过20位'}]} required/>
|
|
|
+ <SDFormText name="productName" label="产品名称" rules={[{max:100, message:'名称长度不能超过50个汉字'}]} required/>
|
|
|
+ <SDFormDict name="productType" label="产品大类" required dictKey='PRODUCT_TYPE'/>
|
|
|
<SDFormText name="productIndex" label="产品序号" />
|
|
|
- <SDFormText name="productStageId" label="所属阶段" />
|
|
|
- <SDFormText name="productFromSystem" label="来源系统" />
|
|
|
- <SDFormText name="defaultOut" label="默认输出数据源" />
|
|
|
- <SDFormText name="productBussinessCode" label="所属业务" />
|
|
|
+ <SDFormDict name="productStageId" label="所属阶段" />
|
|
|
+ <SDFormDict name="productFromSystem" label="来源系统" multiple={true} dictKey='PRODUCTFROMSYSTEM' required/>
|
|
|
+ <SDFormDict name="defaultOut" label="默认输出数据源" />
|
|
|
+ <SDFormDict name="productBussinessCode" label="所属业务" />
|
|
|
<SDFormText name="defaultGetdatarule" label="默认取数逻辑" />
|
|
|
|
|
|
<SDAreaTtile title='科目取数规则列表' />
|
|
@@ -583,13 +625,16 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
actionRef={actionRef1}
|
|
|
formRef={formRef3}
|
|
|
dataSource={mockData}
|
|
|
- request={(async (formData1:rwaCalcConfProductrulesModel)=>{
|
|
|
+ request={(async ()=>{
|
|
|
if(editType==='create'){
|
|
|
- const sd1 = await product_querylist(formData1)
|
|
|
+ const sd1 = await product_querylist(null)
|
|
|
formDataList1 = [...sd1]
|
|
|
+ if(editType1 == 'create'){
|
|
|
+ setMockData([]);
|
|
|
+ }
|
|
|
return {data:sd1}
|
|
|
}else{
|
|
|
- const sd1 = await product_querylist(mockData[0].productNo)
|
|
|
+ var sd1 = await product_querylist(mockData[0].productNo)
|
|
|
setMockData(sd1);
|
|
|
return {data:sd1}
|
|
|
}
|
|
@@ -605,8 +650,9 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
onClick={async() => {
|
|
|
setVisible1(true);
|
|
|
setEditType1('create');
|
|
|
- setCount1("PROD"+state1+counter(count) )
|
|
|
- formRef2.current?.setFieldValue("ruleCode",count1)
|
|
|
+ // setCount1("PROD"+state1+counter(count) )
|
|
|
+ // formRef2.current?.setFieldValue("ruleCode",count1)
|
|
|
+ setRuleNoAdd()
|
|
|
}}
|
|
|
>
|
|
|
新增
|
|
@@ -623,7 +669,7 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
<SDButton successMessage="" onClick={() => closeAndRefresh1()}>关闭</SDButton>]} onVisibleChange={()=>{setVisible1(false); } }
|
|
|
>
|
|
|
<SDLayout>
|
|
|
-<SDForm editType={editType1} formRef={formRef2} initialValues={{ruleCode:count1}} >
|
|
|
+<SDForm editType={editType1} formRef={formRef2} initialValues={{ruleCode:editRuleNo}} >
|
|
|
<span style={{display:'none'}}>
|
|
|
<SDFormText name="calcindex" label="计算实例号" />
|
|
|
<SDFormText name="sdate" label="起始数据日期" />
|
|
@@ -634,7 +680,7 @@ const product_list: React.FC<aaa>= (prop : aaa) => {
|
|
|
</span>
|
|
|
<SDFormText name="ruleCode" label="规则编号" readonlyCond ='update'/>
|
|
|
<SDFormText name="ruleName" label="规则说明" />
|
|
|
- <SDFormText name="dataType" label="数据类型" />
|
|
|
+ <SDFormDict name="dataType" label="数据类型" dictKey='DATA_TYPE' />
|
|
|
<SDFormText name="ruleSubject" label="对应科目" />
|
|
|
<SDFormText name="ruleIn" label="输入" />
|
|
|
<SDFormText name="ruleOut" label="输出" />
|