@tplc/business 0.2.65 → 0.2.67
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 +15 -0
- package/components/lcb-list/lcb-list.vue +8 -14
- package/components/lcb-list/types.ts +8 -1
- package/components/lcb-product/lcb-product.vue +41 -22
- package/components/lcb-product/types.ts +5 -3
- package/components/lcb-product-item/components/ItemValue.vue +11 -5
- package/components/lcb-product-item/lcb-product-item.vue +17 -59
- package/components/lcb-product-item/types.ts +1 -1
- package/package.json +1 -1
- package/types/components/lcb-list/lcb-list.vue.d.ts +8 -1
- package/types/components/lcb-list/types.d.ts +8 -1
- package/types/components/lcb-product/lcb-product.vue.d.ts +5 -3
- package/types/components/lcb-product/types.d.ts +5 -3
- package/types/components/lcb-product-item/lcb-product-item.vue.d.ts +4 -1
- package/types/components/lcb-product-item/types.d.ts +1 -0
- package/types/components/lcb-list/components/FilterList/mockData.d.ts +0 -70
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
### [0.2.67](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/compare/v0.2.66...v0.2.67) (2025-01-05)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### ✨ Features | 新功能
|
|
9
|
+
|
|
10
|
+
* 新增配置 ([3f75c1f](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/3f75c1f75f1f86d1f5049700bef7af0b1d1185cd))
|
|
11
|
+
|
|
12
|
+
### [0.2.66](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/compare/v0.2.65...v0.2.66) (2025-01-05)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
### ✨ Features | 新功能
|
|
16
|
+
|
|
17
|
+
* slider 改造 ([d472ee7](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/d472ee7a24b8539ec93defd27ab94cef14938d1f))
|
|
18
|
+
* 新增切换模式 ([a8849df](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/commit/a8849df2d7ee55127f0b40c2c47f9e5c75cccab0))
|
|
19
|
+
|
|
5
20
|
### [0.2.65](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/compare/v0.1.52...v0.2.65) (2025-01-05)
|
|
6
21
|
|
|
7
22
|
### [0.2.64](http://gitlab888.30jia.com.cn/bhBank/zero-code-pro/compare/v0.2.63...v0.2.64) (2025-01-05)
|
|
@@ -25,41 +25,33 @@
|
|
|
25
25
|
</template>
|
|
26
26
|
|
|
27
27
|
<FilterList
|
|
28
|
-
v-bind="{ ...info.listInfo, listType, ...
|
|
28
|
+
v-bind="{ ...info.listInfo, listType, ...props }"
|
|
29
29
|
:autoHeight="!isSticky"
|
|
30
30
|
v-model="items"
|
|
31
31
|
v-if="mode === 'list'"
|
|
32
32
|
>
|
|
33
33
|
<slot name="list" :items="items" v-if="$slots.list" />
|
|
34
34
|
<template v-else>
|
|
35
|
-
<lcb-product
|
|
36
|
-
v-bind="{ ...attrs, form }"
|
|
37
|
-
:listType="listType"
|
|
38
|
-
:items="items"
|
|
39
|
-
v-if="$slots.item"
|
|
40
|
-
>
|
|
35
|
+
<lcb-product v-bind="{ ...$props, form }" :items="items" v-if="$slots.item">
|
|
41
36
|
<template #item="{ item }">
|
|
42
37
|
<slot name="item" :item="item"></slot>
|
|
43
38
|
</template>
|
|
44
39
|
</lcb-product>
|
|
45
|
-
<lcb-product v-bind="{
|
|
40
|
+
<lcb-product v-bind="{ ...$props, form }" :items="items" v-else />
|
|
46
41
|
</template>
|
|
47
42
|
</FilterList>
|
|
48
|
-
<lcb-map v-else-if="mode === 'map'" v-bind="{ ...info.listInfo,
|
|
43
|
+
<lcb-map v-else-if="mode === 'map'" v-bind="{ ...info.listInfo, ...$props }" />
|
|
49
44
|
</template>
|
|
50
|
-
<!-- <lcb-product v-bind="{ ...attrs }" :listType="listType" :items="mockData.data" v-else /> -->
|
|
51
45
|
</template>
|
|
52
46
|
|
|
53
47
|
<script setup lang="ts">
|
|
54
|
-
import { inject, Ref, ref,
|
|
48
|
+
import { inject, Ref, ref, watch } from 'vue'
|
|
55
49
|
import { getFilterDetail, LcbFilterResult } from './api'
|
|
56
50
|
import FilterList from './components/FilterList/index.vue'
|
|
57
51
|
import FilterView from './components/FilterView/index.vue'
|
|
58
52
|
import { LcbListProps } from './types'
|
|
59
|
-
import mockData from './components/FilterList/mockData'
|
|
60
53
|
import { FORM_KEY } from '../../constants'
|
|
61
54
|
import './index.scss'
|
|
62
|
-
const attrs = useAttrs()
|
|
63
55
|
/** 是否悬停 */
|
|
64
56
|
const sticky = ref(false)
|
|
65
57
|
const items = ref([])
|
|
@@ -75,11 +67,13 @@ const titleObj = ref<Record<string, any>>({})
|
|
|
75
67
|
const form = inject<Ref<Record<string, any>>>(FORM_KEY)
|
|
76
68
|
const props = withDefaults(defineProps<LcbListProps>(), {
|
|
77
69
|
pageFilterType: 'hotelTravelFilter',
|
|
78
|
-
|
|
70
|
+
borderRadius: 12,
|
|
79
71
|
styleMode: 'default',
|
|
80
72
|
listType: 'list',
|
|
81
73
|
isSticky: true,
|
|
82
74
|
mode: 'list',
|
|
75
|
+
imageWidth: 250,
|
|
76
|
+
titleLineClamp: 2,
|
|
83
77
|
// @ts-ignore
|
|
84
78
|
pageListProps: () => ({
|
|
85
79
|
productProps: {
|
|
@@ -4,11 +4,18 @@ import { LcbProductProps } from '../lcb-product/types'
|
|
|
4
4
|
export interface LcbListProps {
|
|
5
5
|
pageFilterType?: string
|
|
6
6
|
pageListProps?: PageListProps
|
|
7
|
-
|
|
7
|
+
borderRadius?: number
|
|
8
8
|
styleMode?: 'default' | 'plain'
|
|
9
|
+
imageWidth?: number
|
|
10
|
+
border?: boolean
|
|
11
|
+
imageHeight?: number
|
|
12
|
+
titleLineClamp?: number
|
|
9
13
|
listType?: LcbProductProps['listType']
|
|
10
14
|
isSticky?: boolean
|
|
11
15
|
mode?: 'map' | 'list'
|
|
16
|
+
layoutType?: 'vertical' | 'horizontal'
|
|
17
|
+
imageRadius?: number
|
|
18
|
+
itemWidth?: number // 列表项宽度
|
|
12
19
|
}
|
|
13
20
|
export interface Option {
|
|
14
21
|
label: string
|
|
@@ -2,23 +2,24 @@
|
|
|
2
2
|
import { ref, useAttrs, watch } from 'vue'
|
|
3
3
|
import UWaterfall from 'uview-plus/components/u-waterfall/u-waterfall.vue'
|
|
4
4
|
import { LcbProductProps } from './types'
|
|
5
|
+
import { transformValueUnit } from '../../utils/transform'
|
|
5
6
|
|
|
6
|
-
const attrs = useAttrs()
|
|
7
7
|
const uWaterfallRef = ref()
|
|
8
8
|
defineOptions({
|
|
9
9
|
name: 'LcbProduct',
|
|
10
10
|
options: {
|
|
11
11
|
addGlobalClass: true,
|
|
12
12
|
virtualHost: true,
|
|
13
|
+
layoutType: 'vertical',
|
|
13
14
|
styleIsolation: 'shared',
|
|
14
15
|
},
|
|
15
16
|
})
|
|
16
17
|
const props = withDefaults(defineProps<LcbProductProps>(), {
|
|
17
18
|
listType: 'list',
|
|
18
19
|
items: [],
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
imageWidth: 200,
|
|
21
|
+
imageHeight: 250,
|
|
22
|
+
titleLineClamp: 2,
|
|
22
23
|
} as any)
|
|
23
24
|
defineSlots<{
|
|
24
25
|
item(props: { item: any }): any
|
|
@@ -34,6 +35,7 @@ watch(
|
|
|
34
35
|
|
|
35
36
|
<template>
|
|
36
37
|
<lcb-block v-bind="$props">
|
|
38
|
+
<!-- 单列 -->
|
|
37
39
|
<view class="flex flex-col gap-2 p-3" v-if="listType === 'list'">
|
|
38
40
|
<lcb-action-view
|
|
39
41
|
v-for="(item, index) in items"
|
|
@@ -52,25 +54,27 @@ watch(
|
|
|
52
54
|
/>
|
|
53
55
|
<lcb-product-item
|
|
54
56
|
v-else
|
|
55
|
-
v-bind="{ ...item,
|
|
57
|
+
v-bind="{ ...item, ...$props }"
|
|
58
|
+
:layoutType="layoutType"
|
|
56
59
|
:coverImgStyle="{
|
|
57
|
-
width:
|
|
58
|
-
height:
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
width: layoutType === 'vertical' ? '100%' : transformValueUnit(imageWidth),
|
|
61
|
+
height: layoutType === 'vertical' ? transformValueUnit(imageHeight) : undefined,
|
|
62
|
+
minHeight: layoutType !== 'vertical' ? transformValueUnit(imageHeight) : undefined,
|
|
63
|
+
borderRadius: imageRadius ? transformValueUnit(imageRadius) : undefined,
|
|
64
|
+
...($props?.coverImgStyle ?? {}),
|
|
61
65
|
}"
|
|
62
66
|
></lcb-product-item>
|
|
63
67
|
</slot>
|
|
64
68
|
</lcb-action-view>
|
|
65
69
|
</view>
|
|
66
|
-
|
|
70
|
+
<!-- 双列 -->
|
|
67
71
|
<view class="grid p-3 grid-cols-2 gap-2 box-border" v-if="listType === 'grid'">
|
|
68
72
|
<lcb-action-view
|
|
69
73
|
v-for="(item, index) in items"
|
|
70
74
|
:key="`${item?.productId}:${index}`"
|
|
71
75
|
v-bind="item.link"
|
|
72
76
|
>
|
|
73
|
-
<view class="rounded-md overflow-hidden"
|
|
77
|
+
<view class="rounded-md overflow-hidden">
|
|
74
78
|
<slot name="item" :item="item">
|
|
75
79
|
<lcb-absolute-config-layout
|
|
76
80
|
v-if="renderItemAbsoluteConfigLayout"
|
|
@@ -83,12 +87,13 @@ watch(
|
|
|
83
87
|
/>
|
|
84
88
|
<lcb-product-item
|
|
85
89
|
v-else
|
|
86
|
-
v-bind="{ ...item,
|
|
90
|
+
v-bind="{ ...item, ...$props }"
|
|
87
91
|
layoutType="vertical"
|
|
88
|
-
className="!h-full"
|
|
89
92
|
:coverImgStyle="{
|
|
90
|
-
|
|
91
|
-
|
|
93
|
+
width: '100%',
|
|
94
|
+
height: transformValueUnit(imageHeight),
|
|
95
|
+
borderRadius: imageRadius ? transformValueUnit(imageRadius) : undefined,
|
|
96
|
+
...($props?.coverImgStyle ?? {}),
|
|
92
97
|
}"
|
|
93
98
|
></lcb-product-item>
|
|
94
99
|
</slot>
|
|
@@ -118,10 +123,9 @@ watch(
|
|
|
118
123
|
/>
|
|
119
124
|
<lcb-product-item
|
|
120
125
|
v-else
|
|
121
|
-
v-bind="{ ...item,
|
|
126
|
+
v-bind="{ ...item, ...$props }"
|
|
122
127
|
layoutType="vertical"
|
|
123
128
|
tag-overflow-wrap
|
|
124
|
-
:title-line-clamp="2"
|
|
125
129
|
>
|
|
126
130
|
<template #coverImg="{ value }">
|
|
127
131
|
<image :src="value" class="w-full" mode="widthFix" />
|
|
@@ -151,10 +155,9 @@ watch(
|
|
|
151
155
|
/>
|
|
152
156
|
<lcb-product-item
|
|
153
157
|
v-else
|
|
154
|
-
v-bind="{ ...item,
|
|
158
|
+
v-bind="{ ...item, ...$props }"
|
|
155
159
|
layoutType="vertical"
|
|
156
160
|
tag-overflow-wrap
|
|
157
|
-
:title-line-clamp="2"
|
|
158
161
|
>
|
|
159
162
|
<template #coverImg="{ value }">
|
|
160
163
|
<image :src="value" class="w-full" mode="widthFix" />
|
|
@@ -168,11 +171,15 @@ watch(
|
|
|
168
171
|
</view>
|
|
169
172
|
|
|
170
173
|
<scroll-view v-if="listType == 'horizontal'" scroll-x>
|
|
171
|
-
<view class="p-
|
|
174
|
+
<view class="p-3 whitespace-nowrap overflow-x-auto">
|
|
172
175
|
<view
|
|
173
176
|
v-for="(item, index) in items"
|
|
174
177
|
:key="`${item?.productId}:${index}`"
|
|
175
|
-
class="
|
|
178
|
+
class="inline-block"
|
|
179
|
+
:style="{
|
|
180
|
+
width: `${itemWidth}rpx`,
|
|
181
|
+
marginLeft: index === 0 ? 0 : '24rpx',
|
|
182
|
+
}"
|
|
176
183
|
>
|
|
177
184
|
<slot name="item" :item="item">
|
|
178
185
|
<lcb-absolute-config-layout
|
|
@@ -184,7 +191,19 @@ watch(
|
|
|
184
191
|
...item,
|
|
185
192
|
}"
|
|
186
193
|
/>
|
|
187
|
-
<lcb-product-item
|
|
194
|
+
<lcb-product-item
|
|
195
|
+
v-else
|
|
196
|
+
v-bind="item"
|
|
197
|
+
:layoutType="layoutType"
|
|
198
|
+
:coverImgStyle="{
|
|
199
|
+
width: layoutType === 'vertical' ? '100%' : transformValueUnit(imageWidth),
|
|
200
|
+
height: layoutType === 'vertical' ? transformValueUnit(imageHeight) : undefined,
|
|
201
|
+
minHeight: layoutType !== 'vertical' ? transformValueUnit(imageHeight) : undefined,
|
|
202
|
+
borderRadius: imageRadius ? transformValueUnit(imageRadius) : undefined,
|
|
203
|
+
...($props?.coverImgStyle ?? {}),
|
|
204
|
+
}"
|
|
205
|
+
:titleLineClamp="titleLineClamp"
|
|
206
|
+
></lcb-product-item>
|
|
188
207
|
</slot>
|
|
189
208
|
</view>
|
|
190
209
|
</view>
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
export interface LcbProductProps {
|
|
2
2
|
// Define the component's prop types here
|
|
3
3
|
listType?: 'list' | 'horizontal' | 'grid' | 'waterfall' // 1列表 2 左右滑动 3一行两个 4瀑布流
|
|
4
|
-
imageWidthPercent?: number
|
|
5
|
-
imageHeightPercent?: number
|
|
6
4
|
imageWidth?: number
|
|
7
5
|
imageHeight?: number
|
|
8
6
|
imageRadius?: number
|
|
9
|
-
|
|
7
|
+
borderRadius?: number
|
|
8
|
+
itemWidth?: number // 列表项宽度
|
|
10
9
|
items?: Record<string, any>[]
|
|
11
10
|
form?: Record<string, any>
|
|
11
|
+
layoutType?: 'vertical' | 'horizontal' // 布局方式
|
|
12
|
+
titleLineClamp?: number
|
|
13
|
+
coverImgStyle?: Record<string, any>
|
|
12
14
|
renderItemAbsoluteConfigLayout?: {
|
|
13
15
|
dataset?: Record<string, any>
|
|
14
16
|
blocks: any[]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { inject, computed
|
|
2
|
+
import { inject, computed } from 'vue'
|
|
3
3
|
import { isArray } from '@tplc/wot/components/common/util'
|
|
4
4
|
import { formatJson } from '../../../utils/utils'
|
|
5
5
|
defineOptions({
|
|
@@ -10,13 +10,10 @@ defineOptions({
|
|
|
10
10
|
styleIsolation: 'shared',
|
|
11
11
|
},
|
|
12
12
|
})
|
|
13
|
-
// const attrs = useAttrs()
|
|
14
13
|
|
|
15
14
|
const itemProps: any = inject('lcb-product-item-props')
|
|
16
15
|
const itemAttrs: any = inject('lcb-product-item-attrs')
|
|
17
16
|
|
|
18
|
-
// console.log('itemAttrs', itemAttrs)
|
|
19
|
-
|
|
20
17
|
const props = withDefaults(
|
|
21
18
|
defineProps<{
|
|
22
19
|
prop: string
|
|
@@ -143,7 +140,13 @@ const value = computed(() => {
|
|
|
143
140
|
|
|
144
141
|
<slot :value="value" v-if="prop === 'level'" name="level">
|
|
145
142
|
<view :class="className" :style="style" class="inline pl-1 relative top-[-3px]">
|
|
146
|
-
<wd-rate
|
|
143
|
+
<wd-rate
|
|
144
|
+
:model-value="Number(value)"
|
|
145
|
+
:num="Number(value)"
|
|
146
|
+
readonly
|
|
147
|
+
size="12px"
|
|
148
|
+
space="2px"
|
|
149
|
+
/>
|
|
147
150
|
</view>
|
|
148
151
|
</slot>
|
|
149
152
|
<slot :value="value" v-if="prop === 'titleIcon'" name="titleIcon">
|
|
@@ -333,17 +336,20 @@ const value = computed(() => {
|
|
|
333
336
|
-webkit-box-orient: vertical;
|
|
334
337
|
-webkit-line-clamp: 1;
|
|
335
338
|
overflow: hidden;
|
|
339
|
+
white-space: normal;
|
|
336
340
|
}
|
|
337
341
|
.line-clamp-2 {
|
|
338
342
|
display: -webkit-box;
|
|
339
343
|
-webkit-box-orient: vertical;
|
|
340
344
|
-webkit-line-clamp: 2;
|
|
341
345
|
overflow: hidden;
|
|
346
|
+
white-space: normal;
|
|
342
347
|
}
|
|
343
348
|
.line-clamp-3 {
|
|
344
349
|
display: -webkit-box;
|
|
345
350
|
-webkit-box-orient: vertical;
|
|
346
351
|
-webkit-line-clamp: 3;
|
|
347
352
|
overflow: hidden;
|
|
353
|
+
white-space: normal;
|
|
348
354
|
}
|
|
349
355
|
</style>
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import {
|
|
2
|
+
import { provide, useAttrs } from 'vue'
|
|
3
3
|
import { LcbProductItemProps } from './types'
|
|
4
4
|
import ItemValue from './components/ItemValue.vue'
|
|
5
|
+
import { transformValueUnit } from '../../utils/transform'
|
|
5
6
|
defineOptions({
|
|
6
7
|
name: 'LcbProductItem',
|
|
7
8
|
options: {
|
|
@@ -46,6 +47,7 @@ const props = withDefaults(defineProps<LcbProductItemProps>(), {
|
|
|
46
47
|
tagsVisible: true,
|
|
47
48
|
addressIntroVisible: true,
|
|
48
49
|
distanceVisible: true,
|
|
50
|
+
borderRadius: 12,
|
|
49
51
|
})
|
|
50
52
|
const attrs = useAttrs()
|
|
51
53
|
provide('lcb-product-item-props', props)
|
|
@@ -93,7 +95,10 @@ defineSlots<{
|
|
|
93
95
|
<view
|
|
94
96
|
v-if="layoutType === 'horizontal'"
|
|
95
97
|
:class="className"
|
|
96
|
-
class="flex flex-col gap-1 px-2 py-3 bg-white relative"
|
|
98
|
+
class="flex flex-col gap-1 px-2 py-3 bg-white relative overflow-clip"
|
|
99
|
+
:style="{
|
|
100
|
+
borderRadius: transformValueUnit(borderRadius),
|
|
101
|
+
}"
|
|
97
102
|
>
|
|
98
103
|
<slot name="itemSection" />
|
|
99
104
|
<slot name="itemTopSection" />
|
|
@@ -102,7 +107,7 @@ defineSlots<{
|
|
|
102
107
|
<ItemValue
|
|
103
108
|
v-if="!!$slots?.['coverImg']"
|
|
104
109
|
prop="coverImg"
|
|
105
|
-
customClass="
|
|
110
|
+
customClass=" bg-gray-100 rounded-sm overflow-hidden relative"
|
|
106
111
|
>
|
|
107
112
|
<template #default>
|
|
108
113
|
<slot name="coverImgSection" />
|
|
@@ -114,7 +119,7 @@ defineSlots<{
|
|
|
114
119
|
<ItemValue
|
|
115
120
|
v-else
|
|
116
121
|
prop="coverImg"
|
|
117
|
-
customClass="
|
|
122
|
+
customClass=" bg-gray-100 rounded-sm overflow-hidden relative"
|
|
118
123
|
>
|
|
119
124
|
<template #default>
|
|
120
125
|
<slot name="coverImgSection" />
|
|
@@ -123,33 +128,6 @@ defineSlots<{
|
|
|
123
128
|
<view class="flex flex-col flex-1 text-26rpx overflow-hidden relative">
|
|
124
129
|
<slot name="contentSection" />
|
|
125
130
|
<view class="flex flex-col gap-[5px] overflow-hidden">
|
|
126
|
-
<!-- <template
|
|
127
|
-
v-for="propName in ['productName', 'subTitle', 'addressIntro', 'distance', 'tags']"
|
|
128
|
-
:key="propName"
|
|
129
|
-
>
|
|
130
|
-
<ItemValue :prop="propName" v-if="!!$slots?.[propName]">
|
|
131
|
-
<template #coverImg="{ value }"><slot name="coverImg" :value="value" /></template>
|
|
132
|
-
<template #productName="{ value }"><slot name="productName" :value="value" /></template>
|
|
133
|
-
<template #subTitle="{ value }"><slot name="subTitle" :value="value" /></template>
|
|
134
|
-
<template #price="{ value }"><slot name="price" :value="value" /></template>
|
|
135
|
-
<template #priceUnit="{ value }"><slot name="priceUnit" :value="value" /></template>
|
|
136
|
-
<template #priceSuffix="{ value }">
|
|
137
|
-
<slot name="priceSuffix" :value="value" />
|
|
138
|
-
</template>
|
|
139
|
-
<template #scribePrice="{ value }">
|
|
140
|
-
<slot name="scribePrice" :value="value" />
|
|
141
|
-
</template>
|
|
142
|
-
<template #scribePriceUnit="{ value }">
|
|
143
|
-
<slot name="scribePriceUnit" :value="value" />
|
|
144
|
-
</template>
|
|
145
|
-
<template #tags="{ value }"><slot name="tags" :value="value" /></template>
|
|
146
|
-
<template #addressIntro="{ value }">
|
|
147
|
-
<slot name="addressIntro" :value="value" />
|
|
148
|
-
</template>
|
|
149
|
-
<template #distance="{ value }"><slot name="distance" :value="value" /></template>
|
|
150
|
-
</ItemValue>
|
|
151
|
-
<ItemValue :prop="propName" v-else />
|
|
152
|
-
</template> -->
|
|
153
131
|
<view class="text-ellipsis line-clamp-2">
|
|
154
132
|
<ItemValue prop="productName">
|
|
155
133
|
<!-- <template #productName="{ value }"><slot name="productName" :value="value" /></template> -->
|
|
@@ -257,7 +235,14 @@ defineSlots<{
|
|
|
257
235
|
</view>
|
|
258
236
|
|
|
259
237
|
<!-- 竖向布局 -->
|
|
260
|
-
<view
|
|
238
|
+
<view
|
|
239
|
+
v-if="layoutType === 'vertical'"
|
|
240
|
+
class="flex bg-white relative overflow-hidden"
|
|
241
|
+
:class="className"
|
|
242
|
+
:style="{
|
|
243
|
+
borderRadius: transformValueUnit(borderRadius),
|
|
244
|
+
}"
|
|
245
|
+
>
|
|
261
246
|
<slot name="itemSection" />
|
|
262
247
|
<slot name="itemLeftSection" />
|
|
263
248
|
<view class="flex-1 flex flex-col w-full overflow-hidden">
|
|
@@ -282,33 +267,6 @@ defineSlots<{
|
|
|
282
267
|
<view class="p-2 flex flex-col flex-1 text-26rpx overflow-hidden relative">
|
|
283
268
|
<slot name="contentSection" />
|
|
284
269
|
<view class="flex flex-col gap-[5px] overflow-hidden">
|
|
285
|
-
<!-- <template
|
|
286
|
-
v-for="propName in ['productName', 'subTitle', 'addressIntro', 'distance', 'tags']"
|
|
287
|
-
:key="propName"
|
|
288
|
-
>
|
|
289
|
-
<ItemValue :prop="propName" v-if="!!$slots?.[propName]">
|
|
290
|
-
<template #coverImg="{ value }"><slot name="coverImg" :value="value" /></template>
|
|
291
|
-
<template #productName="{ value }"><slot name="productName" :value="value" /></template>
|
|
292
|
-
<template #subTitle="{ value }"><slot name="subTitle" :value="value" /></template>
|
|
293
|
-
<template #price="{ value }"><slot name="price" :value="value" /></template>
|
|
294
|
-
<template #priceUnit="{ value }"><slot name="priceUnit" :value="value" /></template>
|
|
295
|
-
<template #priceSuffix="{ value }">
|
|
296
|
-
<slot name="priceSuffix" :value="value" />
|
|
297
|
-
</template>
|
|
298
|
-
<template #scribePrice="{ value }">
|
|
299
|
-
<slot name="scribePrice" :value="value" />
|
|
300
|
-
</template>
|
|
301
|
-
<template #scribePriceUnit="{ value }">
|
|
302
|
-
<slot name="scribePriceUnit" :value="value" />
|
|
303
|
-
</template>
|
|
304
|
-
<template #tags="{ value }"><slot name="tags" :value="value" /></template>
|
|
305
|
-
<template #addressIntro="{ value }">
|
|
306
|
-
<slot name="addressIntro" :value="value" />
|
|
307
|
-
</template>
|
|
308
|
-
<template #distance="{ value }"><slot name="distance" :value="value" /></template>
|
|
309
|
-
</ItemValue>
|
|
310
|
-
<ItemValue :prop="propName" v-else />
|
|
311
|
-
</template> -->
|
|
312
270
|
<view class="text-ellipsis line-clamp-2">
|
|
313
271
|
<ItemValue prop="productName">
|
|
314
272
|
<!-- <template #productName="{ value }"><slot name="productName" :value="value" /></template> -->
|
package/package.json
CHANGED
|
@@ -20,12 +20,19 @@ declare const __VLS_component: import('vue').DefineComponent<
|
|
|
20
20
|
>,
|
|
21
21
|
{
|
|
22
22
|
mode: 'map' | 'list'
|
|
23
|
+
imageRadius: number
|
|
24
|
+
imageWidth: number
|
|
25
|
+
borderRadius: number
|
|
26
|
+
imageHeight: number
|
|
23
27
|
listType: 'list' | 'horizontal' | 'grid' | 'waterfall'
|
|
24
28
|
pageFilterType: string
|
|
25
29
|
pageListProps: import('./components/FilterList/type').PageListProps
|
|
26
|
-
border: boolean
|
|
27
30
|
styleMode: 'default' | 'plain'
|
|
31
|
+
border: boolean
|
|
32
|
+
titleLineClamp: number
|
|
28
33
|
isSticky: boolean
|
|
34
|
+
layoutType: 'vertical' | 'horizontal'
|
|
35
|
+
itemWidth: number
|
|
29
36
|
},
|
|
30
37
|
{}
|
|
31
38
|
>
|
|
@@ -3,11 +3,18 @@ import { LcbProductProps } from '../lcb-product/types'
|
|
|
3
3
|
export interface LcbListProps {
|
|
4
4
|
pageFilterType?: string
|
|
5
5
|
pageListProps?: PageListProps
|
|
6
|
-
|
|
6
|
+
borderRadius?: number
|
|
7
7
|
styleMode?: 'default' | 'plain'
|
|
8
|
+
imageWidth?: number
|
|
9
|
+
border?: boolean
|
|
10
|
+
imageHeight?: number
|
|
11
|
+
titleLineClamp?: number
|
|
8
12
|
listType?: LcbProductProps['listType']
|
|
9
13
|
isSticky?: boolean
|
|
10
14
|
mode?: 'map' | 'list'
|
|
15
|
+
layoutType?: 'vertical' | 'horizontal'
|
|
16
|
+
imageRadius?: number
|
|
17
|
+
itemWidth?: number
|
|
11
18
|
}
|
|
12
19
|
export interface Option {
|
|
13
20
|
label: string
|
|
@@ -25,11 +25,13 @@ declare const __VLS_component: import('vue').DefineComponent<
|
|
|
25
25
|
imageRadius: number
|
|
26
26
|
items: Record<string, any>[]
|
|
27
27
|
imageWidth: number
|
|
28
|
+
borderRadius: number
|
|
28
29
|
imageHeight: number
|
|
29
30
|
listType: 'list' | 'horizontal' | 'grid' | 'waterfall'
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
titleLineClamp: number
|
|
32
|
+
layoutType: 'vertical' | 'horizontal'
|
|
33
|
+
itemWidth: number
|
|
34
|
+
coverImgStyle: Record<string, any>
|
|
33
35
|
renderItemAbsoluteConfigLayout: {
|
|
34
36
|
dataset?: Record<string, any>
|
|
35
37
|
blocks: any[]
|
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
export interface LcbProductProps {
|
|
2
2
|
listType?: 'list' | 'horizontal' | 'grid' | 'waterfall'
|
|
3
|
-
imageWidthPercent?: number
|
|
4
|
-
imageHeightPercent?: number
|
|
5
3
|
imageWidth?: number
|
|
6
4
|
imageHeight?: number
|
|
7
5
|
imageRadius?: number
|
|
8
|
-
|
|
6
|
+
borderRadius?: number
|
|
7
|
+
itemWidth?: number
|
|
9
8
|
items?: Record<string, any>[]
|
|
10
9
|
form?: Record<string, any>
|
|
10
|
+
layoutType?: 'vertical' | 'horizontal'
|
|
11
|
+
titleLineClamp?: number
|
|
12
|
+
coverImgStyle?: Record<string, any>
|
|
11
13
|
renderItemAbsoluteConfigLayout?: {
|
|
12
14
|
dataset?: Record<string, any>
|
|
13
15
|
blocks: any[]
|
|
@@ -99,6 +99,7 @@ declare const __VLS_component: import('vue').DefineComponent<
|
|
|
99
99
|
tagsVisible: boolean
|
|
100
100
|
addressIntroVisible: boolean
|
|
101
101
|
distanceVisible: boolean
|
|
102
|
+
borderRadius: number
|
|
102
103
|
}
|
|
103
104
|
>,
|
|
104
105
|
{},
|
|
@@ -148,14 +149,16 @@ declare const __VLS_component: import('vue').DefineComponent<
|
|
|
148
149
|
tagsVisible: boolean
|
|
149
150
|
addressIntroVisible: boolean
|
|
150
151
|
distanceVisible: boolean
|
|
152
|
+
borderRadius: number
|
|
151
153
|
}
|
|
152
154
|
>
|
|
153
155
|
>
|
|
154
156
|
>,
|
|
155
157
|
{
|
|
158
|
+
borderRadius: number
|
|
159
|
+
titleLineClamp: number
|
|
156
160
|
layoutType: 'vertical' | 'horizontal'
|
|
157
161
|
tagOverflowWrap: boolean
|
|
158
|
-
titleLineClamp: number
|
|
159
162
|
priceUnit: any
|
|
160
163
|
scribePriceUnit: any
|
|
161
164
|
tagType: import('@tplc/wot/components/wd-tag/types').TagType
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
declare const _default: {
|
|
2
|
-
code: string
|
|
3
|
-
count: number
|
|
4
|
-
data: {
|
|
5
|
-
address: string
|
|
6
|
-
agentId: string
|
|
7
|
-
areaId: string
|
|
8
|
-
areaName: string
|
|
9
|
-
auditDateTime: string
|
|
10
|
-
auditRemark: string
|
|
11
|
-
auditStatus: number
|
|
12
|
-
behindUnit: string
|
|
13
|
-
bigIcon: boolean
|
|
14
|
-
businessStatus: number
|
|
15
|
-
cityAreaName: string
|
|
16
|
-
cityId: string
|
|
17
|
-
cityName: string
|
|
18
|
-
clickCount: number
|
|
19
|
-
collectCount: number
|
|
20
|
-
collectFlag: boolean
|
|
21
|
-
commentCount: number
|
|
22
|
-
coverImg: string
|
|
23
|
-
createDate: string
|
|
24
|
-
distance: string
|
|
25
|
-
hideTags: string
|
|
26
|
-
hierarchy: number
|
|
27
|
-
lastModifyDate: string
|
|
28
|
-
latitude: string
|
|
29
|
-
level: string
|
|
30
|
-
longitude: string
|
|
31
|
-
mapShowFlag: boolean
|
|
32
|
-
marketingType: number
|
|
33
|
-
merchantHeadId: string
|
|
34
|
-
merchantId: string
|
|
35
|
-
orderCount: number
|
|
36
|
-
orderSkuCount: number
|
|
37
|
-
peopleNumScope: string
|
|
38
|
-
phone: string
|
|
39
|
-
poiId: string
|
|
40
|
-
poiName: string
|
|
41
|
-
poiNameI18n: string
|
|
42
|
-
poiType: string
|
|
43
|
-
praiseCount: number
|
|
44
|
-
praiseFlag: boolean
|
|
45
|
-
price: number
|
|
46
|
-
productId: string
|
|
47
|
-
productName: string
|
|
48
|
-
productNameI18n: string
|
|
49
|
-
productType: string
|
|
50
|
-
provinceId: string
|
|
51
|
-
provinceName: string
|
|
52
|
-
scribePrice: number
|
|
53
|
-
showDateFlag: boolean
|
|
54
|
-
startDateStr: string
|
|
55
|
-
startTime: string
|
|
56
|
-
status: number
|
|
57
|
-
tags: string
|
|
58
|
-
weightSort: string
|
|
59
|
-
subTitle: string
|
|
60
|
-
scoreAvg: number
|
|
61
|
-
scoreTips: string
|
|
62
|
-
titleIcon: string
|
|
63
|
-
userInteractionInfo: string
|
|
64
|
-
orderTips: string
|
|
65
|
-
priceTips: string
|
|
66
|
-
}[]
|
|
67
|
-
dataClass: string
|
|
68
|
-
traceId: string
|
|
69
|
-
}
|
|
70
|
-
export default _default
|