修改半成品和成品新增时候搜索下拉框显示问题,新增负责人和生产人历史记录功能

This commit is contained in:
dxc
2026-02-28 17:27:57 +08:00
parent f7cfb5a346
commit e61c179d77
6 changed files with 116 additions and 496 deletions

View File

@ -108,8 +108,7 @@
</template>
<template #default="scope" v-else-if="col.prop === 'company_name'">
<el-tag v-if="scope.row.company_name" type="info" effect="plain" size="small" style="font-weight: bold;">{{ scope.row.company_name }}</el-tag>
<span v-else>-</span>
<span>{{ scope.row.company_name || '-' }}</span>
</template>
<template #default="scope" v-else-if="['serial_number'].includes(col.prop)">
@ -192,7 +191,7 @@
</div>
<div class="card-content">
<el-row :gutter="24" v-if="dialogStatus === 'create'" style="margin-bottom: 20px;">
<el-col :span="10">
<el-col :span="12">
<el-form-item label="物料搜索" prop="base_id" class="highlight-label">
<el-select
v-model="form.base_id"
@ -200,7 +199,7 @@
remote
reserve-keyword
clearable
placeholder="搜名称/规格..."
placeholder="请输入名称或规格进行检索..."
:remote-method="handleSearchMaterial"
@visible-change="handleMaterialDropdownVisible"
:loading="searchLoading"
@ -232,9 +231,9 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="14" style="display: flex; align-items: center;">
<el-col :span="12" style="display: flex; align-items: center;">
<span class="search-tip">
<el-icon><InfoFilled /></el-icon> 未输入时展示最新物料;输入关键词进行精确搜索
<el-icon><InfoFilled /></el-icon> 支持名称、规格型号、公司名称模糊搜索
</span>
</el-col>
</el-row>
@ -469,7 +468,7 @@ import {
deleteProductInbound,
searchMaterialBase,
searchBom,
getFilterOptions, // [新增]
getFilterOptions,
getManagerHistory // [新增]
} from '@/api/inbound/product'
import { uploadFile, deleteFile } from '@/api/inbound/buy'
@ -798,16 +797,14 @@ const onMaterialSelected = (val: number) => {
}
// ------------------------------------
// Autocomplete (Manager) - 后端历史记录驱动 (已修改)
// Autocomplete (Manager) - 后端历史记录驱动 (已修改为全局)
// ------------------------------------
const querySearchManager = async (query: string, cb: any) => {
if (!form.base_id) { cb([]); return }
try {
const res: any = await getManagerHistory({ base_id: form.base_id })
const res: any = await getManagerHistory({ keyword: query })
if (res.code === 200) {
const managers = (res.data || []).map((name: string) => ({ value: name }))
const filtered = query ? managers.filter((item: any) => item.value.toLowerCase().includes(query.toLowerCase())) : managers
cb(filtered)
cb(managers)
} else { cb([]) }
} catch (e) { cb([]) }
}

View File

@ -119,8 +119,7 @@
</template>
<template #default="scope" v-else-if="col.prop === 'company_name'">
<el-tag v-if="scope.row.company_name" type="info" effect="plain" size="small" style="font-weight: bold;">{{ scope.row.company_name }}</el-tag>
<span v-else>-</span>
<span>{{ scope.row.company_name || '-' }}</span>
</template>
<template #default="scope" v-else-if="col.prop === 'sn_bn'">
@ -755,16 +754,14 @@ const handleBomSelect = (val: string) => {
}
// ------------------------------------
// Autocomplete & Search Logic (后端 API 驱动) (已修改)
// Autocomplete & Search Logic (后端 API 驱动,全局检索)
// ------------------------------------
const querySearchManager = async (query: string, cb: any) => {
if (!form.base_id) { cb([]); return }
try {
const res: any = await getManagerHistory({ base_id: form.base_id })
const res: any = await getManagerHistory({ keyword: query })
if (res.code === 200) {
const managers = (res.data || []).map((name: string) => ({ value: name }))
const filtered = query ? managers.filter((item: any) => item.value.toLowerCase().includes(query.toLowerCase())) : managers
cb(filtered)
cb(managers)
} else { cb([]) }
} catch (e) { cb([]) }
}
@ -773,7 +770,7 @@ const handleManagerSelect = (item: any) => {
}
// ------------------------------------
// Material Search (Matches Buy.vue) (已修改)
// Material Search (Matches Buy.vue)
// ------------------------------------
const handleMaterialDropdownVisible = (visible: boolean) => { if (visible && materialOptions.value.length === 0) handleSearchMaterialDebounced('') }