@tplc/business 0.0.17 → 0.0.20
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/CHANGELOG.md +130 -0
- package/action.d.ts +8 -0
- package/components/lcb-action-view/lcb-action-view.vue +145 -0
- package/components/lcb-action-view/types.ts +13 -0
- package/components/lcb-banner/lcb-banner.vue +36 -31
- package/components/lcb-banner/types.ts +3 -3
- package/components/lcb-banner-block/lcb-banner-block.vue +43 -35
- package/components/lcb-banner-block/types.ts +5 -0
- package/components/lcb-block/lcb-block.vue +10 -23
- package/components/lcb-block/types.ts +23 -9
- package/components/lcb-filter/components/FilterSlider/index.vue +40 -4
- package/components/lcb-filter/components/TreeSelect/index.vue +48 -5
- package/components/lcb-filter/lcb-filter.vue +4 -0
- package/components/lcb-gap/lcb-gap.vue +23 -0
- package/components/lcb-gap/types.ts +5 -0
- package/components/lcb-grid/lcb-grid.vue +5 -10
- package/components/lcb-home-search/lcb-home-search.vue +73 -38
- package/components/lcb-home-search/types.ts +7 -0
- package/components/lcb-image/Image/index.vue +96 -0
- package/components/lcb-image/lcb-image.vue +88 -0
- package/components/lcb-image/types.ts +15 -0
- package/components/lcb-img-nav/lcb-img-nav.vue +42 -44
- package/components/lcb-img-nav/types.ts +2 -9
- package/components/lcb-nav/lcb-nav.vue +10 -6
- package/components/lcb-title/lcb-title.vue +2 -3
- package/components/lcb-user-order/lcb-user-order.vue +59 -54
- package/components/lcb-user-order/types.ts +2 -2
- package/components/lcb-user-top/lcb-user-top.vue +96 -48
- package/components/lcb-user-top/types.ts +1 -0
- package/components/lcb-video/lcb-video.vue +33 -0
- package/components/lcb-video/types.ts +11 -0
- package/global.d.ts +4 -0
- package/iconfonts/index.css +24 -5
- package/package.json +2 -2
- package/types/components/lcb-action-view/lcb-action-view.vue.d.ts +41 -0
- package/types/components/lcb-action-view/types.d.ts +13 -0
- package/types/components/lcb-banner/lcb-banner.vue.d.ts +1 -2
- package/types/components/lcb-banner/types.d.ts +3 -3
- package/types/components/lcb-banner-block/lcb-banner-block.vue.d.ts +9 -2
- package/types/components/lcb-banner-block/types.d.ts +5 -0
- package/types/components/lcb-block/lcb-block.vue.d.ts +18 -25
- package/types/components/lcb-block/types.d.ts +21 -9
- package/types/components/lcb-gap/lcb-gap.vue.d.ts +42 -0
- package/types/components/lcb-gap/types.d.ts +5 -0
- package/types/components/lcb-grid/lcb-grid.vue.d.ts +4 -1
- package/types/components/lcb-home-search/lcb-home-search.vue.d.ts +37 -7
- package/types/components/lcb-home-search/types.d.ts +6 -0
- package/types/components/lcb-image/Image/index.vue.d.ts +56 -0
- package/types/components/lcb-image/lcb-image.vue.d.ts +71 -0
- package/types/components/lcb-image/types.d.ts +13 -0
- package/types/components/lcb-img-nav/lcb-img-nav.vue.d.ts +6 -12
- package/types/components/lcb-img-nav/types.d.ts +2 -9
- package/types/components/lcb-nav/lcb-nav.vue.d.ts +1 -1
- package/types/components/lcb-title/lcb-title.vue.d.ts +6 -0
- package/types/components/lcb-user-order/lcb-user-order.vue.d.ts +1 -1
- package/types/components/lcb-user-top/lcb-user-top.vue.d.ts +3 -0
- package/types/components/lcb-user-top/types.d.ts +1 -0
- package/types/components/lcb-video/lcb-video.vue.d.ts +56 -0
- package/types/components/lcb-video/types.d.ts +10 -0
- package/utils/transform.ts +1 -1
|
@@ -1,39 +1,45 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
>
|
|
14
|
-
<view v-for="item in items" :key="item.title" class="flex flex-col justify-center items-center">
|
|
15
|
-
<div
|
|
16
|
-
class="overflow-hidden"
|
|
17
|
-
:style="{
|
|
18
|
-
height: iconSize + 'rpx',
|
|
19
|
-
width: iconSize + 'rpx',
|
|
20
|
-
borderRadius: (iconType === 1 ? iconRadius : 0) + 'rpx',
|
|
21
|
-
color: iconColor,
|
|
22
|
-
marginBottom: iconTextMargin + 'rpx',
|
|
23
|
-
backgroundImage: iconType === 1 ? 'url(' + item.url + ')' : '',
|
|
24
|
-
backgroundSize: '100% 100%',
|
|
25
|
-
}"
|
|
26
|
-
:class="{
|
|
27
|
-
imageNav: iconType === 1,
|
|
28
|
-
}"
|
|
2
|
+
<lcb-block v-bind="$props">
|
|
3
|
+
<view
|
|
4
|
+
:style="{
|
|
5
|
+
gridTemplateColumns: `repeat(${pictureDistribution}, minmax(0, 1fr))`,
|
|
6
|
+
}"
|
|
7
|
+
:class="[styleGroup === 2 ? 'mutil' : 'single']"
|
|
8
|
+
>
|
|
9
|
+
<view
|
|
10
|
+
v-for="item in items"
|
|
11
|
+
:key="item.title"
|
|
12
|
+
class="flex flex-col justify-center items-center"
|
|
29
13
|
>
|
|
30
|
-
<
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
14
|
+
<view
|
|
15
|
+
class="overflow-hidden"
|
|
16
|
+
:style="{
|
|
17
|
+
marginBottom: iconTextMargin + 'rpx',
|
|
18
|
+
}"
|
|
19
|
+
>
|
|
20
|
+
<div v-if="iconType === 0" class="flex justify-center items-center">
|
|
21
|
+
<wd-icon
|
|
22
|
+
class-prefix="iconfont"
|
|
23
|
+
:name="item.icon!"
|
|
24
|
+
:size="iconSize + 'rpx'"
|
|
25
|
+
:color="iconColor"
|
|
26
|
+
/>
|
|
27
|
+
</div>
|
|
28
|
+
<img
|
|
29
|
+
v-else
|
|
30
|
+
class="block"
|
|
31
|
+
:style="{
|
|
32
|
+
borderRadius: iconRadius + 'rpx',
|
|
33
|
+
height: iconSize + 'rpx',
|
|
34
|
+
width: iconSize + 'rpx',
|
|
35
|
+
}"
|
|
36
|
+
:src="item.url"
|
|
37
|
+
/>
|
|
38
|
+
</view>
|
|
39
|
+
<view class="title">{{ item.title }}</view>
|
|
40
|
+
</view>
|
|
35
41
|
</view>
|
|
36
|
-
</
|
|
42
|
+
</lcb-block>
|
|
37
43
|
</template>
|
|
38
44
|
|
|
39
45
|
<script lang="ts" setup>
|
|
@@ -49,15 +55,13 @@ defineOptions({
|
|
|
49
55
|
})
|
|
50
56
|
|
|
51
57
|
withDefaults(defineProps<LcbImgNavProps>(), {
|
|
52
|
-
bgColor: '#ffffff',
|
|
53
58
|
textColor: '#212121',
|
|
54
59
|
iconColor: '#212121',
|
|
55
60
|
iconRadius: 0,
|
|
56
|
-
|
|
57
|
-
bottomMargin: 36,
|
|
61
|
+
paddingVertical: 36,
|
|
58
62
|
iconSize: 80,
|
|
59
|
-
|
|
60
|
-
iconTextMargin:
|
|
63
|
+
paddingHorizontal: 0,
|
|
64
|
+
iconTextMargin: 4,
|
|
61
65
|
pictureDistribution: 4,
|
|
62
66
|
})
|
|
63
67
|
</script>
|
|
@@ -77,12 +81,6 @@ withDefaults(defineProps<LcbImgNavProps>(), {
|
|
|
77
81
|
display: grid;
|
|
78
82
|
row-gap: 36rpx;
|
|
79
83
|
}
|
|
80
|
-
.imageNav {
|
|
81
|
-
box-sizing: content-box;
|
|
82
|
-
background-repeat: no-repeat;
|
|
83
|
-
background-position: center;
|
|
84
|
-
background-size: cover;
|
|
85
|
-
}
|
|
86
84
|
.title {
|
|
87
85
|
width: 68px;
|
|
88
86
|
overflow: hidden;
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { ActionView } from 'action'
|
|
2
|
+
import { LcbBlockProps } from '../lcb-block/types'
|
|
2
3
|
|
|
3
|
-
export interface LcbImgNavProps {
|
|
4
|
+
export interface LcbImgNavProps extends LcbBlockProps {
|
|
4
5
|
/** 模式 1.单行 2.多行 */
|
|
5
6
|
styleGroup?: 1 | 2
|
|
6
7
|
/** 文字颜色 #212121 */
|
|
7
8
|
textColor?: string
|
|
8
|
-
/** 背景颜色 #ffffff */
|
|
9
|
-
bgColor?: string
|
|
10
9
|
/** 背景图片 */
|
|
11
10
|
bgImg?: string
|
|
12
11
|
/** 图标颜色 #212121 */
|
|
@@ -15,14 +14,8 @@ export interface LcbImgNavProps {
|
|
|
15
14
|
iconType?: 0 | 1
|
|
16
15
|
/** 数据内容 */
|
|
17
16
|
items?: ActionView[]
|
|
18
|
-
/** 上边距 */
|
|
19
|
-
topMargin?: 0 | 24 | 36
|
|
20
|
-
/** 下边距 */
|
|
21
|
-
bottomMargin?: 0 | 24 | 36
|
|
22
17
|
/** 排布方式每行几个 */
|
|
23
18
|
pictureDistribution?: 3 | 4 | 5
|
|
24
|
-
/** 左右间距 */
|
|
25
|
-
leftRightMargin?: number
|
|
26
19
|
/** 图标尺寸 0.小40px 2.大50px */
|
|
27
20
|
iconSize?: number
|
|
28
21
|
/** 图标圆角 默认 0 */
|
|
@@ -41,11 +41,16 @@
|
|
|
41
41
|
:key="item.icon"
|
|
42
42
|
:class="[capsuleList.length === 1 ? 'px-2' : 'px-2.5']"
|
|
43
43
|
>
|
|
44
|
-
<wd-icon class-prefix="iconfont" :name="item.icon" size="
|
|
44
|
+
<wd-icon class-prefix="iconfont" :name="item.icon" size="36rpx" :color="contentColor" />
|
|
45
45
|
</view>
|
|
46
46
|
</view>
|
|
47
47
|
<template v-else-if="back">
|
|
48
|
-
<wd-icon
|
|
48
|
+
<wd-icon
|
|
49
|
+
class-prefix="iconfont"
|
|
50
|
+
name="dingdanliebiao"
|
|
51
|
+
@click="toBack"
|
|
52
|
+
:color="contentColor"
|
|
53
|
+
/>
|
|
49
54
|
</template>
|
|
50
55
|
<view class="ml-2" v-if="titleLocation === 'left'">
|
|
51
56
|
<Search
|
|
@@ -219,11 +224,10 @@ onPageScroll(({ scrollTop: top }) => {
|
|
|
219
224
|
@extend %action;
|
|
220
225
|
.navbar-capsule {
|
|
221
226
|
margin: auto 20rpx auto 0;
|
|
222
|
-
height: 29px;
|
|
223
227
|
content: '';
|
|
224
|
-
border:
|
|
228
|
+
border: 1px solid rgba(0, 0, 0, 0.1);
|
|
225
229
|
border-radius: 82rpx;
|
|
226
|
-
padding: 0px;
|
|
230
|
+
padding: 10rpx 0px;
|
|
227
231
|
background-color: rgba(255, 255, 255, 0.6);
|
|
228
232
|
// 不等于最后一个儿子
|
|
229
233
|
> view {
|
|
@@ -234,7 +238,7 @@ onPageScroll(({ scrollTop: top }) => {
|
|
|
234
238
|
top: 50%;
|
|
235
239
|
transform: translateY(-50%);
|
|
236
240
|
content: ' ';
|
|
237
|
-
width:
|
|
241
|
+
width: 1px;
|
|
238
242
|
height: 18px;
|
|
239
243
|
background: rgba(0, 0, 0, 0.1);
|
|
240
244
|
}
|
|
@@ -2,10 +2,7 @@
|
|
|
2
2
|
<lcb-block
|
|
3
3
|
v-bind="{
|
|
4
4
|
...$props,
|
|
5
|
-
title: undefined,
|
|
6
5
|
}"
|
|
7
|
-
:marginLeft="12"
|
|
8
|
-
:marginRight="12"
|
|
9
6
|
>
|
|
10
7
|
<text
|
|
11
8
|
:style="{
|
|
@@ -28,9 +25,11 @@ defineOptions({
|
|
|
28
25
|
},
|
|
29
26
|
})
|
|
30
27
|
withDefaults(defineProps<LcbTitleProps>(), {
|
|
28
|
+
marginHorizontal: 24,
|
|
31
29
|
fontWeight: 600,
|
|
32
30
|
fontSize: 14,
|
|
33
31
|
color: '#333',
|
|
32
|
+
title: '标题',
|
|
34
33
|
})
|
|
35
34
|
</script>
|
|
36
35
|
<style lang="scss" scoped></style>
|
|
@@ -1,50 +1,59 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<lcb-block class="flex flex-justify-between"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
radius,
|
|
13
|
-
boxShadow: shadowColor && shadowSize ? `0px 0px ${blurSize}px ${shadowSize}px ${shadowColor}` : '',
|
|
14
|
-
// boxShadow: '0px 4px 8px 0px rgba(236,236,236,0.5)'
|
|
15
|
-
}">
|
|
16
|
-
<view class="flex flex-col flex-justify-center items-center" @click="onClick(item)" v-for="item in iconList"
|
|
17
|
-
:key="item.id">
|
|
18
|
-
<view class="position-relative" :style="{
|
|
19
|
-
height: transformValueUnit(iconSize),
|
|
20
|
-
width: transformValueUnit(iconSize),
|
|
21
|
-
}">
|
|
22
|
-
<view v-if="item.iconType === 0">
|
|
23
|
-
<wd-icon class-prefix="iconfont" v-bind="{
|
|
24
|
-
name: item.iconName || '',
|
|
25
|
-
size: transformValueUnit(iconSize),
|
|
26
|
-
color: iconColor,
|
|
27
|
-
}" />
|
|
28
|
-
</view>
|
|
29
|
-
<view v-if="item.iconType === 1" class="bg-no-repeat bg-contain" :style="{
|
|
2
|
+
<lcb-block v-bind="$props" class="flex flex-justify-between">
|
|
3
|
+
<view
|
|
4
|
+
class="flex flex-col flex-justify-center items-center"
|
|
5
|
+
@click="onClick(item)"
|
|
6
|
+
v-for="item in iconList"
|
|
7
|
+
:key="item.id"
|
|
8
|
+
>
|
|
9
|
+
<view
|
|
10
|
+
class="position-relative"
|
|
11
|
+
:style="{
|
|
30
12
|
height: transformValueUnit(iconSize),
|
|
31
13
|
width: transformValueUnit(iconSize),
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
14
|
+
}"
|
|
15
|
+
>
|
|
16
|
+
<view v-if="item.iconType === 0">
|
|
17
|
+
<wd-icon
|
|
18
|
+
class-prefix="iconfont"
|
|
19
|
+
v-bind="{
|
|
20
|
+
name: item.iconName || '',
|
|
21
|
+
size: transformValueUnit(iconSize),
|
|
22
|
+
color: iconColor,
|
|
23
|
+
}"
|
|
24
|
+
/>
|
|
25
|
+
</view>
|
|
26
|
+
<view
|
|
27
|
+
v-if="item.iconType === 1"
|
|
28
|
+
class="bg-no-repeat bg-contain"
|
|
29
|
+
:style="{
|
|
30
|
+
height: transformValueUnit(iconSize),
|
|
31
|
+
width: transformValueUnit(iconSize),
|
|
32
|
+
color: iconColor,
|
|
33
|
+
backgroundImage: `url('${item.iconUpload}')`,
|
|
34
|
+
}"
|
|
35
|
+
/>
|
|
36
|
+
<view
|
|
37
|
+
v-if="item.id < 5"
|
|
38
|
+
class="pos-absolute bg-#f23d3d pos-top-0 pos-right-0 w-8px h-8px rounded-4px"
|
|
39
|
+
/>
|
|
40
|
+
</view>
|
|
41
|
+
<view
|
|
42
|
+
class="flex flex-justify-between text-center"
|
|
43
|
+
:style="{
|
|
44
|
+
color: textColor,
|
|
45
|
+
fontSize: transformValueUnit(textSize),
|
|
46
|
+
marginTop: transformValueUnit((textSize || 0) / 3),
|
|
47
|
+
}"
|
|
48
|
+
>
|
|
49
|
+
{{ item.iconTitle }}
|
|
36
50
|
</view>
|
|
37
|
-
<view class="flex flex-justify-between text-center" :style="{
|
|
38
|
-
color: textColor,
|
|
39
|
-
fontSize: transformValueUnit(textSize),
|
|
40
|
-
marginTop: transformValueUnit((textSize || 0) / 3),
|
|
41
|
-
}">{{ item.iconTitle }}</view>
|
|
42
51
|
</view>
|
|
43
52
|
</lcb-block>
|
|
44
53
|
</template>
|
|
45
54
|
|
|
46
55
|
<script setup lang="ts">
|
|
47
|
-
import { computed } from 'vue'
|
|
56
|
+
import { computed } from 'vue'
|
|
48
57
|
import { LcbUserOrderProps, IIconList } from './types'
|
|
49
58
|
import { transformValueUnit } from '../../utils/transform'
|
|
50
59
|
defineOptions({
|
|
@@ -55,36 +64,32 @@ defineOptions({
|
|
|
55
64
|
styleIsolation: 'shared',
|
|
56
65
|
},
|
|
57
66
|
})
|
|
58
|
-
const onClick = (item: any) => {
|
|
59
|
-
|
|
60
|
-
}
|
|
67
|
+
const onClick = (item: any) => {}
|
|
61
68
|
const props = withDefaults(defineProps<LcbUserOrderProps>(), {
|
|
62
69
|
paddingVertical: 0,
|
|
63
70
|
paddingHorizontal: 0,
|
|
64
71
|
blurSize: 5,
|
|
65
72
|
})
|
|
66
|
-
const statusNumbers = ['0', '1', '2', '3', '5', '']
|
|
73
|
+
const statusNumbers = ['0', '1', '2', '3', '5', '']
|
|
67
74
|
const iconList = computed(() => {
|
|
68
75
|
const list: IIconList[] = []
|
|
69
76
|
for (let i = 0; i < statusNumbers.length; i++) {
|
|
70
|
-
const item = statusNumbers[i]
|
|
71
|
-
const isShow = props['iconShow' + item]
|
|
77
|
+
const item = statusNumbers[i]
|
|
78
|
+
const isShow = props['iconShow' + item]
|
|
72
79
|
console.log('isShow', isShow)
|
|
73
80
|
if (isShow !== false) {
|
|
74
81
|
list.push({
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
})
|
|
82
|
+
id: i,
|
|
83
|
+
iconType: props['iconType' + item],
|
|
84
|
+
iconTitle: props['iconTitle' + item],
|
|
85
|
+
iconName: props['iconName' + item],
|
|
86
|
+
iconUpload: props['iconUpload' + item],
|
|
87
|
+
})
|
|
81
88
|
}
|
|
82
89
|
}
|
|
83
|
-
console.log('list', list)
|
|
90
|
+
console.log('list', list, props)
|
|
84
91
|
return list as IIconList[]
|
|
85
92
|
})
|
|
86
93
|
</script>
|
|
87
94
|
|
|
88
|
-
<style lang="scss" scoped>
|
|
89
|
-
|
|
90
|
-
</style>
|
|
95
|
+
<style lang="scss" scoped></style>
|
|
@@ -1,55 +1,91 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<lcb-block
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
<lcb-block
|
|
3
|
+
v-bind="{
|
|
4
|
+
paddingTop,
|
|
5
|
+
paddingBottom,
|
|
6
|
+
paddingLeft,
|
|
7
|
+
paddingRight,
|
|
8
|
+
backgroundColor: bgStyle === 1 ? backgroundColor : '',
|
|
9
|
+
backgroundImage: bgStyle === 2 ? backgroundImage : '',
|
|
10
|
+
}"
|
|
11
|
+
>
|
|
10
12
|
<view class="flex flex-items-center">
|
|
11
|
-
<wd-img
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
<wd-img
|
|
14
|
+
v-if="!!photoUrl"
|
|
15
|
+
v-bind="{
|
|
16
|
+
width: transformValueUnit(photoSize),
|
|
17
|
+
height: transformValueUnit(photoSize),
|
|
18
|
+
round: photoRound,
|
|
19
|
+
src: photoUrl,
|
|
20
|
+
}"
|
|
21
|
+
class="mr-20rpx"
|
|
22
|
+
/>
|
|
23
|
+
<view
|
|
24
|
+
v-if="!photoUrl"
|
|
25
|
+
:style="{
|
|
26
|
+
width: transformValueUnit(photoSize),
|
|
27
|
+
height: transformValueUnit(photoSize),
|
|
28
|
+
borderRadius: photoRound ? '50%' : '',
|
|
29
|
+
}"
|
|
30
|
+
class="bg-#eee userPlace mr-20rpx"
|
|
31
|
+
>
|
|
32
|
+
<!-- flex justify-center items-center overflow-hidden relative -->
|
|
33
|
+
<!-- <wd-icon name="user" :size="transformValueUnit(photoSize * 0.9)" color="#ddd" class="absolute photoIcon"></wd-icon> -->
|
|
34
|
+
</view>
|
|
17
35
|
<view class="flex-1">
|
|
18
|
-
<view
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
<view class="flex" v-if="editBtn == true">
|
|
23
|
-
<view class="flex flex-content-center flex-items-center mt-5px border-style-solid" :style="{
|
|
36
|
+
<view
|
|
37
|
+
class="font-bold"
|
|
38
|
+
:style="{
|
|
39
|
+
fontSize: transformValueUnit(textSize),
|
|
24
40
|
color: textColor,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
41
|
+
}"
|
|
42
|
+
>
|
|
43
|
+
用户
|
|
44
|
+
</view>
|
|
45
|
+
<view class="flex" v-if="editBtn == true">
|
|
46
|
+
<view
|
|
47
|
+
class="flex flex-content-center flex-items-center mt-5px border-style-solid"
|
|
48
|
+
:style="{
|
|
49
|
+
color: textColor,
|
|
50
|
+
borderWidth: editBorder ? transformValueUnit(1) : 0,
|
|
51
|
+
borderColor: textColor,
|
|
52
|
+
padding: editBorder ? `2px ${editSize / 2.5}px 2px ${editSize / 2.5}px` : '',
|
|
53
|
+
borderRadius: transformValueUnit(30),
|
|
54
|
+
fontSize: transformValueUnit(editSize),
|
|
55
|
+
}"
|
|
56
|
+
>
|
|
31
57
|
<view>{{ editText }}</view>
|
|
32
58
|
</view>
|
|
33
59
|
</view>
|
|
34
60
|
</view>
|
|
35
|
-
<div
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
<view v-if="moreIcon == true && iconType === 0">
|
|
42
|
-
<wd-icon class-prefix="iconfont" v-bind="{
|
|
43
|
-
name: iconName,
|
|
44
|
-
size: transformValueUnit(textSize),
|
|
61
|
+
<div
|
|
62
|
+
v-if="moreIcon == true && iconType === 1"
|
|
63
|
+
class="overflow-hidden bg-no-repeat bg-contain"
|
|
64
|
+
:style="{
|
|
65
|
+
height: transformValueUnit(textSize),
|
|
66
|
+
width: transformValueUnit(textSize),
|
|
45
67
|
color: textColor,
|
|
46
|
-
|
|
68
|
+
backgroundImage: `url('${iconUpload}')`,
|
|
69
|
+
}"
|
|
70
|
+
/>
|
|
71
|
+
<view v-if="moreIcon == true && iconType === 0">
|
|
72
|
+
<wd-icon
|
|
73
|
+
class-prefix="iconfont"
|
|
74
|
+
v-bind="{
|
|
75
|
+
name: iconName,
|
|
76
|
+
size: transformValueUnit(textSize),
|
|
77
|
+
color: textColor,
|
|
78
|
+
}"
|
|
79
|
+
/>
|
|
47
80
|
</view>
|
|
48
81
|
</view>
|
|
49
|
-
<view
|
|
50
|
-
|
|
82
|
+
<view
|
|
83
|
+
v-if="valuesCard == true || coupons == true || presales == true"
|
|
84
|
+
class="flex flex-justify-between text-center mt-15px"
|
|
85
|
+
:style="{
|
|
51
86
|
color: textColor,
|
|
52
|
-
}"
|
|
87
|
+
}"
|
|
88
|
+
>
|
|
53
89
|
<View v-if="valuesCard == true" class="">
|
|
54
90
|
<view class="text-22px font-bold">0</view>
|
|
55
91
|
<view class="text-12px optName">储值卡</view>
|
|
@@ -69,6 +105,7 @@
|
|
|
69
105
|
<script setup lang="ts">
|
|
70
106
|
import { LcbUserTopProps } from './types'
|
|
71
107
|
import { transformValueUnit } from '../../utils/transform'
|
|
108
|
+
import { styleText } from 'util'
|
|
72
109
|
defineOptions({
|
|
73
110
|
name: 'LcbUserTop',
|
|
74
111
|
options: {
|
|
@@ -78,23 +115,34 @@ defineOptions({
|
|
|
78
115
|
},
|
|
79
116
|
})
|
|
80
117
|
withDefaults(defineProps<LcbUserTopProps>(), {
|
|
81
|
-
photoSize:
|
|
82
|
-
paddingLeft:
|
|
83
|
-
paddingRight:
|
|
84
|
-
paddingTop:
|
|
85
|
-
paddingBottom:
|
|
118
|
+
photoSize: 100,
|
|
119
|
+
paddingLeft: 35,
|
|
120
|
+
paddingRight: 35,
|
|
121
|
+
paddingTop: 100,
|
|
122
|
+
paddingBottom: 100,
|
|
86
123
|
photoRound: false,
|
|
87
|
-
textSize:
|
|
124
|
+
textSize: 32,
|
|
88
125
|
textColor: '#333',
|
|
89
126
|
moreIcon: true,
|
|
90
127
|
iconType: 0,
|
|
91
128
|
iconName: 'xiayiye',
|
|
92
129
|
editText: '编辑资料',
|
|
93
|
-
editSize:
|
|
130
|
+
editSize: 28,
|
|
131
|
+
bgStyle: 1,
|
|
94
132
|
})
|
|
95
133
|
</script>
|
|
96
134
|
<style lang="scss" scoped>
|
|
97
|
-
.optName{
|
|
135
|
+
.optName {
|
|
98
136
|
opacity: 0.7;
|
|
99
137
|
}
|
|
138
|
+
.userPlace {
|
|
139
|
+
background-image: url('https://image-c.weimobwmc.com/static-resource/33c59afc76d04917a8b3b62520835db6.jpg');
|
|
140
|
+
background-size: contain;
|
|
141
|
+
background-position: center bottom;
|
|
142
|
+
}
|
|
143
|
+
.photoIcon {
|
|
144
|
+
bottom: -20rpx;
|
|
145
|
+
left: 50%;
|
|
146
|
+
transform: translateX(-50%);
|
|
147
|
+
}
|
|
100
148
|
</style>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<lcb-block v-bind="{
|
|
3
|
+
marginTop,
|
|
4
|
+
marginBottom,
|
|
5
|
+
marginLeft: marginHorizontal,
|
|
6
|
+
marginRight: marginHorizontal,
|
|
7
|
+
}">
|
|
8
|
+
<video v-bind="{
|
|
9
|
+
src,
|
|
10
|
+
loop,
|
|
11
|
+
muted,
|
|
12
|
+
autoplay,
|
|
13
|
+
showProgress,
|
|
14
|
+
}" class="w-full" />
|
|
15
|
+
</lcb-block>
|
|
16
|
+
</template>
|
|
17
|
+
|
|
18
|
+
<script setup lang="ts">
|
|
19
|
+
import { LcbVideoProps } from './types'
|
|
20
|
+
defineOptions({
|
|
21
|
+
name: 'LcbVideo',
|
|
22
|
+
options: {
|
|
23
|
+
addGlobalClass: true,
|
|
24
|
+
virtualHost: true,
|
|
25
|
+
styleIsolation: 'shared',
|
|
26
|
+
},
|
|
27
|
+
})
|
|
28
|
+
withDefaults(defineProps<LcbVideoProps>(), {
|
|
29
|
+
marginHorizontal: 0,
|
|
30
|
+
})
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<style lang="scss" scoped></style>
|
package/global.d.ts
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
declare module 'vue' {
|
|
2
2
|
// Helper for Volar
|
|
3
3
|
export interface GlobalComponents {
|
|
4
|
+
'lcb-action-view': (typeof import('./types/components/lcb-action-view/lcb-action-view.vue'))['default']
|
|
4
5
|
'lcb-banner': (typeof import('./types/components/lcb-banner/lcb-banner.vue'))['default']
|
|
5
6
|
'lcb-banner-block': (typeof import('./types/components/lcb-banner-block/lcb-banner-block.vue'))['default']
|
|
6
7
|
'lcb-block': (typeof import('./types/components/lcb-block/lcb-block.vue'))['default']
|
|
7
8
|
'lcb-filter': (typeof import('./types/components/lcb-filter/lcb-filter.vue'))['default']
|
|
9
|
+
'lcb-gap': (typeof import('./types/components/lcb-gap/lcb-gap.vue'))['default']
|
|
8
10
|
'lcb-grid': (typeof import('./types/components/lcb-grid/lcb-grid.vue'))['default']
|
|
9
11
|
'lcb-home-search': (typeof import('./types/components/lcb-home-search/lcb-home-search.vue'))['default']
|
|
12
|
+
'lcb-image': (typeof import('./types/components/lcb-image/lcb-image.vue'))['default']
|
|
10
13
|
'lcb-img-nav': (typeof import('./types/components/lcb-img-nav/lcb-img-nav.vue'))['default']
|
|
11
14
|
'lcb-nav': (typeof import('./types/components/lcb-nav/lcb-nav.vue'))['default']
|
|
12
15
|
'lcb-swiper': (typeof import('./types/components/lcb-swiper/lcb-swiper.vue'))['default']
|
|
13
16
|
'lcb-title': (typeof import('./types/components/lcb-title/lcb-title.vue'))['default']
|
|
14
17
|
'lcb-user-order': (typeof import('./types/components/lcb-user-order/lcb-user-order.vue'))['default']
|
|
15
18
|
'lcb-user-top': (typeof import('./types/components/lcb-user-top/lcb-user-top.vue'))['default']
|
|
19
|
+
'lcb-video': (typeof import('./types/components/lcb-video/lcb-video.vue'))['default']
|
|
16
20
|
}
|
|
17
21
|
}
|
|
18
22
|
|
package/iconfonts/index.css
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
@font-face {
|
|
2
2
|
font-family: 'iconfont'; /* Project id 4652744 */
|
|
3
3
|
src:
|
|
4
|
-
url('//at.alicdn.com/t/c/
|
|
5
|
-
url('//at.alicdn.com/t/c/
|
|
6
|
-
url('//at.alicdn.com/t/c/
|
|
7
|
-
url('//at.alicdn.com/t/c/
|
|
4
|
+
url('//at.alicdn.com/t/c/font_4652744_bhoie787kfq.woff2?t=1726152120892') format('woff2'),
|
|
5
|
+
url('//at.alicdn.com/t/c/font_4652744_bhoie787kfq.woff?t=1726152120892') format('woff'),
|
|
6
|
+
url('//at.alicdn.com/t/c/font_4652744_bhoie787kfq.ttf?t=1726152120892') format('truetype'),
|
|
7
|
+
url('//at.alicdn.com/t/c/font_4652744_bhoie787kfq.svg?t=1726152120892#iconfont') format('svg');
|
|
8
8
|
}
|
|
9
|
-
|
|
10
9
|
.iconfont {
|
|
11
10
|
font-family: 'iconfont' !important;
|
|
12
11
|
font-size: 16px;
|
|
@@ -15,6 +14,26 @@
|
|
|
15
14
|
-moz-osx-font-smoothing: grayscale;
|
|
16
15
|
}
|
|
17
16
|
|
|
17
|
+
.iconfont-a-xingzhuang23kaobei:before {
|
|
18
|
+
content: '\e60f';
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.iconfont-a-xingzhuang103:before {
|
|
22
|
+
content: '\e610';
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.iconfont-a-xingzhuang22:before {
|
|
26
|
+
content: '\e611';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.iconfont-a-xingzhuang97:before {
|
|
30
|
+
content: '\e612';
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.iconfont-a-xingzhuang106:before {
|
|
34
|
+
content: '\e613';
|
|
35
|
+
}
|
|
36
|
+
|
|
18
37
|
.iconfont-dingdanliebiao:before {
|
|
19
38
|
content: '\e662';
|
|
20
39
|
}
|