fix:入库单详情信息调整
parent
4bd4fae390
commit
239009a59b
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -19,6 +19,8 @@ public interface OmsInventoryInnerMapper
|
|||
*/
|
||||
public OmsInventoryInner selectOmsInventoryInnerById(Long id);
|
||||
|
||||
OmsInventoryInner selectInventoryInfoSummaryByInnerCode(String innerCode);
|
||||
|
||||
/**
|
||||
* 查询入库单信息列表
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue