直接上图:

1

2

3

4

需要完成的需求是这个页面的实现:点击“1”跳转到“2”,在页面“2”中可以在“3”中选择你的家乡,在“4”中可以选择你的生日。其中,用到的组件有两个,一个是城市选择器element-china-area-data,另外一个是日期选择器vue-datepicker

接下来介绍一下这两个选择器的使用,github地址已经在上面标明了,点击组件的名字即可抵达。

一、城市选择器element-china-area-dat.

用法比较简单,本次用例是用省市二级联动。

  1. 安装
 npm install element-china-area-data -S
  1. import组件所需的数据和对象
 import { provinceAndCityData,CodeToText} from 'element-china-area-data'
  1. 直接贴代码吧
<template>
  <div id="app">
    <el-cascader
      size="large"
      :options="options"
      v-model="selectedOptions"
      @change="handleChange">
    </el-cascader>
  </div>
</template>

<script>
  import { provinceAndCityData } from 'element-china-area-data'
  export default {
    data () {
      return {
        options: provinceAndCityData,
        selectedOptions: []
      }
    },

    methods: {
      handleChange (value) {
        var ctt = CodeToText[value[0]] + CodeToText[value[1]]
        console.log(ctt)
      }
    }
  }
</script>
  1. 属性值
  • provinceAndCityData是省市二级联动数据(不带“全部”选项)
  • provinceAndCityDataPlus是省市二级联动数据(带“全部”选项)
  • regionData是省市区三级联动数据(不带“全部”选项)
  • regionDataPlus是省市区三级联动数据(带“全部”选项)
  • “全部"选项绑定的value是空字符串”"
  • CodeToText是个大对象,属性是区域码,属性值是汉字 用法例如:CodeToText[‘110000’]输出北京市
  • TextToCode是个大对象,属性是汉字,属性值是区域码 用法例如:TextToCode[‘北京市’].code输出110000,TextToCode[‘北京市’][‘市辖区’].code输出110100,TextToCode[‘北京市’][‘市辖区’][‘朝阳区’].code输出110105

这里import进来的属性值中,数据是关键,对象可以操作数据,嗯这样子…看需求做选择

#####二、日期选择器vue-datepicker.
这个比较麻烦,而且官方(github)Demo中也有一些问题。

  1. 安装
npm install vue-datepicker
  1. 使用
<script>
// for Vue 1.0
import myDatepicker from 'vue-datepicker/vue-datepicker-1.vue'

// for Vue 2.0
// import myDatepicker from 'vue-datepicker'
import myDatepicker from 'vue-datepicker/vue-datepicker-es6.vue'

export default {
  data () {
    return {
      // for Vue 1.0
      starttime: '',
      endtime: '2018-11-02',
      testTime: '',
      multiTime: '',

      // for Vue 2.0
      startTime: {
        time: ''
      },
      endtime: {
        time: ''
      }

      option: {
          type: 'day',
          week: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
          month: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
          format: 'YYYY-MM-DD',
          placeholder: '请选择日期?',
          inputStyle: {
            'display': 'inline-block',
            'padding': '6px',
            'line-height': '22px',
            'font-size': '16px',
            'border': '2px solid #fff',
            'box-shadow': '0 1px 3px 0 rgba(0, 0, 0, 0.2)',
            'border-radius': '2px',
            'color': '#5F5F5F'
          },
          color: {
            header: '#1b98ee',
            headerText: '#fff'
          },
          buttons: {
            ok: '确定',
            cancel: '取消'
          },
          overlayOpacity: 0.5, // 0.5 as default
          dismissible: true // as true as default
        },
        timeoption: {
          type: 'min',
          week: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
          month: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
          format: 'YYYY-MM-DD HH:mm'
        },
        multiOption: {
          type: 'multi-day',
          week: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
          month: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
          format: 'YYYY-MM-DD HH:mm'
        },
        // limit: [{
        //   type: 'weekday',
        //   available: [1, 2, 3, 4, 5]
        // },
        //   {
        //     type: 'fromto',
        //     from: '2016-02-01',
        //     to: '2016-02-20'
        //   }]
        limit: [{
          type: Array,
          default: function _default () {
            return []
          }
        }]
    }
  },
  components: {
    'date-picker': myDatepicker
  }
}
</script>
<template>
  <div class="card">

    <!-- for Vue 1.0 -->
    <div class="row">
      <span>Departure Date:</span>
      <date-picker :time.sync="starttime" :option="option" :limit="limit"></date-picker>
    </div>

    <!-- for Vue 2.0 -->
    <div class="row">
      <span>Departure Date:</span>
      <date-picker :date="startTime" :option="option" :limit="limit"></date-picker>
    </div>

  </div>
</template>

这里有两个地方需要注意,在官方的demo中的写法会导致报错:
1) 在import的时候,需要import Datepicker from ‘vue-datepicker/vue-datepicker-es6.vue’ 这样引入,不然会少了后面的es6支持。
2) limit配置那里,需要改成下面这样才能点击选择日期:

limit: [{
  type: Array,
  default:function _default(){
    return [];
  }
}]

感谢这位老哥的博客使用vue-datepicker过程中遇到的一些问题
,也解决了我的一些问题

  1. API(摘自官网)
  • Option

  • type

  type: 'day' // 'min', 'multi-day'
  • format
format: 'YYYY-MM-DD HH:mm'
  • placeholder
placeholder: 'when?'
  • week
 week: ['Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su']
  • month
  month: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August','September', 'October', 'November', 'December']
  • wrapperClass
wrapperClass: ''

  • inputClass
inputClass: ''

  • inputStyle
inputStyle: {
  'display': 'inline-block',
  'padding': '6px',
  'line-height': '22px',
  'font-size': '16px',
  'border': '2px solid #fff',
  'box-shadow': '0 1px 3px 0 rgba(0, 0, 0, 0.2)',
  'border-radius': '2px',
  'color': '#5F5F5F'
}
  • color
  color: {
    header: '#ccc',
    headerText: '#f00'
  }
  • buttons
buttons: {
  ok: 'OK',
  cancel: 'Cancel'
}
  • animate
  overlayOpacity: 0.5, // 0.5 as default
  dismissible: true // as true as default
  • limit

  • from sometime to sometime(when from/to is empty, days before/after end/start time will be available)

limit: {
  type:'fromto',
  from:'2016-01-10',
  to:'2016-01-30'
}
  • weekdays
limit:{
  type: 'weekday',
  available: [1, 2, 3, 4, 5] 
}
  1. prop
  • Vue 1.0
time: '' // string
<date-picker :time.sync="time" :limit="limit"></date-picker>
  • Vue 2.0
date: {
  time: '' // string
}

OK,Done!

Logo

前往低代码交流专区

更多推荐