| | |
| | | /** |
| | | * CChinaArea |
| | | * CChinaArea - 表单项,中国地址三级联动 |
| | | * @author Tevin |
| | | */ |
| | | |
| | |
| | | AtIcon, |
| | | }, |
| | | props: { |
| | | // 表单数据资源(表单组件内部机制专用) |
| | | itemRes: Object, |
| | | // 当地址获取经纬度时,设置加载中显示状态 |
| | | loading: { |
| | | type: Boolean, |
| | | default: false, |
| | | }, |
| | | // 占位提示 |
| | | placeholder: String, |
| | | itemRes: Object, |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | }, |
| | | methods: { |
| | | handleOpen(evt) { |
| | | if (evt.target.className.indexOf('at-input__title') >= 0) { |
| | | evt.stopPropagation(); |
| | | evt.preventDefault(); |
| | | return; |
| | | if (process.env.TARO_ENV === 'h5') { |
| | | if (evt && evt.target.className.indexOf('at-input__title') >= 0) { |
| | | evt.stopPropagation(); |
| | | evt.preventDefault(); |
| | | return; |
| | | } |
| | | } |
| | | const curVal = this.itemRes.formData[this.itemRes.name]; |
| | | const range = [ |
| | |
| | | // 省 |
| | | if (curVal[0]) { |
| | | const proviceIndex = locationTree.findIndex( |
| | | (provice) => provice.code === curVal[0] |
| | | provice => provice.value === curVal[0] |
| | | ); |
| | | if (proviceIndex >= 0) { |
| | | range[1] = locationTree[proviceIndex].children; |
| | |
| | | current[0] = proviceIndex; |
| | | // 市 |
| | | if (curVal[1]) { |
| | | const cityIndex = range[1].findIndex((city) => city.code === curVal[1]); |
| | | const cityIndex = range[1].findIndex( |
| | | city => city.value === curVal[1] |
| | | ); |
| | | if (cityIndex >= 0) { |
| | | range[2] = range[1].children[cityIndex].children; |
| | | range[2] = range[1][cityIndex].children; |
| | | current[1] = cityIndex; |
| | | } |
| | | // 区 |
| | | if (curVal[2]) { |
| | | const areaIndex = range[2].findIndex( |
| | | (area) => area.code === curVal[2] |
| | | area => area.value === curVal[2] |
| | | ); |
| | | if (areaIndex >= 0) { |
| | | current[2] === areaIndex; |
| | | current[2] = areaIndex; |
| | | } |
| | | } |
| | | } |
| | |
| | | this.current = current; |
| | | }, |
| | | updateColumns(roll) { |
| | | // 第一列滚动 |
| | | if (roll.column === 0) { |
| | | const cities = locationTree[roll.value].children; |
| | | this.range.splice(1, 2, cities, cities[0].children); |
| | | this.range = [this.range[0], cities, cities[0].children]; |
| | | this.current = [roll.value, 0, 0]; |
| | | } else if (roll.column === 1) { |
| | | } |
| | | // 第二列滚动 |
| | | else if (roll.column === 1) { |
| | | const areas = locationTree[this.current[0]].children[roll.value].children; |
| | | this.range.splice(2, 1, areas); |
| | | this.range = [this.range[0], this.range[1], areas]; |
| | | this.current = [this.current[0], roll.value, 0]; |
| | | } else if (roll.column === 3) { |
| | | } |
| | | // 第三列滚动 |
| | | else if (roll.column === 3) { |
| | | this.current.splice(2, 1, roll.value); |
| | | } |
| | | }, |
| | |
| | | this.itemRes.onChange(codes); |
| | | }, |
| | | }, |
| | | mounted() {}, |
| | | mounted() { |
| | | if (process.env.TARO_ENV === 'weapp') { |
| | | this.handleOpen(); |
| | | } |
| | | }, |
| | | }; |
| | | </script> |