From 138db89b3193d60850e203e1847e2f91d2b00ebc Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期三, 07 八月 2024 18:19:47 +0800
Subject: [PATCH] lll
---
wechat_jiaxuan/components/areaSel/areaSel.js | 533 +++++++++++++++++++++++++++++-----------------------------
1 files changed, 269 insertions(+), 264 deletions(-)
diff --git a/wechat_jiaxuan/components/areaSel/areaSel.js b/wechat_jiaxuan/components/areaSel/areaSel.js
index a7cad08..3e05148 100644
--- a/wechat_jiaxuan/components/areaSel/areaSel.js
+++ b/wechat_jiaxuan/components/areaSel/areaSel.js
@@ -1,265 +1,270 @@
-
-import {
- getArea
-} from '../../api/index'
-Component({
- properties: {
- // placeholder涓洪�夋嫨鍣ㄧ殑榛樿鎻愮ず鏂囧瓧
- placeholder: {
- type: String,
- value: '璇烽�夋嫨鐪佸競鍦板尯',
- },
- // value涓洪�夋嫨鍣ㄧ殑榛樿鍊硷紝绫诲瀷涓烘暟缁�
- value: {
- type: Array,
- value: [],
- // observer鐩戝惉value鐨勫彉鍖栵紝濡傛灉鏈夊�煎垯璋冪敤setLabel鏂规硶璁剧疆閫夋嫨鍣ㄧ殑label
- observer(selectedValues) {
- if (selectedValues && selectedValues.length) {
- this.resetValus(selectedValues)
- this.setLabel();
- }
- }
- }
- },
- data: {
- // label涓洪�夋嫨鍣ㄧ殑鏄剧ず鍊�
- label: '',
- // range涓洪�夋嫨鍣ㄧ殑鍙�夐」锛岀被鍨嬩负鏁扮粍锛屽寘鍚笁涓暟缁勶紝鍒嗗埆涓虹渷銆佸競銆佸尯/鍘�
- range: [],
- // pickerValue涓洪�夋嫨鍣ㄧ殑閫変腑鍊硷紝绫诲瀷涓烘暟缁勶紝鍖呭惈涓変釜鏁板瓧锛屽垎鍒负鐪併�佸競銆佸尯/鍘跨殑涓嬫爣
- pickerValue: [],
- // addressList涓洪�夋嫨鍣ㄧ殑鏁版嵁婧愶紝绫诲瀷涓烘暟缁勶紝鍖呭惈鐪併�佸競銆佸尯/鍘跨殑淇℃伅
- addressList: [],
- },
- // attached鐢熷懡鍛ㄦ湡鍑芥暟锛屽湪缁勪欢瀹炰緥杩涘叆椤甸潰鑺傜偣鏍戞椂鎵ц
- attached() {
- this.initData()
- },
+ import {
+ getArea
+ } from '../../api/index'
+ Component({
+ properties: {
+ // placeholder涓洪�夋嫨鍣ㄧ殑榛樿鎻愮ず鏂囧瓧
+ placeholder: {
+ type: String,
+ value: '璇烽�夋嫨鐪佸競鍦板尯',
+ },
+ // value涓洪�夋嫨鍣ㄧ殑榛樿鍊硷紝绫诲瀷涓烘暟缁�
+ value: {
+ type: Array,
+ value: [],
+ // observer鐩戝惉value鐨勫彉鍖栵紝濡傛灉鏈夊�煎垯璋冪敤setLabel鏂规硶璁剧疆閫夋嫨鍣ㄧ殑label
+ observer(selectedValues) {
+ if (selectedValues && selectedValues.length) {
+ this.resetValus(selectedValues)
+ this.setLabel();
+ }
+ }
+ }
+ },
+ data: {
+ // label涓洪�夋嫨鍣ㄧ殑鏄剧ず鍊�
+ label: '',
+ // range涓洪�夋嫨鍣ㄧ殑鍙�夐」锛岀被鍨嬩负鏁扮粍锛屽寘鍚笁涓暟缁勶紝鍒嗗埆涓虹渷銆佸競銆佸尯/鍘�
+ range: [],
+ // pickerValue涓洪�夋嫨鍣ㄧ殑閫変腑鍊硷紝绫诲瀷涓烘暟缁勶紝鍖呭惈涓変釜鏁板瓧锛屽垎鍒负鐪併�佸競銆佸尯/鍘跨殑涓嬫爣
+ pickerValue: [],
+ // addressList涓洪�夋嫨鍣ㄧ殑鏁版嵁婧愶紝绫诲瀷涓烘暟缁勶紝鍖呭惈鐪併�佸競銆佸尯/鍘跨殑淇℃伅
+ addressList: [],
+ },
+ // attached鐢熷懡鍛ㄦ湡鍑芥暟锛屽湪缁勪欢瀹炰緥杩涘叆椤甸潰鑺傜偣鏍戞椂鎵ц
+ attached() {
+ this.initData()
+ },
- methods: {
- // wx.setStorageSync('addressList', tl)
- initData(){
- let list = wx.getStorageSync('addressList')
- if(list && list.length){
- this.setData({addressList: list})
- this.resetValus(list)
- this.setLabel();
- if (!this.data.value.length) {
- this.initRange();
- }
- }else{
- getArea({
- "level": "",
- "pid": ""
- }).then(res => {
- var tl = []
- if(res && res.data && res.data.length){
- res.data.forEach(element => {
- let tc = []
- if(element.children &&element.children.length){
- element.children.forEach(c => {
- let ta = []
- if(c.children &&c.children.length){
- c.children.forEach(a => {
- ta.push({
- label: a.name,
- value: a.id ,
- regionLevel: '3',
- parentRegionCode: c.id
- })
- })
- }
- tc.push({
- label: c.name,
- value: c.id,
- regionLevel:"2",
- children:ta,
- parentRegionCode:element.id
- })
- })
- }
- tl.push({
- label: element.name,
- value: element.id,
- regionLevel:"1",
- children: tc,
- parentRegionCode:"0"
- })
- });
- }
- wx.setStorageSync('addressList', tl)
- this.setData({addressList: tl})
- this.resetValus()
- this.setLabel();
- if (!this.data.value.length) {
- this.initRange();
- }
- })
- }
- },
- resetValus(selectedValues){
- selectedValues = selectedValues || this.data.value
- let temVal = []
- let tlable =''
- if (selectedValues.length == 3) {
- var v1 = selectedValues[0]
- var v2 = selectedValues[1]
- var v3= selectedValues[2]
- var t1,t2,t3;
- this.data.addressList.forEach(item =>{
- if(v1 && v1.length ==6
- &&v2 && v2.length ==6
- &&v3 && v3.length ==6){
- if(item.value.indexOf(v1) == 0){
- t1 = item.value
- if(item.children){
- item.children.forEach(item2 =>{
- if(item2.value.indexOf(v2) == 0){
- if(item2.children){
- item2.children.forEach(item3 =>{
- if(item3.value.indexOf(v3) == 0){
- tlable = item.label +"-"+item2.label+'-'+item3.label
- t1 = item.value
- t2 = item2.value
- t3 = item3.value
- temVal = [t1,t2,t3]
- // this.value = temVal
- // this.data.label=tlable
- this.triggerEvent("change", {
- value: temVal,
- label:tlable
- });
- this.setData({value:temVal,label:tlable})
- }
- })
- }
- }
- })
- }
- }
- }
- })
- }
- },
- // getAddressItem鏂规硶鐢ㄤ簬灏嗗湴鍧�淇℃伅杞崲涓洪�夋嫨鍣ㄥ彲鐢ㄧ殑鏍煎紡
- getAddressItem(data) {
- return {
- label: data.label,
- value: data.value
- };
- },
- // setAddressList鏂规硶鐢ㄤ簬灏嗗湴鍧�鍒楄〃杞崲涓洪�夋嫨鍣ㄥ彲鐢ㄧ殑鏍煎紡
- setAddressList(list) {
- return list.map((v) => this.getAddressItem(v));
- },
- // getAddressByCode鏂规硶鐢ㄤ簬鏍规嵁value鍊艰幏鍙栧湴鍧�淇℃伅鍙婂叾鍦ㄦ暟缁勪腑鐨勪笅鏍�
- getAddressByCode(list = [], value) {
- let index = list.findIndex(item => item.value === value);
- return [index, list[index] || {}];
- },
- // openChildren鏂规硶鐢ㄤ簬鏍规嵁value鍊兼墦寮�涓嬩竴绾ч�夋嫨鍣�
- openChildren(list, keys) {
- let result = [];
- const handle = (arr, keys) => {
- let newarr = arr.map((v, index) => {
- if (keys && keys.length) {
- let [currentKey, ...nextKey] = keys;
- if (currentKey === index && Array.isArray(v.children)) {
- handle(v.children, nextKey);
- }
- }
- return this.getAddressItem(v);
- });
- result.push(newarr);
- }
- handle(list, keys);
- return result.reverse();
- },
- // onChange鏂规硶涓洪�夋嫨鍣ㄧ殑change浜嬩欢澶勭悊鍑芥暟锛岀敤浜庤缃甽abel鍜岃Е鍙慶hange浜嬩欢
- onChange(e) {
- let [r1, r2, r3] = this.data.range;
- const [v1, v2, v3] = e.detail.value;
- const selected = [r1[v1], r2[v2], r3[v3]];
- const values = selected.map(v => v.value);
- const label = selected.map(v => v.label).join('-');
-
- this.triggerEvent("change", {
- value: values,
- label:label
- });
- this.setData({
- label:label
- });
- },
- // columnChange鏂规硶涓洪�夋嫨鍣ㄧ殑columnchange浜嬩欢澶勭悊鍑芥暟锛岀敤浜庤缃畆ange鍜宲ickerValue
- columnChange(e) {
- const {
- column,
- value
- } = e.detail;
- this.setColumn(column, value);
- },
- // setColumn鏂规硶鐢ㄤ簬璁剧疆range鍜宲ickerValue
- setColumn(column, value) {
- let addressList = this.data.addressList;
- if (!addressList || addressList.length === 0) return;
- let [r1, r2, r3] = this.data.range;
- if (column === 0) {
- r2 = this.setAddressList(addressList[value].children);
- r3 = this.setAddressList(addressList[value].children[0].children);
- this.setData({
- pickerValue: [value, 0, 0]
- });
- } else if (column === 1) {
- const [v1] = this.data.pickerValue;
- r3 = this.setAddressList(addressList[v1].children[value].children);
- this.setData({
- pickerValue: [v1, value, 0]
- });
- }
- this.setData({
- range: [r1, r2, r3]
- });
- },
- // setLabel鏂规硶鐢ㄤ簬璁剧疆label
- setLabel() {
- let addressList = this.data.addressList;
- if (addressList && addressList.length) {
- const [v1, v2, v3] = this.data.value;
- const [s1, {
- label: t1,
- children: l1
- }] = this.getAddressByCode(addressList, v1);
- const [s2, {
- label: t2,
- children: l2
- }] = this.getAddressByCode(l1, v2);
- const [s3, {
- label: t3
- }] = this.getAddressByCode(l2, v3);
- const label = [t1, t2, t3].filter(v => v).join('-');
-
- const pickerValue = [s1, s2, s3];
- const range = this.openChildren(addressList, [s1, s2, s3]);
- if (label.length) {
- this.setData({
- label,
- range,
- pickerValue
- });
- }
- }
- },
- // initRange鏂规硶鐢ㄤ簬鍒濆鍖杛ange
- initRange() {
- if (!this.data.value.length) {
- const range = this.openChildren(this.data.addressList, [0, 0, 0]);
- this.setData({
- range
- });
- }
- },
-
- },
-});
\ No newline at end of file
+ methods: {
+ initData() {
+ let list = wx.getStorageSync('addressList') || []
+ if (list && list.length) {
+ this.setData({
+ addressList: list
+ })
+ this.resetValus(list)
+ this.setLabel();
+ if (!this.data.value.length) {
+ this.initRange();
+ }
+ } else {
+ getArea({
+ "level": "",
+ "pid": ""
+ }).then(res => {
+ var tl = []
+ if (res && res.data && res.data.length) {
+ res.data.forEach(element => {
+ let tc = []
+ if (element.children && element.children.length) {
+ element.children.forEach(c => {
+ let ta = []
+ if (c.children && c.children.length) {
+ c.children.forEach(a => {
+ ta.push({
+ label: a.name,
+ value: a.id,
+ regionLevel: '3',
+ parentRegionCode: c.id
+ })
+ })
+ }
+ tc.push({
+ label: c.name,
+ value: c.id,
+ regionLevel: "2",
+ children: ta,
+ parentRegionCode: element.id
+ })
+ })
+ }
+ tl.push({
+ label: element.name,
+ value: element.id,
+ regionLevel: "1",
+ children: tc,
+ parentRegionCode: "0"
+ })
+ });
+ }
+ wx.setStorageSync('addressList', tl)
+ this.setData({
+ addressList: tl
+ })
+ this.resetValus()
+ this.setLabel();
+ if (!this.data.value.length) {
+ this.initRange();
+ }
+ })
+ }
+ },
+ resetValus(selectedValues) {
+ selectedValues = selectedValues || this.data.value
+ let temVal = []
+ let tlable = ''
+ if (selectedValues.length == 3) {
+ var v1 = selectedValues[0]
+ var v2 = selectedValues[1]
+ var v3 = selectedValues[2]
+ var t1, t2, t3;
+ this.data.addressList.forEach(item => {
+ if (v1 && v1.length == 6 &&
+ v2 && v2.length == 6 &&
+ v3 && v3.length == 6) {
+ if (item.value.indexOf(v1) == 0) {
+ t1 = item.value
+ if (item.children) {
+ item.children.forEach(item2 => {
+ if (item2.value.indexOf(v2) == 0) {
+ if (item2.children) {
+ item2.children.forEach(item3 => {
+ if (item3.value.indexOf(v3) == 0) {
+ tlable = item.label + "-" + item2.label + '-' + item3.label
+ t1 = item.value
+ t2 = item2.value
+ t3 = item3.value
+ temVal = [t1, t2, t3]
+ // this.value = temVal
+ // this.data.label=tlable
+ this.triggerEvent("change", {
+ value: temVal,
+ label: tlable
+ });
+ this.setData({
+ value: temVal,
+ label: tlable
+ })
+ }
+ })
+ }
+ }
+ })
+ }
+ }
+ }
+ })
+ }
+ },
+ // getAddressItem鏂规硶鐢ㄤ簬灏嗗湴鍧�淇℃伅杞崲涓洪�夋嫨鍣ㄥ彲鐢ㄧ殑鏍煎紡
+ getAddressItem(data) {
+ return {
+ label: data.label,
+ value: data.value
+ };
+ },
+ // setAddressList鏂规硶鐢ㄤ簬灏嗗湴鍧�鍒楄〃杞崲涓洪�夋嫨鍣ㄥ彲鐢ㄧ殑鏍煎紡
+ setAddressList(list) {
+ return list.map((v) => this.getAddressItem(v));
+ },
+ // getAddressByCode鏂规硶鐢ㄤ簬鏍规嵁value鍊艰幏鍙栧湴鍧�淇℃伅鍙婂叾鍦ㄦ暟缁勪腑鐨勪笅鏍�
+ getAddressByCode(list = [], value) {
+ let index = list.findIndex(item => item.value === value);
+ return [index, list[index] || {}];
+ },
+ // openChildren鏂规硶鐢ㄤ簬鏍规嵁value鍊兼墦寮�涓嬩竴绾ч�夋嫨鍣�
+ openChildren(list, keys) {
+ let result = [];
+ const handle = (arr, keys) => {
+ let newarr = arr.map((v, index) => {
+ if (keys && keys.length) {
+ let [currentKey, ...nextKey] = keys;
+ if (currentKey === index && Array.isArray(v.children)) {
+ handle(v.children, nextKey);
+ }
+ }
+ return this.getAddressItem(v);
+ });
+ result.push(newarr);
+ }
+ handle(list, keys);
+ return result.reverse();
+ },
+ // onChange鏂规硶涓洪�夋嫨鍣ㄧ殑change浜嬩欢澶勭悊鍑芥暟锛岀敤浜庤缃甽abel鍜岃Е鍙慶hange浜嬩欢
+ onChange(e) {
+ let [r1, r2, r3] = this.data.range;
+ const [v1, v2, v3] = e.detail.value;
+ const selected = [r1[v1], r2[v2], r3[v3]];
+ const values = selected.map(v => v.value);
+ const label = selected.map(v => v.label).join('-');
+
+ this.triggerEvent("change", {
+ value: values,
+ label: label
+ });
+ this.setData({
+ label: label
+ });
+ },
+ // columnChange鏂规硶涓洪�夋嫨鍣ㄧ殑columnchange浜嬩欢澶勭悊鍑芥暟锛岀敤浜庤缃畆ange鍜宲ickerValue
+ columnChange(e) {
+ const {
+ column,
+ value
+ } = e.detail;
+ this.setColumn(column, value);
+ },
+ // setColumn鏂规硶鐢ㄤ簬璁剧疆range鍜宲ickerValue
+ setColumn(column, value) {
+ let addressList = this.data.addressList;
+ if (!addressList || addressList.length === 0) return;
+ let [r1, r2, r3] = this.data.range;
+ if (column === 0) {
+ r2 = this.setAddressList(addressList[value].children);
+ r3 = this.setAddressList(addressList[value].children[0].children);
+ this.setData({
+ pickerValue: [value, 0, 0]
+ });
+ } else if (column === 1) {
+ const [v1] = this.data.pickerValue;
+ r3 = this.setAddressList(addressList[v1].children[value].children);
+ this.setData({
+ pickerValue: [v1, value, 0]
+ });
+ }
+ this.setData({
+ range: [r1, r2, r3]
+ });
+ },
+ // setLabel鏂规硶鐢ㄤ簬璁剧疆label
+ setLabel() {
+ let addressList = this.data.addressList;
+ if (addressList && addressList.length) {
+ const [v1, v2, v3] = this.data.value;
+ const [s1, {
+ label: t1,
+ children: l1
+ }] = this.getAddressByCode(addressList, v1);
+ const [s2, {
+ label: t2,
+ children: l2
+ }] = this.getAddressByCode(l1, v2);
+ const [s3, {
+ label: t3
+ }] = this.getAddressByCode(l2, v3);
+ const label = [t1, t2, t3].filter(v => v).join('-');
+
+ const pickerValue = [s1, s2, s3];
+ const range = this.openChildren(addressList, [s1, s2, s3]);
+ if (label.length) {
+ this.setData({
+ label,
+ range,
+ pickerValue
+ });
+ }
+ }
+ },
+ // initRange鏂规硶鐢ㄤ簬鍒濆鍖杛ange
+ initRange() {
+ if (!this.data.value.length) {
+ const range = this.openChildren(this.data.addressList, [0, 0, 0]);
+ this.setData({
+ range
+ });
+ }
+ },
+
+ },
+ });
\ No newline at end of file
--
Gitblit v1.9.3