fix:同步新华三接口调整,应付单详情添加超链接

dev_1.0.2
UNISINSIGHT\rdpnr_jiangpeng 2026-04-14 18:06:42 +08:00
parent 4ac353a83a
commit 9a8fe13f28
8 changed files with 101 additions and 13 deletions

View File

@ -244,7 +244,7 @@ export default {
};
},
created() {
this.getCompanyList();
// this.getCompanyList();
},
computed: {
totalAmountNumber() {

View File

@ -116,7 +116,16 @@
<dict-tag :options="dict.type.payment_status" :value="scope.row.paymentStatus"/>
</template>
</el-table-column>
<el-table-column prop="paymentBillCode" label="采购-付款单编号"></el-table-column>
<el-table-column prop="paymentBillCode" label="采购-付款单编号">
<template slot-scope="scope">
<el-button
v-if="scope.row.paymentBillCode"
type="text"
@click="handlePaymentDetail(scope.row)"
>{{ scope.row.paymentBillCode }}</el-button>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="回执单/退款图">
<template slot-scope="scope">
<span v-if="scope.row.finAttachment">
@ -152,7 +161,16 @@
<dict-tag :options="dict.type.receipt_status" :value="scope.row.ticketStatus"/>
</template>
</el-table-column>
<el-table-column prop="ticketBillCode" label="采购-收票单编号"></el-table-column>
<el-table-column prop="ticketBillCode" label="采购-收票单编号">
<template slot-scope="scope">
<el-button
v-if="scope.row.ticketBillCode"
type="text"
@click="handleTicketDetail(scope.row)"
>{{ scope.row.ticketBillCode }}</el-button>
<span v-else>-</span>
</template>
</el-table-column>
<el-table-column label="发票/红冲发票">
<template slot-scope="scope">
<span v-if="scope.row.finAttachment">
@ -174,6 +192,17 @@
</div>
<GlobalFilePreview ref="filePreview" />
<PaymentDetailDrawer
:visible.sync="paymentDetailOpen"
:detail="paymentDetailData"
:z-index="zIndex + 100"
@submit="handleUpdatePaymentBillSubmit"
/>
<ReceiptDetailDrawer
:visible.sync="receiptDetailOpen"
:detail="receiptDetailData"
:z-index="zIndex + 100"
/>
</div>
<!-- <div slot="footer" class="dialog-footer">-->
<!-- <el-button @click="handleClose"> </el-button>-->
@ -187,6 +216,8 @@
import PaymentPlan from './PaymentPlan.vue';
import ReceivingTicketPlan from './ReceivingTicketPlan.vue';
import { getPayable } from "@/api/finance/payable";
import { getPayment, updatePaymentBill } from "@/api/finance/payment";
import { getReceipt } from "@/api/finance/receipt";
import ReceiptPlan from "@/views/finance/receivable/components/ReceiptPlan.vue";
import GlobalFilePreview from '@/components/GlobalFilePreview';
@ -197,7 +228,9 @@ export default {
ReceiptPlan,
PaymentPlan,
ReceivingTicketPlan,
GlobalFilePreview
GlobalFilePreview,
PaymentDetailDrawer: () => import("@/views/finance/payment/components/DetailDrawer.vue"),
ReceiptDetailDrawer: () => import("@/views/finance/receipt/components/DetailDrawer.vue")
},
props: {
visible: {
@ -218,6 +251,10 @@ export default {
internalVisible: this.visible, // Local copy of the visible prop
activeTab: 'details',
formData: {},
paymentDetailOpen: false,
paymentDetailData: {},
receiptDetailOpen: false,
receiptDetailData: null,
};
},
watch: {
@ -249,6 +286,41 @@ export default {
downloadFile(attachment){
this.$refs.filePreview.downloadFile(attachment);
},
handlePaymentDetail(row) {
const paymentId = row.paymentBillId || row.paymentId || row.id;
if (!paymentId) {
this.$modal.msgWarning("未获取到付款单ID");
return;
}
getPayment(paymentId).then(response => {
this.paymentDetailData = response.data || {};
this.paymentDetailData.approveNode = row.approveNode;
this.paymentDetailOpen = true;
});
},
handleTicketDetail(row) {
const ticketId = row.ticketBillId || row.receiptId || row.id;
if (!ticketId) {
this.$modal.msgWarning("未获取到收票单ID");
return;
}
getReceipt(ticketId).then(response => {
this.receiptDetailData = response.data || null;
if (this.receiptDetailData) {
this.receiptDetailData.approveNode = row.approveNode;
}
this.receiptDetailOpen = true;
});
},
handleUpdatePaymentBillSubmit(form) {
updatePaymentBill(form).then(() => {
this.$modal.msgSuccess("保存成功");
this.paymentDetailOpen = false;
}).catch(error => {
console.error("保存补充附件失败", error);
this.$modal.msgError("保存失败");
});
},
getSummaries(param) {
const { columns, data } = param;
const sums = [];

View File

@ -4,6 +4,8 @@
:visible.sync="visible"
direction="rtl"
size="70%"
append-to-body
:z-index="zIndex"
:wrapper-closable="false"
@close="handleClose"
>
@ -164,6 +166,10 @@ export default {
type: Object,
default: () => {},
},
zIndex: {
type: Number,
default: 2000,
},
},
data() {
return {

View File

@ -4,6 +4,8 @@
:visible.sync="visible"
direction="rtl"
size="70%"
append-to-body
:z-index="zIndex"
@close="handleClose"
>
<div class="dialog-body" v-if="detail">
@ -117,6 +119,10 @@ export default {
type: Object,
default: () => null,
},
zIndex: {
type: Number,
default: 2000,
},
},
data() {
return {

View File

@ -166,10 +166,12 @@ public class DeliveryListServiceImpl implements IDeliveryListService {
Collectors.groupingBy(OrderList::getOrderId, Collectors.mapping(OrderList::getProductInfo, Collectors.toList())));
// 查询标准硬件维保的产品信息
// 查询服务维保的产品信息
ProductInfo productInfo = new ProductInfo();
productInfo.setType(ProductInfo.ProductTypeEnum.HARDWARE_MAINTENANCE.getType());
List<ProductInfo> productInfos = productInfoMapper.selectProductInfoList(productInfo);
productInfo.setType(ProductInfo.ProductTypeEnum.SERVICE.getType());
productInfos.addAll(productInfoMapper.selectProductInfoList(productInfo));
// 设置服务等级和服务结束时间
for (DeliveryInfoVo deliveryInfoVo : deliveryInfoVos) {
updateDeliveryInfoVo(deliveryInfoVo, maintenanceTypeMap, productInfos);

View File

@ -276,6 +276,9 @@ public class ExecutionTrackServiceImpl implements IExecutionTrackService {
//剔除流程
todoService.deleteTodoByBusinessKey(projectOrderInfo.getOrderCode());
//还原库存
inventoryInfoService.recallByOrderCode(Collections.singletonList(projectOrderInfo.getOrderCode()));
//累计发货
List<InventoryDelivery> inventoryDeliveries = deliveryMapper.selectQuantityByOrderCodeStatus(projectOrderInfo.getOrderCode(), InventoryDelivery.DeliveryStatusEnum.CONFIRM_DELIVERY.getCode());
if (CollUtil.isNotEmpty(inventoryDeliveries)) {
@ -329,10 +332,5 @@ public class ExecutionTrackServiceImpl implements IExecutionTrackService {
if (CollUtil.isNotEmpty(updateMap.values())) {
productInfoService.updateCount(new ArrayList<>(updateMap.values()));
}
//还原库存
inventoryInfoService.recallByOrderCode(Collections.singletonList(projectOrderInfo.getOrderCode()));
}
}

View File

@ -365,10 +365,12 @@ public class InventoryDeliveryServiceImpl implements IInventoryDeliveryService {
Map<Long, List<ProjectProductInfo>> maintenanceTypeMap = projectProductInfos.stream().collect(Collectors.groupingBy(ProjectProductInfo::getProjectId));
// 查询标准硬件维保的产品信息
// 查询服务维保的产品信息
ProductInfo productInfo = new ProductInfo();
productInfo.setType(ProductInfo.ProductTypeEnum.HARDWARE_MAINTENANCE.getType());
List<ProductInfo> productInfos = productInfoService.selectProductInfoList(productInfo);
productInfo.setType(ProductInfo.ProductTypeEnum.SERVICE.getType());
productInfos.addAll(productInfoService.selectProductInfoList(productInfo));
// 设置服务等级和服务结束时间
for (DeliveryInfoVo deliveryInfoVo : resultList) {
updateDeliveryInfoVo(deliveryInfoVo, maintenanceTypeMap, productInfos);

View File

@ -360,8 +360,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
LEFT JOIN project_info t2 ON t1.project_id = t2.id
LEFT JOIN agent_info t3 ON t2.agent_code = t3.agent_code
LEFT JOIN customer_info t4 ON t2.customer_code = t4.customer_code
where t1.order_code in ( select DISTINCT order_code from oms_inventory_outer where outer_code in (SELECT outer_code from oms_inventory_delivery where delivery_status=1)
)
where (
CAST(ifnull(t1.version_code,0) + ifnull(t1.operation_version,0) AS SIGNED) > 1 or
t1.order_code in ( select DISTINCT order_code from oms_inventory_outer where outer_code in (SELECT outer_code from oms_inventory_delivery where delivery_status=1))
)
<choose>
<when test="updateTimeStart!=null and updateTimeEnd!=null">
and t1.update_time between #{updateTimeStart} and #{updateTimeEnd}