Forráskód Böngészése

实验室面基 4位数2位小数

dedsudiyu 1 hete
szülő
commit
ba07d30305

+ 23 - 2
src/views/integratedManagement/laboratoryManagement/subject/addSubject.vue

@@ -86,8 +86,7 @@
             style="width:320px;"
             v-model="form.subArea"
             placeholder="请输入面积"
-            oninput="value=value.replace(/[^0-9.]/g,'')"
-            maxlength="4"
+            @input="handleAreaInput"
             size="small">
             <template slot="append">M²</template>
           </el-input>
@@ -488,6 +487,28 @@ import { chemicalMsdsEdit } from '@/api/chemicalManage'
         }
       },
       methods:{
+        handleAreaInput(value) {
+          // 1. 过滤非法字符并处理多个小数点
+          let filteredValue = value
+            .replace(/[^\d.]/g, '')            // 只保留数字和小数点
+            .replace(/(\..*)\./g, '$1')        // 禁止输入多个小数点
+            .replace(/^\./g, '0.')             // 小数点开头自动补零
+            .replace(/(-\d+\.\d{2})\d+/, '$1') // 禁止输入超过两位小数
+            .replace(/^(\d{4})\d+/, '$1') // 限制整数部分最多4位
+
+          // 2. 分离整数和小数部分处理
+          const parts = filteredValue.split('.')
+          if (parts.length > 1) {
+            // 截断小数部分到两位
+            parts[1] = parts[1].slice(0, 2)
+            filteredValue = parts.join('.')
+          }
+
+          // 3. 更新模型数据(需要 nextTick 保持光标位置)
+          this.$nextTick(() => {
+            this.form.subArea = filteredValue
+          })
+        },
         LevelClick(){
           if(!this.form.dynamicLeveling){
             this.$set(this,'dialogLevelVisible',true);