diff --git a/src/components/PageElement/elements/document/Table/ListTable.tsx b/src/components/PageElement/elements/document/Table/ListTable.tsx index 26b52d3315e62d0fd13fcf2060fc9b0eab5273ad..070644c5609d60265aab62996f99c6c65b218402 100644 --- a/src/components/PageElement/elements/document/Table/ListTable.tsx +++ b/src/components/PageElement/elements/document/Table/ListTable.tsx @@ -62,7 +62,7 @@ function ListTableView(props: Props) { useEffect(() => { loadForm(); - }, [props.form,summaryFields]); + }, [props.form,summaryFields,props.fields,data,summary]); async function loadForm() { if (!props.form) { diff --git a/src/ts/scripting/core/rule/SplitHandler.ts b/src/ts/scripting/core/rule/SplitHandler.ts index d7e6a9c3e8570b26f1ed89d123c69df4245dd88d..7eff22095a26d1e578d33143e628a561c56ca630 100644 --- a/src/ts/scripting/core/rule/SplitHandler.ts +++ b/src/ts/scripting/core/rule/SplitHandler.ts @@ -149,15 +149,22 @@ export default class SplitHandler implements IService { for (let i = 0; i < splitNum; i++) { let newAsset = deepClone(this.curSplitAsset); for (const key of this.detailSplitFields) { - if (data[key.id] && ['数值型', '货币型'].includes(key.valueType)) { + let targetField = this.service.model.fields[this.splitPrimaryFormId].find(item => item.propId == key.propId); + let targetData; + if(!data[key.id] && targetField){ + targetData = data[targetField.id] + } else { + targetData = data[key.id] + } + if (targetData && ['数值型', '货币型'].includes(key.valueType)) { const splitRatio = Math.floor(data[splitTarget] / splitNum); // 计算每份的大致值 - const avgValue = Number(data[key.id] / data[splitTarget]); + const avgValue = Number(targetData / data[splitTarget]); newAsset[key.id] = Number((avgValue * splitRatio).toFixed(2)); if (i === splitNum - 1) { const remainder = Number((avgValue * splitRatio).toFixed(2)) * 100; newAsset[key.id] = Number( - (data[key.id] - (remainder * (splitNum - 1)) / 100).toFixed(2), + (targetData - (remainder * (splitNum - 1)) / 100).toFixed(2), ); } } @@ -314,6 +321,7 @@ export default class SplitHandler implements IService { /** 加载子表字段 */ loadDetailFields() { const allDetailFields = this.service.model.fields[this.splitDetailFormId]; + console.log(allDetailFields,this.service.model.fields) const detailConditions = allDetailFields.filter( (item) => item.options?.asyncGeneateConditions !== undefined, ); diff --git a/src/ts/scripting/core/services/WorkFormService.ts b/src/ts/scripting/core/services/WorkFormService.ts index d85d3e72fe98f3bbfb2619dcbd1718b0418b2876..2a8565c8c9bfd8bbc6eec0e13cbbc09025c6ab09 100644 --- a/src/ts/scripting/core/services/WorkFormService.ts +++ b/src/ts/scripting/core/services/WorkFormService.ts @@ -263,10 +263,15 @@ export default class WorkFormService extends mixins( const { detailConditions, detailFields } = this.loadDetailCombinationFields( splitRule.combination?.detailFormId || '', ); - const primaryCardNumD = this.model.primary[detailConditions[0].id]; + let primaryCardNumD = this.model.primary[detailConditions[0].id]; + if(!primaryCardNumD){ + let targetField = this.model.fields[this.model.node.primaryForms[0].id].find(item => item.propId == detailConditions[0].propId) + if(targetField){ + primaryCardNumD = this.model.primary[targetField.id]; + } + } const detailsData = this.model.data[splitRule.combination?.detailFormId || ''][0].after; - // 校验子表卡片编号的完整性 const isIncludeCardNum = detailsData .map((i) => i[detailConditions[0].id]) @@ -287,9 +292,17 @@ export default class WorkFormService extends mixins( for (let i = 0; i < detailFields.length; i++) { const field = detailFields[i]; const curFieldDatas = detailsData.map((detail) => Number(detail[field.id])); - + let primaryFieldValue = 0; + if(this.model.primary[field.id]){ + primaryFieldValue = this.model.primary[field.id]; + } else { + let targetField = this.model.fields[this.model.node.primaryForms[0].id].find(item => item.propId == field.propId) + if(targetField){ + primaryFieldValue = this.model.primary[targetField.id]; + } + } if ( - _.sum(curFieldDatas).toFixed(2) != Number(this.model.primary[field.id]).toFixed(2) + _.sum(curFieldDatas).toFixed(2) != Number(primaryFieldValue).toFixed(2) ) { message.show(`${field.name}总计错误,拆分后账单不平`, 'error', 5000); result = false;