@10yun/cv-mobile-ui 0.3.24 → 0.3.26
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.
- package/package.json +5 -2
- package/plugins/request.js +14 -2
- package/ui-cv/cv-banner/cv-banner.vue +23 -14
- package/ui-cv/cv-banner-card/cv-banner-card.vue +24 -16
- package/ui-cv/cv-block/cv-block.vue +6 -6
- package/ui-cv/cv-box/cv-box.vue +6 -7
- package/ui-cv/cv-button/cv-button.vue +32 -13
- package/ui-cv/cv-cell/cv-cell.vue +21 -25
- package/ui-cv/cv-checkbox/cv-checkbox.vue +22 -22
- package/ui-cv/cv-checkbox-tag/cv-checkbox-tag.vue +30 -25
- package/ui-cv/cv-code-sms/cv-code-sms.vue +60 -38
- package/ui-cv/cv-dialog-bottom/cv-dialog-bottom.vue +14 -18
- package/ui-cv/cv-dialog-full/cv-dialog-full.vue +14 -18
- package/ui-cv/cv-dialog-loading/cv-dialog-loading.vue +10 -17
- package/ui-cv/cv-dialog-share/cv-dialog-share.vue +4 -5
- package/ui-cv/cv-draw-barcode/cv-draw-barcode.vue +54 -51
- package/ui-cv/cv-draw-posters/cv-draw-posters.vue +53 -71
- package/ui-cv/cv-draw-progress/cv-draw-progress.vue +44 -39
- package/ui-cv/cv-draw-qrcode/cv-draw-qrcode.vue +48 -45
- package/ui-cv/cv-editor/compressImage.vue +47 -40
- package/ui-cv/cv-editor/cv-editor.vue +234 -124
- package/ui-cv/cv-editor-parse/cv-editor-parse.vue +21 -30
- package/ui-cv/cv-editor-parse/u-parse.vue +21 -30
- package/ui-cv/cv-filter-hm/cv-filter-hm.vue +140 -74
- package/ui-cv/cv-form-group/cv-form-group.vue +11 -13
- package/ui-cv/cv-form-item/cv-form-item.vue +35 -20
- package/ui-cv/cv-form-merge/cv-form-merge.vue +5 -10
- package/ui-cv/cv-geo-local/cv-geo-local.vue +50 -27
- package/ui-cv/cv-icons/cv-icons.vue +24 -19
- package/ui-cv/cv-info/cv-info.vue +9 -11
- package/ui-cv/cv-input-btn/cv-input-btn.vue +34 -13
- package/ui-cv/cv-input-digit/cv-input-digit.vue +31 -18
- package/ui-cv/cv-input-idcard/cv-input-idcard.vue +31 -21
- package/ui-cv/cv-input-number/cv-input-number.vue +29 -14
- package/ui-cv/cv-input-password/cv-input-password.vue +31 -20
- package/ui-cv/cv-input-text/cv-input-text.vue +32 -17
- package/ui-cv/cv-link/cv-link.vue +7 -7
- package/ui-cv/cv-lists-base/cv-lists-base.vue +148 -114
- package/ui-cv/cv-lists-swiper/cv-lists-swipe2r.vue +24 -15
- package/ui-cv/cv-lists-swiper/cv-lists-swiper.vue +85 -63
- package/ui-cv/cv-load-more/cv-load-more.vue +60 -28
- package/ui-cv/cv-message/cv-message.vue +5 -6
- package/ui-cv/cv-nav-col/cv-nav-col.vue +9 -13
- package/ui-cv/cv-nav-group/cv-nav-group.vue +6 -8
- package/ui-cv/cv-nav-row/cv-nav-row.vue +21 -25
- package/ui-cv/cv-picker-date/cv-picker-date.vue +28 -12
- package/ui-cv/cv-picker-datetime/cv-picker-datetime.vue +43 -21
- package/ui-cv/cv-picker-datetime5/cv-picker-datetime5.vue +108 -60
- package/ui-cv/cv-picker-region/cv-picker-region.vue +46 -32
- package/ui-cv/cv-picker-time/cv-picker-time.vue +26 -11
- package/ui-cv/cv-picker1/cv-picker1.vue +32 -17
- package/ui-cv/cv-picker2/cv-picker2.vue +46 -28
- package/ui-cv/cv-picker3/cv-picker3.vue +77 -44
- package/ui-cv/cv-radio/cv-radio.vue +17 -10
- package/ui-cv/cv-radio-sex/cv-radio-sex.vue +20 -21
- package/ui-cv/cv-radio-tag/cv-radio-tag.vue +22 -11
- package/ui-cv/cv-rate/cv-rate.vue +17 -13
- package/ui-cv/cv-search/cv-search.vue +17 -12
- package/ui-cv/cv-skeleton/cv-skeleton.vue +32 -27
- package/ui-cv/cv-skeleton/cv-skeleton2.vue +56 -33
- package/ui-cv/cv-skeleton-group/cv-skeleton-group.vue +4 -6
- package/ui-cv/cv-specs/cv-specs.vue +31 -30
- package/ui-cv/cv-switch/cv-switch.vue +4 -5
- package/ui-cv/cv-tab-lists/cv-tab-lists.vue +189 -128
- package/ui-cv/cv-textarea/cv-textarea.vue +31 -13
- package/ui-cv/cv-treaty/cv-treaty.vue +8 -8
- package/ui-cv/cv-update-app/cv-update-app.vue +68 -53
- package/ui-cv/cv-upload-avatar/cv-upload-avatar.vue +33 -31
- package/ui-cv/cv-upload-img/cv-upload-img.vue +97 -70
- package/ui-cv/dict/area-city.js +612 -612
- package/ui-cv/dict/area-county.js +3392 -3392
- package/ui-cv/dict/area-province.js +35 -35
- package/ui-cv/mixins/mixins-checkbox.js +9 -15
- package/ui-cv/mixins/mixins-common.js +7 -7
- package/ui-cv/mixins/mixins-input.js +11 -12
- package/ui-cv/mixins/mixins-picker.js +9 -13
- package/ui-cv/mixins/mixins-radio.js +10 -14
|
@@ -1,14 +1,31 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<cv-form-item
|
|
3
|
-
:
|
|
2
|
+
<cv-form-item
|
|
3
|
+
:label="label"
|
|
4
|
+
:message="message"
|
|
5
|
+
:messageDisplay="messageDisplay"
|
|
6
|
+
:labelWidth="localLabelWidth"
|
|
7
|
+
:layout="localLayout"
|
|
8
|
+
:isIcon="true"
|
|
9
|
+
:iconTop="iconTop"
|
|
10
|
+
>
|
|
4
11
|
<view class="cv-picker">
|
|
5
|
-
<picker
|
|
6
|
-
|
|
12
|
+
<picker
|
|
13
|
+
class="cv-picker-item"
|
|
14
|
+
mode="multiSelector"
|
|
15
|
+
:range="range_data"
|
|
16
|
+
range-key="text"
|
|
17
|
+
:value="items_index"
|
|
18
|
+
@change="bindPickerChange"
|
|
19
|
+
@columnchange="bindPickerColumnchange"
|
|
20
|
+
@cancel="onCancel"
|
|
21
|
+
@click="changeIconTop"
|
|
22
|
+
>
|
|
7
23
|
<view class="cv-picker-item-text" v-if="localVal.length > 0">
|
|
8
|
-
{{last_range_data[0][lastRetDataIndex[0]].text}}{{joint||' '}}{{last_range_data[1][lastRetDataIndex[1]].text
|
|
9
|
-
{{
|
|
24
|
+
{{ last_range_data[0][lastRetDataIndex[0]].text }}{{ joint || ' ' }}{{ last_range_data[1][lastRetDataIndex[1]].text
|
|
25
|
+
}}{{ joint || ' ' }}
|
|
26
|
+
{{ last_range_data[2][lastRetDataIndex[2]].text }}
|
|
10
27
|
</view>
|
|
11
|
-
<view class="cv-picker-item-placeholder" v-else>{{placeholder}}</view>
|
|
28
|
+
<view class="cv-picker-item-placeholder" v-else>{{ placeholder }}</view>
|
|
12
29
|
</picker>
|
|
13
30
|
</view>
|
|
14
31
|
</cv-form-item>
|
|
@@ -21,12 +38,12 @@ import city from '../dict/area-city.js';
|
|
|
21
38
|
import county from '../dict/area-county.js';
|
|
22
39
|
export default {
|
|
23
40
|
mixins: [MixinsPicker],
|
|
24
|
-
name:
|
|
41
|
+
name: 'cvPickerRegion',
|
|
25
42
|
props: {
|
|
26
43
|
//默认输入框内容
|
|
27
44
|
value: {
|
|
28
45
|
type: Array,
|
|
29
|
-
default: () => {
|
|
46
|
+
default: () => {}
|
|
30
47
|
},
|
|
31
48
|
dataType: {
|
|
32
49
|
type: String,
|
|
@@ -41,29 +58,28 @@ export default {
|
|
|
41
58
|
value(newVal) {
|
|
42
59
|
this.localVal = newVal;
|
|
43
60
|
this.itemsSortOut();
|
|
44
|
-
}
|
|
61
|
+
}
|
|
45
62
|
},
|
|
46
63
|
data() {
|
|
47
64
|
return {
|
|
48
65
|
iconTop: false,
|
|
49
66
|
localVal: '',
|
|
50
|
-
range_data: []
|
|
51
|
-
last_range_data: []
|
|
52
|
-
items_index: [0, 0, 0]
|
|
53
|
-
lastRetDataIndex: [0, 0, 0]
|
|
67
|
+
range_data: [], //弹窗临时数组
|
|
68
|
+
last_range_data: [], //最终显示页面数组
|
|
69
|
+
items_index: [0, 0, 0], //当前下标
|
|
70
|
+
lastRetDataIndex: [0, 0, 0], // 最终确定选中的下标
|
|
54
71
|
localDataType: 'text',
|
|
55
72
|
dataValue: 'value',
|
|
56
73
|
dataText: 'label',
|
|
57
74
|
localProvince: {},
|
|
58
75
|
localCity: {},
|
|
59
|
-
localCounty: {}
|
|
76
|
+
localCounty: {}
|
|
60
77
|
};
|
|
61
78
|
},
|
|
62
79
|
created: function () {
|
|
63
80
|
this.localVal = this.value;
|
|
64
81
|
this.localDataType = this.dataType != 'value' ? 'text' : 'value';
|
|
65
82
|
this.itemsSortOut();
|
|
66
|
-
|
|
67
83
|
},
|
|
68
84
|
methods: {
|
|
69
85
|
initReginData(data) {
|
|
@@ -72,9 +88,9 @@ export default {
|
|
|
72
88
|
localData.push({
|
|
73
89
|
text: data[key],
|
|
74
90
|
value: key
|
|
75
|
-
})
|
|
91
|
+
});
|
|
76
92
|
}
|
|
77
|
-
return localData
|
|
93
|
+
return localData;
|
|
78
94
|
},
|
|
79
95
|
itemsSortOut: function () {
|
|
80
96
|
const localProvince = this.initReginData(province);
|
|
@@ -108,14 +124,13 @@ export default {
|
|
|
108
124
|
for (const key in date) {
|
|
109
125
|
if (date[key].value.substr(0, length) == star.substr(0, length)) {
|
|
110
126
|
localData.push(date[key]);
|
|
111
|
-
|
|
112
127
|
}
|
|
113
128
|
}
|
|
114
129
|
return localData;
|
|
115
130
|
},
|
|
116
131
|
/* 获取默认值的key */
|
|
117
132
|
_getKey(data, localValue) {
|
|
118
|
-
let localKey = 0
|
|
133
|
+
let localKey = 0;
|
|
119
134
|
if (localValue) {
|
|
120
135
|
/* 便利省级列表 找出省级的位置 */
|
|
121
136
|
for (const key in data) {
|
|
@@ -124,22 +139,22 @@ export default {
|
|
|
124
139
|
}
|
|
125
140
|
}
|
|
126
141
|
}
|
|
127
|
-
return localKey
|
|
142
|
+
return localKey;
|
|
128
143
|
},
|
|
129
144
|
bindPickerChange: function (e) {
|
|
130
145
|
let items_index = e.detail.value;
|
|
131
146
|
this.items_index = items_index;
|
|
132
147
|
this.updatelocalVal();
|
|
133
|
-
this.iconTop = false
|
|
148
|
+
this.iconTop = false;
|
|
134
149
|
},
|
|
135
150
|
/* 取消选择 */
|
|
136
151
|
onCancel(e) {
|
|
137
|
-
this.iconTop = false
|
|
152
|
+
this.iconTop = false;
|
|
138
153
|
this.range_data = [...this.last_range_data];
|
|
139
154
|
this.items_index = [...this.lastRetDataIndex];
|
|
140
155
|
},
|
|
141
156
|
bindPickerColumnchange: function (e) {
|
|
142
|
-
let items_index = this.items_index
|
|
157
|
+
let items_index = this.items_index;
|
|
143
158
|
let range_data = this.range_data;
|
|
144
159
|
if (e.detail.column == 2) {
|
|
145
160
|
//滑动三级
|
|
@@ -150,7 +165,7 @@ export default {
|
|
|
150
165
|
items_index[2] = 0;
|
|
151
166
|
//更新区级列表
|
|
152
167
|
//this.range_data[2] = this._screenRegion(this.localCounty, this.range_data[1][this.items_index[1]].value, 4);
|
|
153
|
-
this.$set(this.range_data, 2, this._screenRegion(this.localCounty, this.range_data[1][this.items_index[1]].value, 4))
|
|
168
|
+
this.$set(this.range_data, 2, this._screenRegion(this.localCounty, this.range_data[1][this.items_index[1]].value, 4));
|
|
154
169
|
} else if (e.detail.column == 0) {
|
|
155
170
|
//滑动一级
|
|
156
171
|
items_index[0] = e.detail.value;
|
|
@@ -170,7 +185,7 @@ export default {
|
|
|
170
185
|
updatelocalVal() {
|
|
171
186
|
let items_index = this.items_index;
|
|
172
187
|
this.last_range_data = [...this.range_data];
|
|
173
|
-
this.lastRetDataIndex = [...items_index]
|
|
188
|
+
this.lastRetDataIndex = [...items_index];
|
|
174
189
|
let value = [];
|
|
175
190
|
let items = this.items;
|
|
176
191
|
if (this.localDataType == 'text') {
|
|
@@ -184,15 +199,14 @@ export default {
|
|
|
184
199
|
}
|
|
185
200
|
this.$emit('input', value);
|
|
186
201
|
|
|
187
|
-
|
|
188
202
|
// 把选中的3个数组传递出去
|
|
189
203
|
|
|
190
204
|
let selectAllArr = {
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
205
|
+
province: this.range_data[0][items_index[0]],
|
|
206
|
+
city: this.range_data[1][items_index[1]],
|
|
207
|
+
district: this.range_data[2][items_index[2]]
|
|
194
208
|
};
|
|
195
|
-
this.$emit('onChoose', selectAllArr)
|
|
209
|
+
this.$emit('onChoose', selectAllArr);
|
|
196
210
|
}
|
|
197
211
|
}
|
|
198
212
|
};
|
|
@@ -213,4 +227,4 @@ export default {
|
|
|
213
227
|
.cv-picker-item-placeholder {
|
|
214
228
|
color: grey;
|
|
215
229
|
}
|
|
216
|
-
</style>
|
|
230
|
+
</style>
|
|
@@ -1,11 +1,26 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<cv-form-item
|
|
3
|
-
:
|
|
2
|
+
<cv-form-item
|
|
3
|
+
:label="label"
|
|
4
|
+
:message="message"
|
|
5
|
+
:messageDisplay="messageDisplay"
|
|
6
|
+
:labelWidth="localLabelWidth"
|
|
7
|
+
:layout="localLayout"
|
|
8
|
+
:isIcon="true"
|
|
9
|
+
:iconTop="iconTop"
|
|
10
|
+
>
|
|
4
11
|
<view class="cv-picker-time">
|
|
5
|
-
<picker
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
12
|
+
<picker
|
|
13
|
+
class="cv-picker-time-item"
|
|
14
|
+
mode="time"
|
|
15
|
+
:value="localVal"
|
|
16
|
+
:start="startTime"
|
|
17
|
+
:end="endTime"
|
|
18
|
+
@change="bindTimeChange"
|
|
19
|
+
@cancel="bindPickerCancel"
|
|
20
|
+
@click="changeIconTop"
|
|
21
|
+
>
|
|
22
|
+
<view class="cv-picker-time-text" v-if="localVal != ''">{{ localVal }}</view>
|
|
23
|
+
<view class="cv-picker-time-placeholder" v-else>{{ placeholder }}</view>
|
|
9
24
|
</picker>
|
|
10
25
|
</view>
|
|
11
26
|
</cv-form-item>
|
|
@@ -15,20 +30,20 @@
|
|
|
15
30
|
import MixinsPicker from '../mixins/mixins-picker.js';
|
|
16
31
|
export default {
|
|
17
32
|
mixins: [MixinsPicker],
|
|
18
|
-
name:
|
|
33
|
+
name: 'cvPickerTime',
|
|
19
34
|
props: {
|
|
20
35
|
//默认输入框
|
|
21
36
|
value: {
|
|
22
37
|
type: String,
|
|
23
|
-
default:
|
|
38
|
+
default: ''
|
|
24
39
|
},
|
|
25
40
|
startTime: {
|
|
26
41
|
type: String,
|
|
27
|
-
default:
|
|
42
|
+
default: ''
|
|
28
43
|
},
|
|
29
44
|
endTime: {
|
|
30
45
|
type: String,
|
|
31
|
-
default:
|
|
46
|
+
default: ''
|
|
32
47
|
}
|
|
33
48
|
},
|
|
34
49
|
data() {
|
|
@@ -44,7 +59,7 @@ export default {
|
|
|
44
59
|
bindTimeChange: function (e) {
|
|
45
60
|
this.localVal = e.detail.value;
|
|
46
61
|
this.$emit('input', this.localVal);
|
|
47
|
-
this.iconTop = false
|
|
62
|
+
this.iconTop = false;
|
|
48
63
|
}
|
|
49
64
|
}
|
|
50
65
|
};
|
|
@@ -1,11 +1,27 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<cv-form-item
|
|
3
|
-
:
|
|
2
|
+
<cv-form-item
|
|
3
|
+
:tip="tip"
|
|
4
|
+
:must="must"
|
|
5
|
+
:label="label"
|
|
6
|
+
:message="message"
|
|
7
|
+
:messageDisplay="messageDisplay"
|
|
8
|
+
:labelWidth="localLabelWidth"
|
|
9
|
+
:layout="localLayout"
|
|
10
|
+
:isIcon="true"
|
|
11
|
+
:iconTop="iconTop"
|
|
12
|
+
>
|
|
4
13
|
<view class="cv-picker">
|
|
5
|
-
<picker
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
14
|
+
<picker
|
|
15
|
+
class="cv-picker-item"
|
|
16
|
+
@change="bindPickerChange"
|
|
17
|
+
@cancel="bindPickerCancel"
|
|
18
|
+
:range="localArr"
|
|
19
|
+
:value="localIndex"
|
|
20
|
+
range-key="text"
|
|
21
|
+
@click="changeIconTop"
|
|
22
|
+
>
|
|
23
|
+
<view class="cv-picker-item-text" v-if="localIndex != null">{{ localArr[localIndex].text }}</view>
|
|
24
|
+
<view class="cv-picker-item-placeholder" v-else>{{ placeholder }}</view>
|
|
9
25
|
</picker>
|
|
10
26
|
</view>
|
|
11
27
|
</cv-form-item>
|
|
@@ -15,12 +31,12 @@
|
|
|
15
31
|
import MixinsPicker from '../mixins/mixins-picker.js';
|
|
16
32
|
export default {
|
|
17
33
|
mixins: [MixinsPicker],
|
|
18
|
-
name:
|
|
34
|
+
name: 'cvPicker1',
|
|
19
35
|
props: {
|
|
20
36
|
//默认输入框内容
|
|
21
37
|
value: {
|
|
22
38
|
type: [Number, String],
|
|
23
|
-
default:
|
|
39
|
+
default: ''
|
|
24
40
|
},
|
|
25
41
|
dataType: {
|
|
26
42
|
type: String,
|
|
@@ -69,7 +85,7 @@ export default {
|
|
|
69
85
|
value(newVal) {
|
|
70
86
|
this.localVal = newVal;
|
|
71
87
|
this._dealValue();
|
|
72
|
-
}
|
|
88
|
+
}
|
|
73
89
|
},
|
|
74
90
|
created: function () {
|
|
75
91
|
this.localVal = this.value;
|
|
@@ -86,17 +102,16 @@ export default {
|
|
|
86
102
|
//判断 dataLists 是否有length属性,有则是数组,没有则不是
|
|
87
103
|
if (dataLists.length) {
|
|
88
104
|
// 判断是否一维数组
|
|
89
|
-
if (typeof
|
|
105
|
+
if (typeof dataLists[0] != 'object') {
|
|
90
106
|
for (let i in dataLists) {
|
|
91
107
|
newArr.push({
|
|
92
108
|
text: dataLists[i],
|
|
93
|
-
value: i.toString()
|
|
109
|
+
value: i.toString()
|
|
94
110
|
});
|
|
95
111
|
}
|
|
96
112
|
} else {
|
|
97
113
|
newArr = dataLists;
|
|
98
114
|
}
|
|
99
|
-
|
|
100
115
|
}
|
|
101
116
|
return newArr;
|
|
102
117
|
},
|
|
@@ -110,9 +125,9 @@ export default {
|
|
|
110
125
|
let localIndex = null;
|
|
111
126
|
for (let index = 0; index < tempArr.length; index++) {
|
|
112
127
|
if (this.dataType == 'text' && this.localVal == tempArr[index].text) {
|
|
113
|
-
localIndex = index
|
|
128
|
+
localIndex = index;
|
|
114
129
|
} else if (this.dataType == 'value' && this.localVal == tempArr[index].value) {
|
|
115
|
-
localIndex = index
|
|
130
|
+
localIndex = index;
|
|
116
131
|
}
|
|
117
132
|
}
|
|
118
133
|
this.localIndex = localIndex;
|
|
@@ -148,7 +163,7 @@ export default {
|
|
|
148
163
|
tempArr.push({
|
|
149
164
|
value: data[dataValue],
|
|
150
165
|
text: data[dataText]
|
|
151
|
-
})
|
|
166
|
+
});
|
|
152
167
|
}
|
|
153
168
|
return tempArr;
|
|
154
169
|
},
|
|
@@ -163,7 +178,7 @@ export default {
|
|
|
163
178
|
this.localVal = rowData.value;
|
|
164
179
|
}
|
|
165
180
|
this.$emit('input', this.localVal);
|
|
166
|
-
this.iconTop = false
|
|
181
|
+
this.iconTop = false;
|
|
167
182
|
}
|
|
168
183
|
}
|
|
169
184
|
};
|
|
@@ -183,4 +198,4 @@ export default {
|
|
|
183
198
|
.cv-picker-item-placeholder {
|
|
184
199
|
color: grey;
|
|
185
200
|
}
|
|
186
|
-
</style>
|
|
201
|
+
</style>
|
|
@@ -1,24 +1,42 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<cv-form-item
|
|
3
|
-
:
|
|
2
|
+
<cv-form-item
|
|
3
|
+
:label="label"
|
|
4
|
+
:message="message"
|
|
5
|
+
:messageDisplay="messageDisplay"
|
|
6
|
+
:labelWidth="localLabelWidth"
|
|
7
|
+
:layout="localLayout"
|
|
8
|
+
:isIcon="true"
|
|
9
|
+
:iconTop="iconTop"
|
|
10
|
+
>
|
|
4
11
|
<view class="cv-picker">
|
|
5
|
-
<picker
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
12
|
+
<picker
|
|
13
|
+
class="cv-picker-item"
|
|
14
|
+
mode="multiSelector"
|
|
15
|
+
:range="range_data"
|
|
16
|
+
range-key="text"
|
|
17
|
+
:value="items_index"
|
|
18
|
+
@change="bindPickerChange"
|
|
19
|
+
@columnchange="bindPickerColumnchange"
|
|
20
|
+
@cancel="onCancel"
|
|
21
|
+
@click="changeIconTop"
|
|
22
|
+
>
|
|
23
|
+
<view
|
|
24
|
+
class="cv-picker-item-text"
|
|
25
|
+
v-if="last_range_data[0] && lastRetDataIndex[0] && last_range_data[1] && lastRetDataIndex[1]"
|
|
26
|
+
>
|
|
27
|
+
{{ last_range_data[0][lastRetDataIndex[0]].text }}{{ joint || ' ' }}{{ last_range_data[1][lastRetDataIndex[1]].text }}
|
|
9
28
|
</view>
|
|
10
|
-
<view class="cv-picker-item-placeholder" v-else>{{placeholder}}</view>
|
|
29
|
+
<view class="cv-picker-item-placeholder" v-else>{{ placeholder }}</view>
|
|
11
30
|
</picker>
|
|
12
31
|
</view>
|
|
13
32
|
</cv-form-item>
|
|
14
33
|
</template>
|
|
15
34
|
|
|
16
35
|
<script>
|
|
17
|
-
|
|
18
36
|
import MixinsPicker from '../mixins/mixins-picker.js';
|
|
19
37
|
export default {
|
|
20
38
|
mixins: [MixinsPicker],
|
|
21
|
-
name:
|
|
39
|
+
name: 'cvPicker2',
|
|
22
40
|
props: {
|
|
23
41
|
//默认输入框内容
|
|
24
42
|
value: {
|
|
@@ -68,18 +86,18 @@ export default {
|
|
|
68
86
|
value(newVal) {
|
|
69
87
|
this.localVal = newVal;
|
|
70
88
|
this.itemsSortOut();
|
|
71
|
-
}
|
|
89
|
+
}
|
|
72
90
|
},
|
|
73
91
|
data() {
|
|
74
92
|
return {
|
|
75
93
|
iconTop: false,
|
|
76
94
|
localVal: [],
|
|
77
|
-
items: []
|
|
78
|
-
range_data: []
|
|
79
|
-
last_range_data: []
|
|
95
|
+
items: [], //全部数据
|
|
96
|
+
range_data: [], //弹窗临时数组
|
|
97
|
+
last_range_data: [], //最终显示页面数组
|
|
80
98
|
items_sub: [],
|
|
81
|
-
items_index: [0, 0]
|
|
82
|
-
lastRetDataIndex: [0, 0]
|
|
99
|
+
items_index: [0, 0], //当前下标
|
|
100
|
+
lastRetDataIndex: [0, 0], // 最终确定选中的下标
|
|
83
101
|
localDataType: ''
|
|
84
102
|
};
|
|
85
103
|
},
|
|
@@ -107,7 +125,7 @@ export default {
|
|
|
107
125
|
original = JSON.parse(original);
|
|
108
126
|
}
|
|
109
127
|
if (!original || original.length <= 0) {
|
|
110
|
-
console.warn('original 暂无数据', original)
|
|
128
|
+
console.warn('original 暂无数据', original);
|
|
111
129
|
return;
|
|
112
130
|
}
|
|
113
131
|
//整理数据
|
|
@@ -122,34 +140,34 @@ export default {
|
|
|
122
140
|
//查找一级绑定参数
|
|
123
141
|
if (this.localVal[0]) {
|
|
124
142
|
if (dataType == 'text' && this.localVal[0] == data[dataText]) {
|
|
125
|
-
items_index[0] = i
|
|
143
|
+
items_index[0] = i;
|
|
126
144
|
} else if (dataType == 'value' && this.localVal[0] == data[dataValue]) {
|
|
127
|
-
items_index[0] = i
|
|
145
|
+
items_index[0] = i;
|
|
128
146
|
}
|
|
129
147
|
}
|
|
130
148
|
|
|
131
149
|
items.push({
|
|
132
150
|
value: data[dataValue].toString(),
|
|
133
151
|
text: data[dataText]
|
|
134
|
-
})
|
|
152
|
+
});
|
|
135
153
|
if (original[i][free]) {
|
|
136
154
|
let free_data = original[i][free];
|
|
137
155
|
let temp = [];
|
|
138
156
|
for (const ii in free_data) {
|
|
139
|
-
let data = free_data[ii]
|
|
157
|
+
let data = free_data[ii];
|
|
140
158
|
|
|
141
159
|
//查找二级绑定参数
|
|
142
160
|
if (this.localVal[1]) {
|
|
143
161
|
if (dataType == 'text' && this.localVal[1] == data[dataText]) {
|
|
144
|
-
items_index[1] = ii
|
|
162
|
+
items_index[1] = ii;
|
|
145
163
|
} else if (dataType == 'value' && this.localVal[1] == data[dataValue]) {
|
|
146
|
-
items_index[1] = ii
|
|
164
|
+
items_index[1] = ii;
|
|
147
165
|
}
|
|
148
166
|
}
|
|
149
167
|
temp.push({
|
|
150
168
|
value: data[dataValue].toString(),
|
|
151
169
|
text: data[dataText]
|
|
152
|
-
})
|
|
170
|
+
});
|
|
153
171
|
}
|
|
154
172
|
items[i].free = temp;
|
|
155
173
|
}
|
|
@@ -171,16 +189,16 @@ export default {
|
|
|
171
189
|
let items_index = e.detail.value;
|
|
172
190
|
this.items_index = items_index;
|
|
173
191
|
this.updateLocalVal();
|
|
174
|
-
this.iconTop = false
|
|
192
|
+
this.iconTop = false;
|
|
175
193
|
},
|
|
176
194
|
/* 取消选择 */
|
|
177
195
|
onCancel(e) {
|
|
178
|
-
this.iconTop = false
|
|
196
|
+
this.iconTop = false;
|
|
179
197
|
this.range_data = [...this.last_range_data];
|
|
180
198
|
this.items_index = [...this.lastRetDataIndex];
|
|
181
199
|
},
|
|
182
200
|
bindPickerColumnchange: function (e) {
|
|
183
|
-
let items_index = this.items_index
|
|
201
|
+
let items_index = this.items_index;
|
|
184
202
|
if (e.detail.column == 1) {
|
|
185
203
|
items_index[1] = e.detail.value;
|
|
186
204
|
} else if (e.detail.column == 0) {
|
|
@@ -196,7 +214,7 @@ export default {
|
|
|
196
214
|
updateLocalVal() {
|
|
197
215
|
let items_index = this.items_index;
|
|
198
216
|
this.last_range_data = [...this.range_data];
|
|
199
|
-
this.lastRetDataIndex = [...items_index]
|
|
217
|
+
this.lastRetDataIndex = [...items_index];
|
|
200
218
|
let value = [];
|
|
201
219
|
let items = this.items;
|
|
202
220
|
if (this.dataType == 'text') {
|
|
@@ -227,4 +245,4 @@ export default {
|
|
|
227
245
|
.cv-picker-item-placeholder {
|
|
228
246
|
color: grey;
|
|
229
247
|
}
|
|
230
|
-
</style>
|
|
248
|
+
</style>
|