'a'
mh-two-thousand-and-two
2024-04-12 44d2c92345cd156a59fc327b3060292a282d2893
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import {
  emitter
} from '../mixins'
 
function getPicker (weex) {
  const picker = weex.requireModule('picker')
  const mode = {
    SELECTOR: 'selector',
    TIME: 'time',
    DATE: 'date'
  }
  return {
    name: 'Picker',
    mixins: [emitter],
    props: {
      range: {
        type: Array,
        default () {
          return []
        }
      },
      rangeKey: {
        type: String,
        default: ''
      },
      value: {
        type: [Number, String],
        default: 0
      },
      mode: {
        type: String,
        default: mode.SELECTOR,
        validator (val) {
          return Object.values(mode).indexOf(val) >= 0
        }
      },
      start: {
        type: String,
        default () {
          if (this.mode === mode.TIME) {
            return '00:00'
          }
          if (this.mode === mode.DATE) {
            const year = (new Date()).getFullYear() - 100
            return year + '-01-01'
          }
          return ''
        }
      },
      end: {
        type: String,
        default () {
          if (this.mode === mode.TIME) {
            return '23:59'
          }
          if (this.mode === mode.DATE) {
            const year = (new Date()).getFullYear() + 100
            return year + '-12-31'
          }
          return ''
        }
      },
      disabled: {
        type: [Boolean, String],
        default: false
      }
    },
    methods: {
      onClick () {
        let data
        let method
        switch (this.mode) {
          case mode.SELECTOR:
            method = 'pick'
            data = {
              index: Number(this.value) || 0,
              items: this.range.map(item => typeof item === 'object' ? item[this.rangeKey] || '' : item)
            }
            break
          case mode.DATE:
            method = 'pickDate'
            data = {
              value: this.value,
              min: this.start,
              max: this.end
            }
            break
          case mode.TIME:
            method = 'pickTime'
            data = {
              value: this.value
            }
            break
        }
        picker[method](data, event => {
          if (event.result === 'success') {
            const value = event.data
            this.$trigger('change', {
              value
            })
          }
          else {
            this.$trigger('cancel')
          }
        })
      }
    },
    render (createElement) {
      const event = {}
      if (!this.disabled) {
        event.click = this.onClick
      }
      return createElement('div', this._g({
        on: event
      }, this.$listener), this.$slots.default, 2)
    }
  }
}
 
export default function init (Vue, weex) {
  Vue.component('picker', getPicker(weex))
}