feat(purchaseorder): 添加采购单导出功能并优化界面显示
- 在后端控制器中实现export方法返回AjaxResult并设置审批状态过滤 - 添加exportPurchaseorder API函数用于导出采购订单数据 - 在前端界面添加导出按钮及权限控制 - 修改下载插件中的方法名为download替代name - 修复多个选择组件中的表单提交阻止默认行为 - 优化采购单详情对话框和抽屉组件的属性格式化 - 隐藏采购订单实体类中部分字段的Excel导出注解 - 修正审批时间Excel导出的时间格式化设置 - 更新多个select组件中的键盘事件处理方式dev_1.0.0
parent
dd2a7d99b6
commit
baa4b52553
|
|
@ -106,6 +106,16 @@ export function recallPurchaseorder(id) {
|
|||
method: 'put'
|
||||
})
|
||||
}
|
||||
export function exportPurchaseorder(data) {
|
||||
return request({
|
||||
url: '/sip/purchaseorder/export',
|
||||
method: 'get',
|
||||
params: data,
|
||||
// headers: { 'Content-Type': 'multipart/form-data' },
|
||||
needLoading: true
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
// 查询已审批采购单主表列表
|
||||
export function listApprovedPurchaseorder(query) {
|
||||
|
|
|
|||
|
|
@ -9,13 +9,12 @@ const baseURL = process.env.VUE_APP_BASE_API
|
|||
let downloadLoadingInstance
|
||||
|
||||
export default {
|
||||
name(name, isDelete = true) {
|
||||
download(name, isDelete = true) {
|
||||
var url = baseURL + "/common/download?fileName=" + encodeURIComponent(name) + "&delete=" + isDelete
|
||||
axios({
|
||||
method: 'get',
|
||||
url: url,
|
||||
responseType: 'blob',
|
||||
headers: { 'Authorization': 'Bearer ' + getToken() }
|
||||
}).then((res) => {
|
||||
const isBlob = blobValidate(res.data)
|
||||
if (isBlob) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<el-dialog title="选择合同" :visible.sync="visible" width="800px" append-to-body @close="cancel">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px" @submit.native.prevent>
|
||||
<el-form-item label="合同编号" prop="orderCode">
|
||||
<el-input
|
||||
v-model="queryParams.orderCode"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<el-dialog title="选择项目" :visible.sync="internalVisible" width="800px" height="600px" append-to-body @close="handleClose">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="100px">
|
||||
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="100px" @submit.native.prevent>
|
||||
<el-form-item label="项目编号" prop="projectCode">
|
||||
<el-input v-model="queryParams.projectCode" placeholder="请输入项目编号" clearable size="small" @keyup.enter.native="handleQuery"/>
|
||||
</el-form-item>
|
||||
|
|
|
|||
|
|
@ -81,6 +81,17 @@
|
|||
>新增
|
||||
</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="warning"
|
||||
plain
|
||||
icon="el-icon-download"
|
||||
size="mini"
|
||||
@click="handleExport"
|
||||
v-hasPermi="['sip:purchaseorder:export']"
|
||||
>导出
|
||||
</el-button>
|
||||
</el-col>
|
||||
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
|
|
@ -189,7 +200,7 @@
|
|||
/>
|
||||
|
||||
<!-- 添加或修改采购单主表对话框 -->
|
||||
<el-dialog :title="title" :close-on-click-modal="false" :visible.sync="open" width="80vw" append-to-body >
|
||||
<el-dialog :title="title" :close-on-click-modal="false" :visible.sync="open" width="80vw" append-to-body>
|
||||
<purchase-order-detail ref="purchaseOrderDetail" :order-data="currentOrderData"
|
||||
@close="open = false"
|
||||
@success="getList">
|
||||
|
|
@ -231,10 +242,10 @@
|
|||
direction="rtl"
|
||||
size="80%"
|
||||
>
|
||||
<ApproveLayout title="采购单详情" v-if="showDetailDrawer">
|
||||
<ApproveLayout title="采购单详情" v-if="showDetailDrawer">
|
||||
<purchase-order-detail-view ref="detailViewOnly" :order-data="detailOrderData" @close="showDetailDrawer = false"
|
||||
@success="getList" :showHistory="true"
|
||||
@view-history-detail="handleViewHistoryDetailEvent">
|
||||
@success="getList" :showHistory="true"
|
||||
@view-history-detail="handleViewHistoryDetailEvent">
|
||||
</purchase-order-detail-view>
|
||||
<template #footer>
|
||||
<span>订单编号: {{ currentDetailPurchaseNo }}</span>
|
||||
|
|
@ -249,8 +260,9 @@
|
|||
direction="rtl"
|
||||
size="80%"
|
||||
>
|
||||
<ApproveLayout title="采购单历史详情" v-if="showHistoryDetailDrawer">
|
||||
<purchase-order-detail-view ref="historyDetailView" :order-data="historyDetailOrderData" @close="showHistoryDetailDrawer = false">
|
||||
<ApproveLayout title="采购单历史详情" v-if="showHistoryDetailDrawer">
|
||||
<purchase-order-detail-view ref="historyDetailView" :order-data="historyDetailOrderData"
|
||||
@close="showHistoryDetailDrawer = false">
|
||||
</purchase-order-detail-view>
|
||||
<template #footer>
|
||||
<span>订单编号: {{ historyDetailOrderData ? historyDetailOrderData.purchaseNo : '' }}</span>
|
||||
|
|
@ -272,11 +284,12 @@ import {
|
|||
getPurchaseOrderHistory,
|
||||
getPurchaseOrderHistoryDetail,
|
||||
recallPurchaseorder,
|
||||
vendorConfirmStatus // 导入发起供应商确认接口
|
||||
vendorConfirmStatus, exportPurchaseorder // 导入发起供应商确认接口
|
||||
} from "@/api/sip/purchaseorder";
|
||||
import PurchaseOrderDetail from './components/PurchaseOrderDetail';
|
||||
import ApproveLayout from "@/views/approve/ApproveLayout.vue";
|
||||
import PurchaseOrderDetailView from "@/views/purchaseorder/components/PurchaseOrderDetailView.vue";
|
||||
import {blobValidate} from "@/utils/ruoyi";
|
||||
|
||||
export default {
|
||||
name: "Purchaseorder",
|
||||
|
|
@ -333,7 +346,7 @@ export default {
|
|||
approveStatus: null,
|
||||
confirmStatus: null,
|
||||
status: null,
|
||||
orderByColumn:'createTime',
|
||||
orderByColumn: 'createTime',
|
||||
isAsc: 'desc'
|
||||
},
|
||||
// 表单参数
|
||||
|
|
@ -346,7 +359,7 @@ export default {
|
|||
console.log(this.$route.query)
|
||||
this.getList();
|
||||
},
|
||||
watch:{
|
||||
watch: {
|
||||
// 监听对话框打开
|
||||
open(val) {
|
||||
if (!val) {
|
||||
|
|
@ -415,6 +428,13 @@ export default {
|
|||
this.open = true;
|
||||
this.title = "添加采购单主表";
|
||||
},
|
||||
handleExport() {
|
||||
this.$modal.confirm('是否确认导出已审批的采购数据项?').then(() => {
|
||||
return exportPurchaseorder(this.queryParams);
|
||||
}).then(response => {
|
||||
this.$download.download( response.msg)
|
||||
})
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
getPurchaseorder(row.id).then(response => {
|
||||
|
|
@ -423,11 +443,13 @@ export default {
|
|||
this.open = true;
|
||||
this.title = "修改采购单主表";
|
||||
});
|
||||
},
|
||||
}
|
||||
,
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
this.$refs.purchaseOrderDetail.submitForm()
|
||||
},
|
||||
}
|
||||
,
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
|
|
@ -438,13 +460,15 @@ export default {
|
|||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {
|
||||
});
|
||||
},
|
||||
}
|
||||
,
|
||||
/** 申请采购按钮操作 */
|
||||
handleApply(row) {
|
||||
this.currentApplyingOrder = row; // 保存当前订单数据
|
||||
this.selectedFlowType = null; // 重置选定的流程类型
|
||||
this.openFlowTypeDialog = true; // 打开流程类型选择对话框
|
||||
},
|
||||
}
|
||||
,
|
||||
/** 查看详情按钮操作 */
|
||||
handleViewDetails(row) {
|
||||
getPurchaseorder(row.id).then(response => {
|
||||
|
|
@ -452,7 +476,8 @@ export default {
|
|||
this.currentDetailPurchaseNo = row.purchaseNo;
|
||||
this.showDetailDrawer = true;
|
||||
});
|
||||
},
|
||||
}
|
||||
,
|
||||
/** 处理查看历史详情事件 */
|
||||
handleViewHistoryDetailEvent(row) {
|
||||
getPurchaseOrderHistoryDetail(row.id).then(response => {
|
||||
|
|
@ -460,7 +485,8 @@ export default {
|
|||
this.showHistoryDetailDrawer = true;
|
||||
this.showDetailDrawer = false; // 关闭当前详情抽屉
|
||||
});
|
||||
},
|
||||
}
|
||||
,
|
||||
/** 提交申请采购(带流程类型) */
|
||||
submitApplyWithFlowType() {
|
||||
this.$refs.flowTypeForm.validate(valid => {
|
||||
|
|
@ -477,7 +503,8 @@ export default {
|
|||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
}
|
||||
,
|
||||
/** 撤回按钮操作 */
|
||||
handleRecall(row) {
|
||||
this.$modal.confirm('是否确认撤回采购订单编号为"' + row.purchaseNo + '"的数据项?').then(() => {
|
||||
|
|
@ -488,7 +515,8 @@ export default {
|
|||
this.getList(); // 刷新列表以反映状态变化
|
||||
}).catch(() => {
|
||||
});
|
||||
},
|
||||
}
|
||||
,
|
||||
/** 发起供应商确认操作 */
|
||||
handleInitiateVendorConfirmation(row) {
|
||||
this.$modal.confirm('是否确认发起供应商确认编号为"' + row.purchaseNo + '"的数据项?', '警告', {
|
||||
|
|
|
|||
|
|
@ -391,7 +391,7 @@ export default {
|
|||
this.$modal.confirm('是否确认导出所有办事处信息数据项?').then(() => {
|
||||
return exportAgent(this.queryParams);
|
||||
}).then(response => {
|
||||
this.$download.name(response.msg);
|
||||
this.$download.download(response.msg);
|
||||
}).catch(() => {});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<el-dialog title="选择代表处" :visible.sync="visible" :close-on-click-modal="false" width="800px" append-to-body @close="handleClose">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" @submit.native.prevent>
|
||||
<el-form-item label="代表处名称" prop="agentName">
|
||||
<el-input
|
||||
v-model="queryParams.agentName"
|
||||
|
|
|
|||
|
|
@ -491,7 +491,7 @@ export default {
|
|||
this.$modal.confirm('是否确认导出所有客户信息数据项?').then(() => {
|
||||
return exportCustomer(this.queryParams);
|
||||
}).then(response => {
|
||||
this.$download.name(response.msg);
|
||||
this.$download.download(response.msg);
|
||||
}).catch(() => {});
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<el-dialog title="选择客户" :close-on-click-modal="false" :visible.sync="visible" width="800px" append-to-body @close="handleClose">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" @submit.native.prevent>
|
||||
<el-form-item label="客户名称" prop="customerName">
|
||||
<el-input
|
||||
v-model="queryParams.customerName"
|
||||
|
|
|
|||
|
|
@ -514,7 +514,7 @@ export default {
|
|||
this.$modal.confirm('是否确认导出所有代理商管理数据项?').then(() => {
|
||||
return exportPartner(this.queryParams);
|
||||
}).then(response => {
|
||||
this.$download.name(response.msg);
|
||||
this.$download.download(response.msg);
|
||||
}).catch(() => {});
|
||||
},
|
||||
/** 打开选择用户对话框 */
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
<template>
|
||||
<el-dialog title="选择进货商" :close-on-click-modal="false" :visible.sync="visible" width="800px" append-to-body @close="handleClose">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" @submit.native.prevent>
|
||||
<el-form-item label="进货商名称" prop="partnerName">
|
||||
<el-input
|
||||
v-model="queryParams.partnerName"
|
||||
placeholder="请输入进货商名称"
|
||||
clearable
|
||||
@keyup.enter.native="handleQuery"
|
||||
@keyup.enter.native.prevent="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<el-dialog title="选择产品" :close-on-click-modal="false" :visible.sync="visible" width="60%" append-to-body @close="handleClose">
|
||||
<div style="max-height: 60vh; overflow-y: auto;">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" @submit.native.prevent>
|
||||
<el-form-item label="产品编码" prop="productCode">
|
||||
<el-input
|
||||
v-model="queryParams.productCode"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<template>
|
||||
<!-- 授权用户 -->
|
||||
<el-dialog title="选择用户" :visible.sync="visible" width="800px" top="5vh" append-to-body>
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" @submit.native.prevent>
|
||||
<el-form-item label="用户名称" prop="userName">
|
||||
<el-input
|
||||
v-model="queryParams.userName"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<template>
|
||||
<el-dialog title="选择用户" :visible.sync="visible" width="800px" append-to-body @close="handleClose">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true">
|
||||
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" @submit.native.prevent>
|
||||
<el-form-item label="用户名称" prop="userName">
|
||||
<el-input
|
||||
v-model="queryParams.userName"
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@ public class CommonController
|
|||
|
||||
response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
|
||||
FileUtils.setAttachmentResponseHeader(response, realFileName);
|
||||
response.setHeader("download-filename", FileUtils.percentEncode(realFileName));
|
||||
FileUtils.writeBytes(filePath, response.getOutputStream());
|
||||
if (delete)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -140,12 +140,13 @@ public class OmsPurchaseOrderController extends BaseController
|
|||
// @RequiresPermissions("sip:purchaseorder:export")
|
||||
@Anonymous
|
||||
@GetMapping("/export")
|
||||
public void export(OmsPurchaseOrder omsPurchaseOrder, HttpServletResponse response)
|
||||
public AjaxResult export(OmsPurchaseOrder omsPurchaseOrder, HttpServletResponse response)
|
||||
{
|
||||
omsPurchaseOrder.setApproveStatus(ApproveStatusEnum.APPROVE_COMPLETE.getCode());
|
||||
List<OmsPurchaseOrder> list = omsPurchaseOrderService.selectOmsPurchaseOrderList(omsPurchaseOrder);
|
||||
todoService.fillPurchaseOrderApproveNode(list);
|
||||
ExcelUtil<OmsPurchaseOrder> util = new ExcelUtil<OmsPurchaseOrder>(OmsPurchaseOrder.class);
|
||||
util.exportExcel(response, list, "采购单主表数据");
|
||||
return util.exportExcel( list, "采购单主表数据");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ public class OmsPurchaseOrder extends BaseEntity
|
|||
private String buyerAddress;
|
||||
|
||||
/** 制造商ID */
|
||||
@Excel(name = "制造商ID")
|
||||
// @Excel(name = "制造商ID")
|
||||
private Long vendorId;
|
||||
private String vendorCode;
|
||||
private List<String> authVendorCodeList;
|
||||
|
|
@ -55,7 +55,7 @@ public class OmsPurchaseOrder extends BaseEntity
|
|||
private String currency;
|
||||
|
||||
/** 采购员ID */
|
||||
@Excel(name = "采购员ID")
|
||||
// @Excel(name = "采购员ID")
|
||||
private Long purchaserId;
|
||||
|
||||
|
||||
|
|
@ -81,7 +81,7 @@ public class OmsPurchaseOrder extends BaseEntity
|
|||
private String payMethod;
|
||||
|
||||
/** 汇智负责人ID */
|
||||
@Excel(name = "汇智负责人ID")
|
||||
// @Excel(name = "汇智负责人ID")
|
||||
private Long ownerId;
|
||||
|
||||
/** 汇智负责人姓名 */
|
||||
|
|
@ -101,7 +101,7 @@ public class OmsPurchaseOrder extends BaseEntity
|
|||
private String approveStatus;
|
||||
|
||||
/** 审批时间 */
|
||||
@Excel(name = "审批时间")
|
||||
@Excel(name = "审批时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
|
||||
private Date approveTime;
|
||||
|
||||
/** 当前审批节点 */
|
||||
|
|
|
|||
Loading…
Reference in New Issue