From ca2d2295e954f8b50069ee5a0fcc32e80433fafd Mon Sep 17 00:00:00 2001
From: Tevin <tingquanren@163.com>
Date: Tue, 06 Apr 2021 15:40:07 +0800
Subject: [PATCH] 修复地址三级联动的问题

---
 forms/chinaArea/CChinaArea.vue |   39 +++++++++++++++++++++++++--------------
 1 files changed, 25 insertions(+), 14 deletions(-)

diff --git a/forms/chinaArea/CChinaArea.vue b/forms/chinaArea/CChinaArea.vue
index d797021..59e0e7d 100644
--- a/forms/chinaArea/CChinaArea.vue
+++ b/forms/chinaArea/CChinaArea.vue
@@ -72,10 +72,12 @@
     },
     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 = [
@@ -89,7 +91,7 @@
                 // 省
                 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;
@@ -98,19 +100,19 @@
                         // 市
                         if (curVal[1]) {
                             const cityIndex = range[1].findIndex(
-                                city => city.code === curVal[1]
+                                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;
                                 }
                             }
                         }
@@ -121,15 +123,20 @@
             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);
             }
         },
@@ -144,6 +151,10 @@
             this.itemRes.onChange(codes);
         },
     },
-    mounted() {},
+    mounted() {
+        if (process.env.TARO_ENV === 'weapp') {
+            this.handleOpen();
+        }
+    },
 };
 </script>
\ No newline at end of file

--
Gitblit v1.9.1