diff --git a/src/components/Template/DecimalInput.vue b/src/components/Template/DecimalInput.vue index 1eb3897..49fdb51 100644 --- a/src/components/Template/DecimalInput.vue +++ b/src/components/Template/DecimalInput.vue @@ -5,6 +5,9 @@ + @@ -32,6 +35,10 @@ export default { type: String, default: '' }, + append: { + type: String, + default: '' + }, }, data() { return { @@ -108,7 +115,7 @@ export default { this.isNA = false; } } - + // 检查是否匹配特殊模式(NA或FRACTION) // 优先检查完整的NA模式 if (/^NA$/i.test(upperVal)) { @@ -123,7 +130,7 @@ export default { // 检查FRACTION模式 matchedRule = this.getMatchingRule(val); } - + if (matchedRule) { if (matchedRule.name === 'FRACTION') { cleaned = val.replace(/[^\d/]/g, ''); @@ -141,10 +148,10 @@ export default { } else { // 处理数字和小数点输入 // 当 decimalDigits 为 0 时,不允许输入小数点 - const allowedPattern = this.decimalDigits === 0 ? /[^\d-]/g : /[^\d.-]/g; + // 禁止输入负数符号 + const allowedPattern = this.decimalDigits === 0 ? /[^\d]/g : /[^\d.]/g; cleaned = val - .replace(allowedPattern, '') - .replace(/^(-)\1+/, '$1'); + .replace(allowedPattern, ''); // 确保只有一个小数点 const firstDotIndex = cleaned.indexOf('.'); @@ -166,28 +173,26 @@ export default { // 处理以小数点开头的情况(仅当允许小数时) if (this.decimalDigits > 0) { if (cleaned === '.') cleaned = '0.'; - else if (cleaned === '-.') cleaned = '-0.'; else if (cleaned.startsWith('.')) cleaned = '0' + cleaned; - else if (cleaned.startsWith('-.')) cleaned = '-0.' + cleaned.slice(2); } // 处理整数部分的前导零 if (cleaned.includes('.')) { const [int, dec] = cleaned.split('.'); let newInt = int; - if (/^-?0+\d/.test(int)) { - newInt = int.replace(/^-?0+(\d)/, '$1'); - } else if (int === '' || int === '-') { - newInt = int + '0'; - } else if (int === '00' || /^-00+$/.test(int)) { - newInt = int.startsWith('-') ? '-0' : '0'; + if (/^0+\d/.test(int)) { + newInt = int.replace(/^0+(\d)/, '$1'); + } else if (int === '') { + newInt = '0'; + } else if (int === '00' || /^00+$/.test(int)) { + newInt = '0'; } cleaned = newInt + '.' + dec; } else { - if (/^-?0+\d/.test(cleaned)) { - cleaned = cleaned.replace(/^-?0+(\d)/, '$1'); - } else if (cleaned === '00' || /^-00+$/.test(cleaned)) { - cleaned = cleaned.startsWith('-') ? '-0' : '0'; + if (/^0+\d/.test(cleaned)) { + cleaned = cleaned.replace(/^0+(\d)/, '$1'); + } else if (cleaned === '00' || /^00+$/.test(cleaned)) { + cleaned = '0'; } } } @@ -218,7 +223,7 @@ export default { const actVal = val || this.internalValue; let finalValue = actVal.trim(); - if (finalValue === '' || finalValue === '-') { + if (finalValue === '') { return ''; } @@ -242,7 +247,7 @@ export default { handleBlur() { const val = this.internalValue.trim(); - + if (val === '') { this.oldValue = null; this.oldPattern = null; @@ -253,7 +258,7 @@ export default { } const upperVal = val.toUpperCase(); - + // 检查是否匹配特殊模式 for (const rule of this.patternRules) { if (rule.pattern.test(upperVal)) { @@ -271,7 +276,7 @@ export default { if (val.includes('/')) { const parts = val.split('/'); const validParts = parts.filter(part => part !== ''); - + if (validParts.length === 0) { if (this.oldValue) { this.internalValue = this.oldValue; @@ -284,7 +289,7 @@ export default { } return; } - + if (validParts.length === 1) { const result = validParts[0]; this.oldValue = result; @@ -294,7 +299,7 @@ export default { this.$emit('blur', result); return; } - + const formattedValue = validParts.join('/'); this.oldValue = formattedValue; this.oldPattern = this.patternRules.find(r => r.name === 'FRACTION'); diff --git a/src/components/Template/HandleFormItem.vue b/src/components/Template/HandleFormItem.vue index a11a224..49b53b7 100644 --- a/src/components/Template/HandleFormItem.vue +++ b/src/components/Template/HandleFormItem.vue @@ -13,7 +13,7 @@ @input="onInputChange" @change="onInputChange" /> item.url).join("|"); url = attList.map(item => item.url).join("|"); } - + if (recordData) { + recordOldVlaue = recordData.oldValue; + recordValue = recordData.inputValue; + } const record = { ...baseInfo, oldValue: recordOldVlaue, @@ -1617,6 +1617,7 @@ export default { .orange-border { .el-input-group__prepend, + .el-input-group__append, input, textarea { border-color: #f9c588; @@ -1696,6 +1697,7 @@ export default { .green-border { .el-input-group__prepend, + .el-input-group__append, input, textarea { border-color: green; @@ -1718,6 +1720,7 @@ export default { .blue-border { .el-input-group__prepend, + .el-input-group__append, input, .el-checkbox__inner, textarea { @@ -1741,6 +1744,7 @@ export default { .error-border { .el-input-group__prepend, + .el-input-group__append, .el-input__inner, textarea, .el-select, diff --git a/src/components/Template/StepComponents/ry/bdzl.vue b/src/components/Template/StepComponents/ry/bdzl.vue index aafa222..6967a3e 100644 --- a/src/components/Template/StepComponents/ry/bdzl.vue +++ b/src/components/Template/StepComponents/ry/bdzl.vue @@ -14,7 +14,6 @@ import stepMixins from '@/components/Template/mixins/stepMixins.js'; }, computed: { formConfig() { - console.log(this.stepIndex,"stepIndex") return [{ config:{ text1:{ @@ -50,11 +49,19 @@ import stepMixins from '@/components/Template/mixins/stepMixins.js'; compareTo:"rm", disabled:true, }, + sjbdtjdw:{ + type:"inputNumber", + fillType:"actFill", + compareTo:"bdtjdw", + disabled:true, + }, + button1:{ type:"button", dataSource:"tp",//数据来源 yqCode:"yq",//选择天平的字段 fillField:"sjbdtj",//回填的字段 + fillDwField:"sjbdtjdw",//回填的单位字段 dwField:"bdtjdw",//单位字段 buttonName:"获取值", }, diff --git a/src/components/Template/StepComponents/ry/fr.vue b/src/components/Template/StepComponents/ry/fr.vue index 6757265..54770cc 100644 --- a/src/components/Template/StepComponents/ry/fr.vue +++ b/src/components/Template/StepComponents/ry/fr.vue @@ -49,7 +49,7 @@ import stepMixins from '@/components/Template/mixins/stepMixins.js'; dwCode: "sjtjdw", }, text3:{ - label:"溶液,各预计加入休积为", + label:"溶液,预计加入体积为", type:"text", }, yjtj:{ diff --git a/src/components/Template/StepComponents/ry/fy.vue b/src/components/Template/StepComponents/ry/fy.vue index 803561b..9b059e4 100644 --- a/src/components/Template/StepComponents/ry/fy.vue +++ b/src/components/Template/StepComponents/ry/fy.vue @@ -55,7 +55,7 @@ export default { copyFrom:"yjtj", }, text4: { - label: ",进行孵育", + label: ",对上表进行孵育", type: "text", }, fysr: { diff --git a/src/components/Template/StepComponents/ry/tjphcz.vue b/src/components/Template/StepComponents/ry/tjphcz.vue index 8a6f532..7dbeebd 100644 --- a/src/components/Template/StepComponents/ry/tjphcz.vue +++ b/src/components/Template/StepComponents/ry/tjphcz.vue @@ -1,6 +1,11 @@ diff --git a/src/components/Template/mixins/formPackageMixins.js b/src/components/Template/mixins/formPackageMixins.js index d44cea9..a112da5 100644 --- a/src/components/Template/mixins/formPackageMixins.js +++ b/src/components/Template/mixins/formPackageMixins.js @@ -139,7 +139,7 @@ export default { }, //更新表单数据 updateFormData(key, value, data) { - const { isUpdateRecord, signData } = data || {} + const { isUpdateRecord, signData,record } = data || {} // 深拷贝当前表单数据,避免直接修改原数据 const cloneFormFields = JSON.parse(JSON.stringify(this.formFields)) @@ -149,13 +149,13 @@ export default { if (this.errors[key]) { this.$set(this.errors, key, false) } - - if (isUpdateRecord) { - setTimeout(() => { - this.$refs[key][0].handleUpdateRecord(signData, { + const re = record||{ oldValue: this.oldFormFields[key], inputValue: value - }) + } + if (isUpdateRecord) { + setTimeout(() => { + this.$refs[key][0].handleUpdateRecord(signData, re) }, 10) } }, diff --git a/src/components/Template/mixins/stepMixins.js b/src/components/Template/mixins/stepMixins.js index d617fde..feefa7b 100644 --- a/src/components/Template/mixins/stepMixins.js +++ b/src/components/Template/mixins/stepMixins.js @@ -1,7 +1,7 @@ import { getuuid, justUpdateFilledFormData } from '@/utils/index.js' import { EventBus } from '@/utils/eventBus' import { getLatestSn, getLatestSnArr } from '@/api/template' -import { getBalance } from '@/utils/tpph.js'; +import { getBalance, getPh } from '@/utils/tpph.js'; export default { inject: { templateFillType: { default: 'preFill' }, @@ -157,11 +157,15 @@ export default { const { buttonName } = item; if (buttonName === '获取值') { const { dataSource, yqCode } = item; - if (dataSource === "tp") {//电子天平 - const stepFormData = this.getFilledFormData() + const stepFormData = this.getFilledFormData() + if (dataSource === "tp" || dataSource === "ph") {//电子天平或PH测量仪 const yq = stepFormData[yqCode] || ""; + const obj = { + tp:"请选择电子天平", + ph:"请选择PH测量仪" + } if (!yq) { - callback.prevent("请选择电子天平") + callback.prevent(obj[dataSource]) } } } @@ -218,20 +222,37 @@ export default { uuid: this.uuid, }) } else if (buttonName === '获取值') { - const { dataSource, dwField = "", fillField, yqCode } = e; + const { dataSource, dwField = "", fillField,fillDwField = "", yqCode } = e; + const stepFormData = this.getFilledFormData() + const yqInfo = stepFormData[`yqInfo_${yqCode}`] || {}; if (dataSource === "tp") {//电子天平 - const stepFormData = this.getFilledFormData() - const yqInfo = stepFormData[`yqInfo_${yqCode}`] || {}; const dw = stepFormData[dwField] || ""; - + const oldValue = stepFormData[fillDwField] || ""; const result = await getBalance({ yq: yqInfo, dw }); if (result.success) { const value = dw?result.value:`${result.value}${result.unit}` - this.$refs.stepFormPackageRef.updateFormData(fillField, value,{isUpdateRecord:true,signData}) + if(fillDwField){//需要回填的单位字段 + this.$refs.stepFormPackageRef.updateFormData(fillField, value) + this.$refs.stepFormPackageRef.updateFormData(fillDwField, result.unit,{isUpdateRecord:true,signData,record:{ + oldValue, + inputValue:result.value+result.unit + }}) + }else{ + this.$refs.stepFormPackageRef.updateFormData(fillField, value,{isUpdateRecord:true,signData}) + } + + } else { this.$message.error(result.message || "获取值失败"); } + }else if(dataSource === "ph"){ + const result = await getPh({ yq: yqInfo }); + if (result.success) { + this.$refs.stepFormPackageRef.updateFormData(fillField, result.value,{isUpdateRecord:true,signData}) + } else { + this.$message.error(result.message || "获取值失败"); + } } } }, diff --git a/src/utils/tpph.js b/src/utils/tpph.js index 4051866..e4c205b 100644 --- a/src/utils/tpph.js +++ b/src/utils/tpph.js @@ -6,7 +6,6 @@ import { Message } from 'element-ui' export async function getBalance(obj) { // alert('入参:' + JSON.stringify(obj)) - debugger return { success: true, originalValue: '1000', diff --git a/src/views/business/comps/template/mixins/templateMixin.js b/src/views/business/comps/template/mixins/templateMixin.js index 647bd2e..f69c221 100644 --- a/src/views/business/comps/template/mixins/templateMixin.js +++ b/src/views/business/comps/template/mixins/templateMixin.js @@ -192,7 +192,6 @@ export default { this.formData = { ...this.formData, expireDate: end } } - console.log(this.formData, 'formData from templateData') this.setTemplateData(v) } }