点击复制
<template>
  <div class="page">
    <div class="demoName">
      <a class="icon" @click="$router.push({path:'/'})"></a>
      <div class="comp-title">Picker</div>
    </div>
    <h3>基本示例</h3>
    <List>
      <span slot="header">地址选择器:默认</span>
      <Item class="test-style" arrow="horizontal" @onClick="handleClick">
        <div slot="title">地址</div>
        <div slot="content">{{ pickedAddress }}</div>
      </Item>
    </List>
    <Picker
      ref="addressPicker"
      title="省份-城市-区域选择器"
      :visible.sync = "addressPickerShow"
      :columns="addressColumns"
      @confirm="addressConfirm"
      @change="onAddressChange"
    />
    <WhiteSpace size="lg" />
    <List>
      <span slot="header">地址选择器:省份-城市</span>
      <Item class="test-style" arrow="horizontal" @onClick="handleProvinceCityAddressPickerClick">
        <div slot="title">地址</div>
        <div slot="content">{{ pickedProvinceCityAddress }}</div>
      </Item>
    </List>
    <Picker
      ref="provinceCityAddressPicker"
      title="省份-城市选择器"
      :visible.sync = "provinceCityAddressPickedShow"
      :columns="provinceCityAddressColumns"
      @confirm="provinceCityAddressPickerConfirm"
      @change="onProvinceCityAddressChange"
    />
    <WhiteSpace size="lg" />
    <List>
      <span slot="header">星期选择器</span>
      <Item class="test-style" arrow="horizontal" @onClick="getWeekData">
        <div slot="title">日期</div>
        <div slot="content">{{weekDate}}</div>
      </Item>
    </List>
    <Picker
      ref="picker"
      title="星期选择器"
      :visible.sync = "weekPickerShow"
      :columns="weekCol"
      :visibleItemCount="5"
      @confirm="weekConfirm"
    />
  </div>
</template>

<script>

const provinces = ['广东省'];

// 获取某一省下的市
const getCities = (province) => {
  let cities = [];
  switch (province) {
    case '广东省':
      cities = ['广州市', '深圳市'];
      break;
    default:
      break;
  }
  return cities;
}

// 获取某一市下的区/县
function getAreas (province, city) {
  let areas = []
  if (province === '广东省') {
    switch(city) {
      case '广州市':
        areas = ['荔湾区', '越秀区', '海珠区', '天河区', '白云区', '黄埔区', '番禺区', '花都区', '南沙区', '从化区', '增城区']
        break;
      case '深圳市':
        areas = ['罗湖区', '福田区', '南山区', '宝安区', '龙岗区', '盐田区', '龙华区', '坪山区', '光明区'];
      break;
    }
  }
  return areas;
}

export default {
  data () {
    return {
      addressPickerShow: false,
      provinceCityAddressPickedShow: false,
      weekPickerShow: false,
      pickedAddress: '',
      pickedProvinceCityAddress: '',
      weekDate: '',
      addressColumns: [
        {
          values: provinces
        },
        {
          values: getCities('广东省')
        },
        {
          values: getAreas('广东省', '广州市')
        }
      ],
      provinceCityAddressColumns: [
        {
          values: provinces
        },
        {
          values: getCities('广东省')
        }
      ],
      weekColumns: [
        {
          values: [
            '星期一',
            '星期二',
            '星期三',
            '星期四',
            '星期五',
            '星期六',
            '星期日'
          ],
          defaultIndex: 0
        },
        {
          values: [
            '上午',
            '下午'
          ],
          defaultIndex: 0
        }
      ],
      weekCol: [
        [
          '星期一',
          '星期二',
          '星期三',
          '星期四',
          '星期五',
          '星期六',
          '星期日'
        ],
        [
          '上午',
          '下午'
        ]
      ]
    }
  },
  methods: {
    handleClick () {
      this.addressPickerShow = true
      console.log('handle list item click')
    },
    handleProvinceCityAddressPickerClick () {
      this.$refs.provinceCityAddressPicker.setColumnValue(0,
        this.pickedProvinceCityAddress.split(',')[0] !== '' ? this.pickedProvinceCityAddress.split(',')[0] : '广东省'
      );
      this.provinceCityAddressPickedShow = true;
    },
    addressConfirm (values) {
      this.pickedAddress = values.toString();
    },
    provinceCityAddressPickerConfirm (values) {
      this.pickedProvinceCityAddress = values.toString();
    },
    onAddressChange (picker, addressValues, slotIndex) {
      if (slotIndex === 0) {
        const cities = getCities(addressValues[0])
        picker.setColumnValues(1, cities)
        picker.setColumnValues(2, getAreas(addressValues[0], cities[0]))
      } else if (slotIndex === 1) {
        picker.setColumnValues(2, getAreas(addressValues[0], addressValues[1]))
      }
    },
    onProvinceCityAddressChange (picker, addressValues, slotIndex) {
      if (slotIndex === 0) {
        const cities = getCities(addressValues[0])
        picker.setColumnValues(1, cities)
        picker.setColumnValues(2, getAreas(addressValues[0], cities[0]))
      } else if (slotIndex === 1) {
        picker.setColumnValues(2, getAreas(addressValues[0], addressValues[1]))
      }
    },
    getWeekData () {
      this.weekPickerShow = true
    },
    weekConfirm (values) {
      const mon = ['1', '2', '3', '4', '5', '6']
      this.weekDate = values.toString()
      console.log(this.weekDate)
      const curCol = mon.splice(0, mon.indexOf(this.weekDate) + 1)
      console.log(curCol)
      console.log(mon)
      this.endCol = []
      this.endCol = [{
        values: mon,
        defaultIndex: 0
      }]
      console.log(this.endCol)
    }
  }
}
</script>