You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
178 lines
4.7 KiB
178 lines
4.7 KiB
<template>
|
|
<view>
|
|
<page-head :title="title"></page-head>
|
|
<view class="uni-title uni-common-pl">普通选择器</view>
|
|
<view class="uni-list">
|
|
<view class="uni-list-cell">
|
|
<view class="uni-list-cell-left">
|
|
当前选择
|
|
</view>
|
|
<view class="uni-list-cell-db">
|
|
<picker @change="bindPickerChange" :value="index" :range="array" range-key="name">
|
|
<view class="uni-input">{{array[index].name}}</view>
|
|
</picker>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
<!-- #ifndef MP-ALIPAY -->
|
|
<view class="uni-title uni-common-pl">多列选择器</view>
|
|
<view class="uni-list">
|
|
<view class="uni-list-cell">
|
|
<view class="uni-list-cell-left">
|
|
当前选择
|
|
</view>
|
|
<view class="uni-list-cell-db">
|
|
<picker mode="multiSelector" @columnchange="bindMultiPickerColumnChange" :value="multiIndex" :range="multiArray">
|
|
<view class="uni-input">{{multiArray[0][multiIndex[0]]}},{{multiArray[1][multiIndex[1]]}},{{multiArray[2][multiIndex[2]]}}</view>
|
|
</picker>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<!-- #endif -->
|
|
|
|
<view class="uni-title uni-common-pl">时间选择器</view>
|
|
<view class="uni-list">
|
|
<view class="uni-list-cell">
|
|
<view class="uni-list-cell-left">
|
|
当前选择
|
|
</view>
|
|
<view class="uni-list-cell-db">
|
|
<picker mode="time" :value="time" start="09:01" end="21:01" @change="bindTimeChange">
|
|
<view class="uni-input">{{time}}</view>
|
|
</picker>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="uni-picker-tips">
|
|
注:选择 09:01 ~ 21:01 之间的时间, 不在区间内不能选中
|
|
</view>
|
|
|
|
<view class="uni-title uni-common-pl">日期选择器</view>
|
|
<view class="uni-list">
|
|
<view class="uni-list-cell">
|
|
<view class="uni-list-cell-left">
|
|
当前选择
|
|
</view>
|
|
<view class="uni-list-cell-db">
|
|
<picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindDateChange">
|
|
<view class="uni-input">{{date}}</view>
|
|
</picker>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="uni-picker-tips">
|
|
注:选择当前时间 ±10 年之间的时间, 不在区间内不能选中
|
|
</view>
|
|
</view>
|
|
</template>
|
|
<script>
|
|
|
|
function getDate(type) {
|
|
const date = new Date();
|
|
|
|
let year = date.getFullYear();
|
|
let month = date.getMonth() + 1;
|
|
let day = 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;
|
|
|
|
return `${year}-${month}-${day}`;
|
|
}
|
|
export default {
|
|
data() {
|
|
return {
|
|
title: 'picker',
|
|
array: [{name:'中国'},{name: '美国'}, {name:'巴西'}, {name:'日本'}],
|
|
index: 0,
|
|
multiArray: [
|
|
['亚洲', '欧洲'],
|
|
['中国', '日本'],
|
|
['北京', '上海', '广州']
|
|
],
|
|
multiIndex: [0, 0, 0],
|
|
date: getDate({
|
|
format: true
|
|
}),
|
|
startDate:getDate('start'),
|
|
endDate:getDate('end'),
|
|
time: '12:01'
|
|
}
|
|
},
|
|
methods: {
|
|
bindPickerChange: function(e) {
|
|
console.log('picker发送选择改变,携带值为:' + e.detail.value)
|
|
this.index = e.detail.value
|
|
},
|
|
bindMultiPickerColumnChange: function(e) {
|
|
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()
|
|
},
|
|
bindDateChange: function(e) {
|
|
this.date = e.detail.value
|
|
},
|
|
bindTimeChange: function(e) {
|
|
this.time = e.detail.value
|
|
}
|
|
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style>
|
|
.uni-picker-tips {
|
|
font-size: 12px;
|
|
color: #666;
|
|
margin-bottom: 15px;
|
|
padding: 0 15px;
|
|
/* text-align: right; */
|
|
}
|
|
</style>
|
|
|