shish 2 hete
szülő
commit
fcf14f33d0
1 módosított fájl, 42 hozzáadás és 6 törlés
  1. 42 6
      ghsApp/src/pagesOrder/shMethod.vue

+ 42 - 6
ghsApp/src/pagesOrder/shMethod.vue

@@ -106,11 +106,11 @@
               <view class="rule-card" v-for="(rule, index) in form.reduceRules" :key="index">
                 <view class="rule-row">
                   <text class="rule-label">满</text>
-                  <input type="number" v-model="rule.meetNum" @focus="rule.meetNum = ''" class="rule-input" placeholder="0" />
-                  <text class="rule-label">扎</text>
-                  <input type="digit" v-model="rule.meetAmount" @focus="rule.meetAmount = ''" class="rule-input-large" placeholder="0.00" />
+                  <input type="number" v-model="rule.meetNum" @focus="clearReduceRuleInputOnFocus(rule, 'meetNum')" @blur="normalizeReduceRuleInput(rule, 'meetNum')" class="rule-input" placeholder="0" />
+                  <text class="rule-label">扎</text>
+                  <input type="digit" v-model="rule.meetAmount" @focus="clearReduceRuleInputOnFocus(rule, 'meetAmount')" @blur="normalizeReduceRuleInput(rule, 'meetAmount')" class="rule-input-large" placeholder="0.00" />
                   <text class="rule-label">元</text>
-                  <input type="digit" v-model="rule.freeKm" @focus="rule.freeKm = ''" class="rule-input-large" placeholder="0" />
+                  <input type="digit" v-model="rule.freeKm" @focus="clearReduceRuleInputOnFocus(rule, 'freeKm')" @blur="normalizeReduceRuleInput(rule, 'freeKm')" class="rule-input-large" placeholder="0" />
                   <text class="rule-label">公里内免跑腿费</text>
                 </view>
                 <button class="admin-button-com mini rule-del-btn" @click="removeReduceRule(index)">
@@ -367,7 +367,14 @@ export default {
                 color: exp.color != null ? Number(exp.color) : 1,
                 fontWeight: exp.fontWeight != null ? Number(exp.fontWeight) : 1
               })),
-              reduceRules: data.reduceRules || []
+              reduceRules: (data.reduceRules || []).map(rule => ({
+                ...rule,
+                meetNum: rule.meetNum != null ? Number(rule.meetNum) : 0,
+                // 接口可能返回 10.00,展示时去掉小数点后多余的 0
+                meetAmount: rule.meetAmount != null && rule.meetAmount !== '' ? parseFloat(Number(rule.meetAmount)) : 0,
+                freeKm: rule.freeKm != null && rule.freeKm !== '' ? parseFloat(Number(rule.freeKm)) : 0,
+                sort: rule.sort != null ? Number(rule.sort) : 0
+              }))
             }
           } else {
             this.$msg(res.msg || "加载失败")
@@ -383,12 +390,41 @@ export default {
     addReduceRule() {
       this.form.reduceRules.push({
         meetNum: 0,
-        meetAmount: 0.00,
+        meetAmount: 0,
         freeKm: 0,
         sort: this.form.reduceRules.length
       });
     },
 
+    /**
+     * 满减规则输入框获焦时清空,便于重新输入
+     * @param {Object} rule - 满减规则项
+     * @param {string} field - 字段名 meetNum | meetAmount | freeKm
+     */
+    clearReduceRuleInputOnFocus(rule, field) {
+      this.$set(rule, field, "");
+    },
+
+    /**
+     * 满减规则输入框失焦时规范化数值,去掉小数点后多余的 0
+     * @param {Object} rule - 满减规则项
+     * @param {string} field - 字段名 meetNum | meetAmount | freeKm
+     */
+    normalizeReduceRuleInput(rule, field) {
+      const value = rule[field];
+      if (value === "" || value == null) {
+        this.$set(rule, field, 0);
+        return;
+      }
+      const num = Number(value);
+      if (Number.isNaN(num)) {
+        this.$set(rule, field, 0);
+        return;
+      }
+      const normalized = field === "meetNum" ? parseInt(num, 10) : parseFloat(String(num));
+      this.$set(rule, field, normalized);
+    },
+
     /**
      * 删除满减规则
      * @param {number} index - 规则索引