pagetype列表页过滤栏增加ID字段,并实现模糊匹配
This commit is contained in:
parent
4e9ec53543
commit
9e468f9f13
@ -895,8 +895,12 @@ async function loadData() {
|
||||
const fieldMeta = metaFields.value.find(f => f.fieldname === fieldName)
|
||||
const fieldType = fieldMeta?.fieldtype || ''
|
||||
|
||||
// 特殊处理:name字段(ID)始终使用模糊搜索
|
||||
if (fieldName === 'name' && typeof value === 'string') {
|
||||
filterConditions.push([fieldName, 'like', `%${value}%`])
|
||||
}
|
||||
// Link字段类型:需要同时匹配字段值和title_field
|
||||
if (fieldType === 'Link' && typeof value === 'string' && fieldMeta?.options) {
|
||||
else if (fieldType === 'Link' && typeof value === 'string' && fieldMeta?.options) {
|
||||
// 收集Link字段过滤条件,稍后处理
|
||||
linkFieldFilters.push({ fieldName, value: value as string, fieldMeta })
|
||||
} else if (['Data', 'Text', 'Long Text', 'Comment'].includes(fieldType)) {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<FilterBar
|
||||
v-if="fields.length > 0"
|
||||
:fields="fields"
|
||||
v-if="fieldsWithId.length > 0"
|
||||
:fields="fieldsWithId"
|
||||
:model-value="filters"
|
||||
@update:model-value="handleUpdateFilters"
|
||||
@filter-change="handleFilterChange"
|
||||
@ -9,6 +9,7 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { computed } from 'vue'
|
||||
import FilterBar from '@/core/components/FilterBar.vue'
|
||||
|
||||
interface Props {
|
||||
@ -24,6 +25,30 @@ interface Emits {
|
||||
const props = defineProps<Props>()
|
||||
const emit = defineEmits<Emits>()
|
||||
|
||||
// 确保ID字段在第一位
|
||||
const fieldsWithId = computed(() => {
|
||||
const existingFields = props.fields || []
|
||||
|
||||
// 检查是否已经有name字段
|
||||
const hasNameField = existingFields.some(f => f.fieldname === 'name')
|
||||
|
||||
if (hasNameField) {
|
||||
// 如果已经有name字段,将其移到第一位
|
||||
const nameField = existingFields.find(f => f.fieldname === 'name')
|
||||
const otherFields = existingFields.filter(f => f.fieldname !== 'name')
|
||||
return [nameField, ...otherFields]
|
||||
} else {
|
||||
// 如果没有name字段,添加一个ID字段到第一位
|
||||
const idField = {
|
||||
fieldname: 'name',
|
||||
label: 'ID',
|
||||
fieldtype: 'Data',
|
||||
in_standard_filter: 1
|
||||
}
|
||||
return [idField, ...existingFields]
|
||||
}
|
||||
})
|
||||
|
||||
function handleUpdateFilters(value: Record<string, any>) {
|
||||
emit('update:filters', value)
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user