@tplc/business 0.0.12 → 0.0.14

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 (32) hide show
  1. package/action.d.ts +6 -0
  2. package/components/lcb-banner/types.ts +1 -1
  3. package/components/lcb-banner-block/lcb-banner-block.vue +1 -1
  4. package/components/lcb-banner-block/types.ts +1 -1
  5. package/components/lcb-block/lcb-block.vue +18 -1
  6. package/components/lcb-block/types.ts +5 -0
  7. package/components/lcb-grid/lcb-grid.vue +1 -1
  8. package/components/lcb-grid/types.ts +1 -1
  9. package/components/lcb-home-search/lcb-home-search.vue +10 -0
  10. package/components/lcb-img-nav/types.ts +1 -1
  11. package/components/lcb-nav/lcb-nav.vue +23 -15
  12. package/components/lcb-swiper/lcb-swiper.vue +1 -1
  13. package/components/lcb-title/lcb-title.vue +1 -1
  14. package/components/lcb-user-order/lcb-user-order.vue +90 -0
  15. package/components/lcb-user-order/types.ts +59 -0
  16. package/components/lcb-user-top/lcb-user-top.vue +100 -0
  17. package/components/lcb-user-top/types.ts +69 -0
  18. package/global.d.ts +7 -11
  19. package/hooks/useTranslate.ts +13 -0
  20. package/iconfonts/index.css +156 -0
  21. package/index.ts +30 -0
  22. package/package.json +6 -3
  23. package/types/components/lcb-banner/types.d.ts +1 -1
  24. package/types/components/lcb-banner-block/types.d.ts +1 -1
  25. package/types/components/lcb-block/lcb-block.vue.d.ts +26 -3
  26. package/types/components/lcb-block/types.d.ts +5 -0
  27. package/types/components/lcb-grid/types.d.ts +1 -1
  28. package/types/components/lcb-img-nav/types.d.ts +1 -1
  29. package/types/components/lcb-user-order/lcb-user-order.vue.d.ts +62 -0
  30. package/types/components/lcb-user-order/types.d.ts +50 -0
  31. package/types/components/lcb-user-top/lcb-user-top.vue.d.ts +92 -0
  32. package/types/components/lcb-user-top/types.d.ts +24 -0
package/action.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export interface ActionView {
2
+ title: string
3
+ icon?: string
4
+ link: string
5
+ url?: string
6
+ }
@@ -1,4 +1,4 @@
1
- import { ActionView } from 'global'
1
+ import { ActionView } from 'action'
2
2
 
3
3
  export interface LcbBannerProps {
4
4
  items?: Partial<ActionView>[]
@@ -45,7 +45,7 @@ import { LcbBannerListProps } from './types'
45
45
  import { computed } from 'vue'
46
46
  import { LcbBannerProps } from '../lcb-banner/types'
47
47
  defineOptions({
48
- name: 'LcbBannerList',
48
+ name: 'LcbBannerBlock',
49
49
  options: {
50
50
  addGlobalClass: true,
51
51
  virtualHost: true,
@@ -1,5 +1,5 @@
1
1
  import { LcbBlockProps } from '../lcb-block/types'
2
- import { ActionView } from 'global'
2
+ import { ActionView } from 'action'
3
3
  export interface LcbBannerListProps extends LcbBlockProps {
4
4
  items?: Partial<ActionView>[]
5
5
  /** 风格 1.顶部title 2.底部title */
@@ -14,7 +14,12 @@
14
14
  borderRadius: transformValueUnit(radius),
15
15
  color,
16
16
  backgroundColor,
17
+ backgroundImage: backgroundImage ? `url('${backgroundImage}')` : '',
18
+ backgroundRepeat,
19
+ backgroundPosition,
20
+ backgroundSize,
17
21
  fontSize: transformValueUnit(fontSize),
22
+ boxShadow,
18
23
  }"
19
24
  :class="{
20
25
  card,
@@ -28,8 +33,20 @@
28
33
  <script setup lang="ts">
29
34
  import { LcbBlockProps } from './types'
30
35
  import { transformValueUnit } from '../../utils/transform'
36
+ defineOptions({
37
+ name: 'LcbBlock',
38
+ options: {
39
+ addGlobalClass: true,
40
+ virtualHost: true,
41
+ styleIsolation: 'shared',
42
+ },
43
+ })
31
44
 
32
- withDefaults(defineProps<LcbBlockProps>(), {})
45
+ withDefaults(defineProps<LcbBlockProps>(), {
46
+ backgroundSize: 'cover',
47
+ backgroundRepeat: 'no-repeat',
48
+ backgroundPosition: `top center`,
49
+ } as LcbBlockProps)
33
50
  </script>
34
51
  <style lang="scss" scoped>
35
52
  .card {
@@ -2,6 +2,7 @@ export interface LcbBlockProps {
2
2
  marginTop?: number
3
3
  marginBottom?: number
4
4
  backgroundColor?: string
5
+ backgroundImage?: string
5
6
  paddingTop?: number
6
7
  paddingBottom?: number
7
8
  color?: string
@@ -14,4 +15,8 @@ export interface LcbBlockProps {
14
15
  paddingRight?: number
15
16
  marginLeft?: number
16
17
  marginRight?: number
18
+ backgroundRepeat?: 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat'
19
+ backgroundSize?: string
20
+ backgroundPosition?: string
21
+ boxShadow?: string
17
22
  }
@@ -28,7 +28,7 @@
28
28
  <script setup lang="ts">
29
29
  import { LcbGridProps } from './types'
30
30
  defineOptions({
31
- name: 'Lcbtitle',
31
+ name: 'LcbGrid',
32
32
  options: {
33
33
  addGlobalClass: true,
34
34
  virtualHost: true,
@@ -1,5 +1,5 @@
1
1
  import { LcbBlockProps } from '../lcb-block/types'
2
- import { ActionView } from 'global'
2
+ import { ActionView } from 'action'
3
3
  export interface LcbGridProps extends LcbBlockProps {
4
4
  items?: Partial<ActionView>[]
5
5
  height?: number
@@ -48,6 +48,16 @@
48
48
 
49
49
  <script setup lang="ts">
50
50
  import { ref } from 'vue'
51
+
52
+ defineOptions({
53
+ name: 'LcbHomeSearch',
54
+ options: {
55
+ addGlobalClass: true,
56
+ virtualHost: true,
57
+ styleIsolation: 'shared',
58
+ },
59
+ })
60
+
51
61
  defineProps<{ marginTop?: number }>()
52
62
  const tabs = ['全部', '酒店', '民宿']
53
63
  const current = ref(0)
@@ -1,4 +1,4 @@
1
- import { ActionView } from 'global'
1
+ import { ActionView } from 'action'
2
2
 
3
3
  export interface LcbImgNavProps {
4
4
  /** 模式 1.单行 2.多行 */
@@ -22,10 +22,15 @@
22
22
  }"
23
23
  />
24
24
  <!-- 左边布局 -->
25
- <view class="navbar-left">
25
+ <view
26
+ class="navbar-left z-1"
27
+ :style="{
28
+ paddingTop,
29
+ }"
30
+ >
26
31
  <!-- 返回按钮 -->
27
32
  <view
28
- v-if="styleGroup === 3"
33
+ v-if="styleGroup === 3 && capsuleList.length"
29
34
  class="navbar-capsule flex justify-center items-center"
30
35
  :class="[capsuleMode]"
31
36
  >
@@ -36,11 +41,11 @@
36
41
  :key="item.icon"
37
42
  :class="[capsuleList.length === 1 ? 'px-2' : 'px-2.5']"
38
43
  >
39
- <wd-icon :name="item.icon" size="20" />
44
+ <wd-icon class-prefix="iconfont" :name="item.icon" size="20" />
40
45
  </view>
41
46
  </view>
42
47
  <template v-else-if="back">
43
- <wd-icon name="arrow-left" custom-class="arrow-left" />
48
+ <wd-icon class-prefix="iconfont" name="dingdanliebiao" @click="toBack" />
44
49
  </template>
45
50
  <view class="ml-2" v-if="titleLocation === 'left'">
46
51
  <Search
@@ -55,7 +60,13 @@
55
60
  </view>
56
61
  </view>
57
62
  <!-- 中间布局 -->
58
- <view class="navbar-center" v-if="topStyle === 1">
63
+ <view
64
+ class="navbar-center"
65
+ v-if="topStyle === 1"
66
+ :style="{
67
+ paddingTop,
68
+ }"
69
+ >
59
70
  <Search v-if="styleGroup === 2 && titleLocation === 'center'" :back="back" />
60
71
  <Title v-bind="titleProps" v-else-if="styleGroup === 2 || titleLocation === 'center'" />
61
72
  </view>
@@ -135,14 +146,7 @@ const capsuleList = computed(() => {
135
146
  })
136
147
  }
137
148
 
138
- return [
139
- ...list,
140
- {
141
- icon: 'home',
142
- action: 'home',
143
- },
144
- ...(props.capsules || []),
145
- ] as ICapsule[]
149
+ return [...list, ...(props.capsules || [])] as ICapsule[]
146
150
  })
147
151
  const onCapsule = (item: ICapsule) => {
148
152
  switch (item.action) {
@@ -152,7 +156,7 @@ const onCapsule = (item: ICapsule) => {
152
156
  url: item.linkUrl,
153
157
  })
154
158
  } else {
155
- uni.navigateBack()
159
+ toBack()
156
160
  }
157
161
  break
158
162
  case 'home':
@@ -163,6 +167,10 @@ const onCapsule = (item: ICapsule) => {
163
167
  }
164
168
  }
165
169
 
170
+ const toBack = () => {
171
+ uni.navigateBack()
172
+ }
173
+
166
174
  onPageScroll(({ scrollTop: top }) => {
167
175
  if (props.immersionMode === 1) {
168
176
  scrollTop.value = top
@@ -232,7 +240,7 @@ onPageScroll(({ scrollTop: top }) => {
232
240
  }
233
241
  }
234
242
 
235
- > :last-child {
243
+ > view:last-child {
236
244
  &:after {
237
245
  display: none;
238
246
  }
@@ -22,7 +22,7 @@ import { ref } from 'vue'
22
22
 
23
23
  // import { computed } from 'vue'
24
24
  defineOptions({
25
- name: 'Swiper',
25
+ name: 'testSwiper',
26
26
  options: {
27
27
  addGlobalClass: true,
28
28
  virtualHost: true,
@@ -20,7 +20,7 @@
20
20
  <script setup lang="ts">
21
21
  import { LcbTitleProps } from './types'
22
22
  defineOptions({
23
- name: 'Lcbtitle',
23
+ name: 'LcbTitle',
24
24
  options: {
25
25
  addGlobalClass: true,
26
26
  virtualHost: true,
@@ -0,0 +1,90 @@
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="{
30
+ height: transformValueUnit(iconSize),
31
+ 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" />
36
+ </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
+ </view>
43
+ </lcb-block>
44
+ </template>
45
+
46
+ <script setup lang="ts">
47
+ import { computed } from 'vue';
48
+ import { LcbUserOrderProps, IIconList } from './types'
49
+ import { transformValueUnit } from '../../utils/transform'
50
+ defineOptions({
51
+ name: 'LcbUserOrder',
52
+ options: {
53
+ addGlobalClass: true,
54
+ virtualHost: true,
55
+ styleIsolation: 'shared',
56
+ },
57
+ })
58
+ const onClick = (item: any) => {
59
+
60
+ }
61
+ const props = withDefaults(defineProps<LcbUserOrderProps>(), {
62
+ paddingVertical: 0,
63
+ paddingHorizontal: 0,
64
+ blurSize: 5,
65
+ })
66
+ const statusNumbers = ['0', '1', '2', '3', '5', ''];
67
+ const iconList = computed(() => {
68
+ const list: IIconList[] = []
69
+ for (let i = 0; i < statusNumbers.length; i++) {
70
+ const item = statusNumbers[i];
71
+ const isShow = props['iconShow' + item];
72
+ console.log('isShow', isShow)
73
+ if (isShow !== false) {
74
+ 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
+ });
81
+ }
82
+ }
83
+ console.log('list', list)
84
+ return list as IIconList[]
85
+ })
86
+ </script>
87
+
88
+ <style lang="scss" scoped>
89
+
90
+ </style>
@@ -0,0 +1,59 @@
1
+ export interface IIconList {
2
+ id: number,
3
+ iconType: number
4
+ iconTitle?: string,
5
+ iconName?: string
6
+ iconUpload?: string
7
+ }
8
+
9
+ export interface LcbUserOrderProps {
10
+ // Define the component's prop types here
11
+ marginTop?: number
12
+ marginBottom?: number
13
+ marginHorizontal?: number
14
+ // marginLeft?: number
15
+ // marginRight?: number
16
+ // paddingTop?: number
17
+ // paddingBottom?: number
18
+ // paddingLeft?: number
19
+ // paddingRight?: number
20
+ paddingVertical?: number
21
+ paddingHorizontal?: number
22
+ backgroundColor?: string
23
+ radius?: number
24
+ boxShadow?: string
25
+ iconSize?: number
26
+ iconColor?: string
27
+ textSize?: number
28
+ textColor?: string
29
+ shadowColor?: string
30
+ shadowSize?: number
31
+ blurSize?: number
32
+
33
+ iconTitle0?: string
34
+ iconType0?: 0 | 1
35
+ iconName0?: string
36
+ iconUpload0?: string
37
+ iconTitle1?: string
38
+ iconType1?: 0 | 1
39
+ iconName1?: string
40
+ iconUpload1?: string
41
+ iconTitle2?: string
42
+ iconType2?: 0 | 1
43
+ iconName2?: string
44
+ iconUpload2?: string
45
+ iconShow2?: boolean
46
+ iconTitle3?: string
47
+ iconType3?: 0 | 1
48
+ iconName3?: string
49
+ iconUpload3?: string
50
+ iconShow3?: boolean
51
+ iconTitle5?: string
52
+ iconType5?: 0 | 1
53
+ iconName5?: string
54
+ iconUpload5?: string
55
+ iconTitle?: string
56
+ iconType?: 0 | 1
57
+ iconName?: string
58
+ iconUpload?: string
59
+ }
@@ -0,0 +1,100 @@
1
+ <template>
2
+ <lcb-block v-bind="{
3
+ paddingTop,
4
+ paddingBottom,
5
+ paddingLeft,
6
+ paddingRight,
7
+ backgroundColor,
8
+ backgroundImage,
9
+ }">
10
+ <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" />
17
+ <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="{
24
+ 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
+ }">
31
+ <view>{{ editText }}</view>
32
+ </view>
33
+ </view>
34
+ </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),
45
+ color: textColor,
46
+ }" />
47
+ </view>
48
+ </view>
49
+ <view v-if="valuesCard == true || coupons == true || presales == true"
50
+ class="flex flex-justify-between text-center mt-15px" :style="{
51
+ color: textColor,
52
+ }">
53
+ <View v-if="valuesCard == true" class="">
54
+ <view class="text-22px font-bold">0</view>
55
+ <view class="text-12px optName">储值卡</view>
56
+ </View>
57
+ <View v-if="coupons == true" class="">
58
+ <view class="text-22px font-bold">0</view>
59
+ <view class="text-12px optName">优惠券</view>
60
+ </View>
61
+ <View v-if="presales == true" class="">
62
+ <view class="text-22px font-bold">0</view>
63
+ <view class="text-12px optName">预售券</view>
64
+ </View>
65
+ </view>
66
+ </lcb-block>
67
+ </template>
68
+
69
+ <script setup lang="ts">
70
+ import { LcbUserTopProps } from './types'
71
+ import { transformValueUnit } from '../../utils/transform'
72
+ defineOptions({
73
+ name: 'LcbUserTop',
74
+ options: {
75
+ addGlobalClass: true,
76
+ virtualHost: true,
77
+ styleIsolation: 'shared',
78
+ },
79
+ })
80
+ withDefaults(defineProps<LcbUserTopProps>(), {
81
+ photoSize: 30,
82
+ paddingLeft: 30,
83
+ paddingRight: 30,
84
+ paddingTop: 30,
85
+ paddingBottom: 30,
86
+ photoRound: false,
87
+ textSize: 22,
88
+ textColor: '#333',
89
+ moreIcon: true,
90
+ iconType: 0,
91
+ iconName: 'xiayiye',
92
+ editText: '编辑资料',
93
+ editSize: 14,
94
+ })
95
+ </script>
96
+ <style lang="scss" scoped>
97
+ .optName{
98
+ opacity: 0.7;
99
+ }
100
+ </style>
@@ -0,0 +1,69 @@
1
+ import { ActionView } from 'action'
2
+
3
+ export interface LcbUserTopProps {
4
+ // // items?: Partial<ActionView>[]
5
+ // // imageWidth?: number
6
+ // autoplay?: boolean
7
+ // /** 滚动方向 默认 horizontal */
8
+ // direction?: 'horizontal' | 'vertical'
9
+ // /** 同时显示的滑块数量 默认 1 */
10
+ // displayMultipleItems?: number
11
+ // /** 滑动时长 300ms */
12
+ // duration?: number
13
+ // /** 轮播图高度 默认192 */
14
+ // height?: number
15
+ // /** 轮播间隔时间 5000ms */
16
+ // interval?: number
17
+ // /** 是否循环播放 默认 true */
18
+ // loop?: boolean
19
+ // /** 后边间距 */
20
+ // nextMargin?: number
21
+ // /** 前边间距 */
22
+ // previousMargin?: number
23
+ // /** 指示器位置 bottom */
24
+ // indicatorPosition?:
25
+ // | 'left'
26
+ // | 'top-left'
27
+ // | 'top'
28
+ // | 'top-right'
29
+ // | 'bottom-left'
30
+ // | 'bottom'
31
+ // | 'bottom-right'
32
+ // | 'right'
33
+ // /** 边距是否应用到第一个、最后一个元素 */
34
+ // snapToEdge?: boolean
35
+ // // 图片之间距离
36
+ // itemPadding?: number
37
+ // /** 图片圆角 */
38
+ // imageRadius?: number
39
+ // // 整个banner圆角
40
+ // radius?: number
41
+ // customPrevImageClass?: string
42
+ // customNextImageClass?: string
43
+ // indicator?: 'dots' | 'dots-bar' | 'fraction'
44
+ // /** 滑动样式 1平面 2立体 */
45
+ // slidingStyle?: 1 | 2
46
+
47
+ paddingTop?: number
48
+ paddingBottom?: number
49
+ paddingLeft?: number
50
+ paddingRight?: number
51
+ photoUrl?: string
52
+ photoRound?: boolean
53
+ photoSize?: number
54
+ textSize?: number
55
+ textColor?: string
56
+ backgroundColor?: string
57
+ backgroundImage?: string
58
+ moreIcon?: boolean
59
+ iconName?: string
60
+ iconUpload?: string
61
+ iconType?: 0 | 1
62
+ editBtn?: boolean
63
+ editText?: string
64
+ editBorder?: boolean
65
+ editSize?: number
66
+ valuesCard?: boolean
67
+ coupons?: boolean
68
+ presales?: boolean
69
+ }
package/global.d.ts CHANGED
@@ -1,22 +1,18 @@
1
1
  declare module 'vue' {
2
2
  // Helper for Volar
3
3
  export interface GlobalComponents {
4
- 'lcb-img-nav': (typeof import('./types/components/lcb-img-nav/lcb-img-nav.vue'))['default']
5
- 'lcb-nav': (typeof import('./types/components/lcb-nav/lcb-nav.vue'))['default']
6
4
  'lcb-banner': (typeof import('./types/components/lcb-banner/lcb-banner.vue'))['default']
7
5
  'lcb-banner-block': (typeof import('./types/components/lcb-banner-block/lcb-banner-block.vue'))['default']
8
- 'lcb-title': (typeof import('./types/components/lcb-title/lcb-title.vue'))['default']
6
+ 'lcb-block': (typeof import('./types/components/lcb-block/lcb-block.vue'))['default']
9
7
  'lcb-grid': (typeof import('./types/components/lcb-grid/lcb-grid.vue'))['default']
10
8
  'lcb-home-search': (typeof import('./types/components/lcb-home-search/lcb-home-search.vue'))['default']
11
- 'lcb-block': (typeof import('./types/components/lcb-block/lcb-block.vue'))['default']
9
+ 'lcb-img-nav': (typeof import('./types/components/lcb-img-nav/lcb-img-nav.vue'))['default']
10
+ 'lcb-nav': (typeof import('./types/components/lcb-nav/lcb-nav.vue'))['default']
11
+ 'lcb-swiper': (typeof import('./types/components/lcb-swiper/lcb-swiper.vue'))['default']
12
+ 'lcb-title': (typeof import('./types/components/lcb-title/lcb-title.vue'))['default']
13
+ 'lcb-user-order': (typeof import('./types/components/lcb-user-order/lcb-user-order.vue'))['default']
14
+ 'lcb-user-top': (typeof import('./types/components/lcb-user-top/lcb-user-top.vue'))['default']
12
15
  }
13
16
  }
14
17
 
15
18
  export {}
16
-
17
- export interface ActionView {
18
- title: string
19
- icon?: string
20
- link: string
21
- url?: string
22
- }
@@ -0,0 +1,13 @@
1
+ import { ref } from 'vue'
2
+ const useTranslate = () => {
3
+ const lang = ref('')
4
+ const translate = (text: string) => {
5
+ lang.value = text
6
+ // 刷新当前页面
7
+ // 调用当前页面onLoad
8
+ }
9
+ return {
10
+ translate,
11
+ }
12
+ }
13
+ export default useTranslate
@@ -0,0 +1,156 @@
1
+ @font-face {
2
+ font-family: 'iconfont'; /* Project id 4652744 */
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');
8
+ }
9
+
10
+ .iconfont {
11
+ font-family: 'iconfont' !important;
12
+ font-size: 16px;
13
+ font-style: normal;
14
+ -webkit-font-smoothing: antialiased;
15
+ -moz-osx-font-smoothing: grayscale;
16
+ }
17
+
18
+ .iconfont-dingdanliebiao:before {
19
+ content: '\e662';
20
+ }
21
+
22
+ .iconfont-minsuliebiao:before {
23
+ content: '\e663';
24
+ }
25
+
26
+ .iconfont-minsufaxian:before {
27
+ content: '\e664';
28
+ }
29
+
30
+ .iconfont-xiaoxi:before {
31
+ content: '\e665';
32
+ }
33
+
34
+ .iconfont-tingshi:before {
35
+ content: '\e653';
36
+ }
37
+
38
+ .iconfont-renshu:before {
39
+ content: '\e654';
40
+ }
41
+
42
+ .iconfont-linyujian:before {
43
+ content: '\e655';
44
+ }
45
+
46
+ .iconfont-xiayiye:before {
47
+ content: '\e656';
48
+ }
49
+
50
+ .iconfont-youleyuan:before {
51
+ content: '\e657';
52
+ }
53
+
54
+ .iconfont-yunxu:before {
55
+ content: '\e658';
56
+ }
57
+
58
+ .iconfont-paizhao:before {
59
+ content: '\e659';
60
+ }
61
+
62
+ .iconfont-shangchuanzhaopian:before {
63
+ content: '\e65a';
64
+ }
65
+
66
+ .iconfont-shangchuanshipin:before {
67
+ content: '\e65b';
68
+ }
69
+
70
+ .iconfont-biaoqing:before {
71
+ content: '\e65c';
72
+ }
73
+
74
+ .iconfont-yuyin:before {
75
+ content: '\e65d';
76
+ }
77
+
78
+ .iconfont-tianjia:before {
79
+ content: '\e65e';
80
+ }
81
+
82
+ .iconfont-fuwubaozhang:before {
83
+ content: '\e65f';
84
+ }
85
+
86
+ .iconfont-xiala:before {
87
+ content: '\e660';
88
+ }
89
+
90
+ .iconfont-tijianyi:before {
91
+ content: '\e661';
92
+ }
93
+
94
+ .iconfont-danrenchuang:before {
95
+ content: '\e643';
96
+ }
97
+
98
+ .iconfont-buyunxu:before {
99
+ content: '\e644';
100
+ }
101
+
102
+ .iconfont-fapiaoshuoming:before {
103
+ content: '\e645';
104
+ }
105
+
106
+ .iconfont-fenxiang:before {
107
+ content: '\e646';
108
+ }
109
+
110
+ .iconfont-kongtiaofang:before {
111
+ content: '\e647';
112
+ }
113
+
114
+ .iconfont-rulishijian:before {
115
+ content: '\e648';
116
+ }
117
+
118
+ .iconfont-pingmi:before {
119
+ content: '\e649';
120
+ }
121
+
122
+ .iconfont-ruzhuxuzhi:before {
123
+ content: '\e64a';
124
+ }
125
+
126
+ .iconfont-tatami:before {
127
+ content: '\e64b';
128
+ }
129
+
130
+ .iconfont-dachuang:before {
131
+ content: '\e64c';
132
+ }
133
+
134
+ .iconfont-mimasuo:before {
135
+ content: '\e64d';
136
+ }
137
+
138
+ .iconfont-quxiaoguize:before {
139
+ content: '\e64e';
140
+ }
141
+
142
+ .iconfont-tingchechang:before {
143
+ content: '\e64f';
144
+ }
145
+
146
+ .iconfont-shuoming:before {
147
+ content: '\e650';
148
+ }
149
+
150
+ .iconfont-xiyifang:before {
151
+ content: '\e651';
152
+ }
153
+
154
+ .iconfont-yajinshuoming:before {
155
+ content: '\e652';
156
+ }
package/index.ts CHANGED
@@ -0,0 +1,30 @@
1
+ // #ifdef H5
2
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
3
+ // @ts-ignore
4
+ const importFn = import.meta.glob('./components/lcb-*/lcb-*.vue', { eager: true })
5
+ const components: {
6
+ name: string
7
+ }[] = []
8
+
9
+ for (const key in importFn) {
10
+ const component = importFn[key].default
11
+ if (component.name) {
12
+ component.install = function (Vue) {
13
+ Vue.component(component.name, component)
14
+ }
15
+ components.push(component)
16
+ }
17
+ }
18
+ // #endif
19
+
20
+ const install = (Vue) => {
21
+ // #ifdef H5
22
+ components.forEach(function (component) {
23
+ Vue.component(component.name, component)
24
+ })
25
+ // #endif
26
+ }
27
+
28
+ export default {
29
+ install,
30
+ }
package/package.json CHANGED
@@ -1,16 +1,17 @@
1
1
  {
2
2
  "name": "@tplc/business",
3
- "version": "0.0.12",
3
+ "version": "0.0.14",
4
4
  "keywords": [
5
5
  "业务组件"
6
6
  ],
7
+ "type": "module",
7
8
  "publishConfig": {
8
9
  "access": "public",
9
10
  "registry": "https://registry.npmjs.org/"
10
11
  },
11
12
  "peerDependencies": {
12
13
  "vue": ">=3.2.47",
13
- "@tplc/wot": "0.1.3"
14
+ "@tplc/wot": "0.1.4"
14
15
  },
15
16
  "engines": {
16
17
  "node": ">=18",
@@ -21,6 +22,8 @@
21
22
  "dts": "rm -rf types && vue-tsc --project ./tsconfig.dts.json && pnpm prettier --write types",
22
23
  "release-major": "standard-version --release-as major ",
23
24
  "release-minor": "standard-version --release-as minor",
24
- "release-patch": "standard-version --release-as patch "
25
+ "release-patch": "standard-version --release-as patch ",
26
+ "generateComponent": "node ./scripts/createComponent.mjs",
27
+ "generateGlobalDts": "node ./scripts/generateGlobalDts.mjs"
25
28
  }
26
29
  }
@@ -1,4 +1,4 @@
1
- import { ActionView } from 'global'
1
+ import { ActionView } from 'action'
2
2
  export interface LcbBannerProps {
3
3
  items?: Partial<ActionView>[]
4
4
  imageWidth?: number
@@ -1,5 +1,5 @@
1
1
  import { LcbBlockProps } from '../lcb-block/types'
2
- import { ActionView } from 'global'
2
+ import { ActionView } from 'action'
3
3
  export interface LcbBannerListProps extends LcbBlockProps {
4
4
  items?: Partial<ActionView>[]
5
5
  /** 风格 1.顶部title 2.底部title */
@@ -3,7 +3,7 @@ declare function __VLS_template(): {
3
3
  default?(_: {}): any
4
4
  }
5
5
  declare const __VLS_component: import('vue').DefineComponent<
6
- __VLS_WithDefaults<__VLS_TypePropsToOption<LcbBlockProps>, {}>,
6
+ __VLS_WithDefaults<__VLS_TypePropsToOption<LcbBlockProps>, LcbBlockProps>,
7
7
  {},
8
8
  unknown,
9
9
  {},
@@ -14,9 +14,32 @@ declare const __VLS_component: import('vue').DefineComponent<
14
14
  string,
15
15
  import('vue').PublicProps,
16
16
  Readonly<
17
- import('vue').ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<LcbBlockProps>, {}>>
17
+ import('vue').ExtractPropTypes<
18
+ __VLS_WithDefaults<__VLS_TypePropsToOption<LcbBlockProps>, LcbBlockProps>
19
+ >
18
20
  >,
19
- {},
21
+ {
22
+ radius: number
23
+ marginTop: number
24
+ marginBottom: number
25
+ bold: boolean
26
+ customClass: string
27
+ backgroundColor: string
28
+ backgroundImage: string
29
+ paddingTop: number
30
+ paddingBottom: number
31
+ color: string
32
+ fontSize: number
33
+ card: boolean
34
+ paddingLeft: number
35
+ paddingRight: number
36
+ marginLeft: number
37
+ marginRight: number
38
+ backgroundRepeat: 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat'
39
+ backgroundSize: string
40
+ backgroundPosition: string
41
+ boxShadow: string
42
+ },
20
43
  {}
21
44
  >
22
45
  declare const _default: __VLS_WithTemplateSlots<
@@ -2,6 +2,7 @@ export interface LcbBlockProps {
2
2
  marginTop?: number
3
3
  marginBottom?: number
4
4
  backgroundColor?: string
5
+ backgroundImage?: string
5
6
  paddingTop?: number
6
7
  paddingBottom?: number
7
8
  color?: string
@@ -14,4 +15,8 @@ export interface LcbBlockProps {
14
15
  paddingRight?: number
15
16
  marginLeft?: number
16
17
  marginRight?: number
18
+ backgroundRepeat?: 'repeat' | 'repeat-x' | 'repeat-y' | 'no-repeat'
19
+ backgroundSize?: string
20
+ backgroundPosition?: string
21
+ boxShadow?: string
17
22
  }
@@ -1,5 +1,5 @@
1
1
  import { LcbBlockProps } from '../lcb-block/types'
2
- import { ActionView } from 'global'
2
+ import { ActionView } from 'action'
3
3
  export interface LcbGridProps extends LcbBlockProps {
4
4
  items?: Partial<ActionView>[]
5
5
  height?: number
@@ -1,4 +1,4 @@
1
- import { ActionView } from 'global'
1
+ import { ActionView } from 'action'
2
2
  export interface LcbImgNavProps {
3
3
  /** 模式 1.单行 2.多行 */
4
4
  styleGroup?: 1 | 2
@@ -0,0 +1,62 @@
1
+ import { LcbUserOrderProps } from './types'
2
+ declare const _default: import('vue').DefineComponent<
3
+ __VLS_WithDefaults<
4
+ __VLS_TypePropsToOption<LcbUserOrderProps>,
5
+ {
6
+ paddingVertical: number
7
+ paddingHorizontal: number
8
+ blurSize: number
9
+ }
10
+ >,
11
+ {},
12
+ unknown,
13
+ {},
14
+ {},
15
+ import('vue').ComponentOptionsMixin,
16
+ import('vue').ComponentOptionsMixin,
17
+ {},
18
+ string,
19
+ import('vue').PublicProps,
20
+ Readonly<
21
+ import('vue').ExtractPropTypes<
22
+ __VLS_WithDefaults<
23
+ __VLS_TypePropsToOption<LcbUserOrderProps>,
24
+ {
25
+ paddingVertical: number
26
+ paddingHorizontal: number
27
+ blurSize: number
28
+ }
29
+ >
30
+ >
31
+ >,
32
+ {
33
+ paddingVertical: number
34
+ paddingHorizontal: number
35
+ blurSize: number
36
+ },
37
+ {}
38
+ >
39
+ export default _default
40
+ type __VLS_WithDefaults<P, D> = {
41
+ [K in keyof Pick<P, keyof P>]: K extends keyof D
42
+ ? __VLS_Prettify<
43
+ P[K] & {
44
+ default: D[K]
45
+ }
46
+ >
47
+ : P[K]
48
+ }
49
+ type __VLS_Prettify<T> = {
50
+ [K in keyof T]: T[K]
51
+ } & {}
52
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T
53
+ type __VLS_TypePropsToOption<T> = {
54
+ [K in keyof T]-?: {} extends Pick<T, K>
55
+ ? {
56
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>
57
+ }
58
+ : {
59
+ type: import('vue').PropType<T[K]>
60
+ required: true
61
+ }
62
+ }
@@ -0,0 +1,50 @@
1
+ export interface IIconList {
2
+ id: number
3
+ iconType: number
4
+ iconTitle?: string
5
+ iconName?: string
6
+ iconUpload?: string
7
+ }
8
+ export interface LcbUserOrderProps {
9
+ marginTop?: number
10
+ marginBottom?: number
11
+ marginHorizontal?: number
12
+ paddingVertical?: number
13
+ paddingHorizontal?: number
14
+ backgroundColor?: string
15
+ radius?: number
16
+ boxShadow?: string
17
+ iconSize?: number
18
+ iconColor?: string
19
+ textSize?: number
20
+ textColor?: string
21
+ shadowColor?: string
22
+ shadowSize?: number
23
+ blurSize?: number
24
+ iconTitle0?: string
25
+ iconType0?: 0 | 1
26
+ iconName0?: string
27
+ iconUpload0?: string
28
+ iconTitle1?: string
29
+ iconType1?: 0 | 1
30
+ iconName1?: string
31
+ iconUpload1?: string
32
+ iconTitle2?: string
33
+ iconType2?: 0 | 1
34
+ iconName2?: string
35
+ iconUpload2?: string
36
+ iconShow2?: boolean
37
+ iconTitle3?: string
38
+ iconType3?: 0 | 1
39
+ iconName3?: string
40
+ iconUpload3?: string
41
+ iconShow3?: boolean
42
+ iconTitle5?: string
43
+ iconType5?: 0 | 1
44
+ iconName5?: string
45
+ iconUpload5?: string
46
+ iconTitle?: string
47
+ iconType?: 0 | 1
48
+ iconName?: string
49
+ iconUpload?: string
50
+ }
@@ -0,0 +1,92 @@
1
+ import { LcbUserTopProps } from './types'
2
+ declare const _default: import('vue').DefineComponent<
3
+ __VLS_WithDefaults<
4
+ __VLS_TypePropsToOption<LcbUserTopProps>,
5
+ {
6
+ photoSize: number
7
+ paddingLeft: number
8
+ paddingRight: number
9
+ paddingTop: number
10
+ paddingBottom: number
11
+ photoRound: boolean
12
+ textSize: number
13
+ textColor: string
14
+ moreIcon: boolean
15
+ iconType: number
16
+ iconName: string
17
+ editText: string
18
+ editSize: number
19
+ }
20
+ >,
21
+ {},
22
+ unknown,
23
+ {},
24
+ {},
25
+ import('vue').ComponentOptionsMixin,
26
+ import('vue').ComponentOptionsMixin,
27
+ {},
28
+ string,
29
+ import('vue').PublicProps,
30
+ Readonly<
31
+ import('vue').ExtractPropTypes<
32
+ __VLS_WithDefaults<
33
+ __VLS_TypePropsToOption<LcbUserTopProps>,
34
+ {
35
+ photoSize: number
36
+ paddingLeft: number
37
+ paddingRight: number
38
+ paddingTop: number
39
+ paddingBottom: number
40
+ photoRound: boolean
41
+ textSize: number
42
+ textColor: string
43
+ moreIcon: boolean
44
+ iconType: number
45
+ iconName: string
46
+ editText: string
47
+ editSize: number
48
+ }
49
+ >
50
+ >
51
+ >,
52
+ {
53
+ paddingTop: number
54
+ paddingBottom: number
55
+ paddingLeft: number
56
+ paddingRight: number
57
+ textColor: string
58
+ iconType: 0 | 1
59
+ textSize: number
60
+ iconName: string
61
+ photoRound: boolean
62
+ photoSize: number
63
+ moreIcon: boolean
64
+ editText: string
65
+ editSize: number
66
+ },
67
+ {}
68
+ >
69
+ export default _default
70
+ type __VLS_WithDefaults<P, D> = {
71
+ [K in keyof Pick<P, keyof P>]: K extends keyof D
72
+ ? __VLS_Prettify<
73
+ P[K] & {
74
+ default: D[K]
75
+ }
76
+ >
77
+ : P[K]
78
+ }
79
+ type __VLS_Prettify<T> = {
80
+ [K in keyof T]: T[K]
81
+ } & {}
82
+ type __VLS_NonUndefinedable<T> = T extends undefined ? never : T
83
+ type __VLS_TypePropsToOption<T> = {
84
+ [K in keyof T]-?: {} extends Pick<T, K>
85
+ ? {
86
+ type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>
87
+ }
88
+ : {
89
+ type: import('vue').PropType<T[K]>
90
+ required: true
91
+ }
92
+ }
@@ -0,0 +1,24 @@
1
+ export interface LcbUserTopProps {
2
+ paddingTop?: number
3
+ paddingBottom?: number
4
+ paddingLeft?: number
5
+ paddingRight?: number
6
+ photoUrl?: string
7
+ photoRound?: boolean
8
+ photoSize?: number
9
+ textSize?: number
10
+ textColor?: string
11
+ backgroundColor?: string
12
+ backgroundImage?: string
13
+ moreIcon?: boolean
14
+ iconName?: string
15
+ iconUpload?: string
16
+ iconType?: 0 | 1
17
+ editBtn?: boolean
18
+ editText?: string
19
+ editBorder?: boolean
20
+ editSize?: number
21
+ valuesCard?: boolean
22
+ coupons?: boolean
23
+ presales?: boolean
24
+ }