77 lines
1.5 KiB
Vue
77 lines
1.5 KiB
Vue
<template>
|
||
<j-search
|
||
:target='target'
|
||
:columns='processedColumns'
|
||
:class='props.class'
|
||
style='padding-top: 18px; padding-bottom: 18px;'
|
||
@search='searchSubmit'
|
||
/>
|
||
</template>
|
||
|
||
<script setup lang='ts' name='ProSearch'>
|
||
import { PropType } from 'vue'
|
||
import { JColumnsProps } from 'components/Table/types'
|
||
import { saveSearchHistory, getSearchHistory, deleteSearchHistory } from '@/api/comm'
|
||
|
||
interface Emit {
|
||
(e: 'search', data: any): void
|
||
}
|
||
|
||
const props = defineProps({
|
||
columns: {
|
||
type: Array as PropType<JColumnsProps[]>,
|
||
default: () => [],
|
||
required: true
|
||
},
|
||
type: {
|
||
type: String,
|
||
default: 'terms'
|
||
},
|
||
target: {
|
||
type: String,
|
||
default: '',
|
||
required: true
|
||
},
|
||
class: {
|
||
type: String,
|
||
default: ''
|
||
}
|
||
})
|
||
|
||
const emit = defineEmits<Emit>()
|
||
|
||
// 处理列配置,为每个带有search的列自动添加defaultValue(如果没有的话)
|
||
const processedColumns = computed(() => {
|
||
return props.columns.map(column => {
|
||
// 如果列有search配置但没有defaultValue,则添加一个空的defaultValue
|
||
if (column.search && !column.search.hasOwnProperty('defaultValue')) {
|
||
return {
|
||
...column,
|
||
search: {
|
||
...column.search,
|
||
defaultValue: null
|
||
}
|
||
}
|
||
}
|
||
return column
|
||
})
|
||
})
|
||
|
||
/**
|
||
* 提交
|
||
*/
|
||
const searchSubmit = (data: any) => {
|
||
console.log("搜索--------",data)
|
||
data = {
|
||
terms:[{
|
||
terms:data
|
||
}]
|
||
}
|
||
emit('search', data)
|
||
}
|
||
|
||
</script>
|
||
|
||
<style scoped lang='less'>
|
||
|
||
</style> |