pagetype列表页过滤栏增加ID字段,并实现模糊匹配

This commit is contained in:
jingrow 2026-01-24 19:52:08 +08:00
parent 4e9ec53543
commit 9e468f9f13
2 changed files with 32 additions and 3 deletions

View File

@ -895,8 +895,12 @@ async function loadData() {
const fieldMeta = metaFields.value.find(f => f.fieldname === fieldName)
const fieldType = fieldMeta?.fieldtype || ''
// nameID使
if (fieldName === 'name' && typeof value === 'string') {
filterConditions.push([fieldName, 'like', `%${value}%`])
}
// Linktitle_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)) {

View File

@ -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 {
// nameID
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)
}