<template> <div class="table-container"> <div> <el-form :inline="true" :model="queryInfo" class="demo-form-inline"> <el-form-item label=""> <el-input size="medium" v-model="queryInfo.ext1" class="" placeholder="客户编码"></el-input> </el-form-item> <el-form-item label=""> <el-input size="medium" v-model="queryInfo.orderno" placeholder="订单号"></el-input> </el-form-item> <el-form-item label=""> <el-select size="medium" v-model="queryInfo.ordertype" placeholder="订单类型"> <el-option v-for="item in ordertypes" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item label=""> <el-select size="medium" v-model="queryInfo.apptype" placeholder="报送类型"> <el-option v-for="item in apptypes" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item label=""> <el-select size="medium" v-model="queryInfo.appstatus" placeholder="报关状态"> <el-option v-for="item in appstatuss" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item> <div class="block"> <el-date-picker style="background: none" size="medium" v-model="value2" type="daterange" align="right" unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" value-format="yyyy-MM-dd HH:mm:ss" :picker-options="pickerOptions"> </el-date-picker> </div> </el-form-item> <el-form-item> <el-button size="medium" @click="getList" style="background: none">查询</el-button> </el-form-item> <el-form-item> <el-upload class="upload-demo" action="" :before-upload="beforeUpload" :http-request="uploadFile" :show-file-list="false"> <el-button size="medium" type="primary">导入订单</el-button> </el-upload> </el-form-item> </el-form> </div> <div style="margin-bottom: 20px"> <el-row :gutter="24"> <el-col :span="3"> <el-button size="medium" @click="batchOrder" style="background: none">订单批量申报</el-button> </el-col> <el-col :span="4"> <el-upload class="upload-demo" action="" :before-upload="beforeUpload" :http-request="batchOrderImport" :show-file-list="false"> <el-button size="medium" style="background: none">订单批量导入申报</el-button> </el-upload> </el-col> <el-col :span="3"> <el-button size="medium" @click="batchDeclare" style="background: none">清单批量申报</el-button> </el-col> <el-col :span="4"> <el-upload class="upload-demo" action="" :before-upload="beforeUpload" :http-request="batchDeclareImport" :show-file-list="false"> <el-button size="medium" style="background: none">清单批量导入申报</el-button> </el-upload> </el-col> <el-col :span="3"> <el-button size="medium" @click="ydeldBatchDeclare" style="background: none">运单批量申报</el-button> </el-col> <el-col :span="4"> <el-upload class="upload-demo" action="" :before-upload="beforeUpload" :http-request="ydbatchDeclareImport" :show-file-list="false"> <el-button size="medium" style="background: none">运单批量导入申报</el-button> </el-upload> </el-col> </el-row> </div> <div style="margin-bottom: 20px"> <el-row :gutter="24"> <el-col :span="3"> <el-button size="medium" @click="zfbatchOrder" style="background: none">总分单批量申报</el-button> </el-col> <el-col :span="4"> <el-upload class="upload-demo" action="" :before-upload="beforeUpload" :http-request="zfbatchOrderImport" :show-file-list="false"> <el-button size="medium" style="background: none">总分单批量导入申报</el-button> </el-upload> </el-col> </el-row> </div> <el-table :data="tableData" style="width: 100%" row-key="guid" :expand-row-keys="expandedRowKeys" @selection-change="handleSelectionChange" border stripe > <el-table-column type="expand" label="详细信息"> <template v-slot:default="{ row }"> <el-table :data="row.exportOrderDeclarationBodyList" style="width: 85%;margin-left: 45px" row-key="id" stripe > <el-table-column prop="itemno" label="企业商品货号" /> <el-table-column prop="itemname" label="企业商品名称" /> <el-table-column prop="itemdescribe" label="企业商品描述" /> <el-table-column prop="barcode" label="条形码" /> <el-table-column prop="unit" label="计量单位" /> <el-table-column prop="currency" label="币制" /> <el-table-column prop="qty" label="数量" /> <el-table-column prop="price" label="单价" /> <el-table-column prop="totalprice" label="总价" /> <el-table-column prop="note" label="备注" /> </el-table> </template> </el-table-column> <el-table-column type="selection" width="55"></el-table-column> <el-table-column prop="ext1" label="客户编号" width="180"></el-table-column> <el-table-column prop="orderno" label="订单编号" width="180"></el-table-column> <el-table-column prop="ordertype" label="订单类型" width="120"> <template slot-scope="scope"> <span v-if="scope.row.ordertype==='E'"> B2C </span> <span v-else-if="scope.row.ordertype==='B'"> B2B </span> <span v-else> 海外仓 </span> </template> </el-table-column> <el-table-column prop="apptype" label="报送类型" width="120"> <template slot-scope="scope"> <span v-if="scope.row.apptype==='1'"> 新增 </span> <span v-else> 变更 </span> </template> </el-table-column> <el-table-column prop="apptime" label="报送时间" width="180"></el-table-column> <el-table-column prop="appstatus" label="报送状态" width="120"> <template slot-scope="scope"> <span v-if="scope.row.appstatus==='1'"> 暂存 </span> <span v-else> 申报 </span> </template> </el-table-column> <el-table-column prop="ebpname" label="电商平台" width="180"></el-table-column> <el-table-column prop="goodsvalue" label="商品金额" width="120"></el-table-column> <el-table-column prop="freight" label="运杂费" width="120"></el-table-column> <el-table-column prop="note" label="备注" width="180"></el-table-column> <el-table-column fixed="right" label="操作" width="180" show-overflow-tooltip> <template slot-scope="scope"> <el-button type="text" size="small" @click="sendorder(scope.row)">订单申报</el-button> <el-button type="text" size="small" @click="sendDeclare(scope.row)">清单申报</el-button> </template> </el-table-column> </el-table> <div class="block"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="queryInfo.pageNum" :page-sizes="[20, 30, 40, 100]" :page-size="queryInfo.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"> </el-pagination> </div> </div> </template> <script> import {sendOrder,selectLists,batchOrder,batchOrderImport,importExcel,eldhBatchDeclare,eldhImportDeclare, eldBatchDeclare,eldImportDeclare,zfeldBatchDeclare,zfeldImportDeclare} from '../../api/consigner/exportOrder' export default { data() { return { apptypes: [ { value: '1', label: '新增' }, { value: '2', label: '变更' } ], appstatuss: [ { value: '1', label: '暂存' }, { value: '2', label: '申报' } ], ordertypes: [ { value: 'E', label: 'B2C出口订单' }, { value: 'B', label: 'B2B出口订单' }, { value: 'W', label: '海外仓订仓单' } ], tableData: [], selectedRows: [], expandedRowKeys: [], queryInfo:{ appstatus:'', apptype:'', orderno:'', ordertype:'', ext1:'', starttime:'', endtime:'', pageNum:1, pageSize:20 }, total:0, pickerOptions: { shortcuts: [{ text: '最近一周', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); picker.$emit('pick', [start, end]); } }, { text: '最近一个月', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); picker.$emit('pick', [start, end]); } }, { text: '最近三个月', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 90); picker.$emit('pick', [start, end]); } }] }, value2:'', transformedData:'' }; }, mounted() { // this.expandedRowKeys = this.tableData.map(item => item.guid); this.getList(); }, methods: { //运单批量导入申报 zfbatchOrderImport({ file, onSuccess, onError }){ // 生成 FormData 对象 const formData = new FormData(); formData.append('file', file); zfeldImportDeclare(formData).then((response) => { const res = response.data if (res.code !== '200') { return this.$message.error(res.msg); } this.$message.success(res.msg); this.getList(); onSuccess(response.data); // 调用 onSuccess 回调通知上传成功 }).catch(error => { // 关闭加载 this.$message.error(error.toString()) onError(error); // 调用 onError 回调通知上传失败 }) }, //运单批量申报 zfbatchOrder(){ if(this.selectedRows.length!==0){ this.transformedData = this.selectedRows.map(item => ({ orderno: item.orderno, ext1: item.ext1 })); zfeldBatchDeclare(this.transformedData).then((response)=>{ const res=response.data; if (res.code !== '200') { return this.$message.error('总分单批量申报失败!') } this.$message.success('总分单批量申报成功!'); this.getList(); }).catch(error=>{ this.$message.error(error.toString()) }) }else{ this.$message.error('请选勾取需要申报的总分单信息!'); } }, //运单批量导入申报 ydbatchDeclareImport({ file, onSuccess, onError }){ // 生成 FormData 对象 const formData = new FormData(); formData.append('file', file); eldImportDeclare(formData).then((response) => { const res = response.data if (res.code !== '200') { return this.$message.error(res.msg); } this.$message.success(res.msg); this.getList(); onSuccess(response.data); // 调用 onSuccess 回调通知上传成功 }).catch(error => { // 关闭加载 this.$message.error(error.toString()) onError(error); // 调用 onError 回调通知上传失败 }) }, //运单批量申报 ydeldBatchDeclare(){ if(this.selectedRows.length!==0){ this.transformedData = this.selectedRows.map(item => ({ orderno: item.orderno, ext1: item.ext1 })); eldBatchDeclare(this.transformedData).then((response)=>{ const res=response.data; if (res.code !== '200') { return this.$message.error('运单批量申报失败!') } this.$message.success('运单批量申报成功!'); this.getList(); }).catch(error=>{ this.$message.error(error.toString()) }) }else{ this.$message.error('请选勾取需要申报的运单信息!'); } }, //清单批量导入申报 batchDeclareImport({ file, onSuccess, onError }){ // 生成 FormData 对象 const formData = new FormData(); formData.append('file', file); eldhImportDeclare(formData).then((response) => { const res = response.data if (res.code !== '200') { return this.$message.error(res.msg); } this.$message.success(res.msg); this.getList(); onSuccess(response.data); // 调用 onSuccess 回调通知上传成功 }).catch(error => { // 关闭加载 this.$message.error(error.toString()) onError(error); // 调用 onError 回调通知上传失败 }) }, //清单申报 sendDeclare(row){ const { orderno, ext1 } = row; const senddata= [{ orderno, ext1 }]; eldhBatchDeclare(senddata).then((response)=>{ const res=response.data; if (res.code !== '200') { return this.$message.error('清单批量申报失败!') } this.$message.success('清单批量申报成功!'); this.getList(); }).catch(error=>{ this.$message.error(error.toString()) }) }, //清单批量申报 batchDeclare(){ if(this.selectedRows.length!==0){ this.transformedData = this.selectedRows.map(item => ({ orderno: item.orderno, ext1: item.ext1 })); eldhBatchDeclare(this.transformedData).then((response)=>{ const res=response.data; if (res.code !== '200') { return this.$message.error('清单批量申报失败!') } this.$message.success('清单批量申报成功!'); this.getList(); }).catch(error=>{ this.$message.error(error.toString()) }) }else{ this.$message.error('请选勾取需要申报的清单信息!'); } }, //订单批量导入申报 batchOrderImport({ file, onSuccess, onError }){ // 生成 FormData 对象 const formData = new FormData(); formData.append('file', file); batchOrderImport(formData).then((response) => { const res = response.data if (res.code !== '200') { return this.$message.error(res.msg); } this.$message.success(res.msg); this.getList(); onSuccess(response.data); // 调用 onSuccess 回调通知上传成功 }).catch(error => { // 关闭加载 this.$message.error(error.toString()) onError(error); // 调用 onError 回调通知上传失败 }) }, //批量申报订单 batchOrder(){ if(this.selectedRows.length!==0){ this.transformedData = this.selectedRows.map(item => ({ orderno: item.orderno, ext1: item.ext1 })); batchOrder(this.transformedData).then((response)=>{ const res=response.data; if (res.code !== '200') { return this.$message.error('订单批量申报失败!') } this.$message.success('订单批量申报成功!'); this.getList(); }).catch(error=>{ this.$message.error(error.toString()) }) }else{ this.$message.error('请选勾取需要申报的订单信息!'); } }, //导入订单excel beforeUpload(file) { // 检查文件类型 const isExcel = file.type === 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' || file.type === 'application/vnd.ms-excel'; if (!isExcel) { this.$message.error('上传文件只能是 Excel 格式!'); return false; // 取消文件上传 } return true; // 允许上传 }, uploadFile({ file, onSuccess, onError }){ // 生成 FormData 对象 const formData = new FormData(); formData.append('file', file); importExcel(formData).then((response) => { const res = response.data if (res.code !== '200') { return this.$message.error(res.msg); } this.$message.success(res.msg); this.getList(); onSuccess(response.data); // 调用 onSuccess 回调通知上传成功 }).catch(error => { // 关闭加载 this.$message.error(error.toString()) onError(error); // 调用 onError 回调通知上传失败 }) }, //订单申报 sendorder(row){ sendOrder(row).then((response)=>{ const res=response.data; if (res.code !== '200') { return this.$message.error('订单申报失败!') } this.$message.success('订单申报成功!'); this.getList(); }).catch(error=>{ this.$message.error(error.toString()) }) }, //订单列表查询 getList(){ if(this.value2 !== null && this.value2 !== ""){ this.queryInfo.starttime = this.value2[0]; this.queryInfo.endtime = this.value2[1]; } selectLists(this.queryInfo).then((response) => { const res = response.data if (res.code !== '200') { return this.$message.error('获取消息收发记录,失败!') } // 获取列表数据 this.tableData = res.data.list // 获取列表的总记录数 this.total = res.data.total this.$message.success('获取消息收发记录,成功!'); }).catch(error => { // 关闭加载 this.$message.error(error.toString()) }) }, //分页 handleSizeChange(val) { this.queryInfo.pageSize=val; this.getList(); }, //分页 handleCurrentChange(val) { this.queryInfo.pageNum=val; this.getList(); }, //多选 handleSelectionChange(selection) { this.selectedRows = selection; } } }; </script> <style scoped> .el-input__inner{ background-color: #f5f7fd; } .el-table { border: 1px solid #ddd; } .el-table th { background-color: #f0f0f0; } .el-table tr.el-table__row--striped > td { background-color: #f8f8f8; } .el-table td, .el-table th { border: 1px solid #ddd; padding: 8px; } </style>