| | |
| | | <template> |
| | | <view class="c-select"> |
| | | <picker |
| | | v-if="!selectByPage" |
| | | mode="selector" |
| | | :range="options" |
| | | :value="current" |
| | |
| | | <view class="at-icon at-icon-chevron-right" /> |
| | | </AtInput> |
| | | </picker> |
| | | <view v-else-if="selectByPage.length > 5"> |
| | | <AtInput |
| | | :name="itemRes.name" |
| | | :title="itemRes.label" |
| | | :required="itemRes.required" |
| | | :error="itemRes.error" |
| | | :placeholder="placeholder" |
| | | :value="selected" |
| | | :onFocus="evt=>onGoToSelectorPage()" |
| | | > |
| | | <view class="at-icon at-icon-chevron-right" /> |
| | | </AtInput> |
| | | </view> |
| | | </view> |
| | | </template> |
| | | |
| | | <script> |
| | | import Taro from '@tarojs/taro'; |
| | | import { AtInput } from 'taro-ui-vue'; |
| | | import './cSelect.scss'; |
| | | |
| | |
| | | options: Array, |
| | | placeholder: String, |
| | | itemRes: Object, |
| | | selectByPage: String, |
| | | onSelectFromPage: Function, |
| | | }, |
| | | data() { |
| | | return {}; |
| | |
| | | const item = this.options[evt.value]; |
| | | this.itemRes.onChange(item[this.optionKey]); |
| | | }, |
| | | onGoToSelectorPage() { |
| | | Taro.navigateTo({ |
| | | url: this.selectByPage, |
| | | events: { |
| | | 'CSelect:onSelected': data => { |
| | | this.onSelectFromPage(data); |
| | | }, |
| | | }, |
| | | }); |
| | | }, |
| | | }, |
| | | mounted() {}, |
| | | }; |