feat: add provider autocomplete to service form

Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
This commit is contained in:
dxc
2026-02-10 15:10:55 +08:00
parent 695c78090a
commit 8d00e6783c

View File

@ -161,9 +161,14 @@
/>
</el-form-item>
<el-form-item label="服务商" prop="provider_name">
<el-input
<el-autocomplete
v-model="form.provider_name"
placeholder="请输入服务商名称"
:fetch-suggestions="querySearchProvider"
placeholder="输入或选择服务商"
style="width: 100%"
clearable
:trigger-on-focus="true"
@select="handleProviderSelect"
/>
</el-form-item>
<el-form-item label="简介" prop="description">
@ -199,6 +204,8 @@ import {
updateService,
deleteService,
searchMaterialBase,
getProviderSuggestions,
getUserSuggestions,
type ServiceItem,
type ServiceQueryParams,
type ServiceCreateRequest,
@ -305,6 +312,30 @@ const onMaterialSelected = (val: number) => {
}
}
// 服务商建议
const fetchProviderSuggestions = async (query: string, cb: any) => {
if (!form.base_id) {
cb([])
return
}
try {
const res: any = await getProviderSuggestions({ base_id: form.base_id })
if (res.code === 200) {
const providers = res.data.map((name: string) => ({ value: name }))
const filtered = query ? providers.filter((item: any) => item.value.toLowerCase().includes(query.toLowerCase())) : providers
cb(filtered)
} else {
cb([])
}
} catch (e) {
cb([])
}
}
const querySearchProvider = (qs: string, cb: any) => fetchProviderSuggestions(qs, cb)
const handleProviderSelect = (item: any) => {
form.provider_name = item.value
}
// 弹窗相关
const dialogVisible = ref(false)
const dialogTitle = ref('')