| <template> | |
|   <view class="input__view" :style="style"> | |
|     <view class="flex row" v-for="(item, index) in options" :key="item.id"> | |
|       <view class="flex row-label"> | |
|         <view class="title">{{ item.period_dictText }}</view> | |
|         <view class="desc" v-if="getTypeDesc(item.periodId)">{{ `(${getTypeDesc(item.periodId)})` }}</view> | |
|         <view class="flex price"> | |
|           <text>¥</text> | |
|           <text class="highlight">{{ item.price }}</text> | |
|         </view> | |
|       </view> | |
|       <view class="row-content"> | |
|         <uv-number-box  | |
|           :value="value[index]" | |
|           @input="onInput(index, $event)" | |
|           :min="0" | |
|           :integer="true" | |
|           :inputWidth="68" | |
|           bgColor="transparent" | |
|           :iconStyle="{ | |
|             background: '#F7F8FA', | |
|             fontSize: '13px', | |
|             lineHeight: 1, | |
|             padding: '12px', | |
|             borderRadius: '50%', | |
|           }" | |
|         ></uv-number-box> | |
|       </view> | |
|     </view> | |
|   </view> | |
| </template> | |
| 
 | |
| <script> | |
| 
 | |
|   export default { | |
|     props: { | |
|       value: { | |
|         type: Array, | |
|         default() { | |
|           return [] | |
|         } | |
|       }, | |
|       options: { | |
|         type: Array, | |
|         default() { | |
|           return [] | |
|         } | |
|       }, | |
|       style: { | |
|         type: String, | |
|         default: '' | |
|       }, | |
|     }, | |
|     computed: { | |
|       prices: { | |
|         set(val) { | |
|           this.$emit('input', val) | |
|         }, | |
|         get() { | |
|           return this.value | |
|         } | |
|       }, | |
|     }, | |
|     methods: { | |
|       onInput(index, value) { | |
|         let prices = [...this.prices] | |
|         prices[index] = value | |
|         this.prices = prices | |
|       }, | |
|       getTypeDesc(periodId) { | |
|         const remark = this.configList.periodList.find(item => item.id === periodId)?.remark | |
| 
 | |
|         return remark ? `(${remark})` : '' | |
|       }, | |
|     }, | |
|   } | |
| </script> | |
| 
 | |
| <style lang="scss" scoped> | |
|   .input__view { | |
|     width: 100%; | |
|   } | |
| 
 | |
|   .row { | |
|     justify-content: space-between; | |
|     padding: 24rpx 0; | |
|     font-family: PingFang SC; | |
|     font-size: 24rpx; | |
|     font-weight: 400; | |
|     line-height: 1.4; | |
|     border-bottom: 2rpx solid #EEEEEE; | |
|      | |
|     & + & { | |
|       margin-top: 20rpx; | |
|     } | |
| 
 | |
|     &-label { | |
|       justify-content: flex-start; | |
|       column-gap: 4rpx; | |
|     } | |
| 
 | |
|     &-content { | |
|        | |
|       /deep/ .uv-number-box__minus--disabled { | |
|         background: transparent !important; | |
|       } | |
|     } | |
|   } | |
| 
 | |
|   .title { | |
|     font-size: 28rpx; | |
|     color: #000000; | |
|   } | |
| 
 | |
|   .desc { | |
|     color: #8B8B8B; | |
|   } | |
| 
 | |
|   .price { | |
|     font-weight: 500; | |
|     color: #FF4800; | |
| 
 | |
|     .highlight { | |
|       font-size: 32rpx; | |
|     } | |
|   } | |
| </style> |