@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.
Files changed (60) hide show
  1. package/CHANGELOG.md +130 -0
  2. package/action.d.ts +8 -0
  3. package/components/lcb-action-view/lcb-action-view.vue +145 -0
  4. package/components/lcb-action-view/types.ts +13 -0
  5. package/components/lcb-banner/lcb-banner.vue +36 -31
  6. package/components/lcb-banner/types.ts +3 -3
  7. package/components/lcb-banner-block/lcb-banner-block.vue +43 -35
  8. package/components/lcb-banner-block/types.ts +5 -0
  9. package/components/lcb-block/lcb-block.vue +10 -23
  10. package/components/lcb-block/types.ts +23 -9
  11. package/components/lcb-filter/components/FilterSlider/index.vue +40 -4
  12. package/components/lcb-filter/components/TreeSelect/index.vue +48 -5
  13. package/components/lcb-filter/lcb-filter.vue +4 -0
  14. package/components/lcb-gap/lcb-gap.vue +23 -0
  15. package/components/lcb-gap/types.ts +5 -0
  16. package/components/lcb-grid/lcb-grid.vue +5 -10
  17. package/components/lcb-home-search/lcb-home-search.vue +73 -38
  18. package/components/lcb-home-search/types.ts +7 -0
  19. package/components/lcb-image/Image/index.vue +96 -0
  20. package/components/lcb-image/lcb-image.vue +88 -0
  21. package/components/lcb-image/types.ts +15 -0
  22. package/components/lcb-img-nav/lcb-img-nav.vue +42 -44
  23. package/components/lcb-img-nav/types.ts +2 -9
  24. package/components/lcb-nav/lcb-nav.vue +10 -6
  25. package/components/lcb-title/lcb-title.vue +2 -3
  26. package/components/lcb-user-order/lcb-user-order.vue +59 -54
  27. package/components/lcb-user-order/types.ts +2 -2
  28. package/components/lcb-user-top/lcb-user-top.vue +96 -48
  29. package/components/lcb-user-top/types.ts +1 -0
  30. package/components/lcb-video/lcb-video.vue +33 -0
  31. package/components/lcb-video/types.ts +11 -0
  32. package/global.d.ts +4 -0
  33. package/iconfonts/index.css +24 -5
  34. package/package.json +2 -2
  35. package/types/components/lcb-action-view/lcb-action-view.vue.d.ts +41 -0
  36. package/types/components/lcb-action-view/types.d.ts +13 -0
  37. package/types/components/lcb-banner/lcb-banner.vue.d.ts +1 -2
  38. package/types/components/lcb-banner/types.d.ts +3 -3
  39. package/types/components/lcb-banner-block/lcb-banner-block.vue.d.ts +9 -2
  40. package/types/components/lcb-banner-block/types.d.ts +5 -0
  41. package/types/components/lcb-block/lcb-block.vue.d.ts +18 -25
  42. package/types/components/lcb-block/types.d.ts +21 -9
  43. package/types/components/lcb-gap/lcb-gap.vue.d.ts +42 -0
  44. package/types/components/lcb-gap/types.d.ts +5 -0
  45. package/types/components/lcb-grid/lcb-grid.vue.d.ts +4 -1
  46. package/types/components/lcb-home-search/lcb-home-search.vue.d.ts +37 -7
  47. package/types/components/lcb-home-search/types.d.ts +6 -0
  48. package/types/components/lcb-image/Image/index.vue.d.ts +56 -0
  49. package/types/components/lcb-image/lcb-image.vue.d.ts +71 -0
  50. package/types/components/lcb-image/types.d.ts +13 -0
  51. package/types/components/lcb-img-nav/lcb-img-nav.vue.d.ts +6 -12
  52. package/types/components/lcb-img-nav/types.d.ts +2 -9
  53. package/types/components/lcb-nav/lcb-nav.vue.d.ts +1 -1
  54. package/types/components/lcb-title/lcb-title.vue.d.ts +6 -0
  55. package/types/components/lcb-user-order/lcb-user-order.vue.d.ts +1 -1
  56. package/types/components/lcb-user-top/lcb-user-top.vue.d.ts +3 -0
  57. package/types/components/lcb-user-top/types.d.ts +1 -0
  58. package/types/components/lcb-video/lcb-video.vue.d.ts +56 -0
  59. package/types/components/lcb-video/types.d.ts +10 -0
  60. package/utils/transform.ts +1 -1
@@ -1,39 +1,45 @@
1
1
  <template>
2
- <view
3
- class="box-border"
4
- :style="{
5
- backgroundColor: bgColor,
6
- color: textColor,
7
- gridTemplateColumns: `repeat(${pictureDistribution}, minmax(0, 1fr))`,
8
- padding: `${topMargin}rpx ${leftRightMargin}rpx ${bottomMargin}rpx`,
9
- backgroundImage: bgImg ? `url(${bgImg})` : '',
10
- backgroundSize: '100% 100%',
11
- }"
12
- :class="[styleGroup === 2 ? 'mutil' : 'single']"
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
- <div v-if="iconType === 0" class="flex justify-center items-center">
31
- <wd-icon class-prefix="iconfont" :name="item.icon!" size="36" />
32
- </div>
33
- </div>
34
- <view class="title">{{ item.title }}</view>
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
- </view>
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
- topMargin: 36,
57
- bottomMargin: 36,
61
+ paddingVertical: 36,
58
62
  iconSize: 80,
59
- leftRightMargin: 0,
60
- iconTextMargin: 8,
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="20" />
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 class-prefix="iconfont" name="dingdanliebiao" @click="toBack" />
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: 1rpx solid rgba(0, 0, 0, 0.1);
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: 1rpx;
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" v-bind="{
3
- marginTop,
4
- marginBottom,
5
- marginLeft: marginHorizontal,
6
- marginRight: marginHorizontal,
7
- paddingTop: paddingVertical,
8
- paddingBottom: paddingVertical,
9
- paddingLeft: paddingHorizontal,
10
- paddingRight: paddingHorizontal,
11
- backgroundColor,
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
- color: iconColor,
33
- backgroundImage: `url('${item.iconUpload}')`,
34
- }" />
35
- <view v-if="item.id < 5" class="pos-absolute bg-#f23d3d pos-top-0 pos-right-0 w-8px h-8px rounded-4px" />
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
- 'id': i,
76
- 'iconType': props['iconType' + item],
77
- 'iconTitle': props['iconTitle' + item],
78
- 'iconName': props['iconName' + item],
79
- 'iconUpload': props['iconUpload' + item],
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,7 +1,7 @@
1
1
  export interface IIconList {
2
- id: number,
2
+ id: number
3
3
  iconType: number
4
- iconTitle?: string,
4
+ iconTitle?: string
5
5
  iconName?: string
6
6
  iconUpload?: string
7
7
  }
@@ -1,55 +1,91 @@
1
1
  <template>
2
- <lcb-block v-bind="{
3
- paddingTop,
4
- paddingBottom,
5
- paddingLeft,
6
- paddingRight,
7
- backgroundColor,
8
- backgroundImage,
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 v-bind="{
12
- width: transformValueUnit(photoSize),
13
- height: transformValueUnit(photoSize),
14
- round: photoRound,
15
- src: photoUrl,
16
- }" class="bg-coolgray mr-20rpx" />
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 class="font-bold" :style="{
19
- fontSize: transformValueUnit(textSize),
20
- color: textColor,
21
- }">用户</view>
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
- borderWidth: editBorder ? transformValueUnit(1) : 0,
26
- borderColor: textColor,
27
- padding: editBorder ? `2px ${editSize / 2.5}px 2px ${editSize / 2.5}px` : '',
28
- borderRadius: transformValueUnit(30),
29
- fontSize: transformValueUnit(editSize),
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 v-if="moreIcon == true && iconType === 1" class="overflow-hidden bg-no-repeat bg-contain" :style="{
36
- height: transformValueUnit(textSize),
37
- width: transformValueUnit(textSize),
38
- color: textColor,
39
- backgroundImage: `url('${iconUpload}')`,
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 v-if="valuesCard == true || coupons == true || presales == true"
50
- class="flex flex-justify-between text-center mt-15px" :style="{
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: 30,
82
- paddingLeft: 30,
83
- paddingRight: 30,
84
- paddingTop: 30,
85
- paddingBottom: 30,
118
+ photoSize: 100,
119
+ paddingLeft: 35,
120
+ paddingRight: 35,
121
+ paddingTop: 100,
122
+ paddingBottom: 100,
86
123
  photoRound: false,
87
- textSize: 22,
124
+ textSize: 32,
88
125
  textColor: '#333',
89
126
  moreIcon: true,
90
127
  iconType: 0,
91
128
  iconName: 'xiayiye',
92
129
  editText: '编辑资料',
93
- editSize: 14,
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>
@@ -53,6 +53,7 @@ export interface LcbUserTopProps {
53
53
  photoSize?: number
54
54
  textSize?: number
55
55
  textColor?: string
56
+ bgStyle?: 1 | 2
56
57
  backgroundColor?: string
57
58
  backgroundImage?: string
58
59
  moreIcon?: boolean
@@ -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>
@@ -0,0 +1,11 @@
1
+ export interface LcbVideoProps {
2
+ // Define the component's prop types here
3
+ src?: string
4
+ loop?: boolean
5
+ muted?: boolean
6
+ autoplay?: boolean
7
+ showProgress?: boolean
8
+ marginTop?: number
9
+ marginBottom?: number
10
+ marginHorizontal?: number
11
+ }
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
 
@@ -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/font_4652744_o8lyw0d70s.woff2?t=1724428388776') format('woff2'),
5
- url('//at.alicdn.com/t/c/font_4652744_o8lyw0d70s.woff?t=1724428388776') format('woff'),
6
- url('//at.alicdn.com/t/c/font_4652744_o8lyw0d70s.ttf?t=1724428388776') format('truetype'),
7
- url('//at.alicdn.com/t/c/font_4652744_o8lyw0d70s.svg?t=1724428388776#iconfont') format('svg');
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
  }