From 9842802a547a53ea8d82d65c2e7d0e1c3acbd888 Mon Sep 17 00:00:00 2001 From: Tevin <tingquanren@163.com> Date: Wed, 21 Apr 2021 18:04:09 +0800 Subject: [PATCH] 数值增减组件增加奇偶修正功能 --- forms/numberStep/CNumberStep.vue | 38 ++++++++++++++++++++++++++++++++++++-- 1 files changed, 36 insertions(+), 2 deletions(-) diff --git a/forms/numberStep/CNumberStep.vue b/forms/numberStep/CNumberStep.vue index 324af11..add9fd5 100644 --- a/forms/numberStep/CNumberStep.vue +++ b/forms/numberStep/CNumberStep.vue @@ -24,7 +24,7 @@ :step="step" :width="120" :value="itemRes.formData[itemRes.name]" - :onChange="evt=>itemRes.onChange(evt)" + :onChange="evt=>handleChange(evt)" /> <view class="c-number-step-unit">{{unit}}</view> </view> @@ -58,6 +58,11 @@ type: Number, default: 1, }, + // 奇偶修正 odd 奇数 / even 偶数 + correct: { + type: String, + default: '', + }, // 数值单位 unit: { type: String, @@ -68,7 +73,36 @@ return {}; }, computed: {}, - methods: {}, + methods: { + handleChange(val) { + // 奇偶修正模式 + if (this.correct) { + const lastValue = this.itemRes.formData[this.itemRes.name]; + let nextValue = val; + if ( + (this.correct === 'odd' && nextValue % 2 === 0) || + (this.correct === 'even' && nextValue % 2 === 1) + ) { + // 增加 + if (lastValue < nextValue) { + nextValue++; + } + // 减小 + else if (lastValue > nextValue) { + nextValue--; + } + } + // 范围 + nextValue = Math.max(nextValue, this.range[0]); + nextValue = Math.min(nextValue, this.range[1]); + this.itemRes.onChange(nextValue); + } + // 正常模式 + else { + this.itemRes.onChange(val); + } + }, + }, mounted() { if (process.env.TARO_ENV === 'h5') { $(this.$refs.input.$el) -- Gitblit v1.9.1