|
|
@@ -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 - 规则索引
|