fix:入库单详情信息调整

dev_1.0.2
jiangpeng 2026-07-02 17:27:28 +08:00
parent 4bd4fae390
commit 239009a59b
5 changed files with 214 additions and 1 deletions

View File

@ -1,6 +1,6 @@
<template>
<div style="padding: 20px;">
<el-form :model="form" label-width="100px">
<el-form :model="form" label-width="120px">
<el-row>
<el-col :span="24"><h3>入库信息</h3></el-col>
<el-col :span="12">
@ -23,6 +23,42 @@
<span v-else></span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="关联采购单号:">
<el-link v-if="form.purchaseNo" type="primary" @click="handleViewPurchaseOrder">{{ form.purchaseNo }}</el-link>
<span v-else>-</span>
</el-form-item>
</el-col>
</el-row>
<el-row class="inner-summary">
<el-col :span="6" class="summary-item">
<div class="summary-icon">¥</div>
<div>
<div class="summary-label">入库总价格</div>
<div class="summary-value price">{{ form.sumInnerPrice || 0 }}</div>
</div>
</el-col>
<el-col :span="6" class="summary-item">
<div class="summary-icon"><i class="el-icon-download"></i></div>
<div>
<div class="summary-label">入库数量</div>
<div class="summary-value">{{ form.innerNum || 0 }}</div>
</div>
</el-col>
<el-col :span="6" class="summary-item">
<div class="summary-icon"><i class="el-icon-s-home"></i></div>
<div>
<div class="summary-label">在库数量</div>
<div class="summary-value success">{{ form.inventoryNum || 0 }}</div>
</div>
</el-col>
<el-col :span="6" class="summary-item">
<div class="summary-icon"><i class="el-icon-upload2"></i></div>
<div>
<div class="summary-label">出库数量</div>
<div class="summary-value warning">{{ form.outerNum || 0 }}</div>
</div>
</el-col>
</el-row>
<el-row>
<el-col :span="24"><h3>产品信息</h3></el-col>
@ -35,19 +71,171 @@
<el-table-column label="产品描述" prop="productDesc" width="200" show-overflow-tooltip/>
<el-table-column label="入库价(含税)" prop="innerPrice" />
<el-table-column label="仓库" prop="warehouseName" />
<el-table-column label="库存状态">
<template slot-scope="scope">
<el-tag v-if="scope.row.inventoryStatus === '0' || scope.row.inventoryStatus === 0" type="success" size="mini"></el-tag>
<el-tag v-else-if="scope.row.inventoryStatus === '1' || scope.row.inventoryStatus === 1" type="warning" size="mini">已发货</el-tag>
<span v-else>-</span>
</template>
</el-table-column>
</el-table>
<el-dialog
title="采购单详情"
:visible.sync="purchaseOrderDetailOpen"
width="80vw"
append-to-body
:close-on-click-modal="false"
>
<ApproveLayout title="采购单详情" v-if="purchaseOrderDetailOpen">
<purchase-order-detail-view
ref="purchaseOrderDetailView"
:order-data="purchaseOrderDetailData"
:showHistory="true"
@close="purchaseOrderDetailOpen = false"
@view-history-detail="handleViewHistoryDetailEvent"
/>
<template #footer>
<span>采购单编号: {{ form.purchaseNo }}</span>
</template>
</ApproveLayout>
</el-dialog>
<el-dialog
title="历史订单详情"
:visible.sync="historyDetailOpen"
width="80vw"
append-to-body
:close-on-click-modal="false"
>
<ApproveLayout title="采购单历史详情" v-if="historyDetailOpen">
<purchase-order-detail-view
ref="historyDetailView"
:order-data="historyDetailData"
@close="historyDetailOpen = false"
/>
<template #footer>
<span>订单编号: {{ historyDetailData ? historyDetailData.purchaseNo : '' }}</span>
<span v-if="historyDetailData"> | : {{ historyDetailData.version }}</span>
</template>
</ApproveLayout>
</el-dialog>
</el-form>
</div>
</template>
<script>
import { getPurchaseorder, getPurchaseOrderHistoryDetail, listPurchaseorder } from "@/api/sip/purchaseorder";
import ApproveLayout from "@/views/approve/ApproveLayout.vue";
import PurchaseOrderDetailView from "@/views/purchaseorder/components/PurchaseOrderDetailView.vue";
export default {
name: "OrderDetail",
components: {
ApproveLayout,
PurchaseOrderDetailView
},
props: {
form: {
type: Object,
required: true
}
},
data() {
return {
purchaseOrderDetailOpen: false,
purchaseOrderDetailData: null,
historyDetailOpen: false,
historyDetailData: null
};
},
watch: {
purchaseOrderDetailOpen(val) {
if (!val) {
this.purchaseOrderDetailData = null;
this.$refs.purchaseOrderDetailView?.resetForm();
}
},
historyDetailOpen(val) {
if (!val) {
this.historyDetailData = null;
this.$refs.historyDetailView?.resetForm();
}
}
},
methods: {
handleViewPurchaseOrder() {
listPurchaseorder({ purchaseNo: this.form.purchaseNo, pageNum: 1, pageSize: 1 }).then(response => {
const purchaseOrder = response.rows && response.rows[0];
if (!purchaseOrder) {
this.$modal.msgWarning("未找到关联采购单");
return;
}
getPurchaseorder(purchaseOrder.id).then(detailResponse => {
this.purchaseOrderDetailData = detailResponse.data;
this.purchaseOrderDetailOpen = true;
});
});
},
handleViewHistoryDetailEvent(row) {
getPurchaseOrderHistoryDetail(row.id).then(response => {
this.historyDetailData = response.data;
this.historyDetailOpen = true;
});
}
}
}
</script>
<style scoped>
.inner-summary {
margin: 24px 0 36px;
border: 1px solid #ebeef5;
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
overflow: hidden;
}
.summary-item {
display: flex;
align-items: center;
padding: 24px 32px;
border-right: 1px solid #ebeef5;
}
.summary-icon {
display: flex;
align-items: center;
justify-content: center;
width: 48px;
height: 48px;
margin-right: 16px;
border-radius: 50%;
color: #2f6bff;
background: #eef4ff;
font-size: 24px;
}
.summary-item:last-child {
border-right: none;
}
.summary-label {
color: #606266;
font-size: 14px;
margin-bottom: 8px;
}
.summary-value {
color: #303133;
font-size: 26px;
font-weight: 700;
line-height: 1;
}
.summary-value.success {
color: #00a870;
}
.summary-value.warning {
color: #ff6a00;
}
</style>

View File

@ -78,6 +78,10 @@ public class OmsInventoryInner extends BaseEntity {
private BigDecimal taxRate;
private BigDecimal taxTotal;
private Long itemId;
private BigDecimal sumInnerPrice;
private Long innerNum;
private Long inventoryNum;
private Long outerNum;
private List<String> productTypeList;
private List<String> orderCodeList;
private List<InventoryInfo> inventoryInfoList;

View File

@ -19,6 +19,8 @@ public interface OmsInventoryInnerMapper
*/
public OmsInventoryInner selectOmsInventoryInnerById(Long id);
OmsInventoryInner selectInventoryInfoSummaryByInnerCode(String innerCode);
/**
*
*

View File

@ -69,6 +69,13 @@ public class OmsInventoryInnerServiceImpl implements IOmsInventoryInnerService {
queryParams.setInnerCode(omsInventoryInner.getInnerCode());
List<InventoryInfo> inventoryInfos = inventoryInfoService.selectInventoryInfoList(queryParams);
omsInventoryInner.setInventoryInfoList(inventoryInfos);
OmsInventoryInner inventoryInfoSummary = omsInventoryInnerMapper.selectInventoryInfoSummaryByInnerCode(omsInventoryInner.getInnerCode());
if (inventoryInfoSummary != null) {
omsInventoryInner.setSumInnerPrice(inventoryInfoSummary.getSumInnerPrice());
omsInventoryInner.setInnerNum(inventoryInfoSummary.getInnerNum());
omsInventoryInner.setInventoryNum(inventoryInfoSummary.getInventoryNum());
omsInventoryInner.setOuterNum(inventoryInfoSummary.getOuterNum());
}
}
if (omsInventoryInner != null && StringUtils.isNotEmpty(omsInventoryInner.getOrderCode())) {
ProjectInfo projectInfo = projectInfoService.selectProjectInfoByOrderCode(omsInventoryInner.getOrderCode());

View File

@ -20,6 +20,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="totalAmount" column="total_amount" />
<result property="taxRate" column="tax_rate" />
<result property="taxTotal" column="tax_total" />
<result property="sumInnerPrice" column="sum_inner_price" />
<result property="innerNum" column="inner_num" />
<result property="inventoryNum" column="inventory_num" />
<result property="outerNum" column="outer_num" />
</resultMap>
<sql id="selectOmsInventoryInnerVo">
@ -77,6 +81,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<include refid="selectOmsInventoryInnerVo"/>
where t1.id = #{id}
</select>
<select id="selectInventoryInfoSummaryByInnerCode" parameterType="String" resultMap="OmsInventoryInnerResult">
select sum(inner_price) as sum_inner_price,
count(1) as inner_num,
sum(if(inventory_status = '0', 1, 0)) as inventory_num,
sum(if(inventory_status = '1', 1, 0)) as outer_num
from oms_inventory_info
where inner_code = #{innerCode}
</select>
<select id="selectMaxOrderCode" resultType="java.lang.Integer">
select ifnull( max(SUBSTR( inner_code FROM LENGTH(#{code})+1 FOR 3 )), 0 )
from oms_inventory_inner