@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,53 +1,98 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<view class="cv-tab-lists">
|
|
3
3
|
<!-- tab按钮 -->
|
|
4
|
-
<view class="cv-tab-lists-tab-area" v-if="disableTab==false">
|
|
5
|
-
<scroll-view
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
<view class="cv-tab-lists-tab-area" v-if="disableTab == false">
|
|
5
|
+
<scroll-view
|
|
6
|
+
class="cv-tab-lists-tab-box"
|
|
7
|
+
scroll-x="true"
|
|
8
|
+
:scroll-left="localTabScrollLeft"
|
|
9
|
+
:show-scrollbar="false"
|
|
10
|
+
scroll-with-animation
|
|
11
|
+
@scroll="onTabScroll"
|
|
12
|
+
>
|
|
13
|
+
<view
|
|
14
|
+
class="cv-tab-lists-tab-item"
|
|
15
|
+
v-bind:style="tabItemStyle"
|
|
16
|
+
v-for="(item, index) in localTabLists"
|
|
17
|
+
:key="index"
|
|
18
|
+
:class="'cv-tab-lists-tab-item-id-' + (index + 1)"
|
|
19
|
+
>
|
|
9
20
|
<view class="cv-tab-lists-tab-item-area" @tap="changeTab(index)" :key="index">
|
|
10
21
|
<view class="cv-tab-lists-tab-item-area-title-box">
|
|
11
22
|
<view class="cv-tab-lists-tab-item-area-title-item">
|
|
12
|
-
{{item.tabTitle}}
|
|
23
|
+
{{ item.tabTitle }}
|
|
13
24
|
<view class="cv-tab-lists-tab-item-area-title-orderby" v-if="item.orderby">
|
|
14
25
|
<view class="cv-tab-lists-tab-item-area-title-asc">
|
|
15
|
-
<view
|
|
16
|
-
|
|
17
|
-
|
|
26
|
+
<view
|
|
27
|
+
class="cv-tab-lists-tab-item-area-title-asc-item"
|
|
28
|
+
:class="
|
|
29
|
+
item.ordersort == 'ASC' && localTabIndex == index ? 'cv-tab-lists-tab-item-area-title-asc-selected' : ''
|
|
30
|
+
"
|
|
31
|
+
></view>
|
|
18
32
|
</view>
|
|
19
33
|
<view class="cv-tab-lists-tab-item-area-title-desc">
|
|
20
|
-
<view
|
|
21
|
-
|
|
22
|
-
|
|
34
|
+
<view
|
|
35
|
+
class="cv-tab-lists-tab-item-area-title-desc-item"
|
|
36
|
+
:class="
|
|
37
|
+
item.ordersort == 'DESC' && localTabIndex == index ? 'cv-tab-lists-tab-item-area-title-desc-selected' : ''
|
|
38
|
+
"
|
|
39
|
+
></view>
|
|
23
40
|
</view>
|
|
24
41
|
</view>
|
|
25
42
|
</view>
|
|
26
43
|
</view>
|
|
27
|
-
<view
|
|
28
|
-
|
|
44
|
+
<view
|
|
45
|
+
class="cv-tab-lists-tab-item-area-border"
|
|
46
|
+
:class="localTabIndex == index ? 'cv-tab-lists-tab-item-area-border-checked' : ''"
|
|
47
|
+
></view>
|
|
29
48
|
</view>
|
|
30
49
|
</view>
|
|
31
50
|
</scroll-view>
|
|
32
51
|
</view>
|
|
33
|
-
<view class="cv-tab-lists-data-area" :style="disableTab==true?'height:100%;':''">
|
|
34
|
-
<swiper
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
52
|
+
<view class="cv-tab-lists-data-area" :style="disableTab == true ? 'height:100%;' : ''">
|
|
53
|
+
<swiper
|
|
54
|
+
class="cv-tab-lists-data-swiper"
|
|
55
|
+
:current="localTabIndex"
|
|
56
|
+
@change="changeSwiper"
|
|
57
|
+
@animationfinish="onAnimationfinish"
|
|
58
|
+
@transition="onTransition"
|
|
59
|
+
:disableTouch="disableTouch"
|
|
60
|
+
>
|
|
61
|
+
<swiper-item v-for="(item, index) in localTabLists" :key="index" :show-scrollbar="true">
|
|
62
|
+
<scroll-view
|
|
63
|
+
class="cv-tab-lists-data-scroll-box"
|
|
64
|
+
scroll-y="true"
|
|
65
|
+
:refresher-enabled="localTabLists[index].enabled && disableEnabled === false"
|
|
66
|
+
refresher-background="#eeeeee"
|
|
67
|
+
:refresher-triggered="localTabLists[index].triggered"
|
|
68
|
+
@scrolltolower="onTolower(index)"
|
|
69
|
+
@scrolltoupper="onToupper"
|
|
70
|
+
@scroll="onScroll"
|
|
71
|
+
@refresherrefresh="onRefresh"
|
|
72
|
+
@refresherrestore="onRestore"
|
|
73
|
+
@refresherabort="onAbort"
|
|
74
|
+
>
|
|
41
75
|
<view v-if="localDataLists[index].data.length > 0" :class="listsClass">
|
|
42
|
-
<view v-for="(rows,i) in localDataLists[index].data" :key="i" style="display: contents !important
|
|
76
|
+
<view v-for="(rows, i) in localDataLists[index].data" :key="i" style="display: contents !important">
|
|
43
77
|
<slot :rows="rows" :index="i" :tabIndex="index" />
|
|
44
78
|
</view>
|
|
45
79
|
</view>
|
|
46
|
-
<view
|
|
47
|
-
|
|
48
|
-
|
|
80
|
+
<view
|
|
81
|
+
class="cv-tab-lists-data-scroll-box-nodata-msg"
|
|
82
|
+
v-if="
|
|
83
|
+
localTabLists[index].loadMoreStatus == 'noMore' &&
|
|
84
|
+
localDataLists[index].data.length <= 0 &&
|
|
85
|
+
localTabLists[index].nodataMsg
|
|
86
|
+
"
|
|
87
|
+
>
|
|
88
|
+
{{ localTabLists[index].nodataMsg }}
|
|
49
89
|
</view>
|
|
50
|
-
<cv-load-more
|
|
90
|
+
<cv-load-more
|
|
91
|
+
:status="localTabLists[index].loadMoreStatus"
|
|
92
|
+
@clickLoadMore="onTolower(index)"
|
|
93
|
+
:contentText="loadMoreText"
|
|
94
|
+
v-else
|
|
95
|
+
/>
|
|
51
96
|
</scroll-view>
|
|
52
97
|
</swiper-item>
|
|
53
98
|
</swiper>
|
|
@@ -123,14 +168,14 @@ export default {
|
|
|
123
168
|
localTabLists: [],
|
|
124
169
|
localTabIndex: 0,
|
|
125
170
|
localDataLists: [],
|
|
126
|
-
scrollTop: 0
|
|
171
|
+
scrollTop: 0, //当前列顶部位置
|
|
127
172
|
triggered: false,
|
|
128
173
|
tabItemStyle: '',
|
|
129
174
|
windowWidth: 414,
|
|
130
175
|
localTabScrollLeft: 0,
|
|
131
176
|
tabScrollLeft: 0,
|
|
132
|
-
loadMoreText: { contentdown:
|
|
133
|
-
}
|
|
177
|
+
loadMoreText: { contentdown: '上拉或点击显示更多', contentrefresh: '正在加载...', contentnomore: '没有更多数据了' }
|
|
178
|
+
};
|
|
134
179
|
},
|
|
135
180
|
watch: {
|
|
136
181
|
tabsConfig: {
|
|
@@ -160,7 +205,7 @@ export default {
|
|
|
160
205
|
created() {
|
|
161
206
|
uni.getSystemInfo({
|
|
162
207
|
success: (res) => {
|
|
163
|
-
this.windowWidth = res.windowWidth
|
|
208
|
+
this.windowWidth = res.windowWidth;
|
|
164
209
|
}
|
|
165
210
|
});
|
|
166
211
|
},
|
|
@@ -174,14 +219,14 @@ export default {
|
|
|
174
219
|
for (const key in this.tabsConfig) {
|
|
175
220
|
localTabLists.push({ ...this.tabsConfig[key] });
|
|
176
221
|
localTabLists[key].enabled = true; //开启自定义下拉刷新
|
|
177
|
-
localTabLists[key].loadMoreStatus = 'more'
|
|
222
|
+
localTabLists[key].loadMoreStatus = 'more'; //cv-load-more 组件 status 状态
|
|
178
223
|
localTabLists[key].scrollTop = 0;
|
|
179
|
-
localTabLists[key].ordersort = this.tabsConfig[key].ordersort == 'DESC' ? 'DESC' : 'ASC'
|
|
180
|
-
localTabLists[key].pagesize = this.tabsConfig[key].pagesize || 10
|
|
224
|
+
localTabLists[key].ordersort = this.tabsConfig[key].ordersort == 'DESC' ? 'DESC' : 'ASC'; //默认倒叙
|
|
225
|
+
localTabLists[key].pagesize = this.tabsConfig[key].pagesize || 10; //页长
|
|
181
226
|
localDataLists[key] = {
|
|
182
227
|
page: 1,
|
|
183
228
|
data: []
|
|
184
|
-
}
|
|
229
|
+
};
|
|
185
230
|
}
|
|
186
231
|
this.localTabLists = localTabLists;
|
|
187
232
|
this.localDataLists = localDataLists;
|
|
@@ -200,36 +245,20 @@ export default {
|
|
|
200
245
|
/* #ifdef APP-PLUS */
|
|
201
246
|
let query = uni.createSelectorQuery().in(this);
|
|
202
247
|
for (var i = 1; i <= localTabLists.length; ++i) {
|
|
203
|
-
query
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
tabItemWidth +=
|
|
207
|
-
}
|
|
208
|
-
}).exec();
|
|
209
|
-
}
|
|
210
|
-
query.select('.cv-tab-lists-tab-box').boundingClientRect((data) => {
|
|
211
|
-
tabWidth = data.width
|
|
212
|
-
/* 写在这里面是为了兼容微信小程序,如果写在外面这句会先执行 */
|
|
213
|
-
if (tabItemWidth <= tabWidth) {
|
|
214
|
-
tabItemStyle += 'width:calc(100% / ' + localTabLists.length + ' - 40px);';
|
|
215
|
-
}
|
|
216
|
-
tabItemStyle += 'top:0;';
|
|
217
|
-
this.tabItemStyle = tabItemStyle;
|
|
218
|
-
this.$forceUpdate();
|
|
219
|
-
}).exec();
|
|
220
|
-
/* #endif */
|
|
221
|
-
/* #ifndef APP-PLUS */
|
|
222
|
-
setTimeout(() => {
|
|
223
|
-
for (var i = 1; i <= localTabLists.length; ++i) {
|
|
224
|
-
uni.createSelectorQuery().in(this).select('.cv-tab-lists-tab-item-id-' + i).boundingClientRect((data) => {
|
|
225
|
-
tabItemWidth += 40
|
|
248
|
+
query
|
|
249
|
+
.select('.cv-tab-lists-tab-item-id-' + i)
|
|
250
|
+
.boundingClientRect((data) => {
|
|
251
|
+
tabItemWidth += 40;
|
|
226
252
|
if (data) {
|
|
227
|
-
tabItemWidth += data.width
|
|
253
|
+
tabItemWidth += data.width;
|
|
228
254
|
}
|
|
229
|
-
})
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
255
|
+
})
|
|
256
|
+
.exec();
|
|
257
|
+
}
|
|
258
|
+
query
|
|
259
|
+
.select('.cv-tab-lists-tab-box')
|
|
260
|
+
.boundingClientRect((data) => {
|
|
261
|
+
tabWidth = data.width;
|
|
233
262
|
/* 写在这里面是为了兼容微信小程序,如果写在外面这句会先执行 */
|
|
234
263
|
if (tabItemWidth <= tabWidth) {
|
|
235
264
|
tabItemStyle += 'width:calc(100% / ' + localTabLists.length + ' - 40px);';
|
|
@@ -237,8 +266,40 @@ export default {
|
|
|
237
266
|
tabItemStyle += 'top:0;';
|
|
238
267
|
this.tabItemStyle = tabItemStyle;
|
|
239
268
|
this.$forceUpdate();
|
|
240
|
-
})
|
|
241
|
-
|
|
269
|
+
})
|
|
270
|
+
.exec();
|
|
271
|
+
/* #endif */
|
|
272
|
+
/* #ifndef APP-PLUS */
|
|
273
|
+
setTimeout(() => {
|
|
274
|
+
for (var i = 1; i <= localTabLists.length; ++i) {
|
|
275
|
+
uni
|
|
276
|
+
.createSelectorQuery()
|
|
277
|
+
.in(this)
|
|
278
|
+
.select('.cv-tab-lists-tab-item-id-' + i)
|
|
279
|
+
.boundingClientRect((data) => {
|
|
280
|
+
tabItemWidth += 40;
|
|
281
|
+
if (data) {
|
|
282
|
+
tabItemWidth += data.width;
|
|
283
|
+
}
|
|
284
|
+
})
|
|
285
|
+
.exec();
|
|
286
|
+
}
|
|
287
|
+
uni
|
|
288
|
+
.createSelectorQuery()
|
|
289
|
+
.in(this)
|
|
290
|
+
.select('.cv-tab-lists-tab-box')
|
|
291
|
+
.boundingClientRect((data) => {
|
|
292
|
+
tabWidth = data.width;
|
|
293
|
+
/* 写在这里面是为了兼容微信小程序,如果写在外面这句会先执行 */
|
|
294
|
+
if (tabItemWidth <= tabWidth) {
|
|
295
|
+
tabItemStyle += 'width:calc(100% / ' + localTabLists.length + ' - 40px);';
|
|
296
|
+
}
|
|
297
|
+
tabItemStyle += 'top:0;';
|
|
298
|
+
this.tabItemStyle = tabItemStyle;
|
|
299
|
+
this.$forceUpdate();
|
|
300
|
+
})
|
|
301
|
+
.exec();
|
|
302
|
+
}, 0);
|
|
242
303
|
/* #endif */
|
|
243
304
|
},
|
|
244
305
|
/* 处理滚动条距离左边的距离 */
|
|
@@ -250,16 +311,21 @@ export default {
|
|
|
250
311
|
windowWidth = this.windowWidth;
|
|
251
312
|
let tabLeft = 0,
|
|
252
313
|
localTabScrollLeft = this.tabScrollLeft,
|
|
253
|
-
tabWidth = 0
|
|
254
|
-
uni
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
314
|
+
tabWidth = 0;
|
|
315
|
+
uni
|
|
316
|
+
.createSelectorQuery()
|
|
317
|
+
.in(this)
|
|
318
|
+
.select('.cv-tab-lists-tab-item-id-' + i)
|
|
319
|
+
.boundingClientRect((data) => {
|
|
320
|
+
tabLeft = data.left - 20;
|
|
321
|
+
tabWidth = data.width + 40;
|
|
322
|
+
localTabScrollLeft += tabLeft - windowWidth / 2 + tabWidth / 2;
|
|
323
|
+
this.localTabScrollLeft = localTabScrollLeft;
|
|
324
|
+
})
|
|
325
|
+
.exec();
|
|
260
326
|
},
|
|
261
327
|
onTabScroll(e) {
|
|
262
|
-
this.tabScrollLeft = e.detail.scrollLeft
|
|
328
|
+
this.tabScrollLeft = e.detail.scrollLeft;
|
|
263
329
|
},
|
|
264
330
|
changeTab(e) {
|
|
265
331
|
if (e != this.localTabIndex) {
|
|
@@ -273,10 +339,10 @@ export default {
|
|
|
273
339
|
if (this.localTabLists[e].orderby) {
|
|
274
340
|
//console.warn('< cvjs >:支持排序的Tab哦');
|
|
275
341
|
if (this.localTabLists[e].ordersort == 'DESC') {
|
|
276
|
-
this.localTabLists[e].ordersort = 'ASC'
|
|
342
|
+
this.localTabLists[e].ordersort = 'ASC';
|
|
277
343
|
//console.warn(this.localTabLists[e].orderby, '排序改为:', this.localTabLists[e].ordersort,)
|
|
278
344
|
} else {
|
|
279
|
-
this.localTabLists[e].ordersort = 'DESC'
|
|
345
|
+
this.localTabLists[e].ordersort = 'DESC';
|
|
280
346
|
//console.warn(this.localTabLists[e].orderby, '排序改为:', this.localTabLists[e].ordersort)
|
|
281
347
|
}
|
|
282
348
|
// console.log('< cvjs >:重置当前列数据重新发起请求');
|
|
@@ -296,13 +362,13 @@ export default {
|
|
|
296
362
|
// console.log('< cvjs >:第一次打开此区初始化数据');
|
|
297
363
|
this.getData();
|
|
298
364
|
}
|
|
299
|
-
this._dealTabScrollLeft()
|
|
300
|
-
this.$set(this.localTabLists[current], 'enabled', true)
|
|
365
|
+
this._dealTabScrollLeft();
|
|
366
|
+
this.$set(this.localTabLists[current], 'enabled', true);
|
|
301
367
|
},
|
|
302
368
|
getData() {
|
|
303
|
-
const localTabLists = this.localTabLists
|
|
304
|
-
const localTabIndex = this.localTabIndex
|
|
305
|
-
const localDataLists = this.localDataLists
|
|
369
|
+
const localTabLists = this.localTabLists; //Tab数组
|
|
370
|
+
const localTabIndex = this.localTabIndex; //当前区域坐标
|
|
371
|
+
const localDataLists = this.localDataLists; //滑块缓存数据
|
|
306
372
|
|
|
307
373
|
console.log(localTabLists);
|
|
308
374
|
|
|
@@ -310,68 +376,66 @@ export default {
|
|
|
310
376
|
console.warn('< cvjs >:localTabLists 参数为有误');
|
|
311
377
|
return;
|
|
312
378
|
}
|
|
313
|
-
this.localTabLists[localTabIndex].loadMoreStatus = 'loading'
|
|
379
|
+
this.localTabLists[localTabIndex].loadMoreStatus = 'loading';
|
|
314
380
|
let apiUrl = localTabLists[localTabIndex].apiUrl;
|
|
315
381
|
let page = 1;
|
|
316
382
|
if (localDataLists[localTabIndex]) {
|
|
317
|
-
page = localDataLists[localTabIndex].page
|
|
383
|
+
page = localDataLists[localTabIndex].page;
|
|
318
384
|
}
|
|
319
385
|
let apiParam = {
|
|
320
386
|
pagesize: localTabLists[localTabIndex].pagesize,
|
|
321
387
|
page: page
|
|
322
388
|
};
|
|
323
|
-
apiParam = Object.assign(apiParam, this.publicParam)
|
|
324
|
-
apiParam = Object.assign(apiParam, localTabLists[localTabIndex].apiParam)
|
|
389
|
+
apiParam = Object.assign(apiParam, this.publicParam); //公共参数
|
|
390
|
+
apiParam = Object.assign(apiParam, localTabLists[localTabIndex].apiParam); //当前列参数
|
|
325
391
|
//排序字段
|
|
326
392
|
if (localTabLists[localTabIndex].orderby) {
|
|
327
|
-
apiParam[localTabLists[localTabIndex].orderby] = localTabLists[localTabIndex].ordersort
|
|
393
|
+
apiParam[localTabLists[localTabIndex].orderby] = localTabLists[localTabIndex].ordersort;
|
|
328
394
|
}
|
|
329
395
|
// console.warn('< cvjs >:apiParam', apiParam)
|
|
330
396
|
|
|
331
|
-
|
|
332
397
|
if (localTabLists[localTabIndex].apiFunc) {
|
|
333
398
|
if (typeof localTabLists[localTabIndex].apiFunc == 'function') {
|
|
334
399
|
//使用私有方法请求
|
|
335
|
-
localTabLists[localTabIndex]
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
400
|
+
localTabLists[localTabIndex]
|
|
401
|
+
.apiFunc(apiParam)
|
|
402
|
+
.then((successRes) => {
|
|
403
|
+
this.dealDataList(successRes.data, localTabIndex, page);
|
|
404
|
+
})
|
|
405
|
+
.catch((error) => {
|
|
406
|
+
this.dealDataList([], localTabIndex, page);
|
|
407
|
+
// console.log('< cvjs >:error', error);
|
|
408
|
+
});
|
|
341
409
|
} else {
|
|
342
|
-
console.warn('< cvjs >:',
|
|
343
|
-
'拿到 apiFunc 开始请求,此处代码不全'
|
|
344
|
-
);
|
|
410
|
+
console.warn('< cvjs >:', '拿到 apiFunc 开始请求,此处代码不全');
|
|
345
411
|
}
|
|
346
412
|
} else if (this.publicFunc) {
|
|
347
413
|
/* 使用公共方法请求 */
|
|
348
414
|
if (localTabLists[localTabIndex].apiFlag) {
|
|
349
415
|
//有标识
|
|
350
|
-
this.publicFunc(localTabLists[localTabIndex].apiFlag, apiParam)
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
416
|
+
this.publicFunc(localTabLists[localTabIndex].apiFlag, apiParam)
|
|
417
|
+
.then((successRes) => {
|
|
418
|
+
this.dealDataList(successRes.data, localTabIndex, page);
|
|
419
|
+
})
|
|
420
|
+
.catch((error) => {
|
|
421
|
+
this.dealDataList([], localTabIndex, page);
|
|
422
|
+
// console.log('< cvjs >:error', error);
|
|
423
|
+
});
|
|
356
424
|
} else {
|
|
357
425
|
//无标识
|
|
358
|
-
this.publicFunc(apiParam)
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
426
|
+
this.publicFunc(apiParam)
|
|
427
|
+
.then((successRes) => {
|
|
428
|
+
this.dealDataList(successRes.data, localTabIndex, page);
|
|
429
|
+
})
|
|
430
|
+
.catch((error) => {
|
|
431
|
+
this.dealDataList([], localTabIndex, page);
|
|
432
|
+
// console.log('< cvjs >:error', error);
|
|
433
|
+
});
|
|
364
434
|
}
|
|
365
|
-
|
|
366
435
|
} else if (localTabLists[localTabIndex].apiUrl) {
|
|
367
|
-
console.warn('< cvjs >:',
|
|
368
|
-
'拿到apiUrl 开始请求,此处代码不全'
|
|
369
|
-
);
|
|
370
|
-
|
|
436
|
+
console.warn('< cvjs >:', '拿到apiUrl 开始请求,此处代码不全');
|
|
371
437
|
} else {
|
|
372
|
-
console.warn('< cvjs >:',
|
|
373
|
-
'参数有误:apiFunc、apiUrl 至少有一个不为空'
|
|
374
|
-
);
|
|
438
|
+
console.warn('< cvjs >:', '参数有误:apiFunc、apiUrl 至少有一个不为空');
|
|
375
439
|
setTimeout(() => {
|
|
376
440
|
this.localTabLists[localTabIndex].triggered = false;
|
|
377
441
|
//console.log('< cvjs >:请求结束,关闭下拉刷新状态', this.localTabLists[this.localTabIndex].enabled, this.localTabLists[this.localTabIndex].triggered)
|
|
@@ -381,8 +445,8 @@ export default {
|
|
|
381
445
|
this.localTabLists[localTabIndex].triggered = 'restore';
|
|
382
446
|
//console.log('< cvjs >:需要重置===========下啦状态')
|
|
383
447
|
this.$forceUpdate();
|
|
384
|
-
}, 10)
|
|
385
|
-
}, 3000)
|
|
448
|
+
}, 10);
|
|
449
|
+
}, 3000);
|
|
386
450
|
}
|
|
387
451
|
},
|
|
388
452
|
/* 整理列表数据 */
|
|
@@ -398,13 +462,13 @@ export default {
|
|
|
398
462
|
data = this.localTabLists[index].parseFunc(data);
|
|
399
463
|
}
|
|
400
464
|
if (this.localDataLists[index]) {
|
|
401
|
-
dataLists = [...this.localDataLists[index].data]
|
|
465
|
+
dataLists = [...this.localDataLists[index].data];
|
|
402
466
|
}
|
|
403
467
|
for (const key in data) {
|
|
404
468
|
dataLists.push(data[key]);
|
|
405
469
|
}
|
|
406
|
-
this.$set(this.localDataLists[index], 'data', dataLists)
|
|
407
|
-
this.$set(this.localDataLists[index], 'page', page + 1)
|
|
470
|
+
this.$set(this.localDataLists[index], 'data', dataLists);
|
|
471
|
+
this.$set(this.localDataLists[index], 'page', page + 1);
|
|
408
472
|
this.$forceUpdate();
|
|
409
473
|
if (data.length < this.localTabLists[index].pagesize) {
|
|
410
474
|
this.localTabLists[index].loadMoreStatus = 'noMore';
|
|
@@ -418,24 +482,22 @@ export default {
|
|
|
418
482
|
setTimeout(() => {
|
|
419
483
|
this.localTabLists[index].triggered = false;
|
|
420
484
|
this.$forceUpdate();
|
|
421
|
-
}, 100)
|
|
485
|
+
}, 100);
|
|
422
486
|
}
|
|
423
487
|
this.$forceUpdate();
|
|
424
|
-
|
|
425
488
|
},
|
|
426
489
|
/* swiper-item 的位置发生改变时会触发 transition 事件,event.detail = {dx: dx, dy: dy},支付宝小程序暂不支持dx, dy */
|
|
427
490
|
onTransition(e) {
|
|
428
491
|
if (this.localTabLists[this.localTabIndex].enabled !== false) {
|
|
429
492
|
// console.log('< cvjs >:swiper-item 左右滑动时 锁定‘scroll-view’下拉刷新功能', e)
|
|
430
|
-
this.$set(this.localTabLists[this.localTabIndex], 'enabled', false)
|
|
493
|
+
this.$set(this.localTabLists[this.localTabIndex], 'enabled', false);
|
|
431
494
|
}
|
|
432
|
-
|
|
433
495
|
},
|
|
434
496
|
/* 动画结束时会触发 animationfinish 事件,event.detail = {current: current, source: source} */
|
|
435
497
|
onAnimationfinish(e) {
|
|
436
498
|
if (this.localTabLists[this.localTabIndex].enabled !== true && this.localTabLists[this.localTabIndex].scrollTop < 45) {
|
|
437
499
|
// console.log('< cvjs >:swiper-item 动画结束时 开启‘scroll-view’下拉刷新功能', e)
|
|
438
|
-
this.$set(this.localTabLists[this.localTabIndex], 'enabled', true)
|
|
500
|
+
this.$set(this.localTabLists[this.localTabIndex], 'enabled', true);
|
|
439
501
|
}
|
|
440
502
|
},
|
|
441
503
|
onScroll(e) {
|
|
@@ -446,14 +508,14 @@ export default {
|
|
|
446
508
|
this.$forceUpdate();
|
|
447
509
|
// console.log('< cvjs >:滑到顶部了 可以开启下拉刷新了', this.localTabLists[this.localTabIndex].enabled);
|
|
448
510
|
} else if (scrollTop > 0 && this.localTabLists[this.localTabIndex].enabled != false) {
|
|
449
|
-
this.$set(this.localTabLists[this.localTabIndex], 'enabled', false)
|
|
511
|
+
this.$set(this.localTabLists[this.localTabIndex], 'enabled', false);
|
|
450
512
|
// console.log('< cvjs >:没在顶部 必须禁止下拉刷新了', this.localTabLists[this.localTabIndex].enabled);
|
|
451
513
|
}
|
|
452
514
|
},
|
|
453
515
|
/* 监听回到顶部 */
|
|
454
516
|
onToupper(e) {
|
|
455
517
|
// console.log('监听回到顶部', e);
|
|
456
|
-
this.$set(this.localTabLists[this.localTabIndex], 'enabled', true)
|
|
518
|
+
this.$set(this.localTabLists[this.localTabIndex], 'enabled', true);
|
|
457
519
|
},
|
|
458
520
|
/* 监听触底 */
|
|
459
521
|
onTolower(e) {
|
|
@@ -499,7 +561,6 @@ export default {
|
|
|
499
561
|
if (this.localTabLists[this.localTabIndex].enabled !== true) {
|
|
500
562
|
// this.$set(this.localTabLists[this.localTabIndex], 'enabled', true)
|
|
501
563
|
}
|
|
502
|
-
|
|
503
564
|
}
|
|
504
565
|
}
|
|
505
566
|
};
|
|
@@ -1,11 +1,29 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<cv-form-item
|
|
3
|
-
:
|
|
2
|
+
<cv-form-item
|
|
3
|
+
:tip="tip"
|
|
4
|
+
:label="label"
|
|
5
|
+
:must="must"
|
|
6
|
+
:message="message"
|
|
7
|
+
:messageDisplay="messageDisplay"
|
|
8
|
+
:labelWidth="localLabelWidth"
|
|
9
|
+
:layout="localLayout"
|
|
10
|
+
:onQClear="onQClear"
|
|
11
|
+
:input-value="localVal"
|
|
12
|
+
>
|
|
4
13
|
<view class="cv-textarea">
|
|
5
|
-
<textarea
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
14
|
+
<textarea
|
|
15
|
+
class="cv-textarea-item"
|
|
16
|
+
v-model="localVal"
|
|
17
|
+
:maxlength="maxlength"
|
|
18
|
+
:placeholder="placeholder"
|
|
19
|
+
placeholder-class="cv-textarea-placeholder"
|
|
20
|
+
@input="updateInput"
|
|
21
|
+
auto-height
|
|
22
|
+
/>
|
|
23
|
+
<view class="cv-textarea-maxlength" v-if="maxlength >= 1">
|
|
24
|
+
<text>{{ tempLength }}</text>
|
|
25
|
+
/
|
|
26
|
+
<text>{{ maxlength }}</text>
|
|
9
27
|
</view>
|
|
10
28
|
</view>
|
|
11
29
|
</cv-form-item>
|
|
@@ -15,18 +33,18 @@
|
|
|
15
33
|
import MixinsCommon from '../mixins/mixins-common.js';
|
|
16
34
|
export default {
|
|
17
35
|
mixins: [MixinsCommon],
|
|
18
|
-
name:
|
|
36
|
+
name: 'cvTextArea',
|
|
19
37
|
inject: {
|
|
20
38
|
cvFormGroup: {
|
|
21
39
|
default() {
|
|
22
|
-
return null
|
|
40
|
+
return null;
|
|
23
41
|
}
|
|
24
42
|
}
|
|
25
43
|
},
|
|
26
44
|
props: {
|
|
27
45
|
value: {
|
|
28
46
|
type: String,
|
|
29
|
-
default:
|
|
47
|
+
default: ''
|
|
30
48
|
},
|
|
31
49
|
maxlength: {
|
|
32
50
|
type: [Number, String],
|
|
@@ -34,7 +52,7 @@ export default {
|
|
|
34
52
|
},
|
|
35
53
|
tip: {
|
|
36
54
|
type: String,
|
|
37
|
-
default:
|
|
55
|
+
default: ''
|
|
38
56
|
},
|
|
39
57
|
onQClear: {
|
|
40
58
|
type: Boolean,
|
|
@@ -42,7 +60,7 @@ export default {
|
|
|
42
60
|
},
|
|
43
61
|
message: {
|
|
44
62
|
type: String,
|
|
45
|
-
default:
|
|
63
|
+
default: ''
|
|
46
64
|
},
|
|
47
65
|
messageDisplay: {
|
|
48
66
|
type: Boolean,
|
|
@@ -53,7 +71,7 @@ export default {
|
|
|
53
71
|
data() {
|
|
54
72
|
return {
|
|
55
73
|
localVal: '',
|
|
56
|
-
tempLength: 0
|
|
74
|
+
tempLength: 0
|
|
57
75
|
};
|
|
58
76
|
},
|
|
59
77
|
watch: {
|
|
@@ -73,7 +91,7 @@ export default {
|
|
|
73
91
|
/* 监听自己清除按钮点击事件 */
|
|
74
92
|
onEmpty() {
|
|
75
93
|
this.localVal = '';
|
|
76
|
-
this.updateInput()
|
|
94
|
+
this.updateInput();
|
|
77
95
|
}
|
|
78
96
|
}
|
|
79
97
|
};
|
|
@@ -3,32 +3,32 @@
|
|
|
3
3
|
<view class="cv-treaty-item">
|
|
4
4
|
<label class="cv-treaty-label">
|
|
5
5
|
<checkbox-group class="cv-treaty-item-group" @change="hindChange">
|
|
6
|
-
<checkbox value="true" :checked="vModel" :disabled="disabled" style="transform:scale(0.7)" />
|
|
6
|
+
<checkbox value="true" :checked="vModel" :disabled="disabled" style="transform: scale(0.7)" />
|
|
7
|
+
{{ explain }}
|
|
7
8
|
</checkbox-group>
|
|
8
9
|
</label>
|
|
9
10
|
<text class="cv-treaty-item-url" @tap="handleClick">
|
|
10
|
-
{{treaty}}
|
|
11
|
+
{{ treaty }}
|
|
11
12
|
</text>
|
|
12
13
|
</view>
|
|
13
14
|
</view>
|
|
14
15
|
</template>
|
|
15
16
|
|
|
16
17
|
<script>
|
|
17
|
-
|
|
18
18
|
export default {
|
|
19
|
-
name:
|
|
19
|
+
name: 'cvTreaty',
|
|
20
20
|
props: {
|
|
21
21
|
explain: {
|
|
22
22
|
type: String,
|
|
23
|
-
default:
|
|
23
|
+
default: '我已阅读'
|
|
24
24
|
},
|
|
25
25
|
treaty: {
|
|
26
26
|
type: String,
|
|
27
|
-
default:
|
|
27
|
+
default: '服务协议'
|
|
28
28
|
},
|
|
29
29
|
url: {
|
|
30
30
|
type: String,
|
|
31
|
-
default:
|
|
31
|
+
default: ''
|
|
32
32
|
},
|
|
33
33
|
value: {
|
|
34
34
|
type: Boolean,
|
|
@@ -37,7 +37,7 @@ export default {
|
|
|
37
37
|
disabled: {
|
|
38
38
|
type: Boolean,
|
|
39
39
|
default: false
|
|
40
|
-
}
|
|
40
|
+
}
|
|
41
41
|
},
|
|
42
42
|
data() {
|
|
43
43
|
return {
|