<template> <div> <RadioGroup v-model="send_type" @on-change="e => onChange(e, 'receive_type')"> <Radio class="radio" :label="0"> 次日达 </Radio> <Radio class="radio" :label="1"> 下单 <InputNumber v-model="send_days" :min="2" :precision="0" @on-change="e => onChange(e, 'receive_days')"></InputNumber> 日送达 </Radio> <Radio class="radio" :label="2"> 自定义配送时间 <Input :maxlength="18" v-model="send_time" @input="e => onChange(e, 'receive_time')"></Input> </Radio> </RadioGroup> <error :text="error[data.keyword]" /> </div> </template> <script> export default { props: ['data', 'value', 'option', 'error'], data () { return { send_type: null, send_days: null, send_time: '', receive_time: '', } }, methods: { onChange (e, keyword) { if (this.send_type === 1) this.receive_time = this.send_days if (this.send_type === 2) this.receive_time = this.send_time this.$hub.$emit(this.data.hub, { type: 'value', payload: Object.assign(this.value, { receive_type: this.send_type, receive_time: this.receive_time, }), }) }, }, mounted () { this.send_type = this.value[this.data.keyword] if (!this.value[this.data.keyword]) return if (this.value[this.data.keyword] === 1) { this.send_days = Number(this.value.receive_time) } else { this.send_time = this.value.receive_time } }, } </script> <style lang="scss" scoped> .radiogroup { display: flex; flex-direction: column; padding: 10px 0; } .radio { display: block; margin-bottom: 4px; } </style>