@daysnap/horn-ui
Version:
hron ui
223 lines (200 loc) • 5.43 kB
Markdown
# HorSelectPicker
### 介绍
搭配cell的picker
## 代码演示
### 基础用法
```html
<template>
<demo-block title="基础用法">
<hor-select-picker v-bind="selectPicker" v-model="selectPicker.modelValue" />
<hor-cell label="modelValue数字或字符串" :value="selectPicker.modelValue"></hor-cell>
</demo-block>
<demo-block title="基础用法">
<hor-select-picker v-bind="selectPicker2" v-model="selectPicker2.modelValue" />
<hor-cell label="modelValue对象" :value="selectPicker2.modelValue"></hor-cell>
</demo-block>
<demo-block title="级联要求v-model:必须为数组(value:string)">
<hor-select-picker v-bind="selectPicker3" v-model="selectPicker3.modelValue" />
<hor-cell label="modelValue对象" :value="selectPicker3.modelValue"></hor-cell>
</demo-block>
<demo-block title="级联要求v-model:必须为数组(value:object)">
<hor-select-picker v-bind="selectPicker4" v-model="selectPicker4.modelValue" />
<hor-cell label="modelValue对象" :value="selectPicker4.modelValue"></hor-cell>
</demo-block>
</template>
<script setup lang="ts">
import type { PickerColumn } from 'vant'
import type { HorSelectPickerProps } from '@daysnap/horn-ui'
import { showLoadingToast } from 'vant'
import { HorSelectPicker, HorCell } from '@daysnap/horn-ui'
import { ref } from 'vue'
const singleColumns: PickerColumn = [
{
text: '浙江',
value: 'Zhejiang',
},
{ text: '西湖区', value: 'Xihu' },
{ text: '余杭区', value: 'Yuhang' },
{ text: '鼓楼区', value: 'Gulou' },
{ text: '台江区', value: 'Taijiang' },
{ text: '思明区', value: 'Siming' },
{ text: '海沧区', value: 'Haicang' },
{
text: '福建',
value: 'Fujian',
},
]
const columns1: PickerColumn = [
{
text: '浙江',
value: 'Zhejiang',
children: [
{
text: '杭州',
value: 'Hangzhou',
children: [
{ text: '西湖区', value: 'Xihu' },
{ text: '余杭区', value: 'Yuhang' },
],
},
{
text: '温州',
value: 'Wenzhou',
children: [
{ text: '鹿城区', value: 'Lucheng' },
{ text: '瓯海区', value: 'Ouhai' },
],
},
],
},
{
text: '福建',
value: 'Fujian',
children: [
{
text: '福州',
value: 'Fuzhou',
children: [
{ text: '鼓楼区', value: 'Gulou' },
{ text: '台江区', value: 'Taijiang' },
],
},
{
text: '厦门',
value: 'Xiamen',
children: [
{ text: '思明区', value: 'Siming' },
{ text: '海沧区', value: 'Haicang' },
],
},
],
},
]
const columns2 = () => {
return new Promise<PickerColumn>((res) => {
const toast = showLoadingToast('加载中...')
setTimeout(() => {
toast.close()
res(columns1)
}, 2000)
})
}
const selectPicker = ref<Partial<HorSelectPickerProps>>({
modelValue: 'Gulou',
label: '请选择类型',
required: true,
title: '请选择类型',
placeholder: '请选择公司',
clearable: true,
formatter: (v: any) => v + '省',
options: singleColumns,
})
const selectPicker2 = ref<Partial<HorSelectPickerProps>>({
modelValue: { text: '海沧区', value: 'Haicang' },
label: '请选择类型',
required: true,
title: '请选择类型',
placeholder: '请选择公司',
valueType: 'object',
clearable: true,
formatter: (v: any) => v + '省',
options: singleColumns,
})
const selectPicker3 = ref<Partial<HorSelectPickerProps>>({
// modelValue: { text: '西湖区', value: 'Xihu' },
modelValue: ['Zhejiang', 'Hangzhou', 'Xihu'],
label: '请选择类型',
required: true,
title: '请选择类型',
placeholder: '请选择公司',
clearable: true,
triggerType: 'immediately',
formatter: (v: any) => v + '省',
options: columns2,
})
const selectPicker4 = ref<Partial<HorSelectPickerProps>>({
modelValue: [{ text: '海沧区', value: 'Haicang' }],
label: '请选择类型',
required: true,
title: '请选择类型',
valueType: 'object',
placeholder: '请选择公司',
clearable: true,
triggerType: 'lazy',
formatter: (v: any) => v + '省',
options: columns2,
})
</script>
```
## API
### 属性 Props
<table>
<tr>
<td>名称</td>
<td>类型</td>
<td>默认值</td>
</tr>
<tr v-for="(item, key) in horSelectPickerProps" :key="key">
<td>{{ key }}</td>
<td>{{ parseType(item.type || item) }}</td>
<td>{{ reserve(item.default, '-') }}</td>
</tr>
</table>
<table>
<tr>
<td>名称</td>
<td>说明</td>
</tr>
<tr>
<td>xx</td>
<td>xxx</td>
</tr>
</table>
### 插槽 Slots
<table>
<tr>
<td>名称</td>
<td>说明</td>
</tr>
<tr>
<td>xx</td>
<td>xxx</td>
</tr>
</table>
### 实例方法
<table>
<tr>
<td>名称</td>
<td>说明</td>
</tr>
<tr>
<td>xx</td>
<td>xxx</td>
</tr>
</table>
<script setup lang="ts">
import { reserve } from '@daysnap/utils'
import { HorCell } from '../hor-cell'
import { HorSelectPicker, horSelectPickerProps } from '.'
import { parseType } from '../utils'
</script>