From 9b04108927c093a7f5c77610b0f5e091308b7c01 Mon Sep 17 00:00:00 2001
From: Tevin <tingquanren@163.com>
Date: Fri, 04 Mar 2022 10:16:21 +0800
Subject: [PATCH] 实现签名组件

---
 forms/chinaArea/ChinaLocations.weapp.js |   68 +++++++++++++++++++++++++--------
 1 files changed, 51 insertions(+), 17 deletions(-)

diff --git a/forms/chinaArea/ChinaLocations.weapp.js b/forms/chinaArea/ChinaLocations.weapp.js
index b6b3e04..c9fa3c0 100644
--- a/forms/chinaArea/ChinaLocations.weapp.js
+++ b/forms/chinaArea/ChinaLocations.weapp.js
@@ -1,5 +1,5 @@
 /**
- * ChinaLocations
+ * ChinaLocations For WeApp
  * @author Tevin
  */
 
@@ -35,6 +35,7 @@
                 const city = {
                     label: children1[code2].name,
                     value: code2,
+                    area: children1[code2].area,  // 电话区码
                     children: [],
                 };
                 if (typeof children1[code2].children !== 'undefined') {
@@ -56,7 +57,7 @@
 
 export default {
     onReady(callback) {
-        if (ChinaLocationData.length > 0) {
+        if (locationTree.length > 0) {
             callback();
         } else {
             readyCallback = callback;
@@ -73,18 +74,22 @@
         let address = '';
         let tempLocationData = ChinaLocationData;
         regions.forEach((code) => {
-            if (typeof tempLocationData[code].name === 'string') {
-                address += tempLocationData[code].name;
+            if (!code || !tempLocationData[code]) {
+                address.push('');
+                tempLocationData = [];
             } else {
-                address += tempLocationData[code];
+                if (typeof tempLocationData[code].name === 'string') {
+                    address += tempLocationData[code].name;
+                } else {
+                    address += tempLocationData[code];
+                }
+                tempLocationData = tempLocationData[code].children;
             }
-            tempLocationData = tempLocationData[code].children;
         });
         return address;
     },
     // 省市区名称
     getRegionNames(regions, callback) {
-
         if (typeof regions === 'string') {
             regions = regions.split(',');
         }
@@ -94,22 +99,23 @@
         let address = [];
         let tempLocationData = ChinaLocationData;
         regions.forEach((code) => {
-            if (!tempLocationData[code]) {
-                return;
-            }
-            if (typeof tempLocationData[code].name === 'string') {
-                address.push(tempLocationData[code].name);
+            if (!code || !tempLocationData[code]) {
+                address.push('');
+                tempLocationData = [];
             } else {
-                address.push(tempLocationData[code]);
+                if (typeof tempLocationData[code].name === 'string') {
+                    address.push(tempLocationData[code].name);
+                } else {
+                    address.push(tempLocationData[code]);
+                }
+                tempLocationData = tempLocationData[code].children;
             }
-            tempLocationData = tempLocationData[code].children;
         });
         return address;
 
     },
     // 省市区文本转code
     getRegionCodes(regions, callback) {
-
         if (typeof regions === 'string') {
             regions = regions.split(',');
         }
@@ -129,7 +135,7 @@
                             if (provinceChildren[cityCode].name === regions[1]) {
                                 codes[1] = cityCode;
                                 // 区
-                                const areaChildren = provinceChildren[cityCode].children;
+                                const areaChildren = provinceChildren[cityCode].children || [];
                                 for (let areaCode in areaChildren) {
                                     if (areaChildren.hasOwnProperty(areaCode)) {
                                         if (areaChildren[areaCode] === regions[2]) {
@@ -147,6 +153,34 @@
             }
         }
         return codes;
-
     },
+    // 电话区码
+    getRegionsArea(regions) {
+        if (typeof regions === 'string') {
+            regions = regions.split(',');
+        }
+        if (!regions || regions.length === 0 || !regions[0]) {
+            return '';
+        }
+        let area = '';
+        // 省
+        for (let provinceCode in ChinaLocationData) {
+            if (ChinaLocationData.hasOwnProperty(provinceCode)) {
+                if (provinceCode === regions[0]) {
+                    // 市
+                    const provinceChildren = ChinaLocationData[provinceCode].children;
+                    for (let cityCode in provinceChildren) {
+                        if (provinceChildren.hasOwnProperty(cityCode)) {
+                            if (cityCode === regions[1]) {
+                                area = provinceChildren[cityCode].area;
+                                break;
+                            }
+                        }
+                    }
+                    break;
+                }
+            }
+        }
+        return area;
+    }
 };
\ No newline at end of file

--
Gitblit v1.9.1