123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- <template>
- <!-- #ifdef APP -->
- <scroll-view style="flex: 1">
- <!-- #endif -->
- <page-head :title="title"></page-head>
- <text class="uni-title uni-common-pl">禁用选择器</text>
- <view class="uni-list">
- <view class="uni-list-cell">
- <view class="uni-list-cell-left">当前选择</view>
- <view class="uni-list-cell-db">
- <picker class="picker-disabled--test" @change="bindPickerChange" disabled :value="index" :range="selectorArray" range-key="name">
- <view class="uni-input picker-disabled--value">{{selectorArray[index].name}}</view>
- </picker>
- </view>
- </view>
- </view>
- <text class="uni-picker-tips">注:值与普通选择器同步,但不可选择</text>
- <text class="uni-title uni-common-pl">普通选择器</text>
- <view class="uni-list">
- <view class="uni-list-cell">
- <view class="uni-list-cell-left">当前选择</view>
- <view class="uni-list-cell-db">
- <picker class="picker-selector--test" @change="bindPickerChange" :value="index" :range="selectorArray" range-key="name">
- <view class="uni-input picker-selector--value">{{selectorArray[index].name}}</view>
- </picker>
- </view>
- </view>
- </view>
- <text class="uni-title uni-common-pl">多列选择器</text>
- <view class="uni-list">
- <view class="uni-list-cell">
- <text class="uni-list-cell-left">当前选择</text>
- <view class="uni-list-cell-db">
- <picker class="picker-multi--test" mode="multiSelector" @columnchange="bindMultiPickerColumnChange" :value="multiIndex" :range="multiArray">
- <view class="uni-input picker-multi--value">
- {{multiArray[0][multiIndex[0]]}},{{multiArray[1][multiIndex[1]]}},{{multiArray[2][multiIndex[2]]}}
- </view>
- </picker>
- </view>
- </view>
- </view>
- <text class="uni-title uni-common-pl">时间选择器</text>
- <view class="uni-list">
- <view class="uni-list-cell">
- <view class="uni-list-cell-left">当前选择</view>
- <view class="uni-list-cell-db">
- <picker class="picker-time--test" mode="time" :value="time" start="09:01" end="21:01" @change="bindTimeChange">
- <view class="uni-input">{{time}}</view>
- </picker>
- </view>
- </view>
- </view>
- <text class="uni-picker-tips">注:选择 09:01 ~ 21:01 之间的时间, 不在区间内不能选中</text>
- <text class="uni-title uni-common-pl">日期选择器 fields = day</text>
- <view class="uni-list">
- <view class="uni-list-cell">
- <text class="uni-list-cell-left">当前选择 </text>
- <view class="uni-list-cell-db">
- <picker class="picker-date-day--test" mode="date" :value="dayDate" :start="startDate" :end="endDate" @change="bindDayDateChange">
- <view class="uni-input">{{dayDate}}</view>
- </picker>
- </view>
- </view>
- </view>
- <text class="uni-picker-tips">注:选择当前时间 ±10 年之间的时间, 不在区间内不能选中</text>
- <text class="uni-title uni-common-pl">日期选择器 fields = month</text>
- <view class="uni-list">
- <view class="uni-list-cell">
- <text class="uni-list-cell-left">当前选择 </text>
- <view class="uni-list-cell-db">
- <picker class="picker-date-month--test" mode="date" fields="month" :value="monthDate" :start="startDate" :end="endDate" @change="bindMonthDateChange">
- <view class="uni-input">{{monthDate}}</view>
- </picker>
- </view>
- </view>
- </view>
- <text class="uni-picker-tips">注:选择当前时间 ±10 年之间的时间, 不在区间内不能选中,且日不可选</text>
- <text class="uni-title uni-common-pl">日期选择器 fields = year</text>
- <view class="uni-list">
- <view class="uni-list-cell">
- <text class="uni-list-cell-left">当前选择 </text>
- <view class="uni-list-cell-db">
- <picker class="picker-date-year--test" mode="date" fields="year" :value="yearDate" :start="startDate" :end="endDate" @change="bindYearDateChange">
- <view class="uni-input">{{yearDate}}</view>
- </picker>
- </view>
- </view>
- </view>
- <text class="uni-picker-tips">注:选择当前时间 ±10 年之间的时间, 不在区间内不能选中,且只能选择年</text>
- <!-- #ifdef APP -->
- </scroll-view>
- <!-- #endif -->
- </template>
- <script lang="uts">
- import { state, setEventCallbackNum } from '@/store/index.uts'
- type DataType = {
- name : string
- }
- function getDate(date_text : string = 'day', type ?: string) : string {
- const date = new Date();
- let year : string | number = date.getFullYear();
- let month : string | number = date.getMonth() + 1;
- let day : string | number = date.getDate();
- if (type == 'start') {
- year = year - 10;
- } else if (type == 'end') {
- year = year + 10;
- }
- month = month > 9 ? month : '0' + month;;
- day = day > 9 ? day : '0' + day;
- if (date_text == 'month') {
- return `${year}-${month}`;
- } else if (date_text == 'year') {
- return `${year}`;
- }
- return `${year}-${month}-${day}`;
- }
- export default {
- data() {
- return {
- title: 'picker',
- selectorArray: [{ name: '中国' }, { name: '美国' }, { name: '巴西' }, { name: '日本' }] as DataType[],
- index: 0,
- multiArray: [
- ['亚洲', '欧洲'],
- ['中国', '日本'],
- ['北京', '上海', '广州']
- ] as Array<string[]>,
- multiIndex: [0, 0, 0] as number[],
- dayDate: getDate('day'),
- monthDate: getDate('month'),
- yearDate: getDate('year'),
- startDate: getDate('day', 'start'),
- endDate: getDate('day', 'end'),
- time: '12:01'
- }
- },
- methods: {
- bindPickerChange: function (e : UniPickerChangeEvent) {
- console.log('picker发送选择改变,携带值为:' + e.detail.value)
- this.index = e.detail.value
- },
- bindMultiPickerColumnChange: function (e : UniPickerColumnChangeEvent) {
- console.log('修改的列为:' + e.detail.column + ',值为:' + e.detail.value)
- this.multiIndex[e.detail.column] = e.detail.value
- switch (e.detail.column) {
- case 0: //拖动第1列
- switch (this.multiIndex[0]) {
- case 0:
- this.multiArray[1] = ['中国', '日本']
- this.multiArray[2] = ['北京', '上海', '广州']
- break
- case 1:
- this.multiArray[1] = ['英国', '法国']
- this.multiArray[2] = ['伦敦', '曼彻斯特']
- break
- }
- this.multiIndex.splice(1, 1, 0)
- this.multiIndex.splice(2, 1, 0)
- break
- case 1: //拖动第2列
- switch (this.multiIndex[0]) { //判断第一列是什么
- case 0:
- switch (this.multiIndex[1]) {
- case 0:
- this.multiArray[2] = ['北京', '上海', '广州']
- break
- case 1:
- this.multiArray[2] = ['东京', '北海道']
- break
- }
- break
- case 1:
- switch (this.multiIndex[1]) {
- case 0:
- this.multiArray[2] = ['伦敦', '曼彻斯特']
- break
- case 1:
- this.multiArray[2] = ['巴黎', '马赛']
- break
- }
- break
- }
- this.multiIndex.splice(2, 1, 0)
- break
- }
- this.$forceUpdate()
- },
- bindDayDateChange: function (e : UniPickerChangeEvent) {
- this.dayDate = e.detail.value as string
- },
- bindMonthDateChange: function (e : UniPickerChangeEvent) {
- this.monthDate = e.detail.value as string
- },
- bindYearDateChange: function (e : UniPickerChangeEvent) {
- this.yearDate = e.detail.value as string
- },
- bindTimeChange: function (e : UniPickerChangeEvent) {
- this.time = e.detail.value as string
- },
- // 自动化函数
- setSelectorValue(){
- this.index = 2
- },
- getEventCallbackNum() : number {
- return state.eventCallbackNum
- },
- // 自动化测试
- setEventCallbackNum(num : number) {
- setEventCallbackNum(num)
- },
- }
- }
- </script>
- <style>
- .uni-title {
- font-size: 14px;
- }
- .uni-picker-tips {
- font-size: 12px;
- color: #666;
- margin-top: 5px;
- margin-bottom: 15px;
- padding: 0 15px;
- }
- </style>
|