From ad01ea7d8ea42d9df787b6847c2d4272c5740c5b Mon Sep 17 00:00:00 2001
From: Tevin <tingquanren@163.com>
Date: Mon, 31 Jul 2023 18:44:49 +0800
Subject: [PATCH] 地址联动组件,地址识别跟随升级

---
 forms/chinaArea/SmartAddress.js |   41 ++++++++++++++++++++---------------------
 forms/chinaArea/CChinaArea.vue  |    4 +++-
 2 files changed, 23 insertions(+), 22 deletions(-)

diff --git a/forms/chinaArea/CChinaArea.vue b/forms/chinaArea/CChinaArea.vue
index 91f4247..881e452 100644
--- a/forms/chinaArea/CChinaArea.vue
+++ b/forms/chinaArea/CChinaArea.vue
@@ -226,8 +226,10 @@
                             address.province.replace(/省|市|自治区|特别行政区/g, ''),
                             address.city,
                             address.district,
-                            address.street,
                         ];
+                        if (this.level === 4) {
+                            regions.push(address.street);
+                        }
                         $locations.getRegionCodes(regions, codes => {
                             if (codes && codes.length > 0) {
                                 $locations.getRegionNames(codes, names => {
diff --git a/forms/chinaArea/SmartAddress.js b/forms/chinaArea/SmartAddress.js
index ee453ec..4c6ce09 100644
--- a/forms/chinaArea/SmartAddress.js
+++ b/forms/chinaArea/SmartAddress.js
@@ -139,30 +139,31 @@
 
     _checkAddress(list) {
         const adrLabelReg = /地址|详细地址|公司地址|联系地址|地区|所在地区/;
-        for (let i = 0, item; (item = list[i]); i++) {
-            if (!item.content) {
-                continue;
-            }
-            if (item.label) {
-                if (adrLabelReg.test(item.label)) {
-                    this._parseAddress(item.content);
-                    list.splice(i, 1);
-                    break;
+        $locations.getLocationTree(3, chinaTree => {
+            for (let i = 0, item; (item = list[i]); i++) {
+                if (!item.content) {
+                    continue;
                 }
-            } else {
-                if (this._isAddress(item.content)) {
-                    this._parseAddress(item.content);
-                    list.splice(i, 1);
-                    break;
+                if (item.label) {
+                    if (adrLabelReg.test(item.label)) {
+                        this._parseAddress(item.content);
+                        list.splice(i, 1);
+                        break;
+                    }
+                } else {
+                    if (this._isAddress(chinaTree, item.content)) {
+                        this._parseAddress(chinaTree, item.content);
+                        list.splice(i, 1);
+                        break;
+                    }
                 }
             }
-        }
+        })
     }
 
-    _isAddress(content) {
+    _isAddress(tree, content) {
         content = content.replace('中国', '');
-        const provinceNames = $locations.getLocationTree()
-            .map(lv1 => lv1.label.replace('特别行政区', '').replace('省', ''));
+        const provinceNames = tree.map(lv1 => lv1.label.replace('特别行政区', '').replace('省', ''));
         for (let province of provinceNames) {
             if (content.indexOf(province) >= 0) {
                 return true;
@@ -171,9 +172,8 @@
         return false;
     }
 
-    _parseAddress(content) {
+    _parseAddress(chinaTree, content) {
         content = content.replace('中国', '');
-        const chinaTree = $locations.getLocationTree();
         // 省份处理 ---
         const provinceTailReg = /特别行政区|自治区|省|市$/;
         for (let province of chinaTree) {
@@ -221,6 +221,5 @@
             this.wordData.street = content;
         }
     }
-
 
 }
\ No newline at end of file

--
Gitblit v1.9.1