From 2831757b45ae0b84d79f42836f742cd1a1a9f97b Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 01 八月 2024 16:28:26 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 wechat_jiaxuan/components/areaSel/areaSel.js |  222 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 222 insertions(+), 0 deletions(-)

diff --git a/wechat_jiaxuan/components/areaSel/areaSel.js b/wechat_jiaxuan/components/areaSel/areaSel.js
new file mode 100644
index 0000000..0f5315e
--- /dev/null
+++ b/wechat_jiaxuan/components/areaSel/areaSel.js
@@ -0,0 +1,222 @@
+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.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.setLabel();
+      if (!this.data.value.length) {
+          this.initRange();
+      }
+      console.log(this.data.addressList)
+    }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.setLabel();
+        if (!this.data.value.length) {
+            this.initRange();
+        }
+        console.log(this.data.addressList)
+      })
+    }
+    },
+      // 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
+          });
+          console.log("label1", label)
+          console.log("label",this.data.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
+                  });
+              }
+          } else {
+           
+          }
+      },
+      // 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