@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
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
:data-lineWidth="lineWidth"
|
|
9
9
|
:data-lineCap="lineCap"
|
|
10
10
|
:data-fontSize="fontSize"
|
|
11
|
-
:data-fontColor="
|
|
11
|
+
:data-fontColor="getFontColor"
|
|
12
12
|
:data-fontShow="fontShow"
|
|
13
13
|
:data-percentText="percentText"
|
|
14
14
|
:data-defaultShow="defaultShow"
|
|
15
15
|
:data-defaultColor="defaultColor"
|
|
16
|
-
:data-progressColor="
|
|
16
|
+
:data-progressColor="getProgressColor"
|
|
17
17
|
:data-gradualColor="gradualColor"
|
|
18
18
|
:data-sAngle="sAngle"
|
|
19
19
|
:data-counterclockwise="counterclockwise"
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
<script module="parse" lang="renderjs">
|
|
32
32
|
export default {
|
|
33
33
|
methods: {
|
|
34
|
-
|
|
34
|
+
format(str) {
|
|
35
35
|
if (!str) return str;
|
|
36
36
|
return str.replace(/\"/g, '');
|
|
37
37
|
},
|
|
@@ -42,13 +42,16 @@ export default {
|
|
|
42
42
|
initDraw(percentage, oldPercentage, owner, ins) {
|
|
43
43
|
let state = ins.getState();
|
|
44
44
|
let res = ins.getDataset();
|
|
45
|
-
const activeMode = this.
|
|
45
|
+
const activeMode = this.format(res.activemode);
|
|
46
46
|
let start = activeMode === 'backwards' ? 0 : state.startPercentage || 0;
|
|
47
|
+
//当start大于当前percentage时,start设置为0
|
|
48
|
+
start = start > percentage ? 0 : start;
|
|
47
49
|
if (!state.progressContext || !state.canvas) {
|
|
48
50
|
const width = res.width;
|
|
49
51
|
const height = res.height == 0 ? res.width : res.height;
|
|
50
52
|
let ele = `.${res.cid}>canvas`;
|
|
51
|
-
const canvas = document.querySelectorAll(this.
|
|
53
|
+
const canvas = document.querySelectorAll(this.format(ele))[0];
|
|
54
|
+
if (!canvas) return;
|
|
52
55
|
const ctx = canvas.getContext('2d');
|
|
53
56
|
// const dpr =uni.getSystemInfoSync().pixelRatio;
|
|
54
57
|
// canvas.style.width=width+'px';
|
|
@@ -68,17 +71,17 @@ export default {
|
|
|
68
71
|
//终止弧度
|
|
69
72
|
let sangle = Number(res.sangle) * Math.PI;
|
|
70
73
|
let eAngle = Math.PI * (res.height != 0 ? 1 : 2) + sangle;
|
|
71
|
-
this.drawArc(ctx, eAngle, this.
|
|
74
|
+
this.drawArc(ctx, eAngle, this.format(res.defaultcolor), res);
|
|
72
75
|
},
|
|
73
76
|
drawPercentage(ctx, percentage, res) {
|
|
74
77
|
ctx.save(); //save和restore可以保证样式属性只运用于该段canvas元素
|
|
75
78
|
ctx.beginPath();
|
|
76
|
-
ctx.fillStyle = this.
|
|
79
|
+
ctx.fillStyle = this.format(res.fontcolor);
|
|
77
80
|
ctx.font = res.fontsize + 'px Arial'; //设置字体大小和字体
|
|
78
81
|
ctx.textAlign = 'center';
|
|
79
82
|
ctx.textBaseline = 'middle';
|
|
80
83
|
let radius = res.width / 2;
|
|
81
|
-
let percenttext = this.
|
|
84
|
+
let percenttext = this.format(res.percenttext);
|
|
82
85
|
if (!percenttext) {
|
|
83
86
|
let multiple = Number(res.multiple);
|
|
84
87
|
percentage = this.bool(res.counterclockwise) ? 100 - percentage * multiple : percentage * multiple;
|
|
@@ -95,8 +98,8 @@ export default {
|
|
|
95
98
|
if (!ctx || !canvas) return;
|
|
96
99
|
let that = this;
|
|
97
100
|
let gradient = ctx.createLinearGradient(0, 0, Number(res.width), 0);
|
|
98
|
-
gradient.addColorStop(0, this.
|
|
99
|
-
let gradualColor = this.
|
|
101
|
+
gradient.addColorStop(0, this.format(res.progresscolor));
|
|
102
|
+
let gradualColor = this.format(res.gradualcolor);
|
|
100
103
|
if (gradualColor) {
|
|
101
104
|
gradient.addColorStop('1', gradualColor);
|
|
102
105
|
}
|
|
@@ -106,13 +109,16 @@ export default {
|
|
|
106
109
|
if (res) {
|
|
107
110
|
requestId = requestAnimationFrame(renderLoop);
|
|
108
111
|
} else {
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
+
setTimeout(() => {
|
|
113
|
+
cancelAnimationFrame(requestId);
|
|
114
|
+
requestId = null;
|
|
115
|
+
renderLoop = null;
|
|
116
|
+
}, 20);
|
|
112
117
|
}
|
|
113
118
|
});
|
|
114
119
|
};
|
|
115
|
-
|
|
120
|
+
renderLoop();
|
|
121
|
+
// requestId = requestAnimationFrame(renderLoop)
|
|
116
122
|
|
|
117
123
|
function drawFrame(callback) {
|
|
118
124
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
@@ -122,32 +128,33 @@ export default {
|
|
|
122
128
|
if (that.bool(res.fontshow)) {
|
|
123
129
|
that.drawPercentage(ctx, startPercentage, res);
|
|
124
130
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
131
|
+
let isEnd = percentage === 0 || (that.bool(res.counterclockwise) && startPercentage === 100);
|
|
132
|
+
if (!isEnd) {
|
|
133
|
+
let sangle = Number(res.sangle) * Math.PI;
|
|
134
|
+
let eAngle = ((2 * Math.PI) / 100) * startPercentage + sangle;
|
|
135
|
+
that.drawArc(ctx, eAngle, gradient, res);
|
|
136
|
+
}
|
|
129
137
|
owner.callMethod('change', {
|
|
130
138
|
percentage: startPercentage
|
|
131
139
|
});
|
|
132
140
|
if (startPercentage >= percentage) {
|
|
133
141
|
state.startPercentage = startPercentage;
|
|
134
142
|
owner.callMethod('end', {
|
|
135
|
-
canvasId: that.
|
|
143
|
+
canvasId: that.format(res.canvasid)
|
|
136
144
|
});
|
|
137
|
-
cancelAnimationFrame(requestId);
|
|
138
145
|
callback && callback(false);
|
|
139
|
-
|
|
146
|
+
} else {
|
|
147
|
+
let num = startPercentage + Number(res.speed);
|
|
148
|
+
startPercentage = num > percentage ? percentage : num;
|
|
149
|
+
callback && callback(true);
|
|
140
150
|
}
|
|
141
|
-
let num = startPercentage + Number(res.speed);
|
|
142
|
-
startPercentage = num > percentage ? percentage : num;
|
|
143
|
-
callback && callback(true);
|
|
144
151
|
}
|
|
145
152
|
},
|
|
146
153
|
//创建弧线
|
|
147
154
|
drawArc(ctx, eAngle, strokeStyle, res) {
|
|
148
155
|
ctx.save();
|
|
149
156
|
ctx.beginPath();
|
|
150
|
-
ctx.lineCap = this.
|
|
157
|
+
ctx.lineCap = this.format(res.linecap);
|
|
151
158
|
ctx.lineWidth = Number(res.linewidth);
|
|
152
159
|
ctx.strokeStyle = strokeStyle;
|
|
153
160
|
let radius = res.width / 2; //x=y
|
|
@@ -162,13 +169,14 @@ export default {
|
|
|
162
169
|
</script>
|
|
163
170
|
<script>
|
|
164
171
|
export default {
|
|
165
|
-
name: '
|
|
172
|
+
name: 'tuiRoundProgress',
|
|
173
|
+
emits: ['change', 'end'],
|
|
166
174
|
props: {
|
|
167
175
|
/*
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
176
|
+
传值需使用rpx进行转换保证各终端兼容
|
|
177
|
+
px = rpx / 750 * wx.getSystemInfoSync().windowWidth
|
|
178
|
+
圆形进度条(画布)宽度,直径 [px]
|
|
179
|
+
*/
|
|
172
180
|
diam: {
|
|
173
181
|
type: Number,
|
|
174
182
|
default: 60
|
|
@@ -184,11 +192,11 @@ export default {
|
|
|
184
192
|
default: 4
|
|
185
193
|
},
|
|
186
194
|
/*
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
195
|
+
线条的端点样式
|
|
196
|
+
butt:向线条的每个末端添加平直的边缘
|
|
197
|
+
round 向线条的每个末端添加圆形线帽
|
|
198
|
+
square 向线条的每个末端添加正方形线帽
|
|
199
|
+
*/
|
|
192
200
|
lineCap: {
|
|
193
201
|
type: String,
|
|
194
202
|
default: 'round'
|
|
@@ -201,7 +209,7 @@ export default {
|
|
|
201
209
|
//圆环进度字体颜色
|
|
202
210
|
fontColor: {
|
|
203
211
|
type: String,
|
|
204
|
-
default: '
|
|
212
|
+
default: ''
|
|
205
213
|
},
|
|
206
214
|
//是否显示进度文字
|
|
207
215
|
fontShow: {
|
|
@@ -209,9 +217,9 @@ export default {
|
|
|
209
217
|
default: true
|
|
210
218
|
},
|
|
211
219
|
/*
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
220
|
+
自定义显示文字[默认为空,显示百分比,fontShow=true时生效]
|
|
221
|
+
可以使用 slot自定义显示内容
|
|
222
|
+
*/
|
|
215
223
|
percentText: {
|
|
216
224
|
type: String,
|
|
217
225
|
default: ''
|
|
@@ -229,7 +237,7 @@ export default {
|
|
|
229
237
|
//进度条颜色
|
|
230
238
|
progressColor: {
|
|
231
239
|
type: String,
|
|
232
|
-
default: '
|
|
240
|
+
default: ''
|
|
233
241
|
},
|
|
234
242
|
//进度条渐变颜色[结合progressColor使用,默认为空]
|
|
235
243
|
gradualColor: {
|
|
@@ -267,25 +275,37 @@ export default {
|
|
|
267
275
|
default: 'backwards'
|
|
268
276
|
}
|
|
269
277
|
},
|
|
278
|
+
computed: {
|
|
279
|
+
getFontColor() {
|
|
280
|
+
return this.fontColor || (uni && uni.$tui && uni.$tui.color.primary) || '#5677fc';
|
|
281
|
+
},
|
|
282
|
+
getProgressColor() {
|
|
283
|
+
return this.progressColor || (uni && uni.$tui && uni.$tui.color.primary) || '#5677fc';
|
|
284
|
+
}
|
|
285
|
+
},
|
|
270
286
|
watch: {
|
|
271
287
|
percentage(val) {
|
|
272
|
-
this.
|
|
288
|
+
if (this.isInit) {
|
|
289
|
+
this.percent = val;
|
|
290
|
+
}
|
|
273
291
|
}
|
|
274
292
|
},
|
|
275
293
|
mounted() {
|
|
276
294
|
setTimeout(() => {
|
|
277
295
|
this.percent = this.percentage;
|
|
296
|
+
this.isInit = true;
|
|
278
297
|
}, 50);
|
|
279
298
|
},
|
|
280
299
|
data() {
|
|
281
300
|
return {
|
|
301
|
+
isInit: false,
|
|
282
302
|
percent: -1,
|
|
283
303
|
progressCanvasId: this.getCanvasId()
|
|
284
304
|
};
|
|
285
305
|
},
|
|
286
306
|
methods: {
|
|
287
307
|
getCanvasId() {
|
|
288
|
-
return '
|
|
308
|
+
return 'tui' + new Date().getTime() + (Math.random() * 100000).toFixed(0);
|
|
289
309
|
},
|
|
290
310
|
change(e) {
|
|
291
311
|
//绘制进度
|
|
@@ -36,7 +36,8 @@
|
|
|
36
36
|
* 也可直接转成base64(不建议)
|
|
37
37
|
* */
|
|
38
38
|
export default {
|
|
39
|
-
name: '
|
|
39
|
+
name: 'tuiScrollTop',
|
|
40
|
+
emits: ['index', 'share'],
|
|
40
41
|
props: {
|
|
41
42
|
//回顶部按钮距离底部距离 rpx
|
|
42
43
|
bottom: {
|
|
@@ -107,7 +108,7 @@ export default {
|
|
|
107
108
|
};
|
|
108
109
|
},
|
|
109
110
|
methods: {
|
|
110
|
-
goTop() {
|
|
111
|
+
goTop: function () {
|
|
111
112
|
this.toggle = false;
|
|
112
113
|
uni.pageScrollTo({
|
|
113
114
|
scrollTop: 0,
|
|
@@ -117,7 +118,7 @@ export default {
|
|
|
117
118
|
this.toggle = true;
|
|
118
119
|
}, 220);
|
|
119
120
|
},
|
|
120
|
-
goIndex() {
|
|
121
|
+
goIndex: function () {
|
|
121
122
|
this.$emit('index', {});
|
|
122
123
|
},
|
|
123
124
|
share() {
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<view class="up-section" :style="{ margin: margin, background: background, padding: padding }">
|
|
3
|
+
<view class="up-section__title" @tap="handleClick">
|
|
4
|
+
<view
|
|
5
|
+
class="up-section__decorate"
|
|
6
|
+
v-if="isLine"
|
|
7
|
+
:style="{
|
|
8
|
+
background: getLineColor,
|
|
9
|
+
width: lineWidth + 'rpx',
|
|
10
|
+
left: `-${lineRight}rpx`,
|
|
11
|
+
top: lineGap + 'rpx',
|
|
12
|
+
bottom: lineGap + 'rpx',
|
|
13
|
+
borderRadius: lineCap === 'circle' ? `${lineWidth}rpx` : 0
|
|
14
|
+
}"
|
|
15
|
+
></view>
|
|
16
|
+
<slot name="left"></slot>
|
|
17
|
+
<text :style="{ fontSize: size + 'rpx', color: color, fontWeight: fontWeight }" v-if="title">{{ title }}</text>
|
|
18
|
+
<slot></slot>
|
|
19
|
+
</view>
|
|
20
|
+
<view class="up-section__sub" :style="{ paddingTop: descrTop + 'rpx' }" v-if="descr">
|
|
21
|
+
<text class="up-section__descr" :style="{ fontSize: descrSize + 'rpx', color: descrColor }">{{ descr }}</text>
|
|
22
|
+
</view>
|
|
23
|
+
<slot name="descr"></slot>
|
|
24
|
+
</view>
|
|
25
|
+
</template>
|
|
26
|
+
|
|
27
|
+
<script>
|
|
28
|
+
export default {
|
|
29
|
+
name: 'tuiSection',
|
|
30
|
+
emits: ['click'],
|
|
31
|
+
props: {
|
|
32
|
+
title: {
|
|
33
|
+
type: String,
|
|
34
|
+
default: ''
|
|
35
|
+
},
|
|
36
|
+
size: {
|
|
37
|
+
type: [Number, String],
|
|
38
|
+
default: 32
|
|
39
|
+
},
|
|
40
|
+
color: {
|
|
41
|
+
type: String,
|
|
42
|
+
default: '#333'
|
|
43
|
+
},
|
|
44
|
+
fontWeight: {
|
|
45
|
+
type: [Number, String],
|
|
46
|
+
default: 400
|
|
47
|
+
},
|
|
48
|
+
descr: {
|
|
49
|
+
type: String,
|
|
50
|
+
default: ''
|
|
51
|
+
},
|
|
52
|
+
descrSize: {
|
|
53
|
+
type: [Number, String],
|
|
54
|
+
default: 24
|
|
55
|
+
},
|
|
56
|
+
descrColor: {
|
|
57
|
+
type: String,
|
|
58
|
+
default: '#7a7a7a'
|
|
59
|
+
},
|
|
60
|
+
descrTop: {
|
|
61
|
+
type: [Number, String],
|
|
62
|
+
default: 16
|
|
63
|
+
},
|
|
64
|
+
isLine: {
|
|
65
|
+
type: Boolean,
|
|
66
|
+
default: false
|
|
67
|
+
},
|
|
68
|
+
lineWidth: {
|
|
69
|
+
type: [Number, String],
|
|
70
|
+
default: 8
|
|
71
|
+
},
|
|
72
|
+
lineColor: {
|
|
73
|
+
type: String,
|
|
74
|
+
default: ''
|
|
75
|
+
},
|
|
76
|
+
//square、circle
|
|
77
|
+
lineCap: {
|
|
78
|
+
type: String,
|
|
79
|
+
default: 'circle'
|
|
80
|
+
},
|
|
81
|
+
lineRight: {
|
|
82
|
+
type: [Number, String],
|
|
83
|
+
default: 16
|
|
84
|
+
},
|
|
85
|
+
lineGap: {
|
|
86
|
+
type: [Number, String],
|
|
87
|
+
default: 4
|
|
88
|
+
},
|
|
89
|
+
background: {
|
|
90
|
+
type: String,
|
|
91
|
+
default: 'transparent'
|
|
92
|
+
},
|
|
93
|
+
padding: {
|
|
94
|
+
type: String,
|
|
95
|
+
default: '20rpx 30rpx'
|
|
96
|
+
},
|
|
97
|
+
margin: {
|
|
98
|
+
type: String,
|
|
99
|
+
default: '0'
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
computed: {
|
|
103
|
+
getLineColor() {
|
|
104
|
+
return this.lineColor || (uni && uni.$tui && uni.$tui.color.primary) || '#5677fc';
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
methods: {
|
|
108
|
+
handleClick() {
|
|
109
|
+
this.$emit('click', {
|
|
110
|
+
title: this.title
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
</script>
|
|
116
|
+
|
|
117
|
+
<style scoped>
|
|
118
|
+
.up-section {
|
|
119
|
+
/* #ifndef APP-NVUE */
|
|
120
|
+
width: 100%;
|
|
121
|
+
box-sizing: border-box;
|
|
122
|
+
/* #endif */
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
.up-section__title {
|
|
126
|
+
position: relative;
|
|
127
|
+
/* #ifndef APP-NVUE */
|
|
128
|
+
display: flex;
|
|
129
|
+
word-break: break-all;
|
|
130
|
+
flex-shrink: 0;
|
|
131
|
+
/* #endif */
|
|
132
|
+
flex-direction: row;
|
|
133
|
+
align-items: center;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.up-section__decorate {
|
|
137
|
+
position: absolute;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.up-section__sub {
|
|
141
|
+
/* #ifndef APP-NVUE */
|
|
142
|
+
word-break: break-all;
|
|
143
|
+
/* #endif */
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.up-section__descr {
|
|
147
|
+
font-weight: 400;
|
|
148
|
+
}
|
|
149
|
+
</style>
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
>
|
|
6
6
|
<view
|
|
7
7
|
class="up-skeleton-cmomon"
|
|
8
|
+
:class="{ 'up-skeleton__active': active }"
|
|
8
9
|
v-for="(item, index) in skeletonElements"
|
|
9
10
|
:key="index"
|
|
10
11
|
:style="{
|
|
@@ -22,7 +23,7 @@
|
|
|
22
23
|
|
|
23
24
|
<script>
|
|
24
25
|
export default {
|
|
25
|
-
name: '
|
|
26
|
+
name: 'tuiSkeleton',
|
|
26
27
|
props: {
|
|
27
28
|
//选择器(外层容器)
|
|
28
29
|
selector: {
|
|
@@ -64,12 +65,17 @@ export default {
|
|
|
64
65
|
//是否需要loading
|
|
65
66
|
isLoading: {
|
|
66
67
|
type: Boolean,
|
|
67
|
-
default:
|
|
68
|
+
default: false
|
|
68
69
|
},
|
|
69
70
|
//loading类型[1-10]
|
|
70
71
|
loadingType: {
|
|
71
72
|
type: Number,
|
|
72
73
|
default: 1
|
|
74
|
+
},
|
|
75
|
+
//是否展示动画效果
|
|
76
|
+
active: {
|
|
77
|
+
type: Boolean,
|
|
78
|
+
default: true
|
|
73
79
|
}
|
|
74
80
|
},
|
|
75
81
|
created() {
|
|
@@ -97,14 +103,14 @@ export default {
|
|
|
97
103
|
};
|
|
98
104
|
},
|
|
99
105
|
methods: {
|
|
100
|
-
getLoadingType(type) {
|
|
106
|
+
getLoadingType: function (type) {
|
|
101
107
|
let value = 1;
|
|
102
108
|
if (type && type > 0 && type < 11) {
|
|
103
109
|
value = type;
|
|
104
110
|
}
|
|
105
111
|
return 'up-loading-' + value;
|
|
106
112
|
},
|
|
107
|
-
getRadius(type, val) {
|
|
113
|
+
getRadius: function (type, val) {
|
|
108
114
|
let radius = '0';
|
|
109
115
|
if (type == 'circular') {
|
|
110
116
|
radius = '50%';
|
|
@@ -125,10 +131,20 @@ export default {
|
|
|
125
131
|
let skeletonType = this.skeletonType || [];
|
|
126
132
|
let nodes = [];
|
|
127
133
|
for (let item of skeletonType) {
|
|
128
|
-
let className =
|
|
134
|
+
let className = '';
|
|
135
|
+
// #ifndef MP-WEIXIN
|
|
136
|
+
className = `.${item}`;
|
|
129
137
|
if (~'rect_circular_fillet'.indexOf(item)) {
|
|
130
138
|
className = `.${this.selector}-${item}`;
|
|
131
139
|
}
|
|
140
|
+
// #endif
|
|
141
|
+
|
|
142
|
+
// #ifdef MP-WEIXIN
|
|
143
|
+
className = `.${this.selector} >>> .${item}`;
|
|
144
|
+
if (~'rect_circular_fillet'.indexOf(item)) {
|
|
145
|
+
className = `.${this.selector} >>> .${this.selector}-${item}`;
|
|
146
|
+
}
|
|
147
|
+
// #endif
|
|
132
148
|
await this.nodesRef(className).then((res) => {
|
|
133
149
|
res.map((d) => {
|
|
134
150
|
d.skeletonType = item;
|
|
@@ -161,7 +177,6 @@ export default {
|
|
|
161
177
|
.up-skeleton-cmomon {
|
|
162
178
|
position: absolute;
|
|
163
179
|
z-index: 99999;
|
|
164
|
-
overflow: hidden;
|
|
165
180
|
}
|
|
166
181
|
|
|
167
182
|
.up-skeleton-box {
|
|
@@ -245,4 +260,20 @@ export default {
|
|
|
245
260
|
transform: rotate(360deg);
|
|
246
261
|
}
|
|
247
262
|
}
|
|
263
|
+
|
|
264
|
+
.up-skeleton__active {
|
|
265
|
+
background: linear-gradient(90deg, #f2f2f2 25%, #e6e6e6 37%, #f2f2f2 63%);
|
|
266
|
+
animation: up-active 1.4s ease infinite;
|
|
267
|
+
background-size: 400% 100%;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
@keyframes up-active {
|
|
271
|
+
0% {
|
|
272
|
+
background-position: 100% 50%;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
100% {
|
|
276
|
+
background-position: 0 50%;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
248
279
|
</style>
|