From e6241c16c7831a7c2cc8d04a16a0b92f9c99ed1d Mon Sep 17 00:00:00 2001 From: geht <2947093423@qq.com> Date: Tue, 26 May 2026 10:26:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B7=B7=E7=82=BC=E7=A4=BA?= =?UTF-8?q?=E6=96=B9=E4=B8=AD=E6=8D=A2=E7=AE=97=E7=B3=BB=E6=95=B0=E5=92=8C?= =?UTF-8?q?=E9=85=8D=E6=96=B9=E5=8F=82=E6=95=B0=E7=9A=84=E6=95=B0=E5=80=BC?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E4=B8=8E=E8=BE=93=E5=85=A5=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=EF=BC=8C=E8=B0=83=E6=95=B4=E7=9B=B8=E5=85=B3=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E7=9A=84=E5=B0=8F=E6=95=B0=E7=B2=BE=E5=BA=A6=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=BC=BA=E7=94=A8=E6=88=B7=E4=BA=A4=E4=BA=92=E4=BD=93=E9=AA=8C?= =?UTF-8?q?=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mesXslMixingSpec/MesXslMixingSpec.data.ts | 75 ++++++++++++++++- .../components/MesXslMixingSpecModal.vue | 82 +++++++++++++++++-- 2 files changed, 150 insertions(+), 7 deletions(-) diff --git a/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/MesXslMixingSpec.data.ts b/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/MesXslMixingSpec.data.ts index 05dfa7d..a30678a 100644 --- a/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/MesXslMixingSpec.data.ts +++ b/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/MesXslMixingSpec.data.ts @@ -57,7 +57,7 @@ export const mainSchema: FormSchema[] = [ { label: '制作日期', field: 'makeDate', component: 'DatePicker', colProps: { span: 8 }, componentProps: { valueFormat: 'YYYY-MM-DD' } }, { label: '发行编号', field: 'issueNumber', component: 'Input', required: true, colProps: { span: 8 } }, //update-end---author:cursor ---date:20260522 for:【XSLMES-20260522-A33】混炼示方基本信息字段优化----------- - { label: '换算系数', field: 'convertFactor', component: 'InputNumber', colProps: { span: 8 }, componentProps: { precision: 6, style: { width: '100%' } } }, + { label: '换算系数', field: 'convertFactor', component: 'InputNumber', colProps: { span: 8 }, componentProps: { precision: 2, style: { width: '100%' } } }, { label: '填充体积', field: 'fillVolume', component: 'InputNumber', colProps: { span: 8 }, componentProps: { precision: 6, style: { width: '100%' } } }, { label: '回收炭黑(秒)', field: 'recycleCarbonSec', component: 'InputNumber', colProps: { span: 8 }, componentProps: { precision: 0, style: { width: '100%' } } }, { label: '母胶比重', field: 'motherRubberSg', component: 'InputNumber', colProps: { span: 8 }, componentProps: { precision: 6, style: { width: '100%' } } }, @@ -279,6 +279,79 @@ function toMixingMaterialNumber(value: unknown): number | null { /** 混炼示方重量小数位(与后端 BigDecimal 精度一致) */ const MIXING_MATERIAL_WEIGHT_SCALE = 6; +//update-begin---author:cursor ---date:20260526 for:【XSLMES-20260526-A60】换算系数/配方参数数值展示优化----------- +/** 换算系数展示小数位 */ +export const MIXING_CONVERT_FACTOR_SCALE = 2; + +/** 配方参数设定允许的小数精度 */ +export const MIXING_RECIPE_PARAM_DECIMAL_SCALE = 6; + +/** 配方参数设定:允许小数的字段 */ +export const MIXING_RECIPE_PARAM_DECIMAL_FIELDS = [ + 'sideWallWaterTemp', + 'overtempDischargeTemp', + 'doorWaterTemp', + 'rotorWaterTemp', + 'maxFeedTemp', +] as const; + +/** 换算系数展示:固定保留两位小数 */ +export function formatMixingConvertFactorDisplay(value: unknown): string { + if (value === null || value === undefined || value === '') { + return ''; + } + const num = Number(value); + if (Number.isNaN(num)) { + return String(value); + } + return num.toFixed(MIXING_CONVERT_FACTOR_SCALE); +} + +/** 换算系数输入解析 */ +export function parseMixingConvertFactorValue(value: unknown): number | null { + if (value === '' || value == null) { + return null; + } + const num = Number(String(value).replace(/,/g, '').trim()); + if (Number.isNaN(num)) { + return null; + } + return Number(num.toFixed(MIXING_CONVERT_FACTOR_SCALE)); +} + +/** 配方参数展示:允许小数,无小数部分时仅展示整数 */ +export function formatMixingRecipeParamDisplay(value: unknown, maxPrecision = MIXING_RECIPE_PARAM_DECIMAL_SCALE): string { + if (value === null || value === undefined || value === '') { + return ''; + } + const num = Number(value); + if (Number.isNaN(num)) { + return String(value); + } + const rounded = Number(num.toFixed(maxPrecision)); + if (Number.isInteger(rounded)) { + return String(rounded); + } + return String(rounded); +} + +/** 配方参数输入解析 */ +export function parseMixingRecipeParamValue(value: unknown): number | null { + if (value === '' || value == null) { + return null; + } + const text = String(value).replace(/,/g, '').trim(); + if (!text) { + return null; + } + const num = Number(text); + if (Number.isNaN(num)) { + return null; + } + return Number(num.toFixed(MIXING_RECIPE_PARAM_DECIMAL_SCALE)); +} +//update-end---author:cursor ---date:20260526 for:【XSLMES-20260526-A60】换算系数/配方参数数值展示优化----------- + /** 重量四舍五入,消除浮点累加误差 */ function roundMixingMaterialNumber(value: number): number { return Number(value.toFixed(MIXING_MATERIAL_WEIGHT_SCALE)); diff --git a/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/components/MesXslMixingSpecModal.vue b/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/components/MesXslMixingSpecModal.vue index 3f61b6a..6b8c87a 100644 --- a/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/components/MesXslMixingSpecModal.vue +++ b/jeecgboot-vue3/src/views/xslmes/mesXslMixingSpec/components/MesXslMixingSpecModal.vue @@ -67,7 +67,9 @@ 侧壁水温 - + 超时排胶时间 @@ -158,21 +168,53 @@ 超温排胶温度 - + 卸料门水温 - + 转子水温 - + 最高进料温度 - + @@ -474,6 +516,10 @@ import { calcMixingMaterialAccumWeightTotal, buildMixingMaterialFooterCells, normalizeMixingConvertFactor, + formatMixingConvertFactorDisplay, + parseMixingConvertFactorValue, + formatMixingRecipeParamDisplay, + parseMixingRecipeParamValue, initMaterialBaseUnitWeights, applyConvertFactorToMaterialRows, syncMaterialBaseUnitWeightFromDisplay, @@ -682,6 +728,30 @@ function stripMaterialRowForSave(row: Recordable) { const { baseUnitWeight: _baseUnitWeight, ...rest } = row; return rest; } + +//update-begin---author:cursor ---date:20260526 for:【XSLMES-20260526-A60】换算系数/配方参数数值展示优化----------- +function formatConvertFactorInput(value: string | number, info?: { userTyping?: boolean }) { + if (info?.userTyping) { + return value == null ? '' : String(value); + } + return formatMixingConvertFactorDisplay(value); +} + +function parseConvertFactorInput(value: string) { + return parseMixingConvertFactorValue(value); +} + +function formatRecipeParamInput(value: string | number, info?: { userTyping?: boolean }) { + if (info?.userTyping) { + return value == null ? '' : String(value); + } + return formatMixingRecipeParamDisplay(value); +} + +function parseRecipeParamInput(value: string) { + return parseMixingRecipeParamValue(value); +} +//update-end---author:cursor ---date:20260526 for:【XSLMES-20260526-A60】换算系数/配方参数数值展示优化----------- //update-end---author:cursor ---date:20260525 for:【XSLMES-20260525-A43】换算系数联动明细单重实时计算----------- function recalcMaterialAccumWeight() {