@tplc/business 0.0.27 → 0.0.28
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 +39 -0
- package/components/lcb-area-picker/api/index.ts +45 -0
- package/components/lcb-area-picker/lcb-area-picker.vue +77 -0
- package/components/lcb-area-picker/types.ts +3 -0
- package/components/lcb-banner-block/lcb-banner-block.vue +2 -2
- package/components/lcb-calendar/lcb-calendar.vue +3 -3
- package/components/lcb-calendar-search/lcb-calendar-search.vue +5 -2
- package/components/lcb-city-select/api/index.ts +15 -1
- package/components/lcb-city-select/components/lcb-city-letter/index.vue +171 -0
- package/components/lcb-city-select/components/lcb-city-list/index.vue +127 -0
- package/components/lcb-city-select/components/lcb-city-list/types.ts +6 -0
- package/components/lcb-city-select/images/hot.png +0 -0
- package/components/lcb-city-select/lcb-city-select.vue +95 -118
- package/components/lcb-dynamic-data/lcb-dynamic-data.vue +25 -0
- package/components/lcb-dynamic-data/types.ts +7 -0
- package/components/lcb-home-search/lcb-home-search.vue +16 -7
- package/components/lcb-img-nav/lcb-img-nav.vue +70 -30
- package/components/lcb-img-nav/types.ts +3 -3
- package/components/{lcb-filter → lcb-list}/api.ts +7 -2
- package/components/lcb-list/components/FilterList/index.vue +78 -0
- package/components/lcb-list/components/FilterList/type.ts +9 -0
- package/components/{lcb-filter → lcb-list}/components/FilterSlider/index.vue +2 -1
- package/components/{lcb-filter → lcb-list}/index.scss +3 -0
- package/components/{lcb-filter/lcb-filter.vue → lcb-list/lcb-list.vue} +66 -50
- package/components/{lcb-filter → lcb-list}/types.ts +5 -1
- package/components/lcb-nav/lcb-nav.vue +8 -13
- package/components/lcb-notice/Item/index.vue +1 -1
- package/components/lcb-product/lcb-product.vue +7 -7
- package/components/lcb-product/types.ts +3 -3
- package/components/lcb-product-item/lcb-product-item.vue +24 -12
- package/components/lcb-user-order/lcb-user-order.vue +44 -23
- package/components/lcb-user-top/lcb-user-top.vue +77 -48
- package/global.d.ts +3 -1
- package/iconfonts/index.css +1 -175
- package/package.json +5 -2
- package/types/components/lcb-area-picker/api/index.d.ts +38 -0
- package/types/components/lcb-area-picker/lcb-area-picker.vue.d.ts +67 -0
- package/types/components/lcb-area-picker/types.d.ts +1 -0
- package/types/components/lcb-calendar-search/lcb-calendar-search.vue.d.ts +1 -1
- package/types/components/lcb-city-select/api/index.d.ts +14 -1
- package/types/components/lcb-city-select/components/lcb-city-letter/index.vue.d.ts +53 -0
- package/types/components/{lcb-filter/lcb-filter.vue.d.ts → lcb-city-select/components/lcb-city-list/index.vue.d.ts} +9 -18
- package/types/components/lcb-city-select/components/lcb-city-list/types.d.ts +5 -0
- package/types/components/lcb-city-select/lcb-city-select.vue.d.ts +13 -4
- package/types/components/lcb-dynamic-data/lcb-dynamic-data.vue.d.ts +44 -0
- package/types/components/lcb-dynamic-data/types.d.ts +7 -0
- package/types/components/lcb-home-search/lcb-home-search.vue.d.ts +1 -1
- package/types/components/lcb-image/lcb-image.vue.d.ts +1 -1
- package/types/components/lcb-img-nav/types.d.ts +2 -2
- package/types/components/{lcb-filter → lcb-list}/api.d.ts +5 -0
- package/types/components/lcb-list/components/FilterList/index.vue.d.ts +28 -0
- package/types/components/lcb-list/components/FilterList/type.d.ts +9 -0
- package/types/components/lcb-list/lcb-list.vue.d.ts +71 -0
- package/types/components/{lcb-filter → lcb-list}/types.d.ts +4 -1
- /package/components/{lcb-filter → lcb-list}/components/ActionView/index.vue +0 -0
- /package/components/{lcb-filter → lcb-list}/components/ComponentGroup/index.vue +0 -0
- /package/components/{lcb-filter → lcb-list}/components/ComponentGroup/type.ts +0 -0
- /package/components/{lcb-filter → lcb-list}/components/FilterSelect/index.vue +0 -0
- /package/components/{lcb-filter → lcb-list}/components/FilterSelect/type.ts +0 -0
- /package/components/{lcb-filter → lcb-list}/components/FilterSlider/types.ts +0 -0
- /package/components/{lcb-filter → lcb-list}/components/SelectTagView/index.vue +0 -0
- /package/components/{lcb-filter → lcb-list}/components/TagSelect/index.vue +0 -0
- /package/components/{lcb-filter → lcb-list}/components/TagSelect/type.ts +0 -0
- /package/components/{lcb-filter → lcb-list}/components/TreeSelect/index.vue +0 -0
- /package/components/{lcb-filter → lcb-list}/components/TreeSelect/type.ts +0 -0
- /package/components/{lcb-filter → lcb-list}/hooks/useSelect.ts +0 -0
- /package/types/components/{lcb-filter → lcb-list}/components/ActionView/index.vue.d.ts +0 -0
- /package/types/components/{lcb-filter → lcb-list}/components/ComponentGroup/index.vue.d.ts +0 -0
- /package/types/components/{lcb-filter → lcb-list}/components/ComponentGroup/type.d.ts +0 -0
- /package/types/components/{lcb-filter → lcb-list}/components/FilterSelect/index.vue.d.ts +0 -0
- /package/types/components/{lcb-filter → lcb-list}/components/FilterSelect/type.d.ts +0 -0
- /package/types/components/{lcb-filter → lcb-list}/components/FilterSlider/index.vue.d.ts +0 -0
- /package/types/components/{lcb-filter → lcb-list}/components/FilterSlider/types.d.ts +0 -0
- /package/types/components/{lcb-filter → lcb-list}/components/SelectTagView/index.vue.d.ts +0 -0
- /package/types/components/{lcb-filter → lcb-list}/components/TagSelect/index.vue.d.ts +0 -0
- /package/types/components/{lcb-filter → lcb-list}/components/TagSelect/type.d.ts +0 -0
- /package/types/components/{lcb-filter → lcb-list}/components/TreeSelect/index.vue.d.ts +0 -0
- /package/types/components/{lcb-filter → lcb-list}/components/TreeSelect/type.d.ts +0 -0
- /package/types/components/{lcb-filter → lcb-list}/hooks/useSelect.d.ts +0 -0
|
@@ -1,71 +1,81 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<view v-if="info">
|
|
3
|
-
<
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
icon="caret-down-small"
|
|
9
|
-
icon-size="26px"
|
|
10
|
-
:selected="getSelect(item)"
|
|
11
|
-
ref="dropMenu"
|
|
12
|
-
@opened="handleOpened"
|
|
3
|
+
<view style="z-index: 1; position: sticky; top: 0">
|
|
4
|
+
<view
|
|
5
|
+
:class="{
|
|
6
|
+
'lcb-filter__border-top': border,
|
|
7
|
+
}"
|
|
13
8
|
>
|
|
14
|
-
<
|
|
15
|
-
<
|
|
16
|
-
v-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
9
|
+
<wd-drop-menu>
|
|
10
|
+
<wd-drop-menu-item
|
|
11
|
+
v-for="(item, index) in info?.filterComponent"
|
|
12
|
+
:key="item.valueName"
|
|
13
|
+
:title="titleObj[item.valueName] || item.fitlerName"
|
|
14
|
+
icon="caret-down-small"
|
|
15
|
+
icon-size="26px"
|
|
16
|
+
:selected="getSelect(item)"
|
|
17
|
+
ref="dropMenu"
|
|
18
|
+
@opened="handleOpened"
|
|
19
|
+
>
|
|
20
|
+
<view class="lcb-filter__popup">
|
|
21
|
+
<FilterSelect
|
|
22
|
+
v-if="item.component === 'select'"
|
|
23
|
+
v-bind="item.componentProps"
|
|
24
|
+
v-model="filter[item.valueName]"
|
|
25
|
+
v-model:title="titleObj[item.valueName]"
|
|
26
|
+
@submit="onSubmit(index)"
|
|
27
|
+
/>
|
|
28
|
+
<TreeSelect
|
|
29
|
+
v-else-if="item.component === 'treeSelect'"
|
|
30
|
+
v-bind="item.componentProps"
|
|
31
|
+
v-model="filter[item.valueName]"
|
|
32
|
+
v-model:title="titleObj[item.valueName]"
|
|
33
|
+
@submit="onSubmit(index)"
|
|
34
|
+
/>
|
|
35
|
+
<ComponentGroup
|
|
36
|
+
v-else-if="item.component === 'componentGroup'"
|
|
37
|
+
v-bind="item.componentProps"
|
|
38
|
+
:filter="filter"
|
|
39
|
+
@submit="onSubmit(index, $event)"
|
|
40
|
+
/>
|
|
41
|
+
</view>
|
|
42
|
+
</wd-drop-menu-item>
|
|
43
|
+
</wd-drop-menu>
|
|
44
|
+
<view
|
|
45
|
+
v-if="info?.filterTags || info.btnComponent"
|
|
46
|
+
class="bg-white px-3 pb-2 box-border flex items-center"
|
|
47
|
+
>
|
|
48
|
+
<view class="flex gap-3.5 flex-1">
|
|
49
|
+
<TagSelect
|
|
50
|
+
v-if="info.filterTags"
|
|
51
|
+
size="small"
|
|
52
|
+
v-bind="info.filterTags.componentProps"
|
|
53
|
+
v-model="filter[info.filterTags.valueName]"
|
|
54
|
+
/>
|
|
55
|
+
</view>
|
|
56
|
+
<wd-button v-if="info.btnComponent" custom-class="!h-60rpx opacity-primary">
|
|
57
|
+
{{ info.btnComponent?.postRequest }}
|
|
58
|
+
</wd-button>
|
|
35
59
|
</view>
|
|
36
|
-
</wd-drop-menu-item>
|
|
37
|
-
</wd-drop-menu>
|
|
38
|
-
<view
|
|
39
|
-
v-if="info?.filterTags || info.btnComponent"
|
|
40
|
-
class="bg-white px-3 pb-2 box-border flex items-center"
|
|
41
|
-
>
|
|
42
|
-
<view class="flex gap-3.5 flex-1">
|
|
43
|
-
<TagSelect
|
|
44
|
-
v-if="info.filterTags"
|
|
45
|
-
size="small"
|
|
46
|
-
v-bind="info.filterTags.componentProps"
|
|
47
|
-
v-model="filter[info.filterTags.valueName]"
|
|
48
|
-
/>
|
|
49
60
|
</view>
|
|
50
|
-
<wd-button v-if="info.btnComponent" custom-class="!h-60rpx opacity-primary">
|
|
51
|
-
{{ info.btnComponent?.postRequest }}
|
|
52
|
-
</wd-button>
|
|
53
61
|
</view>
|
|
62
|
+
<FilterList v-bind="{ ...info.listInfo, ...pageListProps, filter }" />
|
|
54
63
|
</view>
|
|
55
64
|
</template>
|
|
56
65
|
|
|
57
66
|
<script setup lang="ts">
|
|
58
67
|
import { inject, Ref, ref, watch } from 'vue'
|
|
59
|
-
import {
|
|
68
|
+
import { LcbListProps } from './types'
|
|
60
69
|
import { FilterComponent, getFilterDetail, LcbFilterResult } from './api'
|
|
61
70
|
import FilterSelect from './components/FilterSelect/index.vue'
|
|
62
71
|
import TreeSelect from './components/TreeSelect/index.vue'
|
|
63
72
|
import ComponentGroup from './components/ComponentGroup/index.vue'
|
|
64
73
|
import TagSelect from './components/TagSelect/index.vue'
|
|
74
|
+
import FilterList from './components/FilterList/index.vue'
|
|
65
75
|
import './index.scss'
|
|
66
76
|
import { FORM_KEY } from '../../constants'
|
|
67
77
|
defineOptions({
|
|
68
|
-
name: '
|
|
78
|
+
name: 'LcbList',
|
|
69
79
|
options: {
|
|
70
80
|
addGlobalClass: true,
|
|
71
81
|
virtualHost: true,
|
|
@@ -74,8 +84,14 @@ defineOptions({
|
|
|
74
84
|
})
|
|
75
85
|
const form = inject<Ref<Record<string, any>>>(FORM_KEY)
|
|
76
86
|
const dropMenu = ref()
|
|
77
|
-
const props = withDefaults(defineProps<
|
|
87
|
+
const props = withDefaults(defineProps<LcbListProps>(), {
|
|
78
88
|
pageFilterType: 'hotelTravelFilter',
|
|
89
|
+
border: true,
|
|
90
|
+
pageListProps: () => ({
|
|
91
|
+
productProps: {
|
|
92
|
+
styleGroup: 1,
|
|
93
|
+
},
|
|
94
|
+
}),
|
|
79
95
|
})
|
|
80
96
|
const info = ref<LcbFilterResult>()
|
|
81
97
|
const filter = ref<Record<string, any>>({})
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
:class="[capsuleList.length === 1 ? 'px-2' : 'px-2.5']"
|
|
43
43
|
>
|
|
44
44
|
<wd-icon
|
|
45
|
-
class-prefix="
|
|
45
|
+
class-prefix="lcb"
|
|
46
46
|
:name="iconMap[item.action]"
|
|
47
47
|
size="36rpx"
|
|
48
48
|
:color="contentColor"
|
|
@@ -50,12 +50,7 @@
|
|
|
50
50
|
</view>
|
|
51
51
|
</view>
|
|
52
52
|
<template v-else-if="back">
|
|
53
|
-
<wd-icon
|
|
54
|
-
class-prefix="iconfont"
|
|
55
|
-
name="dingdanliebiao"
|
|
56
|
-
@click="toBack"
|
|
57
|
-
:color="contentColor"
|
|
58
|
-
/>
|
|
53
|
+
<wd-icon class-prefix="lcb" name="zuo_left" @click="toBack" :color="contentColor" />
|
|
59
54
|
</template>
|
|
60
55
|
<view class="ml-2" v-if="titleLocation === 'left'">
|
|
61
56
|
<Search
|
|
@@ -103,12 +98,12 @@ defineOptions({
|
|
|
103
98
|
})
|
|
104
99
|
const { statusBarHeight } = uni.getSystemInfoSync()
|
|
105
100
|
const iconMap = {
|
|
106
|
-
back: '
|
|
107
|
-
search: '
|
|
108
|
-
scanCode: '
|
|
109
|
-
translate: '
|
|
110
|
-
setting: '
|
|
111
|
-
home: '
|
|
101
|
+
back: 'zuo_left',
|
|
102
|
+
search: 'sousuo_search',
|
|
103
|
+
scanCode: 'gengduo_more-app',
|
|
104
|
+
translate: 'fanyi_translate',
|
|
105
|
+
setting: 'peizhi_config',
|
|
106
|
+
home: 'shouye_home1',
|
|
112
107
|
}
|
|
113
108
|
const scrollTop = ref(0)
|
|
114
109
|
const props = withDefaults(defineProps<NavProps>(), {
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<lcb-block v-bind="$props">
|
|
3
|
-
<
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
<template v-if="styleGroup !== 2">
|
|
4
|
+
<view v-for="(item, index) in items" :key="index">
|
|
5
|
+
<!-- <view>{{ JSON.stringify(item) }}</view> -->
|
|
6
|
+
<lcb-product-item :styleProps="styleProps" :idx="index" v-bind="item" />
|
|
7
|
+
</view>
|
|
8
|
+
</template>
|
|
7
9
|
<scroll-view v-if="styleGroup == 2" scroll-x class="w-full whitespace-nowrap">
|
|
8
10
|
<view class="flex shrink-0">
|
|
9
11
|
<view v-for="(item, index) in items" :key="index">
|
|
@@ -15,9 +17,8 @@
|
|
|
15
17
|
</template>
|
|
16
18
|
|
|
17
19
|
<script setup lang="ts">
|
|
18
|
-
import { computed } from 'vue'
|
|
20
|
+
import { computed } from 'vue'
|
|
19
21
|
import { LcbProductProps } from './types'
|
|
20
|
-
import { transformValueUnit } from '../../utils/transform'
|
|
21
22
|
defineOptions({
|
|
22
23
|
name: 'LcbProduct',
|
|
23
24
|
options: {
|
|
@@ -41,7 +42,6 @@ const styleProps = computed(() => {
|
|
|
41
42
|
showCollection: props.showCollection,
|
|
42
43
|
}
|
|
43
44
|
})
|
|
44
|
-
|
|
45
45
|
</script>
|
|
46
46
|
|
|
47
47
|
<style lang="scss" scoped></style>
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export interface LcbProductProps {
|
|
2
2
|
// Define the component's prop types here
|
|
3
|
-
styleGroup?: 1 | 2 | 3 | 4
|
|
3
|
+
styleGroup?: 1 | 2 | 3 | 4 // 1列表 2 左右滑动 3一行两个 4瀑布流
|
|
4
4
|
items?: Record<string, any>
|
|
5
5
|
marginHorizontal?: number
|
|
6
|
-
productStyle?: 'image' | 'flat' | 'card' | 'border'
|
|
7
|
-
productTitle?: 0 | 1 | 2
|
|
6
|
+
productStyle?: 'image' | 'flat' | 'card' | 'border' // 图片, 扁平, 卡片, 描边
|
|
7
|
+
productTitle?: 0 | 1 | 2 // 0默认 1 1行 2 2行
|
|
8
8
|
showTags?: boolean
|
|
9
9
|
showPrice?: boolean
|
|
10
10
|
showScribePrice?: boolean
|
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<view
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
2
|
+
<view
|
|
3
|
+
:style="{
|
|
4
|
+
paddingTop: `${transformValueUnit(15)}`,
|
|
5
|
+
paddingBottom: `${transformValueUnit(15)}`,
|
|
6
|
+
paddingLeft: styleProps?.styleGroup != 1 && idx > 0 ? transformValueUnit(15) : 0,
|
|
7
|
+
width: styleProps?.styleGroup != 1 ? transformValueUnit(picWidth) : 'auto',
|
|
8
|
+
// paddingHorizontal: styleProps?.styleGroup == 1 ? null : 15,
|
|
9
|
+
}"
|
|
10
|
+
>
|
|
9
11
|
<view :class="`${styleProps?.styleGroup == 1 ? 'flex' : ''}`">
|
|
10
|
-
<wd-img
|
|
11
|
-
|
|
12
|
-
:
|
|
12
|
+
<wd-img
|
|
13
|
+
:src="realImg"
|
|
14
|
+
:width="transformValueUnit(picWidth)"
|
|
15
|
+
:height="transformValueUnit(picHeight)"
|
|
16
|
+
/>
|
|
17
|
+
<view
|
|
18
|
+
v-if="styleProps?.productStyle != 'image'"
|
|
19
|
+
:class="`${styleProps?.styleGroup == 1 ? 'flex-1 pl-20rpx' : 'pt-20rpx'} pb-20rpx${styleProps?.productTitle == 1 ? ' ellipsis ' : ''}`"
|
|
20
|
+
>
|
|
13
21
|
<view
|
|
14
|
-
:class="`${styleProps?.productTitle == 1 ? 'ellipsis' : styleProps?.productTitle == 2 ? 'mulEllipsis' : 'wordBreak'} text-32rpx color-#333`"
|
|
22
|
+
:class="`${styleProps?.productTitle == 1 ? 'ellipsis' : styleProps?.productTitle == 2 ? 'mulEllipsis' : 'wordBreak'} text-32rpx color-#333`"
|
|
23
|
+
>
|
|
15
24
|
{{ productName }}
|
|
16
25
|
</view>
|
|
17
26
|
<lcb-tags v-if="!!styleProps?.showTags" :mode="2" :tagRadius="3" :items="tags" />
|
|
@@ -19,7 +28,10 @@
|
|
|
19
28
|
<view class="flex items-center mt-15rpx">
|
|
20
29
|
<view v-if="!!styleProps?.showPrice" class="text-30rpx color-red">¥</view>
|
|
21
30
|
<view v-if="!!styleProps?.showPrice" class="text-32rpx color-red">{{ price }}</view>
|
|
22
|
-
<view
|
|
31
|
+
<view
|
|
32
|
+
v-if="!!styleProps?.showScribePrice"
|
|
33
|
+
class="line-through text-22rpx color-#999 ml-10rpx pt-5rpx"
|
|
34
|
+
>
|
|
23
35
|
¥{{ scribePrice }}
|
|
24
36
|
</view>
|
|
25
37
|
</view>
|
|
@@ -1,31 +1,52 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<lcb-block v-bind="$props" customClass="flex flex-justify-between">
|
|
3
|
-
<view
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
size: transformValueUnit(iconSize),
|
|
13
|
-
color: iconColor,
|
|
14
|
-
}" />
|
|
15
|
-
</view>
|
|
16
|
-
<view v-if="item.iconType === 1" class="bg-no-repeat bg-contain" :style="{
|
|
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="{
|
|
17
12
|
height: transformValueUnit(iconSize),
|
|
18
13
|
width: transformValueUnit(iconSize),
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
<view v-if="item.
|
|
14
|
+
}"
|
|
15
|
+
@click="onClick"
|
|
16
|
+
>
|
|
17
|
+
<view v-if="item.iconType === 0">
|
|
18
|
+
<wd-icon
|
|
19
|
+
class-prefix="lcb"
|
|
20
|
+
v-bind="{
|
|
21
|
+
name: item.iconName || '',
|
|
22
|
+
size: transformValueUnit(iconSize),
|
|
23
|
+
color: iconColor,
|
|
24
|
+
}"
|
|
25
|
+
/>
|
|
26
|
+
</view>
|
|
27
|
+
<view
|
|
28
|
+
v-if="item.iconType === 1"
|
|
29
|
+
class="bg-no-repeat bg-contain"
|
|
30
|
+
:style="{
|
|
31
|
+
height: transformValueUnit(iconSize),
|
|
32
|
+
width: transformValueUnit(iconSize),
|
|
33
|
+
color: iconColor,
|
|
34
|
+
backgroundImage: `url('${item.iconUpload}')`,
|
|
35
|
+
}"
|
|
36
|
+
/>
|
|
37
|
+
<view
|
|
38
|
+
v-if="item.id < 5"
|
|
39
|
+
class="pos-absolute bg-#f23d3d pos-top-0 pos-right-0 w-8px h-8px rounded-4px"
|
|
40
|
+
/>
|
|
23
41
|
</view>
|
|
24
|
-
<view
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
42
|
+
<view
|
|
43
|
+
class="flex flex-justify-between text-center"
|
|
44
|
+
:style="{
|
|
45
|
+
color: textColor,
|
|
46
|
+
fontSize: transformValueUnit(textSize),
|
|
47
|
+
marginTop: transformValueUnit((textSize || 0) / 3),
|
|
48
|
+
}"
|
|
49
|
+
>
|
|
29
50
|
{{ item.iconTitle }}
|
|
30
51
|
</view>
|
|
31
52
|
</view>
|
|
@@ -1,69 +1,98 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<lcb-block
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
2
|
+
<lcb-block
|
|
3
|
+
v-bind="{
|
|
4
|
+
paddingTop,
|
|
5
|
+
paddingBottom,
|
|
6
|
+
paddingHorizontal,
|
|
7
|
+
backgroundColor: bgStyle === 1 ? backgroundColor : '',
|
|
8
|
+
backgroundImage: bgStyle === 2 ? backgroundImage : '',
|
|
9
|
+
}"
|
|
10
|
+
>
|
|
11
|
+
<view
|
|
12
|
+
class="anyTopGap"
|
|
13
|
+
:style="{
|
|
14
|
+
paddingTop: padTop,
|
|
15
|
+
}"
|
|
16
|
+
/>
|
|
12
17
|
<view class="flex flex-items-center">
|
|
13
|
-
<wd-img
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
<wd-img
|
|
19
|
+
v-if="!!photoUrl"
|
|
20
|
+
v-bind="{
|
|
21
|
+
width: transformValueUnit(photoSize),
|
|
22
|
+
height: transformValueUnit(photoSize),
|
|
23
|
+
round: photoRound,
|
|
24
|
+
src: photoUrl,
|
|
25
|
+
}"
|
|
26
|
+
class="mr-20rpx"
|
|
27
|
+
/>
|
|
28
|
+
<view
|
|
29
|
+
v-if="!photoUrl"
|
|
30
|
+
:style="{
|
|
31
|
+
width: transformValueUnit(photoSize),
|
|
32
|
+
height: transformValueUnit(photoSize),
|
|
33
|
+
borderRadius: photoRound ? '50%' : '',
|
|
34
|
+
}"
|
|
35
|
+
class="bg-#eee userPlace mr-40rpx"
|
|
36
|
+
>
|
|
24
37
|
<!-- flex justify-center items-center overflow-hidden relative -->
|
|
25
38
|
<!-- <wd-icon name="user" :size="transformValueUnit(photoSize * 0.9)" color="#ddd" class="absolute photoIcon"></wd-icon> -->
|
|
26
39
|
</view>
|
|
27
40
|
<view class="flex-1">
|
|
28
|
-
<view
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
41
|
+
<view
|
|
42
|
+
class="font-bold"
|
|
43
|
+
:style="{
|
|
44
|
+
fontSize: transformValueUnit(textSize),
|
|
45
|
+
color: textColor,
|
|
46
|
+
}"
|
|
47
|
+
>
|
|
32
48
|
授权登录
|
|
33
49
|
</view>
|
|
34
50
|
<view class="flex" v-if="editBtn == true">
|
|
35
|
-
<view
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
51
|
+
<view
|
|
52
|
+
class="flex flex-content-center flex-items-center mt-5px border-style-solid"
|
|
53
|
+
:style="{
|
|
54
|
+
color: textColor,
|
|
55
|
+
borderWidth: editBorder ? transformValueUnit(1) : 0,
|
|
56
|
+
borderColor: textColor,
|
|
57
|
+
padding: editBorder ? `2px ${editSize / 2.5}px 2px ${editSize / 2.5}px` : '',
|
|
58
|
+
borderRadius: transformValueUnit(30),
|
|
59
|
+
fontSize: transformValueUnit(editSize),
|
|
60
|
+
}"
|
|
61
|
+
>
|
|
43
62
|
<view>{{ editText }}</view>
|
|
44
63
|
</view>
|
|
45
64
|
</view>
|
|
46
65
|
</view>
|
|
47
|
-
<div
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
<view v-if="moreIcon == true && iconType === 0">
|
|
54
|
-
<wd-icon class-prefix="iconfont" v-bind="{
|
|
55
|
-
name: iconName,
|
|
56
|
-
size: transformValueUnit(textSize),
|
|
66
|
+
<div
|
|
67
|
+
v-if="moreIcon == true && iconType === 1"
|
|
68
|
+
class="overflow-hidden bg-no-repeat bg-contain"
|
|
69
|
+
:style="{
|
|
70
|
+
height: transformValueUnit(textSize),
|
|
71
|
+
width: transformValueUnit(textSize),
|
|
57
72
|
color: textColor,
|
|
58
|
-
|
|
73
|
+
backgroundImage: `url('${iconUpload}')`,
|
|
74
|
+
}"
|
|
75
|
+
/>
|
|
76
|
+
<view v-if="moreIcon == true && iconType === 0">
|
|
77
|
+
<wd-icon
|
|
78
|
+
class-prefix="lcb"
|
|
79
|
+
v-bind="{
|
|
80
|
+
name: iconName,
|
|
81
|
+
size: transformValueUnit(textSize),
|
|
82
|
+
color: textColor,
|
|
83
|
+
}"
|
|
84
|
+
/>
|
|
59
85
|
</view>
|
|
60
86
|
</view>
|
|
61
|
-
<view
|
|
62
|
-
|
|
87
|
+
<view
|
|
88
|
+
v-if="valuesCard == true || coupons == true || presales == true || memberPoints == true"
|
|
89
|
+
class="flex flex-justify-between text-center"
|
|
90
|
+
:style="{
|
|
63
91
|
color: textColor,
|
|
64
92
|
marginTop: transformValueUnit(numsMarginTop),
|
|
65
93
|
padding: `0 ${transformValueUnit(numsPadLR || 0)}`,
|
|
66
|
-
}"
|
|
94
|
+
}"
|
|
95
|
+
>
|
|
67
96
|
<Nums v-if="valuesCard == true" v-bind="$props" title="储值卡" />
|
|
68
97
|
<Nums v-if="coupons == true" v-bind="$props" title="优惠券" />
|
|
69
98
|
<Nums v-if="presales == true" v-bind="$props" title="预售券" />
|
|
@@ -89,7 +118,7 @@ import { LcbUserTopProps } from './types'
|
|
|
89
118
|
import { transformValueUnit } from '../../utils/transform'
|
|
90
119
|
import Nums from './Nums/index.vue'
|
|
91
120
|
import { styleText } from 'util'
|
|
92
|
-
import { computed } from 'vue'
|
|
121
|
+
import { computed } from 'vue'
|
|
93
122
|
import { addUnit } from '@tplc/wot/components/common/util'
|
|
94
123
|
const { statusBarHeight } = uni.getSystemInfoSync()
|
|
95
124
|
defineOptions({
|
package/global.d.ts
CHANGED
|
@@ -2,18 +2,20 @@ declare module 'vue' {
|
|
|
2
2
|
// Helper for Volar
|
|
3
3
|
export interface GlobalComponents {
|
|
4
4
|
'lcb-action-view': (typeof import('./types/components/lcb-action-view/lcb-action-view.vue'))['default']
|
|
5
|
+
'lcb-area-picker': (typeof import('./types/components/lcb-area-picker/lcb-area-picker.vue'))['default']
|
|
5
6
|
'lcb-banner': (typeof import('./types/components/lcb-banner/lcb-banner.vue'))['default']
|
|
6
7
|
'lcb-banner-block': (typeof import('./types/components/lcb-banner-block/lcb-banner-block.vue'))['default']
|
|
7
8
|
'lcb-block': (typeof import('./types/components/lcb-block/lcb-block.vue'))['default']
|
|
8
9
|
'lcb-calendar': (typeof import('./types/components/lcb-calendar/lcb-calendar.vue'))['default']
|
|
9
10
|
'lcb-calendar-search': (typeof import('./types/components/lcb-calendar-search/lcb-calendar-search.vue'))['default']
|
|
10
11
|
'lcb-city-select': (typeof import('./types/components/lcb-city-select/lcb-city-select.vue'))['default']
|
|
11
|
-
'lcb-
|
|
12
|
+
'lcb-dynamic-data': (typeof import('./types/components/lcb-dynamic-data/lcb-dynamic-data.vue'))['default']
|
|
12
13
|
'lcb-gap': (typeof import('./types/components/lcb-gap/lcb-gap.vue'))['default']
|
|
13
14
|
'lcb-grid': (typeof import('./types/components/lcb-grid/lcb-grid.vue'))['default']
|
|
14
15
|
'lcb-home-search': (typeof import('./types/components/lcb-home-search/lcb-home-search.vue'))['default']
|
|
15
16
|
'lcb-image': (typeof import('./types/components/lcb-image/lcb-image.vue'))['default']
|
|
16
17
|
'lcb-img-nav': (typeof import('./types/components/lcb-img-nav/lcb-img-nav.vue'))['default']
|
|
18
|
+
'lcb-list': (typeof import('./types/components/lcb-list/lcb-list.vue'))['default']
|
|
17
19
|
'lcb-nav': (typeof import('./types/components/lcb-nav/lcb-nav.vue'))['default']
|
|
18
20
|
'lcb-notice': (typeof import('./types/components/lcb-notice/lcb-notice.vue'))['default']
|
|
19
21
|
'lcb-product': (typeof import('./types/components/lcb-product/lcb-product.vue'))['default']
|