wux-weapp
Version:
一套组件化、可复用、易扩展的微信小程序 UI 组件库
113 lines (106 loc) • 3.26 kB
JavaScript
import data from '../cascader/data'
const seasons = [
['王', '马', '蔡'],
['撕葱', '粑粑', '🏀'],
]
const provinceLite = [{
value: 'bj',
label: '北京市',
}, {
value: 'zj',
label: '浙江省',
}, {
value: 'gd',
label: '广东省',
disabled: true,
}, {
value: 'hn',
label: '海南省',
}, {
value: 'cq',
label: '重庆市',
}, {
value: 'sc',
label: '四川省',
}]
Page({
data: {
value1: ['320000', '320800', '320831'],
value2: [],
value3: [],
value4: [],
asyncCols: 1,
asyncOptions: provinceLite,
displayValue1: '请选择',
displayValue2: '请选择',
displayValue3: '请选择',
displayValue4: '请选择',
options: [],
seasons,
},
onLoad() {
this.setData({ options: data })
},
setValue(values, key) {
this.setData({
[`value${key}`]: values.value,
[`displayValue${key}`]: values.label,
})
},
onConfirm(e) {
const { index } = e.currentTarget.dataset
this.setValue(e.detail, index)
console.log(`onConfirm${index}`, e.detail)
},
onValueChange(e) {
const { index } = e.currentTarget.dataset
console.log(`onValueChange${index}`, e.detail)
if (index === '4') {
this.setValue(e.detail, index)
this.setData({ loading: true })
setTimeout(() => {
const val = e.detail.value
const d = [...this.data.asyncOptions]
const value4 = [...val]
let colNum = 1
if (val[0] === 'zj') {
d.forEach((i) => {
if (i.value === 'zj') {
colNum = 2
if (!i.children) {
i.children = [{
value: 'zj-nb',
label: '宁波',
}, {
value: 'zj-hz',
label: '杭州',
}]
value4.push('zj-nb')
} else if (val[1] === 'zj-hz') {
i.children.forEach((j) => {
if (j.value === 'zj-hz') {
j.children = [{
value: 'zj-hz-xh',
label: '西湖区',
}]
value4.push('zj-hz-xh')
}
})
colNum = 3
}
}
})
} else {
colNum = 1
}
this.setData({ asyncOptions: d, asyncCols: colNum, value4, loading: false })
}, 300)
}
},
onVisibleChange(e) {
this.setData({ visible: e.detail.visible })
},
onClick() {
this.setData({ visible: true })
},
})