@10yun/cv-mobile-ui 0.5.62 → 0.5.64
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/other/uCharts-uniapp/index.js +2 -0
- package/other/uCharts-uniapp/package.json +42 -0
- package/other/{qiun-data-charts/js_sdk → uCharts-uniapp}/u-charts/config-echarts.js +421 -421
- package/other/{qiun-data-charts → uCharts-uniapp/u-charts}/license.md +201 -201
- package/other/uCharts-uniapp/u-charts/package.json +19 -0
- package/other/{qiun-data-charts/readme.md → uCharts-uniapp/u-charts/readme-npm.md} +57 -63
- package/other/{qiun-data-charts/js_sdk → uCharts-uniapp}/u-charts/readme.md +4 -4
- package/other/{qiun-data-charts/js_sdk → uCharts-uniapp}/u-charts/u-charts.js +7661 -7661
- package/other/{qiun-data-charts/js_sdk → uCharts-uniapp}/u-charts/u-charts.min.js +1 -1
- package/package.json +1 -1
- package/plugins/uni-extend.js +10 -10
- package/ui-cv/components/cv-filter-hm/cv-filter-hm.vue +134 -167
- 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
- package/other/qiun-data-charts/changelog.md +0 -320
- package/other/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue +0 -1618
- package/other/qiun-data-charts/components/qiun-error/qiun-error.vue +0 -46
- package/other/qiun-data-charts/components/qiun-loading/loading1.vue +0 -162
- package/other/qiun-data-charts/components/qiun-loading/loading2.vue +0 -170
- package/other/qiun-data-charts/components/qiun-loading/loading3.vue +0 -173
- package/other/qiun-data-charts/components/qiun-loading/loading4.vue +0 -222
- package/other/qiun-data-charts/components/qiun-loading/loading5.vue +0 -229
- package/other/qiun-data-charts/components/qiun-loading/qiun-loading.vue +0 -36
- package/other/qiun-data-charts/js_sdk2/app-echarts.min.js +0 -23
- package/other/qiun-data-charts/js_sdk2/h5-echarts.min.js +0 -23
- package/other/qiun-data-charts/package.json +0 -81
- package/other/qiun-data-charts/static/app-plus/echarts.min.js +0 -23
- package/other/qiun-data-charts/static/h5/echarts.min.js +0 -23
- package/other/qiun-data-charts_2.5.0-20230101_example/App.vue +0 -20
- package/other/qiun-data-charts_2.5.0-20230101_example/common/uni-icons.css +0 -542
- package/other/qiun-data-charts_2.5.0-20230101_example/common/uni.css +0 -246
- package/other/qiun-data-charts_2.5.0-20230101_example/components/qiun-title-bar/qiun-title-bar.vue +0 -51
- package/other/qiun-data-charts_2.5.0-20230101_example/components/test-charts/test-charts.vue +0 -48
- package/other/qiun-data-charts_2.5.0-20230101_example/main.js +0 -13
- package/other/qiun-data-charts_2.5.0-20230101_example/manifest.json +0 -75
- package/other/qiun-data-charts_2.5.0-20230101_example/mockdata/demodata.json +0 -448
- package/other/qiun-data-charts_2.5.0-20230101_example/mockdata/mapdata.json +0 -1
- package/other/qiun-data-charts_2.5.0-20230101_example/pages/canvas/canvas.vue +0 -142
- package/other/qiun-data-charts_2.5.0-20230101_example/pages/echarts/echarts.vue +0 -228
- package/other/qiun-data-charts_2.5.0-20230101_example/pages/format-e/format-e.vue +0 -113
- package/other/qiun-data-charts_2.5.0-20230101_example/pages/format-u/format-u.vue +0 -110
- package/other/qiun-data-charts_2.5.0-20230101_example/pages/index/index.vue +0 -58
- package/other/qiun-data-charts_2.5.0-20230101_example/pages/layout/layout.vue +0 -174
- package/other/qiun-data-charts_2.5.0-20230101_example/pages/other/other.vue +0 -233
- package/other/qiun-data-charts_2.5.0-20230101_example/pages/tab/tab.vue +0 -115
- package/other/qiun-data-charts_2.5.0-20230101_example/pages/ucharts/ucharts.vue +0 -339
- package/other/qiun-data-charts_2.5.0-20230101_example/pages/unicloud/unicloud.vue +0 -117
- package/other/qiun-data-charts_2.5.0-20230101_example/pages/updata/updata.vue +0 -212
- package/other/qiun-data-charts_2.5.0-20230101_example/pages.json +0 -79
- package/other/qiun-data-charts_2.5.0-20230101_example/static/logo.png +0 -0
- package/other/qiun-data-charts_2.5.0-20230101_example/uni.scss +0 -76
- package/other/qiun-data-charts_2.5.0-20230101_example/uniCloud-aliyun/database/db_init.json +0 -455
- package/other/qiun-data-charts_2.5.0-20230101_example/uniCloud-aliyun/database/qiun-charts-demo.schema.json +0 -76
- package/other/u-charts/config.js +0 -503
- package/other/u-charts/data.json +0 -1143
- package/other/u-charts/demodata.json +0 -267
- package/other/u-charts/mapdata.json +0 -41
- package/other/u-charts/u-charts.js +0 -5687
- package/other/u-charts/u-charts.min.js +0 -1
- package/other/u-charts/u-charts.vue +0 -466
- /package/other/{qiun-data-charts/js_sdk → uCharts-uniapp}/u-charts/config-ucharts.js +0 -0
|
@@ -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>
|