Browse Source

静态页面

1002884655 4 years ago
parent
commit
9d05acaabb

+ 84
- 0
src/components/common/MapSearch/index.vue View File

@@ -0,0 +1,84 @@
1
+<template>
2
+  <div class="components MapSearch" v-show="Show">
3
+    <div class="BaiDuMapSearch flex-h">
4
+      <div class="flex-item">
5
+        <input type="search" v-model="MapSearchKey" placeholder="请输入地址" @search="MapSearchFoo">
6
+      </div>
7
+      <a @click="MapSearchFoo">搜索</a>
8
+    </div>
9
+
10
+    <div class="MapContainer">
11
+      <div id="Map"></div>
12
+    </div>
13
+
14
+    <div class="Bottom flex-h">
15
+      <a class="flex-item" @click="$emit('Close')">取消</a>
16
+      <a class="flex-item" @click="SureAddress">确定</a>
17
+    </div>
18
+  </div>
19
+</template>
20
+
21
+<script>
22
+/*
23
+  页面名称:
24
+*/
25
+export default {
26
+  name: 'MapSearch',
27
+  props: ['Show'],
28
+  data () {
29
+    return {
30
+      City: null,
31
+      Province: null,
32
+      CurrentSelectAddress: null,
33
+      LocalMap: null,
34
+      MapSearchKey: ''
35
+    }
36
+  },
37
+  computed: {
38
+  },
39
+  components: {
40
+  },
41
+  created () {
42
+    // console.log(this.$route)
43
+  },
44
+  mounted () {
45
+    this.$nextTick(() => {
46
+      this.MapInit()
47
+    })
48
+  },
49
+  methods: {
50
+    SureAddress () { // 确认选取地址
51
+      if (this.CurrentSelectAddress === null) return
52
+      this.$emit('Sure', { Province: this.Province, City: this.City, ...this.CurrentSelectAddress })
53
+    },
54
+    MapSearchFoo () {
55
+      if (this.MapSearchKey !== '') {
56
+        this.LocalMap.search(this.MapSearchKey)
57
+      }
58
+    },
59
+    MapInit () {
60
+      let map = new window.BMap.Map('Map')
61
+      map.centerAndZoom(new window.BMap.Point(116.404, 39.915), 11)
62
+      this.LocalMap = new window.BMap.LocalSearch(map, {
63
+        renderOptions: { map: map },
64
+        onSearchComplete: (res) => {
65
+          console.log(res)
66
+          this.City = res.city
67
+          this.Province = res.province
68
+          map.addEventListener('click', (e) => {
69
+            this.CurrentSelectAddress = {
70
+              name: this.MapSearchKey,
71
+              ...e.point
72
+            }
73
+          })
74
+        }
75
+      })
76
+    }
77
+  }
78
+}
79
+</script>
80
+
81
+<!-- Add "scoped" attribute to limit CSS to this component only -->
82
+<style lang="scss" scoped>
83
+@import "page.scss";
84
+</style>

+ 68
- 0
src/components/common/MapSearch/page.scss View File

@@ -0,0 +1,68 @@
1
+.components.MapSearch {
2
+  width: 100%;
3
+  height: 100vh;
4
+  position: absolute;
5
+  z-index: 10;
6
+  overflow: hidden;
7
+  top: 0;
8
+  left: 0;
9
+  > .BaiDuMapSearch {
10
+    width: 80%;
11
+    position: absolute;
12
+    z-index: 2;
13
+    top: 0.3rem;
14
+    left: 10%;
15
+    border-radius: 0.06rem;
16
+    border: 0.01rem solid #ccc;
17
+    overflow: hidden;
18
+    > div {
19
+      position: relative;
20
+      overflow: hidden;
21
+      > input {
22
+        width: 100%;
23
+        display: block;
24
+        font-size: 0.14rem;
25
+        line-height: 0.2rem;
26
+        padding: 0.1rem 0;
27
+        background: #fff;
28
+        text-indent: 0.1rem;
29
+        border: none;
30
+      }
31
+    }
32
+    > a {
33
+      font-size: 0.14rem;
34
+      background: #ff5200;
35
+      color: #fff;
36
+      width: 0.6rem;
37
+      text-align: center;
38
+      line-height: 0.4rem;
39
+    }
40
+  }
41
+  > .MapContainer {
42
+    width: 100%;
43
+    height: 100%;
44
+    position: relative;
45
+    z-index: 1;
46
+    > div {
47
+      width: 100%;
48
+      height: 100%;
49
+    }
50
+  }
51
+  > .Bottom {
52
+    width: 100%;
53
+    position: absolute;
54
+    left: 0;
55
+    bottom: 0;
56
+    z-index: 2;
57
+    > a {
58
+      text-align: center;
59
+      font-size: 0.14rem;
60
+      line-height: 0.4rem;
61
+      background: #ccc;
62
+      color: #fff;
63
+      &:last-child {
64
+        background: #ff5200;
65
+      }
66
+    }
67
+  }
68
+}

+ 23
- 5
src/pages/SignUp/index.vue View File

@@ -80,8 +80,11 @@
80 80
 
81 81
     <div class="BaiDuMap" v-show="ShowMap">
82 82
 
83
-      <div class="BaiDuMapSearch">
84
-        <input type="search" v-model="MapSearchKey" placeholder="请输入地址" @search="MapSearch">
83
+      <div class="BaiDuMapSearch flex-h">
84
+        <div class="flex-item">
85
+          <input type="search" v-model="MapSearchKey" placeholder="请输入地址" @search="MapSearch">
86
+        </div>
87
+        <a @click="MapSearch">搜索</a>
85 88
       </div>
86 89
 
87 90
       <div class="MapContainer">
@@ -128,7 +131,9 @@ export default {
128 131
         captcha: '',
129 132
         password: '',
130 133
         lat: '',
131
-        lng: ''
134
+        lng: '',
135
+        city: '',
136
+        province: ''
132 137
       },
133 138
       Timer: null,
134 139
       TimeNum: 60,
@@ -215,7 +220,9 @@ export default {
215 220
       this.ShowMap = false
216 221
     },
217 222
     MapSearch () {
218
-      this.LocalMap.search(this.MapSearchKey)
223
+      if (this.MapSearchKey !== '') {
224
+        this.LocalMap.search(this.MapSearchKey)
225
+      }
219 226
     },
220 227
     MapInit () {
221 228
       let map = new window.BMap.Map('Map')
@@ -223,12 +230,23 @@ export default {
223 230
       this.LocalMap = new window.BMap.LocalSearch(map, {
224 231
         renderOptions: { map: map },
225 232
         onSearchComplete: (res) => {
233
+          this.FormData.city = res.city
234
+          this.FormData.province = res.province
226 235
           map.addEventListener('click', (e) => {
236
+            console.log(e.currentTarget.Ua)
227 237
             this.CurrentSelectAddress = {
228
-              name: e.currentTarget.bh + this.MapSearchKey,
238
+              name: this.MapSearchKey,
229 239
               ...e.point
230 240
             }
241
+            // res.Hr.map((item) => {
242
+            //   if (`${item.point.lng}` === `${e.point.lng}` && `${item.point.lat}` === `${e.point.lat}`) {
243
+            //     console.log(item)
244
+            //   }
245
+            // })
231 246
           })
247
+          // window.setTimeout(() => {
248
+          //   document.getElementsByClassName('BMap_Marker')[0].get(0).click()
249
+          // }, 100)
232 250
         }
233 251
       })
234 252
     },

+ 23
- 10
src/pages/SignUp/page.scss View File

@@ -168,17 +168,30 @@
168 168
       z-index: 2;
169 169
       top: 0.3rem;
170 170
       left: 10%;
171
-      > input {
172
-        width: 100%;
173
-        display: block;
174
-        box-sizing: border-box;
171
+      border-radius: 0.06rem;
172
+      border: 0.01rem solid #ccc;
173
+      overflow: hidden;
174
+      > div {
175
+        position: relative;
176
+        overflow: hidden;
177
+        > input {
178
+          width: 100%;
179
+          display: block;
180
+          font-size: 0.14rem;
181
+          line-height: 0.2rem;
182
+          padding: 0.1rem 0;
183
+          background: #fff;
184
+          text-indent: 0.1rem;
185
+          border: none;
186
+        }
187
+      }
188
+      > a {
175 189
         font-size: 0.14rem;
176
-        line-height: 0.2rem;
177
-        padding: 0.1rem 0;
178
-        background: #fff;
179
-        border-radius: 0.06rem;
180
-        border: 0.01rem solid #ccc;
181
-        text-indent: 0.1rem;
190
+        background: #ff5200;
191
+        color: #fff;
192
+        width: 0.6rem;
193
+        text-align: center;
194
+        line-height: 0.4rem;
182 195
       }
183 196
     }
184 197
     > .MapContainer {

+ 110
- 19
src/pages/WoDe/DianPuRenZheng/index.vue View File

@@ -1,6 +1,6 @@
1 1
 <template>
2 2
   <div class="Page">
3
-    <MainPageContainer :ShowMainHeader="true" :MainHeaderTitle="`店铺认证`" :ShowMainHeaderBack="true" :ShowMainHeaderMore="true" :MainHeaderMoreText="`保存`">
3
+    <MainPageContainer :ShowMainHeader="true" :MainHeaderTitle="`店铺认证`" :ShowMainHeaderBack="true" :ShowMainHeaderMore="true" :MainHeaderMoreText="`保存`" :MainHeaderMoreClick="SaveForm">
4 4
       <div class="Container">
5 5
         <div class="Content">
6 6
 
@@ -40,12 +40,12 @@
40 40
               <span>营业执照</span>
41 41
             </div>
42 42
             <div class="PhotoList">
43
-              <a class="Add" @click="AddZhiZhaoImg">
43
+              <a class="Add" @click="$refs.ZzFile.click()">
44 44
                 <i class="iconfont iconjia centerLabel"></i>
45 45
               </a>
46 46
               <div v-for="(item, index) in ZZImgArr" :key="index">
47 47
                 <img :src="item" class="centerLabel contain" alt="">
48
-                <a class="iconfont iconguanbi" @click="DeleteZZImg(index)"></a>
48
+                <a class="iconfont iconguanbi" @click="ZZImgArr.splice(index, 1)"></a>
49 49
               </div>
50 50
               <input type="file" ref="ZzFile" @change="ZzFileChange" style="display: none">
51 51
             </div>
@@ -57,39 +57,52 @@
57 57
             </div>
58 58
             <div class="IdCardList">
59 59
               <div>
60
-                <a></a>
60
+                <a @click="$refs.SfzzmFile.click()">
61
+                  <img v-if="SfzzmImg !== null" :src="SfzzmImg" class="centerLabel contain" alt="">
62
+                </a>
61 63
                 <span>身份证正面照</span>
64
+                <input type="file" ref="SfzzmFile" @change="SfzzmFileChange" style="display: none">
62 65
               </div>
63 66
               <div>
64
-                <a></a>
67
+                <a @click="$refs.SfzfmFile.click()">
68
+                  <img v-if="SfzfmImg !== null" :src="SfzfmImg" class="centerLabel contain" alt="">
69
+                </a>
65 70
                 <span>身份证背面照</span>
71
+                <input type="file" ref="SfzfmFile" @change="SfzfmFileChange" style="display: none">
66 72
               </div>
67 73
             </div>
68 74
           </div>
69 75
 
70 76
           <div>
71 77
             <div class="Line flex-h">
72
-              <span>详细地址</span>
73
-              <div class="flex-item">
78
+              <span>所在地区</span>
79
+              <div class="flex-item" @click="ShowAreaSelect = true">
74 80
                 <div>
75
-                  <input type="text" placeholder="街道、门牌号等">
81
+                  <span v-if="AreaList[0] !== null">{{AreaList[0]}} {{AreaList[1]}}</span>
82
+                  <span v-else>请选择地区</span>
76 83
                 </div>
77 84
               </div>
85
+              <i class="iconfont iconjiantouright"></i>
78 86
             </div>
79 87
             <div class="Line flex-h">
80
-              <span>所在地区</span>
88
+              <span>详细地址</span>
81 89
               <div class="flex-item">
82 90
                 <div>
83
-                  <span>xxx</span>
91
+                  <input type="text" placeholder="街道、门牌号等">
84 92
                 </div>
85 93
               </div>
86
-              <i class="iconfont iconjiantouright"></i>
87 94
             </div>
88 95
             <div class="Line flex-h">
89 96
               <span>营业时间</span>
90
-              <div class="flex-item">
97
+              <div class="flex-item" @click="ShowTimeStartSelect = true">
91 98
                 <div>
92
-                  <span>xxx</span>
99
+                  <span style="text-align: center;">{{StartTime === null ? '开始时间' : StartTime}}</span>
100
+                </div>
101
+              </div>
102
+              <em>至</em>
103
+              <div class="flex-item" @click="ShowTimeEndSelect = true">
104
+                <div>
105
+                  <span style="text-align: center;">{{EndTime === null ? '结束时间' : EndTime}}</span>
93 106
                 </div>
94 107
               </div>
95 108
               <i class="iconfont iconjiantouright"></i>
@@ -102,12 +115,29 @@
102 115
           </div>
103 116
 
104 117
         </div>
118
+        <div class="PickLayer" v-show="ShowAreaSelect">
119
+          <div>
120
+            <van-picker ref="AreaPicker" :columns="Columns" @change="AreaChange" show-toolbar title="选择城市" @cancel="ShowAreaSelect = false" @confirm="AreaConfirm" />
121
+          </div>
122
+        </div>
123
+        <div class="PickLayer" v-show="ShowTimeStartSelect">
124
+          <div>
125
+            <van-datetime-picker v-model="CurrentStartDate" type="time" @confirm="StartTimeConfirm" @cancel="ShowTimeStartSelect = false" />
126
+          </div>
127
+        </div>
128
+        <div class="PickLayer" v-show="ShowTimeEndSelect">
129
+          <div>
130
+            <van-datetime-picker v-model="CurrentEndDate" type="time" @confirm="EndTimeConfirm" @cancel="ShowTimeEndSelect = false" />
131
+          </div>
132
+        </div>
105 133
       </div>
106 134
     </MainPageContainer>
107 135
   </div>
108 136
 </template>
109 137
 
110 138
 <script>
139
+import { Picker, DatetimePicker } from 'vant'
140
+import AreaColumns from '../../../util/Area'
111 141
 import MainPageContainer from '../../../components/common/MainPageContainer'
112 142
 import { createNamespacedHelpers } from 'vuex'
113 143
 const { mapState: mapUserState, mapActions: mapUserActions, mapMutations: mapUserMutations } = createNamespacedHelpers('user')
@@ -115,8 +145,30 @@ export default {
115 145
   name: 'index',
116 146
   data () {
117 147
     return {
148
+      DataLock: false,
149
+      CurrentStartDate: '08:00',
150
+      ShowTimeStartSelect: false,
151
+      CurrentEndDate: '18:00',
152
+      ShowTimeEndSelect: false,
153
+      ShowAreaSelect: false,
118 154
       ZzFileData: null,
119
-      ZZImgArr: []
155
+      ZZImgArr: [],
156
+      SfzzmImg: null,
157
+      SfzfmImg: null,
158
+      AreaList: [null, null],
159
+      StartTime: null,
160
+      EndTime: null,
161
+      Columns: [
162
+        {
163
+          values: Object.keys(AreaColumns),
164
+          className: 'column1'
165
+        },
166
+        {
167
+          values: AreaColumns['北京'],
168
+          className: 'column2',
169
+          defaultIndex: 0
170
+        }
171
+      ]
120 172
     }
121 173
   },
122 174
   computed: {
@@ -125,7 +177,9 @@ export default {
125 177
     })
126 178
   },
127 179
   components: {
128
-    MainPageContainer
180
+    MainPageContainer,
181
+    'van-picker': Picker,
182
+    'van-datetime-picker': DatetimePicker
129 183
   },
130 184
   created () {
131 185
   },
@@ -140,11 +194,48 @@ export default {
140 194
     ...mapUserActions([
141 195
       'ImgUpload'
142 196
     ]),
143
-    DeleteZZImg (index) { // 删除营业执照图片
144
-      this.ZZImgArr.splice(index, 1)
197
+    SaveForm () { // 保存认证
198
+      if (this.DataLock) return
199
+      this.DataLock = true
200
+    },
201
+    EndTimeConfirm (e) { // 确定选择结束时间
202
+      this.EndTime = this.CurrentEndDate
203
+      this.ShowTimeEndSelect = false
145 204
     },
146
-    AddZhiZhaoImg () { // 添加营业执照
147
-      this.$refs.ZzFile.click()
205
+    StartTimeConfirm (e) { // 确定选择开始时间
206
+      this.StartTime = this.CurrentStartDate
207
+      this.ShowTimeStartSelect = false
208
+    },
209
+    AreaConfirm () { // 确定选择城市
210
+      let Arr = this.$refs.AreaPicker.getValues()
211
+      if (Arr[1] === undefined) {
212
+        for (let key in AreaColumns) {
213
+          if (key === Arr[0]) {
214
+            Arr[1] = AreaColumns[key][0]
215
+          }
216
+        }
217
+      }
218
+      this.AreaList = Arr
219
+      this.ShowAreaSelect = false
220
+    },
221
+    AreaChange (picker, values) {
222
+      picker.setColumnValues(1, AreaColumns[values[0]])
223
+    },
224
+    SfzzmFileChange (e) { // 身份证正面照更新
225
+      let aFormData = new FormData()
226
+      aFormData.append('file', e.target.files[0])
227
+      this.ImgUpload({ urlData: { plat: 'shop' }, data: aFormData, headers: { 'Content-Type': 'multipart/form-data' } }).then((res) => {
228
+        this.$refs.SfzzmFile.value = ''
229
+        this.SfzzmImg = res.data.data
230
+      })
231
+    },
232
+    SfzfmFileChange (e) { // 身份证反面照更新
233
+      let aFormData = new FormData()
234
+      aFormData.append('file', e.target.files[0])
235
+      this.ImgUpload({ urlData: { plat: 'shop' }, data: aFormData, headers: { 'Content-Type': 'multipart/form-data' } }).then((res) => {
236
+        this.$refs.SfzfmFile.value = ''
237
+        this.SfzfmImg = res.data.data
238
+      })
148 239
     },
149 240
     ZzFileChange (e) { // 营业执照图片更新
150 241
       let aFormData = new FormData()

+ 18
- 0
src/pages/WoDe/DianPuRenZheng/page.scss View File

@@ -130,6 +130,8 @@
130 130
               padding-bottom: 58.59%;
131 131
               background: #fff;
132 132
               border-radius: 0.06rem;
133
+              position: relative;
134
+              overflow: hidden;
133 135
               box-shadow: 0 0 0.02rem 0.02rem rgba(0, 0, 0, 0.05);
134 136
             }
135 137
             > span {
@@ -143,5 +145,21 @@
143 145
         }
144 146
       }
145 147
     }
148
+    > .PickLayer {
149
+      width: 100%;
150
+      position: fixed;
151
+      top: 0;
152
+      left: 0;
153
+      bottom: 0;
154
+      background: rgba(0, 0, 0, 0.5);
155
+      z-index: 100;
156
+      > div {
157
+        width: 100%;
158
+        position: absolute;
159
+        left: 0;
160
+        bottom: 0;
161
+        overflow: hidden;
162
+      }
163
+    }
146 164
   }
147 165
 }

+ 39
- 0
src/util/Area.js View File

@@ -0,0 +1,39 @@
1
+/* eslint-disable */
2
+const AreaColumns = {
3
+  "北京市": ["北京市"],
4
+  "天津市": ["天津市"],
5
+  "河北省": ["石家庄市", "唐山市", "秦皇岛市", "邯郸市", "邢台市", "保定市", "张家口市", "承德市", "沧州市", "廊坊市", "衡水市"],
6
+  "山西省": ["太原市", "大同市", "阳泉市", "长治市", "晋城市", "朔州市", "晋中市", "运城市", "忻州市", "临汾市", "吕梁市"],
7
+  "内蒙古自治区": ["呼和浩特市", "包头市", "乌海市", "赤峰市", "通辽市", "鄂尔多斯市", "呼伦贝尔市", "巴彦淖尔市", "乌兰察布市", "兴安盟", "锡林郭勒盟", "阿拉善盟"],
8
+  "辽宁省": ["沈阳市", "大连市", "鞍山市", "抚顺市", "本溪市", "丹东市", "锦州市", "营口市", "阜新市", "辽阳市", "盘锦市", "铁岭市", "朝阳市", "葫芦岛市"],
9
+  "吉林省": ["长春市", "吉林市", "四平市", "辽源市", "通化市", "白山市", "松原市", "白城市", "延边朝鲜族自治州"],
10
+  "黑龙江省": ["哈尔滨市", "齐齐哈尔市", "鸡西市", "鹤岗市", "双鸭山市", "大庆市", "伊春市", "佳木斯市", "七台河市", "牡丹江市", "黑河市", "绥化市", "大兴安岭地区"],
11
+  "上海市": ["上海市"],
12
+  "江苏省": ["南京市", "无锡市", "徐州市", "常州市", "苏州市", "南通市", "连云港市", "淮安市", "盐城市", "扬州市", "镇江市", "泰州市", "宿迁市"],
13
+  "浙江省": ["杭州市", "宁波市", "温州市", "嘉兴市", "湖州市", "绍兴市", "金华市", "衢州市", "舟山市", "台州市", "丽水市"],
14
+  "安徽省": ["合肥市", "芜湖市", "蚌埠市", "淮南市", "马鞍山市", "淮北市", "铜陵市", "安庆市", "黄山市", "滁州市", "阜阳市", "宿州市", "六安市", "亳州市", "池州市", "宣城市"],
15
+  "福建省": ["福州市", "厦门市", "莆田市", "三明市", "泉州市", "漳州市", "南平市", "龙岩市", "宁德市"],
16
+  "江西省": ["南昌市", "景德镇市", "萍乡市", "九江市", "新余市", "鹰潭市", "赣州市", "吉安市", "宜春市", "抚州市", "上饶市"],
17
+  "山东省": ["济南市", "青岛市", "淄博市", "枣庄市", "东营市", "烟台市", "潍坊市", "济宁市", "泰安市", "威海市", "日照市", "临沂市", "德州市", "聊城市", "滨州市", "菏泽市"],
18
+  "河南省": ["郑州市", "开封市", "洛阳市", "平顶山市", "安阳市", "鹤壁市", "新乡市", "焦作市", "濮阳市", "许昌市", "漯河市", "三门峡市", "南阳市", "商丘市", "信阳市", "周口市", "驻马店市", "省直辖县"],
19
+  "湖北省": ["武汉市", "黄石市", "十堰市", "宜昌市", "襄阳市", "鄂州市", "荆门市", "孝感市", "荆州市", "黄冈市", "咸宁市", "随州市", "恩施土家族苗族自治州", "省直辖县"],
20
+  "湖南省": ["长沙市", "株洲市", "湘潭市", "衡阳市", "邵阳市", "岳阳市", "常德市", "张家界市", "益阳市", "郴州市", "永州市", "怀化市", "娄底市", "湘西土家族苗族自治州"],
21
+  "广东省": ["广州市", "韶关市", "深圳市", "珠海市", "汕头市", "佛山市", "江门市", "湛江市", "茂名市", "肇庆市", "惠州市", "梅州市", "汕尾市", "河源市", "阳江市", "清远市", "东莞市", "中山市", "潮州市", "揭阳市", "云浮市"],
22
+  "广西壮族自治区": ["南宁市", "柳州市", "桂林市", "梧州市", "北海市", "防城港市", "钦州市", "贵港市", "玉林市", "百色市", "贺州市", "河池市", "来宾市", "崇左市"],
23
+  "海南省": ["海口市", "三亚市", "三沙市", "儋州市", "省直辖县"],
24
+  "重庆市": ["重庆市", "县"],
25
+  "四川省": ["成都市", "自贡市", "攀枝花市", "泸州市", "德阳市", "绵阳市", "广元市", "遂宁市", "内江市", "乐山市", "南充市", "眉山市", "宜宾市", "广安市", "达州市", "雅安市", "巴中市", "资阳市", "阿坝藏族羌族自治州", "甘孜藏族自治州", "凉山彝族自治州"],
26
+  "贵州省": ["贵阳市", "六盘水市", "遵义市", "安顺市", "毕节市", "铜仁市", "黔西南布依族苗族自治州", "黔东南苗族侗族自治州", "黔南布依族苗族自治州"],
27
+  "云南省": ["昆明市", "曲靖市", "玉溪市", "保山市", "昭通市", "丽江市", "普洱市", "临沧市", "楚雄彝族自治州", "红河哈尼族彝族自治州", "文山壮族苗族自治州", "西双版纳傣族自治州", "大理白族自治州", "德宏傣族景颇族自治州", "怒江傈僳族自治州", "迪庆藏族自治州"],
28
+  "西藏自治区": ["拉萨市", "日喀则市", "昌都市", "林芝市", "山南市", "那曲市", "阿里地区"],
29
+  "陕西省": ["西安市", "铜川市", "宝鸡市", "咸阳市", "渭南市", "延安市", "汉中市", "榆林市", "安康市", "商洛市"],
30
+  "甘肃省": ["兰州市", "嘉峪关市", "金昌市", "白银市", "天水市", "武威市", "张掖市", "平凉市", "酒泉市", "庆阳市", "定西市", "陇南市", "临夏回族自治州", "甘南藏族自治州"],
31
+  "青海省": ["西宁市", "海东市", "海北藏族自治州", "黄南藏族自治州", "海南藏族自治州", "果洛藏族自治州", "玉树藏族自治州", "海西蒙古族藏族自治州"],
32
+  "宁夏回族自治区": ["银川市", "石嘴山市", "吴忠市", "固原市", "中卫市"],
33
+  "新疆维吾尔自治区": ["乌鲁木齐市", "克拉玛依市", "吐鲁番市", "哈密市", "昌吉回族自治州", "博尔塔拉蒙古自治州", "巴音郭楞蒙古自治州", "阿克苏地区", "克孜勒苏柯尔克孜自治州", "喀什地区", "和田地区", "伊犁哈萨克自治州", "塔城地区", "阿勒泰地区", "自治区直辖县级行政区划"],
34
+  "台湾省": ["台北市", "高雄市", "台南市", "台中市", "金门县", "南投县", "基隆市", "新竹市", "嘉义市", "新北市", "宜兰县", "新竹县", "桃园县", "苗栗县", "彰化县", "嘉义县", "云林县", "屏东县", "台东县", "花莲县", "澎湖县", "连江县"],
35
+  "香港特别行政区": ["香港岛", "九龙", "新界"],
36
+  "澳门特别行政区": ["澳门半岛", "离岛"]
37
+}
38
+
39
+export default AreaColumns