feat(purchaseorder): 添加产品编码和型号查询功能

- 在采购订单列表页面添加产品编码和产品型号查询条件输入框
- 在表格中新增产品编码、产品型号和数量列显示相关信息
- 实现多条目时通过popover弹窗展示所有产品的详细信息
- 后端增加按产品编码和型号过滤采购订单的功能
- 优化采购订单详情查询逻辑以支持新的筛选条件
- 调整产品描述列宽度以改善显示效果
dev_1.0.1^2
chenhao 2026-02-10 11:24:51 +08:00
parent e04b80ff25
commit e298748d45
4 changed files with 70 additions and 3 deletions

View File

@ -130,7 +130,7 @@
<span>{{ scope.row.productModel }}</span>
</template>
</el-table-column>
<el-table-column label="产品描述" show-overflow-tooltip>
<el-table-column label="产品描述" width="300" >
<template slot-scope="scope">
<span>{{ scope.row.productDescription }}</span>
</template>

View File

@ -25,6 +25,22 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="产品编码" prop="productCode">
<el-input
v-model="queryParams.productCode"
placeholder="请输入产品编码"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="产品型号" prop="productModel">
<el-input
v-model="queryParams.productModel"
placeholder="请输入产品型号"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="汇智负责人" prop="ownerName">
<el-input
v-model="queryParams.ownerName"
@ -103,6 +119,44 @@
<el-table-column label="制造商名称" align="center" prop="vendorName" width="120"/>
<el-table-column label="联系人" align="center" prop="vendorUser" width="100"/>
<el-table-column label="联系电话" align="center" prop="vendorPhone" width="120"/>
<el-table-column label="产品编码" align="center" width="150">
<template slot-scope="scope">
<div v-if="scope.row.omsPurchaseOrderItemList && scope.row.omsPurchaseOrderItemList.length > 0">
<span v-if="scope.row.omsPurchaseOrderItemList.length === 1">
{{ scope.row.omsPurchaseOrderItemList[0].productCode }}
</span>
<el-popover v-else placement="bottom" width="500" trigger="click">
<el-table :data="scope.row.omsPurchaseOrderItemList" size="mini">
<el-table-column property="productCode" label="产品编码" width="180"></el-table-column>
<el-table-column property="productModel" label="产品型号" width="180"></el-table-column>
<el-table-column property="quantity" label="数量" width="80"></el-table-column>
</el-table>
<div slot="reference" style="cursor: pointer; color: #409EFF">
{{ scope.row.omsPurchaseOrderItemList[0].productCode }} <i class="el-icon-arrow-down"></i>
</div>
</el-popover>
</div>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="产品型号" align="center" width="150">
<template slot-scope="scope">
<span v-if="scope.row.omsPurchaseOrderItemList && scope.row.omsPurchaseOrderItemList.length > 0">
{{ scope.row.omsPurchaseOrderItemList[0].productModel }}
<span v-if="scope.row.omsPurchaseOrderItemList.length > 1">...</span>
</span>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="数量" align="center" width="80">
<template slot-scope="scope">
<span v-if="scope.row.omsPurchaseOrderItemList && scope.row.omsPurchaseOrderItemList.length > 0">
{{ scope.row.omsPurchaseOrderItemList[0].quantity }}
<span v-if="scope.row.omsPurchaseOrderItemList.length > 1">...</span>
</span>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="含税总计金额" align="center" prop="totalAmount" width="120"/>
<el-table-column label="发起日期" align="center" prop="createTime" width="180" sortable>
<template slot-scope="scope">
@ -345,6 +399,8 @@ export default {
ownerName: null,
approveStatus: null,
confirmStatus: null,
productModel: null,
productCode: null,
status: null,
orderByColumn: 'createTime',
isAsc: 'desc'

View File

@ -101,7 +101,13 @@ public class OmsPurchaseOrderServiceImpl implements IOmsPurchaseOrderService, To
@Override
public List<OmsPurchaseOrder> selectOmsPurchaseOrderList(OmsPurchaseOrder omsPurchaseOrder)
{
return omsPurchaseOrderMapper.selectOmsPurchaseOrderList(omsPurchaseOrder);
List<OmsPurchaseOrder> omsPurchaseOrders = omsPurchaseOrderMapper.selectOmsPurchaseOrderList(omsPurchaseOrder);
if (CollUtil.isNotEmpty(omsPurchaseOrders)) {
List<OmsPurchaseOrderItem> omsPurchaseOrderItems = omsPurchaseOrderMapper.listItemByCodeList(omsPurchaseOrders.stream().map(OmsPurchaseOrder::getPurchaseNo).collect(Collectors.toList()));
Map<String, List<OmsPurchaseOrderItem>> collect = omsPurchaseOrderItems.stream().collect(Collectors.groupingBy(OmsPurchaseOrderItem::getPurchaseNo));
omsPurchaseOrders.forEach(item -> item.setOmsPurchaseOrderItemList(collect.get(item.getPurchaseNo())));
}
return omsPurchaseOrders;
}
/**

View File

@ -90,6 +90,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="flowType != null "> and t1.flow_type = #{flowType}</if>
<if test="vendorName != null "> and t2.vendor_name = #{vendorName}</if>
<if test="ownerName != null "> and t1.owner_name = #{ownerName}</if>
<if test="productCode != null and productCode!='' "> and t1.id in (select purchase_id from oms_purchase_order_item where product_code =#{productCode})</if>
<if test="productModel != null and productModel!=''"> and t1.id in
(select purchase_id from oms_purchase_order_item t1 left join product_info t2 on t1.product_code=t2.product_code where t2.model like concat('%',#{productModel},'%'))</if>
<if test="authVendorCodeList != null and authVendorCodeList.size>0 "> and t2.vendor_code in
<foreach item="item" collection="authVendorCodeList" separator="," open="(" close=")">#{item}</foreach>
</if>
@ -260,10 +263,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
t1.amount_total,
t1.delivery_date,
t1.inner_quantity,
opo.purchase_no
opo.purchase_no,
t3.model as product_model
FROM
oms_purchase_order_item t1
inner join oms_purchase_order opo on t1.purchase_id = opo.id
left join product_info t3 on t1.product_code=t3.product_code
where opo.purchase_no in
<foreach item="item" collection="list" separator="," open="(" close=")">
#{item}