From f3641cd242379a558cfbe56d2a2436e05b926f28 Mon Sep 17 00:00:00 2001
From: luojie <125330818@qq.com>
Date: Sun, 12 Apr 2026 21:51:12 +0800
Subject: [PATCH] =?UTF-8?q?feat:[=E6=A8=A1=E6=9D=BF=E7=AE=A1=E7=90=86][upd?=
=?UTF-8?q?ate]?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/components/Template/DecimalInput.vue | 51 ++++++++++++----------
src/components/Template/HandleFormItem.vue | 16 ++++---
src/components/Template/StepComponents/ry/bdzl.vue | 9 +++-
src/components/Template/StepComponents/ry/fr.vue | 2 +-
src/components/Template/StepComponents/ry/fy.vue | 2 +-
.../Template/StepComponents/ry/tjphcz.vue | 11 ++++-
.../Template/StepComponents/ry/tpjydd.vue | 8 +++-
.../Template/mixins/formPackageMixins.js | 12 ++---
src/components/Template/mixins/stepMixins.js | 39 +++++++++++++----
src/utils/tpph.js | 1 -
.../comps/template/mixins/templateMixin.js | 1 -
11 files changed, 101 insertions(+), 51 deletions(-)
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 @@
{{ prepend }}
+
+ {{ append }}
+
@@ -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)
}
}