From 196aac76666571c60536973418bff3da63bef1d8 Mon Sep 17 00:00:00 2001
From: ‘chensiAb’ <‘chenchenco03@163.com’>
Date: Tue, 01 Apr 2025 17:29:32 +0800
Subject: [PATCH] fix:百度地图组件微调 & 地址三级联动增加只读属性

---
 forms/chinaArea/CChinaArea.vue |   22 ++++++++++++++++------
 1 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/forms/chinaArea/CChinaArea.vue b/forms/chinaArea/CChinaArea.vue
index 881e452..4eb81be 100644
--- a/forms/chinaArea/CChinaArea.vue
+++ b/forms/chinaArea/CChinaArea.vue
@@ -1,10 +1,13 @@
 /**
  * CChinaArea - 表单项,中国地址三级联动
+ * 中国地区选择器组件,用于在表单中选择省市区地址
+ * 内置完整的中国行政区划数据,支持多级联动选择
+ * 支持自动通过地理定位获取省市区
  * @author Tevin
  */
 
 <template>
-    <view class="c-china-area">
+    <view :class="['c-china-area', readOnly ? 'read-only' : '']">
         <picker
             class="c-china-area-picker"
             mode="multiSelector"
@@ -58,6 +61,11 @@
         },
         // 占位提示
         placeholder: String,
+        // 是否只读
+        readOnly: {
+            type: Boolean,
+            default: false,
+        },
     },
     data() {
         return {
@@ -102,7 +110,7 @@
                         // 省
                         if (codes[0]) {
                             const proviceIndex = locationTree.findIndex(
-                                provice => provice.value === codes[0]
+                                provice => provice.value === codes[0],
                             );
                             if (proviceIndex >= 0) {
                                 range[1] = locationTree[proviceIndex].children;
@@ -112,7 +120,7 @@
                                 // 市
                                 if (codes[1]) {
                                     const cityIndex = range[1].findIndex(
-                                        city => city.value === codes[1]
+                                        city => city.value === codes[1],
                                     );
                                     if (cityIndex >= 0) {
                                         range[2] = range[1][cityIndex].children;
@@ -121,7 +129,7 @@
                                     // 区
                                     if (codes[2]) {
                                         const distIndex = range[2].findIndex(
-                                            dist => dist.value === codes[2]
+                                            dist => dist.value === codes[2],
                                         );
                                         if (distIndex >= 0) {
                                             current[2] = distIndex;
@@ -131,7 +139,7 @@
                                             range[3] =
                                                 range[2][current[2]].children || [];
                                             const streetIndex = range[3].findIndex(
-                                                street => street.value === codes[3]
+                                                street => street.value === codes[3],
                                             );
                                             if (streetIndex >= 0) {
                                                 current[3] = streetIndex;
@@ -144,7 +152,9 @@
                     });
                 }
                 this.range = range;
-                this.current = current;
+                setTimeout(() => {
+                    this.current = current;
+                }, 100);
             });
         },
         updateColumns(roll) {

--
Gitblit v1.9.1