meixioacomponent 2.0.38 → 2.0.40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,590 +1,590 @@
1
- <template>
2
- <div class="base-area-select-wrap">
3
- <t-popup
4
- v-model="isOpen"
5
- ref="popover"
6
- :disabled="disable"
7
- placement="bottom"
8
- trigger="click"
9
- @visible-change="(visible)=>{
10
- if(visible){
11
- eventShow();
12
- }else{
13
- eventHide();
14
- }
15
-
16
- }"
17
- >
18
- <!-- 内容 -->
19
- <template #content>
20
- <div class="area-select-content">
21
- <div class="content-title">
22
- <div class="title-left">
23
- <span>地区选择器</span>
24
- </div>
25
- <div class="title-right">
26
- <arrow-left-icon @click="backArea" v-show="activeIndex>1"></arrow-left-icon>
27
- </div>
28
- </div>
29
- <div class="content-middle">
30
- <div ref="middleLeft" class="middle-left">
31
- <div
32
- v-for="(item, index) in areaJson"
33
- :key="index"
34
- :class="{ active: item.label == activeProvince }"
35
- class="province-item"
36
- @click="checkProvince(item)"
37
- >
38
- <span>{{ item.label }}</span>
39
- </div>
40
- </div>
41
- <div class="middle-right">
42
- <div class="middle-right-title">
43
- <div
44
- v-for="(item, index) in areaList"
45
- :key="index"
46
- :class="{ active: item.label == activeArea }"
47
- class="area-item"
48
- >
49
-
50
- <t-button class="delete-btn" v-if="item.label == activeArea" shape="square" variant="outline"
51
- @click="deleteCheck">
52
- <template #icon>
53
- <CloseCircleIcon
54
- ></CloseCircleIcon>
55
- </template>
56
- </t-button>
57
-
58
-
59
- <span :title="item.label" @click="checkArea(item)">{{ item.label }}</span>
60
- </div>
61
- </div>
62
- <div class="middle-right-bottom">
63
- <baseButtonHandleVue
64
- :config="handleConfig"
65
- ></baseButtonHandleVue>
66
- </div>
67
- </div>
68
- </div>
69
- </div>
70
- </template>
71
- <div
72
- :class="{
73
- 'is-open': isOpen,
74
- }"
75
- class="area-select-input"
76
- @click="openSelectWrap"
77
- >
78
- <t-input :size="componentSize"
79
- v-model="showModule"
80
- :disabled="disable"
81
- :readonly="true"
82
- placeholder="请选择地区">
83
- <template #suffix-icon>
84
- <arrow-down-icon v-if="!isOpen"></arrow-down-icon>
85
- <arrow-up-icon v-else></arrow-up-icon>
86
- </template>
87
- </t-input>
88
- </div>
89
- </t-popup>
90
- </div>
91
- </template>
92
-
93
- <script>
94
- import baseButtonHandleVue from '../baseButtonHandle/baseButtonHandle.vue'
95
- //
96
- import areaJson from './area'
97
- import areaConfig from './areaConfig'
98
- import {ArrowDownIcon, ArrowLeftIcon, ArrowUpIcon, CloseCircleIcon, LocationIcon} from "tdesign-icons-vue"
99
- import {baseTimeTypeConfig} from "../baseTimeTypeSelect/config";
100
- import {TransomComponentSize} from "../../../utils/utils";
101
-
102
- export default {
103
- name: 'baseArea',
104
- data() {
105
- return {
106
- // 是否打开了选择器
107
- isOpen: false,
108
- // 按钮的配置
109
- handleConfig: null,
110
- // 被选中的目标
111
- activeObj: null,
112
- // 需要返回的值
113
- areaValue: [],
114
- // 记录点击的次数
115
- activeIndex: 0,
116
- // 是否回显过数据
117
- isReview: false,
118
- }
119
- },
120
- created() {
121
- this.init()
122
- },
123
-
124
- props: {
125
- value: {
126
- default: null,
127
- },
128
- disable: {
129
- type: Boolean,
130
- default: false,
131
- },
132
- size: {type: String, default: 'small'}
133
- },
134
-
135
- components: {
136
- LocationIcon,
137
- CloseCircleIcon,
138
- baseButtonHandleVue,
139
- ArrowUpIcon,
140
- ArrowDownIcon,
141
- ArrowLeftIcon
142
- },
143
- computed: {
144
- module: {
145
- set(val) {
146
- this.$emit('input', val)
147
- },
148
- get() {
149
- return this.$props.value
150
- },
151
- },
152
-
153
- baseTimeTypeConfig() {
154
- return baseTimeTypeConfig
155
- },
156
- showModule() {
157
- if (this.areaValue.length > 0) {
158
- let text = ''
159
- this.areaValue.forEach((item) => {
160
- if (item.label) {
161
- let value = text ? ` / ${item.label}` : item.label
162
- text += `${value}`
163
- }
164
- })
165
- return text
166
- }
167
- return null
168
- },
169
- areaJson() {
170
- return areaJson
171
- },
172
- activeProvince() {
173
- if (this.areaValue.length > 0) {
174
- return this.areaValue[0].label
175
- }
176
- return null
177
- },
178
- activeArea() {
179
- if (this.areaValue.length > 1) {
180
- return this.areaValue[this.activeIndex]?.label
181
- }
182
- return null
183
- },
184
- areaList() {
185
- if (this.activeObj && this.activeObj.children.length > 0) {
186
- return this.activeObj.children
187
- }
188
- return []
189
- },
190
- componentSize() {
191
- return TransomComponentSize(this.$props.size)
192
- }
193
- },
194
- methods: {
195
- init() {
196
- if (this.module && this.module instanceof Object) {
197
- for (let i = 0; i < areaConfig.length; i++) {
198
- let item = areaConfig[i]
199
- let value = this.module[`${item.value}`]
200
- this.$set(this.areaValue, i, {
201
- label: value,
202
- pre: null,
203
- })
204
- }
205
- }
206
- },
207
- eventShow() {
208
- this.isOpen = true
209
- if (!this.isReview) {
210
- this.review()
211
- }
212
- this.setHandleConfig()
213
- this.scrollToProvince()
214
- },
215
- setHandleConfig() {
216
- this.handleConfig = [
217
- {
218
- type: 'info',
219
- text: this.module ? '清空' : '取消',
220
- plain: false,
221
- click: () => {
222
- if (!this.module) {
223
- this.cancelValue()
224
- } else {
225
- this.cancelValue()
226
- this.module = null
227
- }
228
- },
229
- },
230
- {
231
- type: 'primary',
232
- text: '确定',
233
- click: () => {
234
- this.confirmValue()
235
- },
236
- },
237
- ]
238
- },
239
-
240
- review() {
241
- // let provice = areaJson.findIndex((item) => {});
242
-
243
- this.areaValue.forEach((item, index) => {
244
- if (index == 0) {
245
- let cindex = areaJson.findIndex((citem) => {
246
- return citem.label == item.label
247
- })
248
-
249
- this.checkProvince(areaJson[cindex])
250
- } else {
251
- //console.log("else");
252
- //console.log(this.activeObj);
253
- if (this.activeObj && this.activeObj.children.length > 0) {
254
- let cindex = this.activeObj.children.findIndex((citem) => {
255
- return item.label == citem.label
256
- })
257
-
258
- this.checkArea(this.activeObj.children[cindex])
259
- }
260
- }
261
- })
262
-
263
- this.isReview = true
264
- },
265
-
266
- eventHide() {
267
- this.isOpen = false
268
- this.cancelValue()
269
- },
270
-
271
- openSelectWrap() {
272
- if (this.$props.disable) return
273
- // this.isOpen = !this.isOpen
274
- },
275
- // 选择省份
276
- checkProvince(province) {
277
- this.activeIndex = 0
278
- this.areaValue = []
279
- this.$set(this.areaValue, 0, {
280
- label: province.label,
281
- pre: null,
282
- value: province.value,
283
- })
284
-
285
- if (province.children.length > 0) {
286
- this.activeObj = province
287
- this.activeIndex += 1
288
- }
289
- this.isReview = true
290
- },
291
- // 选择地区
292
- checkArea(area) {
293
- if (!area) {
294
- this.isReview = true
295
- return
296
- }
297
-
298
- let pre = this.areaValue[this.activeIndex]
299
- if (!pre) {
300
- this.$set(this.areaValue, this.activeIndex, {
301
- label: area.label,
302
- pre: this.activeObj,
303
- value: area.value,
304
- })
305
- } else {
306
- pre.label = area.label
307
- }
308
-
309
- if (area.children) {
310
- this.activeObj = area
311
- this.activeIndex += 1
312
- }
313
- this.isReview = true
314
- },
315
-
316
- // 返回
317
- backArea() {
318
- //console.log(this.activeIndex);
319
- //console.log(this.areaValue);
320
- let currentArea = this.areaValue[this.activeIndex - 1]
321
- this.areaValue.splice(this.activeIndex, 1)
322
- this.activeIndex -= 1
323
- if (currentArea.pre) {
324
- this.activeObj = currentArea.pre
325
- }
326
- },
327
-
328
- deleteCheck() {
329
- if (this.activeIndex == 1) {
330
- this.areaValue.splice(this.activeIndex, 1)
331
- } else {
332
- this.backArea()
333
- }
334
- },
335
-
336
- cancelValue() {
337
- if (!this.module) {
338
- this.areaValue = []
339
- } else {
340
- this.init()
341
- // this.module = null;
342
- this.isReview = false
343
- }
344
- this.doClose()
345
- },
346
-
347
- confirmValue() {
348
- let value = {}
349
- let valueId = []
350
- for (let i = 0; i < this.areaValue.length; i++) {
351
- const item = this.areaValue[i]
352
- const flag = i == this.areaValue.length - 1
353
- value[`${areaConfig[i].value}`] = item.label
354
- valueId.push(item.value)
355
- }
356
- value.idList = valueId
357
- if (JSON.stringify(value) != '{}') {
358
- this.module = value
359
- }
360
- this.$nextTick(() => {
361
- if (this.$parent.$options._componentTag == 'el-form-item') {
362
- this.$emit('confirmAreaValue')
363
- } else {
364
- this.$emit('confirmAreaValue', value)
365
- this.doClose()
366
- }
367
- })
368
- },
369
-
370
- doClose() {
371
- this.isOpen = false;
372
- },
373
-
374
- // 滚动到指定位置
375
- scrollToProvince() {
376
- if (this.areaValue.length > 0) {
377
- let index = 0
378
- let label = this.areaValue[0].label
379
- for (let i = 0; i < areaJson.length; i++) {
380
- let item = areaJson[i]
381
- if (item.label == label) {
382
- index = i
383
- break
384
- }
385
- }
386
- let refs = this.$refs.middleLeft
387
- this.$nextTick(() => {
388
- refs.scrollTop = refs.childNodes[index].offsetTop - refs.clientHeight
389
- })
390
- }
391
- },
392
- },
393
- watch: {
394
- module(newVal, oldVal) {
395
- if (!newVal) {
396
- this.areaValue = []
397
- return
398
- }
399
- this.init();
400
- },
401
- },
402
- }
403
- </script>
404
-
405
- <style lang="less" scoped>
406
- .base-area-select-wrap {
407
- width: auto;
408
- height: auto;
409
- overflow: hidden;
410
- border-radius: calc(var(--radius) * 2);
411
-
412
- .area-select-input {
413
- background: var(--color-gray-m);
414
- }
415
-
416
- /deep/ .el-input__inner {
417
- border-color: var(--color-gray-m);
418
- }
419
-
420
- .is-open {
421
- background: var(--color-primary);
422
-
423
- /deep/ .el-input__inner {
424
- &::placeholder {
425
- color: var(--color-error) !important;
426
- }
427
- }
428
-
429
- /deep/ .el-icon-arrow-up {
430
- color: white !important;
431
- }
432
- }
433
- }
434
-
435
- .area-select-content {
436
- width: 400px;
437
- height: 300px;
438
- box-sizing: border-box;
439
- background: var(--bg-white);
440
- padding: 0px var(--padding-4);
441
-
442
- .content-title {
443
- width: 100%;
444
- height: 40px;
445
- display: flex;
446
- flex-flow: row nowrap;
447
- justify-content: space-between;
448
- border-bottom: 2px solid var(--color-border);
449
-
450
- .title-left {
451
- span {
452
- line-height: 40px;
453
- color: var(--font-color-d);
454
- font-size: var(--font-size-base);
455
- font-weight: var(--font-weight-kg);
456
- }
457
- }
458
-
459
- .title-right {
460
- width: auto;
461
- display: flex;
462
- align-items: center;
463
- }
464
- }
465
-
466
- .content-middle {
467
- width: 100%;
468
- display: flex;
469
- height: calc(100% - 40px);
470
-
471
- .middle-left {
472
- width: 145px;
473
- height: 100%;
474
- overflow-y: auto;
475
- padding: calc(var(--padding-3) * 2);
476
- padding-left: 0px;
477
- box-sizing: border-box;
478
- border-right: 2px solid var(--color-gray-m);
479
-
480
- .province-item {
481
- width: 100%;
482
- height: 28px;
483
- cursor: pointer;
484
- background: inherit;
485
- box-sizing: border-box;
486
- padding: 0px var(--padding-4);
487
- margin-bottom: var(--margin-5);
488
- border-radius: calc(var(--radius) * 2);
489
-
490
- span {
491
- line-height: 28px;
492
- text-align: left;
493
- color: var(--font-color-s);
494
- font-size: var(--font-size-s);
495
- }
496
-
497
- &:hover {
498
- background: var(--bg-gray);
499
- }
500
- }
501
-
502
- .active {
503
- cursor: default;
504
- background: var(--bg-gray);
505
-
506
- span {
507
- color: var(--font-color-d);
508
- }
509
- }
510
- }
511
-
512
- .middle-right {
513
- height: 100%;
514
- width: calc(100% - 145px);
515
- padding-left: calc(var(--padding-3) * 2);
516
-
517
- .middle-right-title {
518
- width: 100%;
519
- display: flex;
520
- overflow-y: auto;
521
- flex-flow: row wrap;
522
- height: calc(100% - 38px);
523
- align-content: flex-start;
524
- justify-content: flex-start;
525
- margin-bottom: var(--margin-4);
526
- border-bottom: 2px solid var(--color-gray-m);
527
-
528
- .area-item {
529
- padding: 0 var(--padding-4);
530
- box-sizing: border-box;
531
- height: 40px;
532
- display: flex;
533
- cursor: pointer;
534
- position: relative;
535
- background: inherit;
536
- width: calc(33% - 8px);
537
- margin: var(--margin-4);
538
- margin-left: 0;
539
- flex-flow: row nowrap;
540
- align-items: center;
541
- justify-content: flex-start;
542
- border-radius: calc(var(--radius) * 2);
543
-
544
- .delete-btn {
545
- position: absolute;
546
- top: -16px;
547
- right: -16px;
548
- }
549
-
550
-
551
- span {
552
- max-width: 100%;
553
- line-height: 24px;
554
- color: var(--font-color-s);
555
- font-size: var(--font-size-s);
556
- overflow: hidden;
557
- white-space: nowrap;
558
- text-overflow: ellipsis;
559
- }
560
-
561
- &:hover {
562
- background: var(--bg-gray);
563
-
564
- .delete-icon {
565
- display: flex;
566
- }
567
- }
568
- }
569
-
570
- .active {
571
- background: var(--bg-gray);
572
-
573
- span {
574
- color: var(--font-color-d);
575
- }
576
- }
577
- }
578
-
579
- .middle-right-bottom {
580
- width: 100%;
581
- height: 30px;
582
- display: flex;
583
- flex-flow: row nowrap;
584
- align-items: center;
585
- justify-content: flex-end;
586
- }
587
- }
588
- }
589
- }
590
- </style>
1
+ <!--<template>-->
2
+ <!-- <div class="base-area-select-wrap">-->
3
+ <!-- <t-popup-->
4
+ <!-- v-model="isOpen"-->
5
+ <!-- ref="popover"-->
6
+ <!-- :disabled="disable"-->
7
+ <!-- placement="bottom"-->
8
+ <!-- trigger="click"-->
9
+ <!-- @visible-change="(visible)=>{-->
10
+ <!-- if(visible){-->
11
+ <!-- eventShow();-->
12
+ <!-- }else{-->
13
+ <!-- eventHide();-->
14
+ <!-- }-->
15
+
16
+ <!-- }"-->
17
+ <!-- >-->
18
+ <!-- &lt;!&ndash; 内容 &ndash;&gt;-->
19
+ <!-- <template #content>-->
20
+ <!-- <div class="area-select-content">-->
21
+ <!-- <div class="content-title">-->
22
+ <!-- <div class="title-left">-->
23
+ <!-- <span>地区选择器</span>-->
24
+ <!-- </div>-->
25
+ <!-- <div class="title-right">-->
26
+ <!-- <arrow-left-icon @click="backArea" v-show="activeIndex>1"></arrow-left-icon>-->
27
+ <!-- </div>-->
28
+ <!-- </div>-->
29
+ <!-- <div class="content-middle">-->
30
+ <!-- <div ref="middleLeft" class="middle-left">-->
31
+ <!-- <div-->
32
+ <!-- v-for="(item, index) in areaJson"-->
33
+ <!-- :key="index"-->
34
+ <!-- :class="{ active: item.label == activeProvince }"-->
35
+ <!-- class="province-item"-->
36
+ <!-- @click="checkProvince(item)"-->
37
+ <!-- >-->
38
+ <!-- <span>{{ item.label }}</span>-->
39
+ <!-- </div>-->
40
+ <!-- </div>-->
41
+ <!-- <div class="middle-right">-->
42
+ <!-- <div class="middle-right-title">-->
43
+ <!-- <div-->
44
+ <!-- v-for="(item, index) in areaList"-->
45
+ <!-- :key="index"-->
46
+ <!-- :class="{ active: item.label == activeArea }"-->
47
+ <!-- class="area-item"-->
48
+ <!-- >-->
49
+
50
+ <!-- <t-button class="delete-btn" v-if="item.label == activeArea" shape="square" variant="outline"-->
51
+ <!-- @click="deleteCheck">-->
52
+ <!-- <template #icon>-->
53
+ <!-- <CloseCircleIcon-->
54
+ <!-- ></CloseCircleIcon>-->
55
+ <!-- </template>-->
56
+ <!-- </t-button>-->
57
+
58
+
59
+ <!-- <span :title="item.label" @click="checkArea(item)">{{ item.label }}</span>-->
60
+ <!-- </div>-->
61
+ <!-- </div>-->
62
+ <!-- <div class="middle-right-bottom">-->
63
+ <!-- <baseButtonHandleVue-->
64
+ <!-- :config="handleConfig"-->
65
+ <!-- ></baseButtonHandleVue>-->
66
+ <!-- </div>-->
67
+ <!-- </div>-->
68
+ <!-- </div>-->
69
+ <!-- </div>-->
70
+ <!-- </template>-->
71
+ <!-- <div-->
72
+ <!-- :class="{-->
73
+ <!-- 'is-open': isOpen,-->
74
+ <!-- }"-->
75
+ <!-- class="area-select-input"-->
76
+ <!-- @click="openSelectWrap"-->
77
+ <!-- >-->
78
+ <!-- <t-input :size="componentSize"-->
79
+ <!-- v-model="showModule"-->
80
+ <!-- :disabled="disable"-->
81
+ <!-- :readonly="true"-->
82
+ <!-- placeholder="请选择地区">-->
83
+ <!-- <template #suffix-icon>-->
84
+ <!-- <arrow-down-icon v-if="!isOpen"></arrow-down-icon>-->
85
+ <!-- <arrow-up-icon v-else></arrow-up-icon>-->
86
+ <!-- </template>-->
87
+ <!-- </t-input>-->
88
+ <!-- </div>-->
89
+ <!-- </t-popup>-->
90
+ <!-- </div>-->
91
+ <!--</template>-->
92
+
93
+ <!--<script>-->
94
+ <!--import baseButtonHandleVue from '../baseButtonHandle/baseButtonHandle.vue'-->
95
+ <!--//-->
96
+ <!--import areaJson from './area'-->
97
+ <!--import areaConfig from './areaConfig'-->
98
+ <!--import {ArrowDownIcon, ArrowLeftIcon, ArrowUpIcon, CloseCircleIcon, LocationIcon} from "tdesign-icons-vue"-->
99
+ <!--import {baseTimeTypeConfig} from "../baseTimeTypeSelect/config";-->
100
+ <!--import {TransomComponentSize} from "../../../utils/utils";-->
101
+
102
+ <!--export default {-->
103
+ <!-- name: 'baseArea',-->
104
+ <!-- data() {-->
105
+ <!-- return {-->
106
+ <!-- // 是否打开了选择器-->
107
+ <!-- isOpen: false,-->
108
+ <!-- // 按钮的配置-->
109
+ <!-- handleConfig: null,-->
110
+ <!-- // 被选中的目标-->
111
+ <!-- activeObj: null,-->
112
+ <!-- // 需要返回的值-->
113
+ <!-- areaValue: [],-->
114
+ <!-- // 记录点击的次数-->
115
+ <!-- activeIndex: 0,-->
116
+ <!-- // 是否回显过数据-->
117
+ <!-- isReview: false,-->
118
+ <!-- }-->
119
+ <!-- },-->
120
+ <!-- created() {-->
121
+ <!-- this.init()-->
122
+ <!-- },-->
123
+
124
+ <!-- props: {-->
125
+ <!-- value: {-->
126
+ <!-- default: null,-->
127
+ <!-- },-->
128
+ <!-- disable: {-->
129
+ <!-- type: Boolean,-->
130
+ <!-- default: false,-->
131
+ <!-- },-->
132
+ <!-- size: {type: String, default: 'small'}-->
133
+ <!-- },-->
134
+
135
+ <!-- components: {-->
136
+ <!-- LocationIcon,-->
137
+ <!-- CloseCircleIcon,-->
138
+ <!-- baseButtonHandleVue,-->
139
+ <!-- ArrowUpIcon,-->
140
+ <!-- ArrowDownIcon,-->
141
+ <!-- ArrowLeftIcon-->
142
+ <!-- },-->
143
+ <!-- computed: {-->
144
+ <!-- module: {-->
145
+ <!-- set(val) {-->
146
+ <!-- this.$emit('input', val)-->
147
+ <!-- },-->
148
+ <!-- get() {-->
149
+ <!-- return this.$props.value-->
150
+ <!-- },-->
151
+ <!-- },-->
152
+
153
+ <!-- baseTimeTypeConfig() {-->
154
+ <!-- return baseTimeTypeConfig-->
155
+ <!-- },-->
156
+ <!-- showModule() {-->
157
+ <!-- if (this.areaValue.length > 0) {-->
158
+ <!-- let text = ''-->
159
+ <!-- this.areaValue.forEach((item) => {-->
160
+ <!-- if (item.label) {-->
161
+ <!-- let value = text ? ` / ${item.label}` : item.label-->
162
+ <!-- text += `${value}`-->
163
+ <!-- }-->
164
+ <!-- })-->
165
+ <!-- return text-->
166
+ <!-- }-->
167
+ <!-- return null-->
168
+ <!-- },-->
169
+ <!-- areaJson() {-->
170
+ <!-- return areaJson-->
171
+ <!-- },-->
172
+ <!-- activeProvince() {-->
173
+ <!-- if (this.areaValue.length > 0) {-->
174
+ <!-- return this.areaValue[0].label-->
175
+ <!-- }-->
176
+ <!-- return null-->
177
+ <!-- },-->
178
+ <!-- activeArea() {-->
179
+ <!-- if (this.areaValue.length > 1) {-->
180
+ <!-- return this.areaValue[this.activeIndex]?.label-->
181
+ <!-- }-->
182
+ <!-- return null-->
183
+ <!-- },-->
184
+ <!-- areaList() {-->
185
+ <!-- if (this.activeObj && this.activeObj.children.length > 0) {-->
186
+ <!-- return this.activeObj.children-->
187
+ <!-- }-->
188
+ <!-- return []-->
189
+ <!-- },-->
190
+ <!-- componentSize() {-->
191
+ <!-- return TransomComponentSize(this.$props.size)-->
192
+ <!-- }-->
193
+ <!-- },-->
194
+ <!-- methods: {-->
195
+ <!-- init() {-->
196
+ <!-- if (this.module && this.module instanceof Object) {-->
197
+ <!-- for (let i = 0; i < areaConfig.length; i++) {-->
198
+ <!-- let item = areaConfig[i]-->
199
+ <!-- let value = this.module[`${item.value}`]-->
200
+ <!-- this.$set(this.areaValue, i, {-->
201
+ <!-- label: value,-->
202
+ <!-- pre: null,-->
203
+ <!-- })-->
204
+ <!-- }-->
205
+ <!-- }-->
206
+ <!-- },-->
207
+ <!-- eventShow() {-->
208
+ <!-- this.isOpen = true-->
209
+ <!-- if (!this.isReview) {-->
210
+ <!-- this.review()-->
211
+ <!-- }-->
212
+ <!-- this.setHandleConfig()-->
213
+ <!-- this.scrollToProvince()-->
214
+ <!-- },-->
215
+ <!-- setHandleConfig() {-->
216
+ <!-- this.handleConfig = [-->
217
+ <!-- {-->
218
+ <!-- type: 'info',-->
219
+ <!-- text: this.module ? '清空' : '取消',-->
220
+ <!-- plain: false,-->
221
+ <!-- click: () => {-->
222
+ <!-- if (!this.module) {-->
223
+ <!-- this.cancelValue()-->
224
+ <!-- } else {-->
225
+ <!-- this.cancelValue()-->
226
+ <!-- this.module = null-->
227
+ <!-- }-->
228
+ <!-- },-->
229
+ <!-- },-->
230
+ <!-- {-->
231
+ <!-- type: 'primary',-->
232
+ <!-- text: '确定',-->
233
+ <!-- click: () => {-->
234
+ <!-- this.confirmValue()-->
235
+ <!-- },-->
236
+ <!-- },-->
237
+ <!-- ]-->
238
+ <!-- },-->
239
+
240
+ <!-- review() {-->
241
+ <!-- // let provice = areaJson.findIndex((item) => {});-->
242
+
243
+ <!-- this.areaValue.forEach((item, index) => {-->
244
+ <!-- if (index == 0) {-->
245
+ <!-- let cindex = areaJson.findIndex((citem) => {-->
246
+ <!-- return citem.label == item.label-->
247
+ <!-- })-->
248
+
249
+ <!-- this.checkProvince(areaJson[cindex])-->
250
+ <!-- } else {-->
251
+ <!-- //console.log("else");-->
252
+ <!-- //console.log(this.activeObj);-->
253
+ <!-- if (this.activeObj && this.activeObj.children.length > 0) {-->
254
+ <!-- let cindex = this.activeObj.children.findIndex((citem) => {-->
255
+ <!-- return item.label == citem.label-->
256
+ <!-- })-->
257
+
258
+ <!-- this.checkArea(this.activeObj.children[cindex])-->
259
+ <!-- }-->
260
+ <!-- }-->
261
+ <!-- })-->
262
+
263
+ <!-- this.isReview = true-->
264
+ <!-- },-->
265
+
266
+ <!-- eventHide() {-->
267
+ <!-- this.isOpen = false-->
268
+ <!-- this.cancelValue()-->
269
+ <!-- },-->
270
+
271
+ <!-- openSelectWrap() {-->
272
+ <!-- if (this.$props.disable) return-->
273
+ <!-- // this.isOpen = !this.isOpen-->
274
+ <!-- },-->
275
+ <!-- // 选择省份-->
276
+ <!-- checkProvince(province) {-->
277
+ <!-- this.activeIndex = 0-->
278
+ <!-- this.areaValue = []-->
279
+ <!-- this.$set(this.areaValue, 0, {-->
280
+ <!-- label: province.label,-->
281
+ <!-- pre: null,-->
282
+ <!-- value: province.value,-->
283
+ <!-- })-->
284
+
285
+ <!-- if (province.children.length > 0) {-->
286
+ <!-- this.activeObj = province-->
287
+ <!-- this.activeIndex += 1-->
288
+ <!-- }-->
289
+ <!-- this.isReview = true-->
290
+ <!-- },-->
291
+ <!-- // 选择地区-->
292
+ <!-- checkArea(area) {-->
293
+ <!-- if (!area) {-->
294
+ <!-- this.isReview = true-->
295
+ <!-- return-->
296
+ <!-- }-->
297
+
298
+ <!-- let pre = this.areaValue[this.activeIndex]-->
299
+ <!-- if (!pre) {-->
300
+ <!-- this.$set(this.areaValue, this.activeIndex, {-->
301
+ <!-- label: area.label,-->
302
+ <!-- pre: this.activeObj,-->
303
+ <!-- value: area.value,-->
304
+ <!-- })-->
305
+ <!-- } else {-->
306
+ <!-- pre.label = area.label-->
307
+ <!-- }-->
308
+
309
+ <!-- if (area.children) {-->
310
+ <!-- this.activeObj = area-->
311
+ <!-- this.activeIndex += 1-->
312
+ <!-- }-->
313
+ <!-- this.isReview = true-->
314
+ <!-- },-->
315
+
316
+ <!-- // 返回-->
317
+ <!-- backArea() {-->
318
+ <!-- //console.log(this.activeIndex);-->
319
+ <!-- //console.log(this.areaValue);-->
320
+ <!-- let currentArea = this.areaValue[this.activeIndex - 1]-->
321
+ <!-- this.areaValue.splice(this.activeIndex, 1)-->
322
+ <!-- this.activeIndex -= 1-->
323
+ <!-- if (currentArea.pre) {-->
324
+ <!-- this.activeObj = currentArea.pre-->
325
+ <!-- }-->
326
+ <!-- },-->
327
+
328
+ <!-- deleteCheck() {-->
329
+ <!-- if (this.activeIndex == 1) {-->
330
+ <!-- this.areaValue.splice(this.activeIndex, 1)-->
331
+ <!-- } else {-->
332
+ <!-- this.backArea()-->
333
+ <!-- }-->
334
+ <!-- },-->
335
+
336
+ <!-- cancelValue() {-->
337
+ <!-- if (!this.module) {-->
338
+ <!-- this.areaValue = []-->
339
+ <!-- } else {-->
340
+ <!-- this.init()-->
341
+ <!-- // this.module = null;-->
342
+ <!-- this.isReview = false-->
343
+ <!-- }-->
344
+ <!-- this.doClose()-->
345
+ <!-- },-->
346
+
347
+ <!-- confirmValue() {-->
348
+ <!-- let value = {}-->
349
+ <!-- let valueId = []-->
350
+ <!-- for (let i = 0; i < this.areaValue.length; i++) {-->
351
+ <!-- const item = this.areaValue[i]-->
352
+ <!-- const flag = i == this.areaValue.length - 1-->
353
+ <!-- value[`${areaConfig[i].value}`] = item.label-->
354
+ <!-- valueId.push(item.value)-->
355
+ <!-- }-->
356
+ <!-- value.idList = valueId-->
357
+ <!-- if (JSON.stringify(value) != '{}') {-->
358
+ <!-- this.module = value-->
359
+ <!-- }-->
360
+ <!-- this.$nextTick(() => {-->
361
+ <!-- if (this.$parent.$options._componentTag == 'el-form-item') {-->
362
+ <!-- this.$emit('confirmAreaValue')-->
363
+ <!-- } else {-->
364
+ <!-- this.$emit('confirmAreaValue', value)-->
365
+ <!-- this.doClose()-->
366
+ <!-- }-->
367
+ <!-- })-->
368
+ <!-- },-->
369
+
370
+ <!-- doClose() {-->
371
+ <!-- this.isOpen = false;-->
372
+ <!-- },-->
373
+
374
+ <!-- // 滚动到指定位置-->
375
+ <!-- scrollToProvince() {-->
376
+ <!-- if (this.areaValue.length > 0) {-->
377
+ <!-- let index = 0-->
378
+ <!-- let label = this.areaValue[0].label-->
379
+ <!-- for (let i = 0; i < areaJson.length; i++) {-->
380
+ <!-- let item = areaJson[i]-->
381
+ <!-- if (item.label == label) {-->
382
+ <!-- index = i-->
383
+ <!-- break-->
384
+ <!-- }-->
385
+ <!-- }-->
386
+ <!-- let refs = this.$refs.middleLeft-->
387
+ <!-- this.$nextTick(() => {-->
388
+ <!-- refs.scrollTop = refs.childNodes[index].offsetTop - refs.clientHeight-->
389
+ <!-- })-->
390
+ <!-- }-->
391
+ <!-- },-->
392
+ <!-- },-->
393
+ <!-- watch: {-->
394
+ <!-- module(newVal, oldVal) {-->
395
+ <!-- if (!newVal) {-->
396
+ <!-- this.areaValue = []-->
397
+ <!-- return-->
398
+ <!-- }-->
399
+ <!-- this.init();-->
400
+ <!-- },-->
401
+ <!-- },-->
402
+ <!--}-->
403
+ <!--</script>-->
404
+
405
+ <!--<style lang="less" scoped>-->
406
+ <!--.base-area-select-wrap {-->
407
+ <!-- width: auto;-->
408
+ <!-- height: auto;-->
409
+ <!-- overflow: hidden;-->
410
+ <!-- border-radius: calc(var(&#45;&#45;radius) * 2);-->
411
+
412
+ <!-- .area-select-input {-->
413
+ <!-- background: var(&#45;&#45;color-gray-m);-->
414
+ <!-- }-->
415
+
416
+ <!-- /deep/ .el-input__inner {-->
417
+ <!-- border-color: var(&#45;&#45;color-gray-m);-->
418
+ <!-- }-->
419
+
420
+ <!-- .is-open {-->
421
+ <!-- background: var(&#45;&#45;color-primary);-->
422
+
423
+ <!-- /deep/ .el-input__inner {-->
424
+ <!-- &::placeholder {-->
425
+ <!-- color: var(&#45;&#45;color-error) !important;-->
426
+ <!-- }-->
427
+ <!-- }-->
428
+
429
+ <!-- /deep/ .el-icon-arrow-up {-->
430
+ <!-- color: white !important;-->
431
+ <!-- }-->
432
+ <!-- }-->
433
+ <!--}-->
434
+
435
+ <!--.area-select-content {-->
436
+ <!-- width: 400px;-->
437
+ <!-- height: 300px;-->
438
+ <!-- box-sizing: border-box;-->
439
+ <!-- background: var(&#45;&#45;bg-white);-->
440
+ <!-- padding: 0px var(&#45;&#45;padding-4);-->
441
+
442
+ <!-- .content-title {-->
443
+ <!-- width: 100%;-->
444
+ <!-- height: 40px;-->
445
+ <!-- display: flex;-->
446
+ <!-- flex-flow: row nowrap;-->
447
+ <!-- justify-content: space-between;-->
448
+ <!-- border-bottom: 2px solid var(&#45;&#45;color-border);-->
449
+
450
+ <!-- .title-left {-->
451
+ <!-- span {-->
452
+ <!-- line-height: 40px;-->
453
+ <!-- color: var(&#45;&#45;font-color-d);-->
454
+ <!-- font-size: var(&#45;&#45;font-size-base);-->
455
+ <!-- font-weight: var(&#45;&#45;font-weight-kg);-->
456
+ <!-- }-->
457
+ <!-- }-->
458
+
459
+ <!-- .title-right {-->
460
+ <!-- width: auto;-->
461
+ <!-- display: flex;-->
462
+ <!-- align-items: center;-->
463
+ <!-- }-->
464
+ <!-- }-->
465
+
466
+ <!-- .content-middle {-->
467
+ <!-- width: 100%;-->
468
+ <!-- display: flex;-->
469
+ <!-- height: calc(100% - 40px);-->
470
+
471
+ <!-- .middle-left {-->
472
+ <!-- width: 145px;-->
473
+ <!-- height: 100%;-->
474
+ <!-- overflow-y: auto;-->
475
+ <!-- padding: calc(var(&#45;&#45;padding-3) * 2);-->
476
+ <!-- padding-left: 0px;-->
477
+ <!-- box-sizing: border-box;-->
478
+ <!-- border-right: 2px solid var(&#45;&#45;color-gray-m);-->
479
+
480
+ <!-- .province-item {-->
481
+ <!-- width: 100%;-->
482
+ <!-- height: 28px;-->
483
+ <!-- cursor: pointer;-->
484
+ <!-- background: inherit;-->
485
+ <!-- box-sizing: border-box;-->
486
+ <!-- padding: 0px var(&#45;&#45;padding-4);-->
487
+ <!-- margin-bottom: var(&#45;&#45;margin-5);-->
488
+ <!-- border-radius: calc(var(&#45;&#45;radius) * 2);-->
489
+
490
+ <!-- span {-->
491
+ <!-- line-height: 28px;-->
492
+ <!-- text-align: left;-->
493
+ <!-- color: var(&#45;&#45;font-color-s);-->
494
+ <!-- font-size: var(&#45;&#45;font-size-s);-->
495
+ <!-- }-->
496
+
497
+ <!-- &:hover {-->
498
+ <!-- background: var(&#45;&#45;bg-gray);-->
499
+ <!-- }-->
500
+ <!-- }-->
501
+
502
+ <!-- .active {-->
503
+ <!-- cursor: default;-->
504
+ <!-- background: var(&#45;&#45;bg-gray);-->
505
+
506
+ <!-- span {-->
507
+ <!-- color: var(&#45;&#45;font-color-d);-->
508
+ <!-- }-->
509
+ <!-- }-->
510
+ <!-- }-->
511
+
512
+ <!-- .middle-right {-->
513
+ <!-- height: 100%;-->
514
+ <!-- width: calc(100% - 145px);-->
515
+ <!-- padding-left: calc(var(&#45;&#45;padding-3) * 2);-->
516
+
517
+ <!-- .middle-right-title {-->
518
+ <!-- width: 100%;-->
519
+ <!-- display: flex;-->
520
+ <!-- overflow-y: auto;-->
521
+ <!-- flex-flow: row wrap;-->
522
+ <!-- height: calc(100% - 38px);-->
523
+ <!-- align-content: flex-start;-->
524
+ <!-- justify-content: flex-start;-->
525
+ <!-- margin-bottom: var(&#45;&#45;margin-4);-->
526
+ <!-- border-bottom: 2px solid var(&#45;&#45;color-gray-m);-->
527
+
528
+ <!-- .area-item {-->
529
+ <!-- padding: 0 var(&#45;&#45;padding-4);-->
530
+ <!-- box-sizing: border-box;-->
531
+ <!-- height: 40px;-->
532
+ <!-- display: flex;-->
533
+ <!-- cursor: pointer;-->
534
+ <!-- position: relative;-->
535
+ <!-- background: inherit;-->
536
+ <!-- width: calc(33% - 8px);-->
537
+ <!-- margin: var(&#45;&#45;margin-4);-->
538
+ <!-- margin-left: 0;-->
539
+ <!-- flex-flow: row nowrap;-->
540
+ <!-- align-items: center;-->
541
+ <!-- justify-content: flex-start;-->
542
+ <!-- border-radius: calc(var(&#45;&#45;radius) * 2);-->
543
+
544
+ <!-- .delete-btn {-->
545
+ <!-- position: absolute;-->
546
+ <!-- top: -16px;-->
547
+ <!-- right: -16px;-->
548
+ <!-- }-->
549
+
550
+
551
+ <!-- span {-->
552
+ <!-- max-width: 100%;-->
553
+ <!-- line-height: 24px;-->
554
+ <!-- color: var(&#45;&#45;font-color-s);-->
555
+ <!-- font-size: var(&#45;&#45;font-size-s);-->
556
+ <!-- overflow: hidden;-->
557
+ <!-- white-space: nowrap;-->
558
+ <!-- text-overflow: ellipsis;-->
559
+ <!-- }-->
560
+
561
+ <!-- &:hover {-->
562
+ <!-- background: var(&#45;&#45;bg-gray);-->
563
+
564
+ <!-- .delete-icon {-->
565
+ <!-- display: flex;-->
566
+ <!-- }-->
567
+ <!-- }-->
568
+ <!-- }-->
569
+
570
+ <!-- .active {-->
571
+ <!-- background: var(&#45;&#45;bg-gray);-->
572
+
573
+ <!-- span {-->
574
+ <!-- color: var(&#45;&#45;font-color-d);-->
575
+ <!-- }-->
576
+ <!-- }-->
577
+ <!-- }-->
578
+
579
+ <!-- .middle-right-bottom {-->
580
+ <!-- width: 100%;-->
581
+ <!-- height: 30px;-->
582
+ <!-- display: flex;-->
583
+ <!-- flex-flow: row nowrap;-->
584
+ <!-- align-items: center;-->
585
+ <!-- justify-content: flex-end;-->
586
+ <!-- }-->
587
+ <!-- }-->
588
+ <!-- }-->
589
+ <!--}-->
590
+ <!--</style>-->