@tplc/business 0.0.14 → 0.0.16
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/action.d.ts +22 -0
- package/components/lcb-filter/api.ts +56 -0
- package/components/lcb-filter/components/ActionView/index.vue +40 -0
- package/components/lcb-filter/components/ComponentGroup/index.vue +86 -0
- package/components/lcb-filter/components/ComponentGroup/type.ts +6 -0
- package/components/lcb-filter/components/FilterSelect/index.vue +68 -0
- package/components/lcb-filter/components/FilterSelect/type.ts +3 -0
- package/components/lcb-filter/components/FilterSlider/index.vue +70 -0
- package/components/lcb-filter/components/FilterSlider/types.ts +3 -0
- package/components/lcb-filter/components/SelectTagView/index.vue +50 -0
- package/components/lcb-filter/components/TagSelect/index.vue +159 -0
- package/components/lcb-filter/components/TagSelect/type.ts +5 -0
- package/components/lcb-filter/components/TreeSelect/index.vue +131 -0
- package/components/lcb-filter/components/TreeSelect/type.ts +3 -0
- package/components/lcb-filter/hooks/useSelect.ts +45 -0
- package/components/lcb-filter/index.scss +30 -0
- package/components/lcb-filter/lcb-filter.vue +125 -0
- package/components/lcb-filter/types.ts +18 -0
- package/components/lcb-nav/lcb-nav.vue +5 -5
- package/components/lcb-nav/types.ts +2 -2
- package/global.d.ts +1 -0
- package/index.ts +7 -1
- package/package.json +2 -2
- package/types/components/lcb-filter/api.d.ts +49 -0
- package/types/components/lcb-filter/components/ActionView/index.vue.d.ts +34 -0
- package/types/components/lcb-filter/components/ComponentGroup/index.vue.d.ts +32 -0
- package/types/components/lcb-filter/components/ComponentGroup/type.d.ts +5 -0
- package/types/components/lcb-filter/components/FilterSelect/index.vue.d.ts +41 -0
- package/types/components/lcb-filter/components/FilterSelect/type.d.ts +2 -0
- package/types/components/lcb-filter/components/FilterSlider/index.vue.d.ts +36 -0
- package/types/components/lcb-filter/components/FilterSlider/types.d.ts +2 -0
- package/types/components/lcb-filter/components/SelectTagView/index.vue.d.ts +39 -0
- package/types/components/lcb-filter/components/TagSelect/index.vue.d.ts +39 -0
- package/types/components/lcb-filter/components/TagSelect/type.d.ts +4 -0
- package/types/components/lcb-filter/components/TreeSelect/index.vue.d.ts +41 -0
- package/types/components/lcb-filter/components/TreeSelect/type.d.ts +2 -0
- package/types/components/lcb-filter/hooks/useSelect.d.ts +25 -0
- package/types/components/lcb-filter/lcb-filter.vue.d.ts +57 -0
- package/types/components/lcb-filter/types.d.ts +17 -0
- package/types/components/lcb-img-nav/lcb-img-nav.vue.d.ts +1 -1
- package/types/components/lcb-nav/types.d.ts +2 -2
- package/types/components/lcb-user-top/lcb-user-top.vue.d.ts +1 -1
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<view>
|
|
3
|
+
<view class="flex">
|
|
4
|
+
<view class="scroll-view w-25">
|
|
5
|
+
<view
|
|
6
|
+
v-for="(item, index) in options"
|
|
7
|
+
:key="item.label"
|
|
8
|
+
@click="currentCategory = index"
|
|
9
|
+
class="filter-select flex justify-between items-center"
|
|
10
|
+
:class="currentCategory === index ? 'filter-select__choose' : ''"
|
|
11
|
+
>
|
|
12
|
+
{{ item.label }}
|
|
13
|
+
</view>
|
|
14
|
+
</view>
|
|
15
|
+
<view class="scroll-view flex-1 w-0 bg-#FAFAFA pl-4" v-if="mode === 'single'">
|
|
16
|
+
<view
|
|
17
|
+
v-for="item in options[currentCategory].children"
|
|
18
|
+
:key="item.label"
|
|
19
|
+
@click="onItemClick(item)"
|
|
20
|
+
class="filter-select flex justify-between items-center !px-36rpx !py-30rpx"
|
|
21
|
+
:class="getChecked(item) ? 'filter-select__choose' : ''"
|
|
22
|
+
>
|
|
23
|
+
{{ item.label }}
|
|
24
|
+
<wd-icon name="check" custom-class="choose_icon" v-if="innerValue === item.value" />
|
|
25
|
+
</view>
|
|
26
|
+
</view>
|
|
27
|
+
<view class="flex-1 w-0 bg-#FAFAFA pl-4 scroll-view" v-else>
|
|
28
|
+
<view v-for="item in options" :key="item.label">
|
|
29
|
+
<view class="filter-select__title">
|
|
30
|
+
{{ item.label }}
|
|
31
|
+
</view>
|
|
32
|
+
|
|
33
|
+
<view class="grid grid-cols-3 gap-20rpx">
|
|
34
|
+
<SelectTagView
|
|
35
|
+
v-for="child in item.children"
|
|
36
|
+
:key="child.label"
|
|
37
|
+
:title="child.label"
|
|
38
|
+
:checked="getChecked(child)"
|
|
39
|
+
@click="onItemClick(child)"
|
|
40
|
+
/>
|
|
41
|
+
</view>
|
|
42
|
+
</view>
|
|
43
|
+
</view>
|
|
44
|
+
</view>
|
|
45
|
+
<ActionView
|
|
46
|
+
:disabled="!Boolean(innerValue)"
|
|
47
|
+
@cancel="innerValue = undefined"
|
|
48
|
+
@submit="onSubmit"
|
|
49
|
+
/>
|
|
50
|
+
</view>
|
|
51
|
+
</template>
|
|
52
|
+
|
|
53
|
+
<script setup lang="ts">
|
|
54
|
+
import { computed, nextTick, ref } from 'vue'
|
|
55
|
+
import { TreeSelectProps } from './type'
|
|
56
|
+
import useSelect from '../../hooks/useSelect'
|
|
57
|
+
import SelectTagView from '../SelectTagView/index.vue'
|
|
58
|
+
import ActionView from '../ActionView/index.vue'
|
|
59
|
+
defineOptions({
|
|
60
|
+
name: 'TreeSelect',
|
|
61
|
+
options: {
|
|
62
|
+
addGlobalClass: true,
|
|
63
|
+
virtualHost: true,
|
|
64
|
+
styleIsolation: 'shared',
|
|
65
|
+
},
|
|
66
|
+
})
|
|
67
|
+
const props = defineProps<TreeSelectProps>()
|
|
68
|
+
const model = defineModel<string | string[]>()
|
|
69
|
+
const modelTitle = defineModel<string>('title')
|
|
70
|
+
const innerValue = ref(model.value)
|
|
71
|
+
const emits = defineEmits(['submit'])
|
|
72
|
+
const { onItemClick, options, getChecked } = useSelect(props, { model: innerValue })
|
|
73
|
+
const currentCategory = ref(0)
|
|
74
|
+
const treeObj = computed(() => {
|
|
75
|
+
return options.value.reduce(
|
|
76
|
+
(prev, next) => {
|
|
77
|
+
next?.children?.forEach((item) => {
|
|
78
|
+
prev[item.value as string] = item.label
|
|
79
|
+
})
|
|
80
|
+
return prev
|
|
81
|
+
},
|
|
82
|
+
{} as Record<string, string>,
|
|
83
|
+
)
|
|
84
|
+
})
|
|
85
|
+
const onSubmit = () => {
|
|
86
|
+
if (props.mode !== 'multiple') {
|
|
87
|
+
modelTitle.value = treeObj.value[innerValue.value as string]
|
|
88
|
+
}
|
|
89
|
+
model.value = innerValue.value
|
|
90
|
+
nextTick(() => {
|
|
91
|
+
emits('submit')
|
|
92
|
+
})
|
|
93
|
+
}
|
|
94
|
+
</script>
|
|
95
|
+
<style lang="scss" scoped>
|
|
96
|
+
@import '@tplc/wot/components/common/abstracts/variable';
|
|
97
|
+
.scroll-view {
|
|
98
|
+
max-height: 60vh;
|
|
99
|
+
overflow-y: auto;
|
|
100
|
+
}
|
|
101
|
+
.choose_icon {
|
|
102
|
+
color: $-color-theme;
|
|
103
|
+
font-size: $-cell-arrow-size;
|
|
104
|
+
}
|
|
105
|
+
.filter-select {
|
|
106
|
+
padding: 30rpx 40rpx;
|
|
107
|
+
font-size: $-cell-title-fs;
|
|
108
|
+
position: relative;
|
|
109
|
+
&__title {
|
|
110
|
+
margin-top: 34rpx;
|
|
111
|
+
font-weight: 500;
|
|
112
|
+
font-size: 30rpx;
|
|
113
|
+
color: $-color-theme;
|
|
114
|
+
margin-bottom: 30rpx;
|
|
115
|
+
}
|
|
116
|
+
&__choose {
|
|
117
|
+
color: $-color-theme;
|
|
118
|
+
// 透明背景颜色
|
|
119
|
+
&::after {
|
|
120
|
+
content: '';
|
|
121
|
+
position: absolute;
|
|
122
|
+
top: 0;
|
|
123
|
+
left: 0;
|
|
124
|
+
width: 100%;
|
|
125
|
+
height: 100%;
|
|
126
|
+
opacity: 0.05;
|
|
127
|
+
background-color: $-color-theme;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
</style>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { onMounted, ref, Ref } from 'vue'
|
|
2
|
+
import { FilterItemProps, Option } from '../types'
|
|
3
|
+
const useSelect = (
|
|
4
|
+
props: FilterItemProps,
|
|
5
|
+
{
|
|
6
|
+
model,
|
|
7
|
+
}: {
|
|
8
|
+
model: Ref<string | string[] | undefined>
|
|
9
|
+
},
|
|
10
|
+
) => {
|
|
11
|
+
const options = ref<Option[]>(props.options || [])
|
|
12
|
+
const onItemClick = (item: Option) => {
|
|
13
|
+
if (props.mode === 'multiple') {
|
|
14
|
+
if (typeof model.value === 'object' && model.value.includes(item.value as string)) {
|
|
15
|
+
model.value = model.value.filter((v) => v !== item.value)
|
|
16
|
+
} else {
|
|
17
|
+
model.value = [...(model.value || []), item.value as string]
|
|
18
|
+
}
|
|
19
|
+
} else {
|
|
20
|
+
model.value = item.value
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
onMounted(async () => {
|
|
25
|
+
if (props.apiPath) {
|
|
26
|
+
// 调用接口获取数据
|
|
27
|
+
const { data } = await uni.$lcb.http.get<Option[]>(props.apiPath)
|
|
28
|
+
options.value = data
|
|
29
|
+
}
|
|
30
|
+
})
|
|
31
|
+
const getChecked = (item: Option) => {
|
|
32
|
+
if (Array.isArray(model.value)) {
|
|
33
|
+
return model.value.includes(`${item.value}`)
|
|
34
|
+
} else {
|
|
35
|
+
return Boolean(model.value && model.value === item.value)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
options,
|
|
40
|
+
getChecked,
|
|
41
|
+
onItemClick,
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export default useSelect
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
@import '@tplc/wot/components/common/abstracts/variable';
|
|
2
|
+
|
|
3
|
+
.lcb-filter {
|
|
4
|
+
&__popup {
|
|
5
|
+
background: #F5F5F7;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
&-menu__choose {
|
|
9
|
+
color: $-color-theme !important;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.opacity-primary {
|
|
16
|
+
position: relative;
|
|
17
|
+
color: $-color-theme !important;
|
|
18
|
+
background-color: transparent !important;
|
|
19
|
+
font-weight: 500;
|
|
20
|
+
font-size: 24rpx !important;
|
|
21
|
+
|
|
22
|
+
&::after {
|
|
23
|
+
content: '';
|
|
24
|
+
position: absolute;
|
|
25
|
+
top: 0;
|
|
26
|
+
left: 0;
|
|
27
|
+
opacity: 0.14;
|
|
28
|
+
background-color: $-color-theme;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<view v-if="info">
|
|
3
|
+
<wd-drop-menu>
|
|
4
|
+
<wd-drop-menu-item
|
|
5
|
+
v-for="(item, index) in info?.filterComponent"
|
|
6
|
+
:key="item.valueName"
|
|
7
|
+
:title="titleObj[item.valueName] || item.fitlerName"
|
|
8
|
+
icon="caret-down-small"
|
|
9
|
+
icon-size="26px"
|
|
10
|
+
:selected="getSelect(item)"
|
|
11
|
+
ref="dropMenu"
|
|
12
|
+
>
|
|
13
|
+
<view class="lcb-filter__popup">
|
|
14
|
+
<FilterSelect
|
|
15
|
+
v-if="item.component === 'select'"
|
|
16
|
+
v-bind="item.componentProps"
|
|
17
|
+
v-model="filter[item.valueName]"
|
|
18
|
+
v-model:title="titleObj[item.valueName]"
|
|
19
|
+
@submit="onSubmit(index)"
|
|
20
|
+
/>
|
|
21
|
+
<TreeSelect
|
|
22
|
+
v-else-if="item.component === 'treeSelect'"
|
|
23
|
+
v-bind="item.componentProps"
|
|
24
|
+
v-model="filter[item.valueName]"
|
|
25
|
+
v-model:title="titleObj[item.valueName]"
|
|
26
|
+
@submit="onSubmit(index)"
|
|
27
|
+
/>
|
|
28
|
+
<ComponentGroup
|
|
29
|
+
v-else-if="item.component === 'componentGroup'"
|
|
30
|
+
v-bind="item.componentProps"
|
|
31
|
+
:filter="filter"
|
|
32
|
+
@submit="onSubmit(index, $event)"
|
|
33
|
+
/>
|
|
34
|
+
</view>
|
|
35
|
+
</wd-drop-menu-item>
|
|
36
|
+
</wd-drop-menu>
|
|
37
|
+
<view
|
|
38
|
+
v-if="info?.filterTags || info.btnComponent"
|
|
39
|
+
class="bg-white px-3 pb-2 box-border flex items-center"
|
|
40
|
+
>
|
|
41
|
+
<view class="flex gap-3.5 flex-1">
|
|
42
|
+
<TagSelect
|
|
43
|
+
v-if="info.filterTags"
|
|
44
|
+
size="small"
|
|
45
|
+
v-bind="info.filterTags.componentProps"
|
|
46
|
+
v-model="filter[info.filterTags.valueName]"
|
|
47
|
+
/>
|
|
48
|
+
</view>
|
|
49
|
+
<wd-button v-if="info.btnComponent" custom-class="!h-60rpx opacity-primary">
|
|
50
|
+
{{ info.btnComponent?.postRequest }}
|
|
51
|
+
</wd-button>
|
|
52
|
+
</view>
|
|
53
|
+
</view>
|
|
54
|
+
</template>
|
|
55
|
+
|
|
56
|
+
<script setup lang="ts">
|
|
57
|
+
import { ref, watch } from 'vue'
|
|
58
|
+
import { LcbFilterProps } from './types'
|
|
59
|
+
import { FilterComponent, getFilterDetail, LcbFilterResult } from './api'
|
|
60
|
+
import FilterSelect from './components/FilterSelect/index.vue'
|
|
61
|
+
import TreeSelect from './components/TreeSelect/index.vue'
|
|
62
|
+
import ComponentGroup from './components/ComponentGroup/index.vue'
|
|
63
|
+
import TagSelect from './components/TagSelect/index.vue'
|
|
64
|
+
import './index.scss'
|
|
65
|
+
defineOptions({
|
|
66
|
+
name: 'LcbFilter',
|
|
67
|
+
options: {
|
|
68
|
+
addGlobalClass: true,
|
|
69
|
+
virtualHost: true,
|
|
70
|
+
styleIsolation: 'shared',
|
|
71
|
+
},
|
|
72
|
+
})
|
|
73
|
+
const dropMenu = ref()
|
|
74
|
+
const props = withDefaults(defineProps<LcbFilterProps>(), {
|
|
75
|
+
pageFilterType: 'hotelTravelFilter',
|
|
76
|
+
})
|
|
77
|
+
const info = ref<LcbFilterResult>()
|
|
78
|
+
const filter = ref<Record<string, any>>({})
|
|
79
|
+
const titleObj = ref<Record<string, any>>({})
|
|
80
|
+
watch(
|
|
81
|
+
() => props.pageFilterType,
|
|
82
|
+
async (val) => {
|
|
83
|
+
if (val) {
|
|
84
|
+
const { data } = await getFilterDetail(val)
|
|
85
|
+
data.filterComponent.forEach((item) => {
|
|
86
|
+
filter.value[item.valueName] = item.defaultValue
|
|
87
|
+
titleObj.value[item.valueName] = item.fitlerName
|
|
88
|
+
if (item.componentProps?.componentList) {
|
|
89
|
+
item.componentProps.componentList.forEach((data) => {
|
|
90
|
+
filter.value[data.valueName] = data.defaultValue
|
|
91
|
+
})
|
|
92
|
+
}
|
|
93
|
+
})
|
|
94
|
+
if (data.filterTags) {
|
|
95
|
+
filter.value[data.filterTags.valueName] = data.filterTags.defaultValue
|
|
96
|
+
titleObj.value[data.filterTags.valueName] = data.filterTags.defaultName
|
|
97
|
+
}
|
|
98
|
+
info.value = data
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
immediate: true,
|
|
103
|
+
},
|
|
104
|
+
)
|
|
105
|
+
const onSubmit = (index: number, filterObj?: Record<string, any>) => {
|
|
106
|
+
dropMenu.value?.[index]?.close()
|
|
107
|
+
if (filterObj) {
|
|
108
|
+
filter.value = {
|
|
109
|
+
...filter.value,
|
|
110
|
+
...filterObj,
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const getSelect = (item: FilterComponent) => {
|
|
115
|
+
if (item.component === 'componentGroup') {
|
|
116
|
+
return item.componentProps.componentList?.some((v) => filter.value[v.valueName])
|
|
117
|
+
} else {
|
|
118
|
+
return Boolean(filter.value[item.valueName])
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
</script>
|
|
122
|
+
|
|
123
|
+
<style lang="scss" scoped>
|
|
124
|
+
@import './index';
|
|
125
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface LcbFilterProps {
|
|
2
|
+
pageFilterType?: string
|
|
3
|
+
}
|
|
4
|
+
export interface Option {
|
|
5
|
+
label: string
|
|
6
|
+
value: string | string[]
|
|
7
|
+
custom?: boolean
|
|
8
|
+
max?: number
|
|
9
|
+
min?: number
|
|
10
|
+
children?: Option[]
|
|
11
|
+
unit?: string
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface FilterItemProps {
|
|
15
|
+
mode?: 'multiple' | 'single'
|
|
16
|
+
apiPath?: string
|
|
17
|
+
options?: Option[]
|
|
18
|
+
}
|
|
@@ -148,12 +148,12 @@ const capsuleList = computed(() => {
|
|
|
148
148
|
|
|
149
149
|
return [...list, ...(props.capsules || [])] as ICapsule[]
|
|
150
150
|
})
|
|
151
|
-
const onCapsule = (
|
|
152
|
-
switch (
|
|
151
|
+
const onCapsule = ({ action = 'link', link }: ICapsule) => {
|
|
152
|
+
switch (action) {
|
|
153
153
|
case 'link':
|
|
154
|
-
if (
|
|
154
|
+
if (link) {
|
|
155
155
|
uni.navigateTo({
|
|
156
|
-
url:
|
|
156
|
+
url: link,
|
|
157
157
|
})
|
|
158
158
|
} else {
|
|
159
159
|
toBack()
|
|
@@ -161,7 +161,7 @@ const onCapsule = (item: ICapsule) => {
|
|
|
161
161
|
break
|
|
162
162
|
case 'home':
|
|
163
163
|
uni.switchTab({
|
|
164
|
-
url: '/pages/
|
|
164
|
+
url: '/pages/home/index',
|
|
165
165
|
})
|
|
166
166
|
break
|
|
167
167
|
}
|
package/global.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ declare module 'vue' {
|
|
|
4
4
|
'lcb-banner': (typeof import('./types/components/lcb-banner/lcb-banner.vue'))['default']
|
|
5
5
|
'lcb-banner-block': (typeof import('./types/components/lcb-banner-block/lcb-banner-block.vue'))['default']
|
|
6
6
|
'lcb-block': (typeof import('./types/components/lcb-block/lcb-block.vue'))['default']
|
|
7
|
+
'lcb-filter': (typeof import('./types/components/lcb-filter/lcb-filter.vue'))['default']
|
|
7
8
|
'lcb-grid': (typeof import('./types/components/lcb-grid/lcb-grid.vue'))['default']
|
|
8
9
|
'lcb-home-search': (typeof import('./types/components/lcb-home-search/lcb-home-search.vue'))['default']
|
|
9
10
|
'lcb-img-nav': (typeof import('./types/components/lcb-img-nav/lcb-img-nav.vue'))['default']
|
package/index.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { LcbGlobal } from 'action'
|
|
2
|
+
|
|
3
|
+
export const $lcb: LcbGlobal = {} as LcbGlobal
|
|
4
|
+
uni.$lcb = $lcb
|
|
1
5
|
// #ifdef H5
|
|
2
6
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
3
7
|
// @ts-ignore
|
|
@@ -16,13 +20,15 @@ for (const key in importFn) {
|
|
|
16
20
|
}
|
|
17
21
|
}
|
|
18
22
|
// #endif
|
|
19
|
-
|
|
20
23
|
const install = (Vue) => {
|
|
21
24
|
// #ifdef H5
|
|
22
25
|
components.forEach(function (component) {
|
|
23
26
|
Vue.component(component.name, component)
|
|
24
27
|
})
|
|
25
28
|
// #endif
|
|
29
|
+
// #ifndef APP-NVUE
|
|
30
|
+
Vue.config.globalProperties.$lcb = $lcb
|
|
31
|
+
// #endif
|
|
26
32
|
}
|
|
27
33
|
|
|
28
34
|
export default {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tplc/business",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.16",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"业务组件"
|
|
6
6
|
],
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
},
|
|
12
12
|
"peerDependencies": {
|
|
13
13
|
"vue": ">=3.2.47",
|
|
14
|
-
"@tplc/wot": "0.1.
|
|
14
|
+
"@tplc/wot": "0.1.5"
|
|
15
15
|
},
|
|
16
16
|
"engines": {
|
|
17
17
|
"node": ">=18",
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Option } from './types'
|
|
2
|
+
export interface LcbFilterResult {
|
|
3
|
+
btnComponent: BtnComponent
|
|
4
|
+
filterTags: FilterTags
|
|
5
|
+
filterComponent: FilterComponent[]
|
|
6
|
+
}
|
|
7
|
+
export interface FilterComponent {
|
|
8
|
+
fitlerName?: string
|
|
9
|
+
component: string
|
|
10
|
+
defaultValue?: string
|
|
11
|
+
defaultName?: string
|
|
12
|
+
valueName: string
|
|
13
|
+
componentProps: ComponentProps3
|
|
14
|
+
}
|
|
15
|
+
interface ComponentProps3 {
|
|
16
|
+
mode?: 'multiple' | 'single'
|
|
17
|
+
apiPath?: string
|
|
18
|
+
options?: Option[]
|
|
19
|
+
componentList?: ComponentList[]
|
|
20
|
+
}
|
|
21
|
+
export interface ComponentList {
|
|
22
|
+
fitlerName: string
|
|
23
|
+
component: string
|
|
24
|
+
valueName: string
|
|
25
|
+
defaultValue?: string | string[] | number[]
|
|
26
|
+
componentProps: ComponentProps
|
|
27
|
+
}
|
|
28
|
+
export interface FilterTags {
|
|
29
|
+
component: string
|
|
30
|
+
valueName: string
|
|
31
|
+
defaultValue?: string
|
|
32
|
+
defaultName?: string
|
|
33
|
+
componentProps: ComponentProps
|
|
34
|
+
}
|
|
35
|
+
export interface ComponentProps {
|
|
36
|
+
mode?: 'multiple' | 'single'
|
|
37
|
+
max: number
|
|
38
|
+
min: number
|
|
39
|
+
apiPath: string
|
|
40
|
+
options: Option[]
|
|
41
|
+
unit?: string
|
|
42
|
+
}
|
|
43
|
+
interface BtnComponent {
|
|
44
|
+
postRequest: string
|
|
45
|
+
}
|
|
46
|
+
export declare const getFilterDetail: (
|
|
47
|
+
val: string,
|
|
48
|
+
) => Promise<import('../../action').IResData<LcbFilterResult>>
|
|
49
|
+
export {}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
declare const _default: import('vue').DefineComponent<
|
|
2
|
+
{
|
|
3
|
+
disabled: {
|
|
4
|
+
type: BooleanConstructor
|
|
5
|
+
}
|
|
6
|
+
},
|
|
7
|
+
{},
|
|
8
|
+
unknown,
|
|
9
|
+
{},
|
|
10
|
+
{},
|
|
11
|
+
import('vue').ComponentOptionsMixin,
|
|
12
|
+
import('vue').ComponentOptionsMixin,
|
|
13
|
+
{
|
|
14
|
+
submit: (...args: any[]) => void
|
|
15
|
+
cancel: (...args: any[]) => void
|
|
16
|
+
},
|
|
17
|
+
string,
|
|
18
|
+
import('vue').PublicProps,
|
|
19
|
+
Readonly<
|
|
20
|
+
import('vue').ExtractPropTypes<{
|
|
21
|
+
disabled: {
|
|
22
|
+
type: BooleanConstructor
|
|
23
|
+
}
|
|
24
|
+
}>
|
|
25
|
+
> & {
|
|
26
|
+
onSubmit?: ((...args: any[]) => any) | undefined
|
|
27
|
+
onCancel?: ((...args: any[]) => any) | undefined
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
disabled: boolean
|
|
31
|
+
},
|
|
32
|
+
{}
|
|
33
|
+
>
|
|
34
|
+
export default _default
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ComponentGroupProps } from './type'
|
|
2
|
+
declare const _default: import('vue').DefineComponent<
|
|
3
|
+
__VLS_TypePropsToOption<ComponentGroupProps>,
|
|
4
|
+
{},
|
|
5
|
+
unknown,
|
|
6
|
+
{},
|
|
7
|
+
{},
|
|
8
|
+
import('vue').ComponentOptionsMixin,
|
|
9
|
+
import('vue').ComponentOptionsMixin,
|
|
10
|
+
{
|
|
11
|
+
submit: (...args: any[]) => void
|
|
12
|
+
},
|
|
13
|
+
string,
|
|
14
|
+
import('vue').PublicProps,
|
|
15
|
+
Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToOption<ComponentGroupProps>>> & {
|
|
16
|
+
onSubmit?: ((...args: any[]) => any) | undefined
|
|
17
|
+
},
|
|
18
|
+
{},
|
|
19
|
+
{}
|
|
20
|
+
>
|
|
21
|
+
export default _default
|
|
22
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T
|
|
23
|
+
type __VLS_TypePropsToOption<T> = {
|
|
24
|
+
[K in keyof T]-?: {} extends Pick<T, K>
|
|
25
|
+
? {
|
|
26
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>
|
|
27
|
+
}
|
|
28
|
+
: {
|
|
29
|
+
type: import('vue').PropType<T[K]>
|
|
30
|
+
required: true
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { FilterSelectProps } from './type'
|
|
2
|
+
declare let __VLS_typeProps: FilterSelectProps
|
|
3
|
+
type __VLS_PublicProps = {
|
|
4
|
+
modelValue?: string | string[]
|
|
5
|
+
title?: string
|
|
6
|
+
} & typeof __VLS_typeProps
|
|
7
|
+
declare const _default: import('vue').DefineComponent<
|
|
8
|
+
__VLS_TypePropsToOption<__VLS_PublicProps>,
|
|
9
|
+
{},
|
|
10
|
+
unknown,
|
|
11
|
+
{},
|
|
12
|
+
{},
|
|
13
|
+
import('vue').ComponentOptionsMixin,
|
|
14
|
+
import('vue').ComponentOptionsMixin,
|
|
15
|
+
{
|
|
16
|
+
'update:modelValue': (modelValue: string | string[]) => void
|
|
17
|
+
'update:title': (title: string) => void
|
|
18
|
+
submit: (...args: any[]) => void
|
|
19
|
+
},
|
|
20
|
+
string,
|
|
21
|
+
import('vue').PublicProps,
|
|
22
|
+
Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToOption<__VLS_PublicProps>>> & {
|
|
23
|
+
onSubmit?: ((...args: any[]) => any) | undefined
|
|
24
|
+
'onUpdate:modelValue'?: ((modelValue: string | string[]) => any) | undefined
|
|
25
|
+
'onUpdate:title'?: ((title: string) => any) | undefined
|
|
26
|
+
},
|
|
27
|
+
{},
|
|
28
|
+
{}
|
|
29
|
+
>
|
|
30
|
+
export default _default
|
|
31
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T
|
|
32
|
+
type __VLS_TypePropsToOption<T> = {
|
|
33
|
+
[K in keyof T]-?: {} extends Pick<T, K>
|
|
34
|
+
? {
|
|
35
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>
|
|
36
|
+
}
|
|
37
|
+
: {
|
|
38
|
+
type: import('vue').PropType<T[K]>
|
|
39
|
+
required: true
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { FilterSliderProps } from './types'
|
|
2
|
+
declare let __VLS_typeProps: FilterSliderProps
|
|
3
|
+
type __VLS_PublicProps = {
|
|
4
|
+
modelValue?: number[]
|
|
5
|
+
} & typeof __VLS_typeProps
|
|
6
|
+
declare const _default: import('vue').DefineComponent<
|
|
7
|
+
__VLS_TypePropsToOption<__VLS_PublicProps>,
|
|
8
|
+
{},
|
|
9
|
+
unknown,
|
|
10
|
+
{},
|
|
11
|
+
{},
|
|
12
|
+
import('vue').ComponentOptionsMixin,
|
|
13
|
+
import('vue').ComponentOptionsMixin,
|
|
14
|
+
{
|
|
15
|
+
'update:modelValue': (modelValue: number[]) => void
|
|
16
|
+
},
|
|
17
|
+
string,
|
|
18
|
+
import('vue').PublicProps,
|
|
19
|
+
Readonly<import('vue').ExtractPropTypes<__VLS_TypePropsToOption<__VLS_PublicProps>>> & {
|
|
20
|
+
'onUpdate:modelValue'?: ((modelValue: number[]) => any) | undefined
|
|
21
|
+
},
|
|
22
|
+
{},
|
|
23
|
+
{}
|
|
24
|
+
>
|
|
25
|
+
export default _default
|
|
26
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T
|
|
27
|
+
type __VLS_TypePropsToOption<T> = {
|
|
28
|
+
[K in keyof T]-?: {} extends Pick<T, K>
|
|
29
|
+
? {
|
|
30
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>
|
|
31
|
+
}
|
|
32
|
+
: {
|
|
33
|
+
type: import('vue').PropType<T[K]>
|
|
34
|
+
required: true
|
|
35
|
+
}
|
|
36
|
+
}
|