You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Laravel+Vue.js实现输入条码后自动填充配件供应商及描述字段

修复方案

第一步:修改前端模板的条码输入事件

你需要在触发getAccessory方法时传入当前编辑行的索引,才能准确定位要回填的目标行,修改条码输入框代码:

<input type="text" class="form-control" name="barcode" v-model="line.barcode" @change="getAccessory(line.barcode, k)" required>

第二步:修改Vue的getAccessory方法

拿到接口返回的配件数据后,直接赋值给对应索引的行字段即可:

getAccessory(barcode, lineIndex) {
    axios.get("/getdetails/?barcode=" + barcode).then(res => {
        // 取返回的第一条匹配数据,你现有控制器返回的是数组
        const accessory = res.data[0] ?? null;
        if(accessory) {
            // 如果是Vue2环境,为了保证响应式生效,建议用$set赋值
            this.$set(this.form.lines[lineIndex], 'vendor_id', accessory.vendor_id);
            this.$set(this.form.lines[lineIndex], 'description', accessory.description);
        }
    });
}

第三步:优化Laravel控制器逻辑(可选推荐)

因为条码是唯一标识,不需要返回集合,直接返回单条数据更合理:

public function getaccessory() 
{
    $barcode = request('barcode');
    $accessory = DB::table('accessories')
        ->where('barcode', $barcode)
        ->select('vendor_id', 'description')
        ->first();
    return response()->json($accessory); 
}

如果修改了控制器,Vue里的取值逻辑可以改成const accessory = res.data ?? null;,不需要再取下标0。

内容的提问来源于stack exchange,提问作者Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 09:18:00