@10yun/cv-mobile-ui 0.5.62 → 0.5.63
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 +1 -1
- package/plugins/uni-extend.js +10 -10
- package/ui-fireui/components/u-action-sheet/u-action-sheet.vue +46 -16
- package/ui-fireui/components/u-alert/u-alert.vue +11 -5
- package/ui-fireui/components/u-badge/u-badge.vue +52 -69
- package/ui-fireui/components/u-bottom-navigation/u-bottom-navigation.vue +28 -20
- package/ui-fireui/components/u-bottom-popup/u-bottom-popup.vue +40 -11
- package/ui-fireui/components/u-bubble-popup/u-bubble-popup.vue +3 -6
- package/ui-fireui/components/u-button/u-button.vue +262 -259
- package/ui-fireui/components/u-calendar/u-calendar.vue +227 -44
- package/ui-fireui/components/u-calendar/u-calendar2.js +562 -0
- package/ui-fireui/components/u-card/u-card.vue +50 -32
- package/ui-fireui/components/u-cascade-selection/u-cascade-selection.vue +197 -74
- package/ui-fireui/components/u-circular-progress/u-circular-progress.vue +324 -0
- package/ui-fireui/components/u-clipboard2/tui-clipboard.js +53 -0
- package/ui-fireui/components/u-collapse/u-collapse.vue +8 -8
- package/ui-fireui/components/u-config/index.js +129 -0
- package/ui-fireui/components/u-count-down/u-count-down.vue +124 -19
- package/ui-fireui/components/u-datetime/u-datetime.vue +416 -176
- package/ui-fireui/components/u-divider/u-divider.vue +3 -3
- package/ui-fireui/components/u-drawer/u-drawer.vue +55 -12
- package/ui-fireui/components/u-dropdown-list/u-dropdown-list.vue +103 -0
- package/ui-fireui/components/u-fab/u-fab.vue +344 -0
- package/ui-fireui/components/u-footer/u-footer.vue +148 -0
- package/ui-fireui/components/u-grid/u-grid.vue +2 -8
- package/ui-fireui/components/u-grid-item/u-grid-item.vue +22 -5
- package/ui-fireui/components/u-icon/u-icon-new.js +190 -0
- package/ui-fireui/components/u-icon/u-icon-new.vue +100 -0
- package/ui-fireui/components/u-image-cropper/u-image-cropper.vue +1144 -0
- package/ui-fireui/components/u-image-group/u-image-group.vue +164 -0
- package/ui-fireui/components/u-keyboard/u-keyboard.vue +3 -2
- package/ui-fireui/components/u-keyboard-input/u-keyboard-input.vue +1 -1
- package/ui-fireui/components/u-list-cell/u-list-cell.vue +82 -72
- package/ui-fireui/components/u-list-view/u-list-view.vue +33 -8
- package/ui-fireui/components/u-loading/u-loading.vue +107 -27
- package/ui-fireui/components/u-loadmore/u-loadmore.vue +21 -3
- package/ui-fireui/components/u-modal/u-modal.vue +140 -176
- package/ui-fireui/components/u-navigation-bar/u-navigation-bar.vue +121 -28
- package/ui-fireui/components/u-no-data/u-no-data.vue +58 -20
- package/ui-fireui/components/u-nomore/u-nomore.vue +5 -4
- package/ui-fireui/components/u-numberbox/u-numberbox.vue +88 -45
- package/ui-fireui/components/u-picture-cropper/u-picture-cropper.vue +94 -36
- package/ui-fireui/components/u-picture-cropper/u-picture-cropper.wxs +27 -17
- package/ui-fireui/components/u-rate/u-rate.vue +197 -0
- package/ui-fireui/components/u-round-progress/u-round-progress.vue +62 -42
- package/ui-fireui/components/u-scroll-top/u-scroll-top.vue +4 -3
- package/ui-fireui/components/u-section/u-section.vue +149 -0
- package/ui-fireui/components/u-skeleton/u-skeleton.vue +37 -6
- package/ui-fireui/components/u-steps/u-steps.vue +110 -27
- package/ui-fireui/components/u-sticky/u-sticky.vue +35 -21
- package/ui-fireui/components/u-sticky-wxs/u-sticky-wxs.vue +7 -4
- package/ui-fireui/components/u-sticky-wxs/u-sticky.wxs +39 -36
- package/ui-fireui/components/u-swipe-action/u-swipe-action.vue +76 -19
- package/ui-fireui/components/u-tabbar/u-tabbar.vue +71 -38
- package/ui-fireui/components/u-tabs/u-tabs.vue +133 -51
- package/ui-fireui/components/u-tag/u-tag.vue +109 -226
- package/ui-fireui/components/u-time-axis/u-time-axis.vue +1 -1
- package/ui-fireui/components/u-timeaxis-item/u-timeaxis-item.vue +1 -1
- package/ui-fireui/components/u-tips/u-tips.vue +35 -15
- package/ui-fireui/components/u-toast/u-toast.vue +9 -5
- package/ui-fireui/components/u-top-dropdown/u-top-dropdown.vue +8 -6
- package/ui-fireui/components/u-upload/u-upload-old.vue +462 -0
- package/ui-fireui/components/u-upload/u-upload.vue +648 -446
- package/ui-fireui/components/u-white-space/u-white-space.vue +68 -0
- package/ui-fireui/components/u-wing-blank/u-wing-blank.vue +100 -0
- package/uview-plus/libs/ctocode/index.js +1 -0
- package/uview-plus/libs/ctocode/richText.js +0 -1
|
@@ -1,20 +1,33 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<view
|
|
2
|
+
<view
|
|
3
|
+
class="up-tabbar"
|
|
4
|
+
:class="{ 'up-tabbar-fixed': isFixed, 'up-unlined': unlined, 'up-backdrop__filter': backdropFilter }"
|
|
5
|
+
:style="{ background: backgroundColor, zIndex: isFixed ? zIndex : 'auto' }"
|
|
6
|
+
>
|
|
3
7
|
<block v-for="(item, index) in tabBar" :key="index">
|
|
4
8
|
<view
|
|
5
9
|
class="up-tabbar-item"
|
|
6
10
|
:class="{ 'up-item-hump': item.hump }"
|
|
7
|
-
:style="{ backgroundColor: item.hump ? backgroundColor : 'none' }"
|
|
11
|
+
:style="{ backgroundColor: item.hump && !backdropFilter ? backgroundColor : 'none' }"
|
|
8
12
|
@tap="tabbarSwitch(index, item.hump, item.pagePath, item.verify)"
|
|
9
13
|
>
|
|
10
14
|
<view class="up-icon-box" :class="{ 'up-tabbar-hump': item.hump }">
|
|
11
15
|
<image
|
|
12
16
|
:src="current == index ? item.selectedIconPath : item.iconPath"
|
|
13
17
|
:class="[item.hump ? '' : 'up-tabbar-icon']"
|
|
18
|
+
v-if="!item.name"
|
|
14
19
|
></image>
|
|
20
|
+
<up-icon
|
|
21
|
+
:name="current === index ? item.activeName : item.name"
|
|
22
|
+
:customPrefix="item.customPrefix || ''"
|
|
23
|
+
:size="item.iconSize || iconSize"
|
|
24
|
+
unit="rpx"
|
|
25
|
+
:color="current == index ? getActiveColor : color"
|
|
26
|
+
v-else
|
|
27
|
+
></up-icon>
|
|
15
28
|
<view
|
|
16
29
|
:class="[item.isDot ? 'up-badge-dot' : 'up-badge']"
|
|
17
|
-
:style="{ color: badgeColor, backgroundColor:
|
|
30
|
+
:style="{ color: badgeColor, backgroundColor: getBadgeBgColor }"
|
|
18
31
|
v-if="item.num"
|
|
19
32
|
>
|
|
20
33
|
{{ item.isDot ? '' : item.num }}
|
|
@@ -23,19 +36,28 @@
|
|
|
23
36
|
<view
|
|
24
37
|
class="up-text-scale"
|
|
25
38
|
:class="{ 'up-text-hump': item.hump }"
|
|
26
|
-
:style="{ color: current == index ?
|
|
39
|
+
:style="{ color: current == index ? getActiveColor : color }"
|
|
27
40
|
>
|
|
28
41
|
{{ item.text }}
|
|
29
42
|
</view>
|
|
30
43
|
</view>
|
|
31
44
|
</block>
|
|
32
|
-
<view
|
|
45
|
+
<view
|
|
46
|
+
:style="{ background: backgroundColor }"
|
|
47
|
+
:class="{ 'up-hump-box': hump }"
|
|
48
|
+
v-if="hump && !unlined && !backdropFilter"
|
|
49
|
+
></view>
|
|
33
50
|
</view>
|
|
34
51
|
</template>
|
|
35
52
|
|
|
36
53
|
<script>
|
|
54
|
+
// import tuiIcon from '@/components/thorui/up-icon/up-icon.vue'
|
|
37
55
|
export default {
|
|
38
|
-
name: '
|
|
56
|
+
name: 'tuiTabbar',
|
|
57
|
+
emits: ['click'],
|
|
58
|
+
// components:{
|
|
59
|
+
// tuiIcon
|
|
60
|
+
// },
|
|
39
61
|
props: {
|
|
40
62
|
//当前索引
|
|
41
63
|
current: {
|
|
@@ -50,7 +72,7 @@ export default {
|
|
|
50
72
|
//字体选中颜色
|
|
51
73
|
selectedColor: {
|
|
52
74
|
type: String,
|
|
53
|
-
default: '
|
|
75
|
+
default: ''
|
|
54
76
|
},
|
|
55
77
|
//背景颜色
|
|
56
78
|
backgroundColor: {
|
|
@@ -62,20 +84,15 @@ export default {
|
|
|
62
84
|
type: Boolean,
|
|
63
85
|
default: false
|
|
64
86
|
},
|
|
87
|
+
iconSize: {
|
|
88
|
+
type: [Number, String],
|
|
89
|
+
default: 52
|
|
90
|
+
},
|
|
65
91
|
//固定在底部
|
|
66
92
|
isFixed: {
|
|
67
93
|
type: Boolean,
|
|
68
94
|
default: true
|
|
69
95
|
},
|
|
70
|
-
//tabbar
|
|
71
|
-
// "pagePath": "/pages/my/my", 页面路径
|
|
72
|
-
// "text": "thor", 标题
|
|
73
|
-
// "iconPath": "thor_gray.png", 图标地址
|
|
74
|
-
// "selectedIconPath": "thor_active.png", 选中图标地址
|
|
75
|
-
// "hump": true, 是否为凸起图标
|
|
76
|
-
// "num": 2, 角标数量
|
|
77
|
-
// "isDot": true, 角标是否为圆点
|
|
78
|
-
// "verify": true 是否验证 (如登录)
|
|
79
96
|
tabBar: {
|
|
80
97
|
type: Array,
|
|
81
98
|
default() {
|
|
@@ -90,22 +107,36 @@ export default {
|
|
|
90
107
|
//角标背景颜色
|
|
91
108
|
badgeBgColor: {
|
|
92
109
|
type: String,
|
|
93
|
-
default: '
|
|
110
|
+
default: ''
|
|
94
111
|
},
|
|
95
112
|
unlined: {
|
|
96
113
|
type: Boolean,
|
|
97
114
|
default: false
|
|
115
|
+
},
|
|
116
|
+
//是否开启高斯模糊效果[仅在支持的浏览器有效果]
|
|
117
|
+
backdropFilter: {
|
|
118
|
+
type: Boolean,
|
|
119
|
+
default: false
|
|
120
|
+
},
|
|
121
|
+
//z-index
|
|
122
|
+
zIndex: {
|
|
123
|
+
type: [Number, String],
|
|
124
|
+
default: 9999
|
|
98
125
|
}
|
|
99
126
|
},
|
|
100
127
|
data() {
|
|
101
128
|
return {};
|
|
102
129
|
},
|
|
103
|
-
|
|
104
|
-
|
|
130
|
+
computed: {
|
|
131
|
+
getActiveColor() {
|
|
132
|
+
return this.selectedColor || (uni && uni.$tui && uni.$tui.color.primary) || '#5677fc';
|
|
133
|
+
},
|
|
134
|
+
getBadgeBgColor() {
|
|
135
|
+
return this.badgeBgColor || (uni && uni.$tui && uni.$tui.color.pink) || '#f74d54';
|
|
136
|
+
}
|
|
105
137
|
},
|
|
106
138
|
methods: {
|
|
107
139
|
tabbarSwitch(index, hump, pagePath, verify) {
|
|
108
|
-
// console.log('current', this.current);
|
|
109
140
|
this.$emit('click', {
|
|
110
141
|
index: index,
|
|
111
142
|
hump: hump,
|
|
@@ -127,9 +158,15 @@ export default {
|
|
|
127
158
|
position: relative;
|
|
128
159
|
}
|
|
129
160
|
|
|
161
|
+
.up-backdrop__filter {
|
|
162
|
+
/* Safari for macOS & iOS */
|
|
163
|
+
-webkit-backdrop-filter: blur(15px);
|
|
164
|
+
/* Google Chrome */
|
|
165
|
+
backdrop-filter: blur(15px);
|
|
166
|
+
}
|
|
167
|
+
|
|
130
168
|
.up-tabbar-fixed {
|
|
131
169
|
position: fixed;
|
|
132
|
-
z-index: 9;
|
|
133
170
|
left: 0;
|
|
134
171
|
bottom: 0;
|
|
135
172
|
padding-bottom: constant(safe-area-inset-bottom);
|
|
@@ -140,8 +177,9 @@ export default {
|
|
|
140
177
|
.up-tabbar::before {
|
|
141
178
|
content: ' ';
|
|
142
179
|
width: 100%;
|
|
180
|
+
border-top: 1px solid #b2b2b2;
|
|
143
181
|
position: absolute;
|
|
144
|
-
top:
|
|
182
|
+
top: -1rpx;
|
|
145
183
|
left: 0;
|
|
146
184
|
transform: scaleY(0.5) translateZ(0);
|
|
147
185
|
transform-origin: 0 0;
|
|
@@ -156,8 +194,7 @@ export default {
|
|
|
156
194
|
text-align: center;
|
|
157
195
|
align-items: center;
|
|
158
196
|
flex-direction: column;
|
|
159
|
-
|
|
160
|
-
justify-content: center;
|
|
197
|
+
justify-content: space-between;
|
|
161
198
|
position: relative;
|
|
162
199
|
padding: 10rpx 0;
|
|
163
200
|
box-sizing: border-box;
|
|
@@ -173,14 +210,14 @@ export default {
|
|
|
173
210
|
}
|
|
174
211
|
|
|
175
212
|
.up-tabbar-icon {
|
|
176
|
-
width:
|
|
177
|
-
height:
|
|
213
|
+
width: 52rpx;
|
|
214
|
+
height: 52rpx;
|
|
178
215
|
display: block;
|
|
179
216
|
}
|
|
180
217
|
|
|
181
218
|
.up-hump-box {
|
|
182
|
-
width:
|
|
183
|
-
height:
|
|
219
|
+
width: 120rpx;
|
|
220
|
+
height: 120rpx;
|
|
184
221
|
position: absolute;
|
|
185
222
|
left: 50%;
|
|
186
223
|
transform: translateX(-50%);
|
|
@@ -193,6 +230,7 @@ export default {
|
|
|
193
230
|
content: ' ';
|
|
194
231
|
height: 200%;
|
|
195
232
|
width: 200%;
|
|
233
|
+
border: 1px solid #b2b2b2;
|
|
196
234
|
position: absolute;
|
|
197
235
|
top: 0;
|
|
198
236
|
left: 0;
|
|
@@ -208,13 +246,13 @@ export default {
|
|
|
208
246
|
}
|
|
209
247
|
|
|
210
248
|
.up-tabbar-hump {
|
|
211
|
-
width:
|
|
212
|
-
height:
|
|
249
|
+
width: 100rpx;
|
|
250
|
+
height: 100rpx;
|
|
213
251
|
position: absolute;
|
|
214
252
|
left: 50%;
|
|
215
253
|
-webkit-transform: translateX(-50%) rotate(0deg);
|
|
216
254
|
transform: translateX(-50%) rotate(0deg);
|
|
217
|
-
|
|
255
|
+
top: -40rpx;
|
|
218
256
|
-webkit-transition: all 0.2s linear;
|
|
219
257
|
transition: all 0.2s linear;
|
|
220
258
|
border-radius: 50%;
|
|
@@ -222,8 +260,8 @@ export default {
|
|
|
222
260
|
}
|
|
223
261
|
|
|
224
262
|
.up-tabbar-hump image {
|
|
225
|
-
width:
|
|
226
|
-
height:
|
|
263
|
+
width: 100rpx;
|
|
264
|
+
height: 100rpx;
|
|
227
265
|
display: block;
|
|
228
266
|
}
|
|
229
267
|
|
|
@@ -271,9 +309,4 @@ export default {
|
|
|
271
309
|
right: -4rpx;
|
|
272
310
|
top: -4rpx;
|
|
273
311
|
}
|
|
274
|
-
|
|
275
|
-
.pic_noTitle {
|
|
276
|
-
height: 60rpx;
|
|
277
|
-
width: 60rpx;
|
|
278
|
-
}
|
|
279
312
|
</style>
|
|
@@ -3,33 +3,44 @@
|
|
|
3
3
|
class="up-tabs-view"
|
|
4
4
|
:class="[isFixed ? 'up-tabs-fixed' : 'up-tabs-relative', unlined ? 'up-unlined' : '']"
|
|
5
5
|
:style="{
|
|
6
|
+
width: tabsWidth + 'px',
|
|
6
7
|
height: height + 'rpx',
|
|
7
8
|
padding: `0 ${padding}rpx`,
|
|
8
9
|
background: backgroundColor,
|
|
9
|
-
top: isFixed ? top + 'px' : 'auto'
|
|
10
|
+
top: isFixed ? top + 'px' : 'auto',
|
|
11
|
+
zIndex: isFixed ? zIndex : 'auto'
|
|
10
12
|
}"
|
|
13
|
+
v-if="tabsWidth > 0"
|
|
11
14
|
>
|
|
12
15
|
<view
|
|
13
16
|
v-for="(item, index) in tabs"
|
|
14
17
|
:key="index"
|
|
15
18
|
class="up-tabs-item"
|
|
16
|
-
:style="{ width:
|
|
19
|
+
:style="{ width: getItemWidth, height: height + 'rpx' }"
|
|
17
20
|
@tap.stop="swichTabs(index)"
|
|
18
21
|
>
|
|
19
22
|
<view
|
|
20
23
|
class="up-tabs-title"
|
|
21
|
-
:class="{ 'up-tabs-
|
|
24
|
+
:class="{ 'up-tabs-disabled': item.disabled }"
|
|
22
25
|
:style="{
|
|
23
|
-
color: currentTab == index ?
|
|
26
|
+
color: currentTab == index ? getSelectedColor : color,
|
|
24
27
|
fontSize: size + 'rpx',
|
|
25
|
-
|
|
26
|
-
|
|
28
|
+
fontWeight: bold && currentTab == index ? 'bold' : 'normal',
|
|
29
|
+
transform: `scale(${currentTab == index ? scale : 1})`
|
|
27
30
|
}"
|
|
28
31
|
>
|
|
29
|
-
{{ item
|
|
32
|
+
{{ item[field] }}
|
|
33
|
+
<view
|
|
34
|
+
:class="[item.isDot ? 'up-badge__dot' : 'up-tabs__badge']"
|
|
35
|
+
:style="{ color: badgeColor, backgroundColor: getBadgeBgColor }"
|
|
36
|
+
v-if="item[badgeField] || item.isDot"
|
|
37
|
+
>
|
|
38
|
+
{{ item.isDot ? '' : item[badgeField] }}
|
|
39
|
+
</view>
|
|
30
40
|
</view>
|
|
31
41
|
</view>
|
|
32
42
|
<view
|
|
43
|
+
v-if="isSlider"
|
|
33
44
|
class="up-tabs-slider"
|
|
34
45
|
:style="{
|
|
35
46
|
transform: 'translateX(' + scrollLeft + 'px)',
|
|
@@ -37,7 +48,7 @@
|
|
|
37
48
|
height: sliderHeight + 'rpx',
|
|
38
49
|
borderRadius: sliderRadius,
|
|
39
50
|
bottom: bottom,
|
|
40
|
-
background:
|
|
51
|
+
background: getSliderBgColor,
|
|
41
52
|
marginBottom: bottom == '50%' ? '-' + sliderHeight / 2 + 'rpx' : 0
|
|
42
53
|
}"
|
|
43
54
|
></view>
|
|
@@ -46,7 +57,8 @@
|
|
|
46
57
|
|
|
47
58
|
<script>
|
|
48
59
|
export default {
|
|
49
|
-
name: '
|
|
60
|
+
name: 'tuiTabs',
|
|
61
|
+
emits: ['change'],
|
|
50
62
|
props: {
|
|
51
63
|
//标签页
|
|
52
64
|
tabs: {
|
|
@@ -55,10 +67,24 @@ export default {
|
|
|
55
67
|
return [];
|
|
56
68
|
}
|
|
57
69
|
},
|
|
70
|
+
//显示文本字段名称
|
|
71
|
+
field: {
|
|
72
|
+
type: String,
|
|
73
|
+
default: 'name'
|
|
74
|
+
},
|
|
75
|
+
badgeField: {
|
|
76
|
+
type: String,
|
|
77
|
+
default: 'num'
|
|
78
|
+
},
|
|
79
|
+
//tabs宽度,不传值则默认使用windowWidth,单位px
|
|
80
|
+
width: {
|
|
81
|
+
type: [Number, String],
|
|
82
|
+
default: 0
|
|
83
|
+
},
|
|
58
84
|
//rpx
|
|
59
85
|
height: {
|
|
60
86
|
type: Number,
|
|
61
|
-
default:
|
|
87
|
+
default: 80
|
|
62
88
|
},
|
|
63
89
|
//rpx 只对左右padding起作用,上下为0
|
|
64
90
|
padding: {
|
|
@@ -78,15 +104,11 @@ export default {
|
|
|
78
104
|
//px
|
|
79
105
|
top: {
|
|
80
106
|
type: Number,
|
|
81
|
-
// #
|
|
82
|
-
default:
|
|
107
|
+
// #ifndef H5
|
|
108
|
+
default: 0,
|
|
83
109
|
// #endif
|
|
84
110
|
// #ifdef H5
|
|
85
|
-
default: 44
|
|
86
|
-
// #endif
|
|
87
|
-
|
|
88
|
-
// #ifdef MP
|
|
89
|
-
default: 54
|
|
111
|
+
default: 44
|
|
90
112
|
// #endif
|
|
91
113
|
},
|
|
92
114
|
//是否去掉底部线条
|
|
@@ -99,6 +121,10 @@ export default {
|
|
|
99
121
|
type: Number,
|
|
100
122
|
default: 0
|
|
101
123
|
},
|
|
124
|
+
isSlider: {
|
|
125
|
+
type: Boolean,
|
|
126
|
+
default: true
|
|
127
|
+
},
|
|
102
128
|
//滑块宽度
|
|
103
129
|
sliderWidth: {
|
|
104
130
|
type: Number,
|
|
@@ -112,7 +138,7 @@ export default {
|
|
|
112
138
|
//滑块背景颜色
|
|
113
139
|
sliderBgColor: {
|
|
114
140
|
type: String,
|
|
115
|
-
default: '
|
|
141
|
+
default: ''
|
|
116
142
|
},
|
|
117
143
|
sliderRadius: {
|
|
118
144
|
type: String,
|
|
@@ -123,43 +149,49 @@ export default {
|
|
|
123
149
|
type: String,
|
|
124
150
|
default: '0'
|
|
125
151
|
},
|
|
126
|
-
borderRight: {
|
|
127
|
-
type: String,
|
|
128
|
-
default: '0'
|
|
129
|
-
},
|
|
130
152
|
//标签页宽度
|
|
131
153
|
itemWidth: {
|
|
132
154
|
type: String,
|
|
133
|
-
default: '
|
|
155
|
+
default: ''
|
|
134
156
|
},
|
|
135
157
|
//字体颜色
|
|
136
158
|
color: {
|
|
137
159
|
type: String,
|
|
138
|
-
default: '#
|
|
160
|
+
default: '#666'
|
|
139
161
|
},
|
|
140
162
|
//选中后字体颜色
|
|
141
163
|
selectedColor: {
|
|
142
164
|
type: String,
|
|
143
|
-
default: '
|
|
165
|
+
default: ''
|
|
144
166
|
},
|
|
145
167
|
//字体大小
|
|
146
168
|
size: {
|
|
147
169
|
type: Number,
|
|
148
|
-
default:
|
|
149
|
-
},
|
|
150
|
-
lineHeight: {
|
|
151
|
-
type: Number,
|
|
152
|
-
default: 32
|
|
170
|
+
default: 28
|
|
153
171
|
},
|
|
154
172
|
//选中后 是否加粗 ,未选中则无效
|
|
155
173
|
bold: {
|
|
156
174
|
type: Boolean,
|
|
157
175
|
default: false
|
|
158
176
|
},
|
|
159
|
-
//
|
|
160
|
-
|
|
161
|
-
type: Number,
|
|
162
|
-
default:
|
|
177
|
+
//2.3.0+
|
|
178
|
+
scale: {
|
|
179
|
+
type: [Number, String],
|
|
180
|
+
default: 1
|
|
181
|
+
},
|
|
182
|
+
//角标字体颜色
|
|
183
|
+
badgeColor: {
|
|
184
|
+
type: String,
|
|
185
|
+
default: '#fff'
|
|
186
|
+
},
|
|
187
|
+
//角标背景颜色
|
|
188
|
+
badgeBgColor: {
|
|
189
|
+
type: String,
|
|
190
|
+
default: ''
|
|
191
|
+
},
|
|
192
|
+
zIndex: {
|
|
193
|
+
type: [Number, String],
|
|
194
|
+
default: 996
|
|
163
195
|
}
|
|
164
196
|
},
|
|
165
197
|
watch: {
|
|
@@ -168,32 +200,52 @@ export default {
|
|
|
168
200
|
},
|
|
169
201
|
tabs() {
|
|
170
202
|
this.checkCor();
|
|
203
|
+
},
|
|
204
|
+
width(val) {
|
|
205
|
+
this.tabsWidth = val;
|
|
206
|
+
this.checkCor();
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
computed: {
|
|
210
|
+
getItemWidth() {
|
|
211
|
+
let width = 100 / (this.tabs.length || 4) + '%';
|
|
212
|
+
return this.itemWidth ? this.itemWidth : width;
|
|
213
|
+
},
|
|
214
|
+
getSliderBgColor() {
|
|
215
|
+
return this.sliderBgColor || (uni && uni.$tui && uni.$tui.color.primary) || '#5677fc';
|
|
216
|
+
},
|
|
217
|
+
getSelectedColor() {
|
|
218
|
+
return this.selectedColor || (uni && uni.$tui && uni.$tui.color.primary) || '#5677fc';
|
|
219
|
+
},
|
|
220
|
+
getBadgeBgColor() {
|
|
221
|
+
return this.badgeBgColor || (uni && uni.$tui && uni.$tui.color.pink) || '#f74d54';
|
|
171
222
|
}
|
|
172
223
|
},
|
|
173
224
|
created() {
|
|
225
|
+
// 高度自适应
|
|
174
226
|
setTimeout(() => {
|
|
175
|
-
// 高度自适应
|
|
176
227
|
uni.getSystemInfo({
|
|
177
228
|
success: (res) => {
|
|
178
229
|
this.winWidth = res.windowWidth;
|
|
230
|
+
this.tabsWidth = this.width == 0 ? this.winWidth : Number(this.width);
|
|
179
231
|
this.checkCor();
|
|
180
232
|
}
|
|
181
233
|
});
|
|
182
|
-
},
|
|
234
|
+
}, 0);
|
|
183
235
|
},
|
|
184
236
|
data() {
|
|
185
237
|
return {
|
|
186
238
|
winWidth: 0,
|
|
239
|
+
tabsWidth: 0,
|
|
187
240
|
scrollLeft: 0
|
|
188
241
|
};
|
|
189
242
|
},
|
|
190
243
|
methods: {
|
|
191
|
-
checkCor() {
|
|
244
|
+
checkCor: function () {
|
|
192
245
|
let tabsNum = this.tabs.length;
|
|
193
|
-
let padding = (this.
|
|
194
|
-
let width = this.
|
|
195
|
-
|
|
196
|
-
let left = (width / tabsNum - (this.winWidth / 750) * this.sliderWidth) / 2 + padding;
|
|
246
|
+
let padding = uni.upx2px(Number(this.padding));
|
|
247
|
+
let width = this.tabsWidth - padding * 2;
|
|
248
|
+
let left = (width / tabsNum - uni.upx2px(Number(this.sliderWidth))) / 2 + padding;
|
|
197
249
|
let scrollLeft = left;
|
|
198
250
|
if (this.currentTab > 0) {
|
|
199
251
|
scrollLeft = scrollLeft + (width / tabsNum) * this.currentTab;
|
|
@@ -201,14 +253,15 @@ export default {
|
|
|
201
253
|
this.scrollLeft = scrollLeft;
|
|
202
254
|
},
|
|
203
255
|
// 点击标题切换当前页时改变样式
|
|
204
|
-
swichTabs(index) {
|
|
256
|
+
swichTabs: function (index) {
|
|
205
257
|
let item = this.tabs[index];
|
|
206
258
|
if (item && item.disabled) return;
|
|
207
259
|
if (this.currentTab == index) {
|
|
208
260
|
return false;
|
|
209
261
|
} else {
|
|
210
262
|
this.$emit('change', {
|
|
211
|
-
index: Number(index)
|
|
263
|
+
index: Number(index),
|
|
264
|
+
item: item
|
|
212
265
|
});
|
|
213
266
|
}
|
|
214
267
|
}
|
|
@@ -223,7 +276,6 @@ export default {
|
|
|
223
276
|
display: flex;
|
|
224
277
|
align-items: center;
|
|
225
278
|
justify-content: space-between;
|
|
226
|
-
z-index: 995;
|
|
227
279
|
}
|
|
228
280
|
|
|
229
281
|
.up-tabs-relative {
|
|
@@ -256,6 +308,10 @@ export default {
|
|
|
256
308
|
display: flex;
|
|
257
309
|
align-items: center;
|
|
258
310
|
justify-content: center;
|
|
311
|
+
overflow: visible;
|
|
312
|
+
/* #ifdef H5 */
|
|
313
|
+
cursor: pointer;
|
|
314
|
+
/* #endif */
|
|
259
315
|
}
|
|
260
316
|
|
|
261
317
|
.up-tabs-disabled {
|
|
@@ -267,18 +323,44 @@ export default {
|
|
|
267
323
|
align-items: center;
|
|
268
324
|
justify-content: center;
|
|
269
325
|
position: relative;
|
|
270
|
-
z-index:
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
.up-tabs-active {
|
|
326
|
+
z-index: 3;
|
|
327
|
+
overflow: visible;
|
|
274
328
|
transition: all 0.15s ease-in-out;
|
|
275
329
|
}
|
|
276
330
|
|
|
277
331
|
.up-tabs-slider {
|
|
278
332
|
position: absolute;
|
|
279
333
|
left: 0;
|
|
280
|
-
transition: all 0.
|
|
281
|
-
z-index:
|
|
282
|
-
transform:
|
|
334
|
+
transition: all 0.3s ease-in-out;
|
|
335
|
+
z-index: 1;
|
|
336
|
+
transform-style: preserve-3d;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
.up-tabs__badge {
|
|
340
|
+
position: absolute;
|
|
341
|
+
font-size: 24rpx;
|
|
342
|
+
height: 32rpx;
|
|
343
|
+
min-width: 20rpx;
|
|
344
|
+
padding: 0 6rpx;
|
|
345
|
+
border-radius: 40rpx;
|
|
346
|
+
right: 0;
|
|
347
|
+
top: 0;
|
|
348
|
+
transform: translate(88%, -50%);
|
|
349
|
+
display: flex;
|
|
350
|
+
align-items: center;
|
|
351
|
+
justify-content: center;
|
|
352
|
+
flex-shrink: 0;
|
|
353
|
+
z-index: 4;
|
|
354
|
+
font-weight: normal !important;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
.up-badge__dot {
|
|
358
|
+
position: absolute;
|
|
359
|
+
height: 16rpx;
|
|
360
|
+
width: 16rpx;
|
|
361
|
+
border-radius: 50%;
|
|
362
|
+
right: -10rpx;
|
|
363
|
+
top: -10rpx;
|
|
364
|
+
z-index: 4;
|
|
283
365
|
}
|
|
284
366
|
</style>
|