tiny-vue_version0/examples/sites/demos/pc/app/select/nest-grid-composition-api.vue

100 lines
2.6 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="demo-select">
<p>场景1嵌套表格单选</p>
<br />
<tiny-select
v-model="value1"
value-field="id"
text-field="city"
render-type="grid"
:grid-op="gridOpSingle"
></tiny-select>
<br /><br />
<p>场景2嵌套表格多选</p>
<br />
<tiny-select
v-model="value2"
multiple
value-field="id"
text-field="city"
render-type="grid"
:grid-op="gridOpMulti"
></tiny-select>
<br /><br />
<p>场景3嵌套表格 + 可搜索 + 可清除</p>
<br />
<tiny-select
ref="select"
v-model="value3"
filterable
:filter-method="filter"
clearable
value-field="id"
text-field="city"
render-type="grid"
:grid-op="gridOpSingle"
></tiny-select>
</div>
</template>
<script setup>
import { ref, reactive } from 'vue'
import { Select as TinySelect } from '@opentiny/vue'
const value1 = ref('')
const value2 = ref([])
const value3 = ref('')
const gridOpSingle = reactive({
data: [
{ id: '001', area: '华南区', province: '广东省', city: '深圳1' },
{ id: '002', area: '华南区', province: '广东省', city: '深圳市' },
{ id: '003', area: '华南区', province: '广东省', city: '珠海市' },
{ id: '004', area: '华南区', province: '广东省', city: '佛山市' },
{ id: '005', area: '华南区', province: '广东省', city: '中山市' }
],
columns: [
{ type: 'radio', title: '' },
{ field: 'area', title: '区域', width: 90 },
{ field: 'province', title: '省份', width: 60 },
{ field: 'city', title: '城市', width: 60 }
]
})
const gridOpMulti = reactive({
data: [
{ id: '001', area: '华南区', province: '广东省', city: '深圳1' },
{ id: '002', area: '华南区', province: '广东省', city: '深圳市' },
{ id: '003', area: '华南区', province: '广东省', city: '珠海市' },
{ id: '004', area: '华南区', province: '广东省', city: '佛山市' },
{ id: '005', area: '华南区', province: '广东省', city: '中山市' }
],
columns: [
{ type: 'selection', title: '' },
{ field: 'area', title: '区域', width: 90 },
{ field: 'province', title: '省份', width: 60 },
{ field: 'city', title: '城市', width: 60 }
]
})
const filter = (value) => {
if (!value) {
return gridOpSingle.data
}
return gridOpSingle.data.filter((item) => {
return item.city.includes(value)
})
}
</script>
<style lang="less" scoped>
.tiny-select {
width: 280px;
}
p {
font-size: 14px;
line-height: 1.5;
}
</style>