运单补打印新
This commit is contained in:
parent
eace7a4fd8
commit
936b058c28
866
src/views/emis/EmisBaseTools/TanexPrinterBatchPanel.vue
Normal file
866
src/views/emis/EmisBaseTools/TanexPrinterBatchPanel.vue
Normal file
@ -0,0 +1,866 @@
|
||||
<template>
|
||||
<div>
|
||||
|
||||
<!-- 打印机状态 -->
|
||||
<!-- style="padding:5px 0px;text-align: right;position: fixed;top: 150px;right: 10px; z-index: 9999;" -->
|
||||
<div >
|
||||
<div style="display: inline-flex;">
|
||||
<div v-if="printerStatus==0" style="display: inline-flex;">
|
||||
<el-tag type="danger" >{{ printerStatusMessage }}</el-tag>
|
||||
</div>
|
||||
<div v-if="printerStatus==1" style="display: inline-flex;">
|
||||
<div v-if="isShowTpl==1" style="font-size: 12px; line-height: 28px;font-weight: 600;">模板:</div>
|
||||
<div v-if="isShowTpl==1" style="width: 150px;">
|
||||
<el-select v-model="selTplCode" multiple size="mini" placeholder="选择打印模板" clearable filterable>
|
||||
<template slot="prefix">
|
||||
<span style="padding: 5px;line-height: 28px;font-size: 16px;color: rgb(111 111 111);cursor: pointer;" @click="refreshPrintTpl()">
|
||||
<i class="el-icon-refresh"></i>
|
||||
</span>
|
||||
</template>
|
||||
<el-option
|
||||
v-for="item in printTplList"
|
||||
:key="item.tplCode"
|
||||
:label="item.tplName"
|
||||
:value="item.tplCode"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
<div v-if="(selTplCode=='TAN-GC-130' || selTplCode=='TAN-ENGC-130' || selTplCode=='VT-ENNOLOGO') && isShowSubBillRange" class="subBillRange" style="display: inline-flex;font-size: 12px; line-height: 28px; font-weight: 600;">
|
||||
<span >子单范围:
|
||||
<el-input size="mini" style="width:40px" v-model="subBillStart" type="text" maxlength="4" ></el-input>
|
||||
-
|
||||
<el-input size="mini" style="width:40px" v-model="subBillEnd" type="text" maxlength="4" ></el-input>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div v-if="isShowPinters==1" style="font-size: 12px;line-height: 28px;font-weight: 600;">选择打印机:</div>
|
||||
<div v-if="isShowPinters==1" style="width: 150px;">
|
||||
<el-select v-model="selPrinterName" size="mini" placeholder="打印机" clearable filterable>
|
||||
<el-option
|
||||
v-for="item in printerList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="printerStatus==1" style="display: inline-flex;">
|
||||
<!-- <span style="color: green;font-weight: 600;font-size:13px;">【Printer Online】</span> -->
|
||||
</div>
|
||||
<div v-if="printerStatus==0" style="display: inline-flex;">
|
||||
<a :href="printerDownUrl" style="color: blue;font-weight: 600;font-size:13px;text-decoration: underline">下载打印组件</a>
|
||||
</div>
|
||||
<div>
|
||||
<span style="color: #b12e29;font-size:23px;cursor: pointer" class="icon iconfont icon-printer" title="" @click="configPrinter"></span>
|
||||
<!-- <el-button type="text" size="mini" style="padding: 7px 5px;" icon="el-icon-setting" @click="configPrinter"></el-button> -->
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<el-dialog v-if="openPdfView&&!isInitA4" :key="resetRefreshId+'.dlg'" class="printPreDialog" title="预览" :resizable="true" :visible.sync="openPdfView" width="50%" :close-on-click-modal="false" :destroy-on-close="true" v-dialogDrag append-to-body @close="handleClose">
|
||||
<div style="height:100%;width:100%;overflow: auto;">
|
||||
<PdfViewer :key="resetRefreshId+'.pdf'" ref="pdfViewer" :pdfList="pdfList" :isLoadComplete="isLoadComplete" @onPrint="onPdfViewPrint" @close="handleClose"></PdfViewer>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog v-if="openPdfView&&isInitA4" :key="resetRefreshId+'.dlg'" class="printPreDialog" title="预览" :resizable="true" :visible.sync="openPdfView" width="70%" :close-on-click-modal="false" :destroy-on-close="true" v-dialogDrag append-to-body @close="handleClose">
|
||||
<div style="height:100%;width:100%;overflow: auto;">
|
||||
<A4Viewer :key="resetRefreshId+'.pdf'" ref="pdfViewer" :pdfList="pdfList" :isLoadComplete="isLoadComplete" @close="handleClose"></A4Viewer>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<el-dialog title="设置打印机" :visible.sync="openShowConfig" width="30%">
|
||||
<el-form ref="form" :model="form" size="mini" :rules="rules" @submit.native.prevent>
|
||||
<el-row :gutter="0" style="display: flex;flex-wrap: wrap;">
|
||||
<el-col :span="24">
|
||||
<el-alert
|
||||
title="注意"
|
||||
type="info"
|
||||
description="配置打印机信息,不要轻易更改!"
|
||||
show-icon
|
||||
:closable="false"
|
||||
style="margin-bottom: 10px;"
|
||||
>
|
||||
</el-alert>
|
||||
<el-form-item label="打印机地址" prop="printerHost">
|
||||
<el-input v-model="form.printerHost" type="text" placeholder="" />
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="24">
|
||||
<el-form-item label="打印模板" prop="selTplCode">
|
||||
<el-select v-model="selTplCode" size="mini" style="width:100%" placeholder="选择打印模板" clearable filterable>
|
||||
<template slot="prefix">
|
||||
<span style="padding: 5px;line-height: 28px;font-size: 16px;color: rgb(111 111 111);cursor: pointer;" @click="refreshPrintTpl()">
|
||||
<i class="el-icon-refresh"></i>
|
||||
</span>
|
||||
</template>
|
||||
<el-option
|
||||
v-for="item in printTplList"
|
||||
:key="item.tplCode"
|
||||
:label="item.tplName"
|
||||
:value="item.tplCode"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="24">
|
||||
<el-form-item label="打印机" prop="selPrinterName">
|
||||
<el-select v-model="selPrinterName" style="width:100%" size="mini" placeholder="打印机" clearable filterable>
|
||||
<el-option
|
||||
v-for="item in printerList"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</el-form>
|
||||
<div slot="footer" class="dialog-footer" style="text-align: center;margin-bottom:20px">
|
||||
<el-button type="primary" size="mini" @click="setupPrinter">设置</el-button>
|
||||
<el-button size="mini" @click="openShowConfig = false">关 闭</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
</template>
|
||||
<script>
|
||||
import emitter from 'element-ui/src/mixins/emitter';
|
||||
import PdfViewer from '@/components/PdfViewer/viewer.vue';
|
||||
import A4Viewer from '@/components/PdfViewer/A4Viewer.vue';
|
||||
|
||||
|
||||
import PdfUtils from '@/utils/pdfUtils'
|
||||
import { deepClone } from '@/utils/index'
|
||||
|
||||
export default {
|
||||
name: "TanexPrinterPanel",
|
||||
components: {
|
||||
PdfViewer,A4Viewer
|
||||
},
|
||||
mixins: [emitter],
|
||||
props: {
|
||||
value: {
|
||||
type: [Number],
|
||||
required: false
|
||||
},
|
||||
placeholder:{
|
||||
type: [String],
|
||||
required: false
|
||||
},
|
||||
isShowPinters:{
|
||||
type: [Boolean],
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
isShowTpl:{
|
||||
type: [Boolean],
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
isShowSubBillRange:{
|
||||
type: [Boolean],
|
||||
required: false,
|
||||
default: false
|
||||
},
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
resetRefreshId:null,
|
||||
svalue: this.value,
|
||||
subBillStart:1,
|
||||
subBillEnd:null,
|
||||
openPdfView:false,
|
||||
|
||||
orderDetailMap:new Map(),
|
||||
|
||||
isInitA4:false,
|
||||
|
||||
printManCode:this.$store.getters.empCode,
|
||||
|
||||
// 计数器
|
||||
showCounter:0,
|
||||
|
||||
pdfList:[],
|
||||
pdfBase64List:[],
|
||||
isLoadComplete:0,
|
||||
|
||||
tanexPrinter:null,
|
||||
printerDownUrl:null,
|
||||
|
||||
printerStatus:0,
|
||||
printerStatusMessage:'打印组件未连接',
|
||||
|
||||
orderList:[],
|
||||
printOrderList:[],
|
||||
|
||||
printerList:[],
|
||||
printTplList:[],
|
||||
|
||||
selTplCode:[],
|
||||
selPrinterName:null,
|
||||
|
||||
currentSelection:[],
|
||||
|
||||
openShowConfig:false,
|
||||
|
||||
pdfUtils:new PdfUtils({}),
|
||||
|
||||
form:{
|
||||
printerHost:null,
|
||||
},
|
||||
|
||||
rules:{
|
||||
|
||||
},
|
||||
|
||||
};
|
||||
},
|
||||
watch: {
|
||||
value(newVal) {
|
||||
this.svalue = newVal;
|
||||
if(this.svalue!=null) {
|
||||
}
|
||||
},
|
||||
},
|
||||
created() {
|
||||
this.initTanexPrinterSdk();
|
||||
},
|
||||
beforeDestroy(){
|
||||
// this.tanexPrinter.close();
|
||||
},
|
||||
methods: {
|
||||
configPrinter(){
|
||||
this.form.printerHost=this.$tanexPrinter.getPrinterHost();
|
||||
console.log("===>===>",this.form.printerHost);
|
||||
this.openShowConfig=true;
|
||||
},
|
||||
setupPrinter(){
|
||||
console.log("===>===>",this.form.printerHost);
|
||||
if(this.form.printerHost){
|
||||
this.$tanexPrinter.restPrinterHost(this.form.printerHost);
|
||||
}
|
||||
this.openShowConfig=false;
|
||||
},
|
||||
getUUID() {
|
||||
return Math.random().toString(36).substring(3,10);
|
||||
},
|
||||
refreshKey(){
|
||||
this.resetRefreshId="print-"+this.getUUID();
|
||||
},
|
||||
initTanexPrinterSdk(){
|
||||
this.refreshKey();
|
||||
|
||||
this.tanexPrinter = this.$tanexPrinter;
|
||||
|
||||
this.getConfigKey("sys.printer.downurl").then(response => {
|
||||
this.printerDownUrl = response.msg;
|
||||
});
|
||||
|
||||
this.tanexPrinter.init();
|
||||
|
||||
this.tanexPrinter.setOnOpen(this.onPrinterOpen);
|
||||
this.tanexPrinter.setOnClose(this.onPrinterClose);
|
||||
this.tanexPrinter.setOnError(this.onPrinterError);
|
||||
this.tanexPrinter.setOnGetPrinter(this.onGetPrinter);
|
||||
this.tanexPrinter.setOnGetPrintTpl(this.onGetPrintTpl);
|
||||
|
||||
},
|
||||
onPrinterOpen(evt){
|
||||
// console.log("onPrinterOpen")
|
||||
this.printerStatus = 1;
|
||||
this.$emit("input",this.printerStatus);
|
||||
this.printerStatusMessage="打印组件已连接,可以打印.";
|
||||
|
||||
},
|
||||
onPrinterClose(evt){
|
||||
// console.log("onPrinterClose")
|
||||
this.printerStatus = 0;
|
||||
this.$emit("input",this.printerStatus);
|
||||
this.printerStatusMessage="打印组件已断开!";
|
||||
},
|
||||
onPrinterError(evt){
|
||||
// console.log("onPrinterError")
|
||||
this.printerStatus = 0;
|
||||
this.$emit("input",this.printerStatus);
|
||||
this.printerStatusMessage="打印组件已断开!";
|
||||
},
|
||||
onGetPrinter(msg){
|
||||
// console.log("onGetPrinter")
|
||||
this.printerList=this.tanexPrinter.getPrinterTplList();
|
||||
this.selPrinterName=this.tanexPrinter.getDefaultPrinter();
|
||||
},
|
||||
onGetPrintTpl(msg){
|
||||
console.log("onGetPrintTpl")
|
||||
|
||||
this.printTplList=[];
|
||||
|
||||
this.printTplList=this.tanexPrinter.getPrintTplList();
|
||||
|
||||
if(this.isInitA4){
|
||||
const newList=this.printTplList.filter(item=>item.tplCode == 'A4-EP');
|
||||
this.printTplList=newList;
|
||||
}
|
||||
|
||||
// console.log("====onGetPrintTpl==>",this.printTplList);
|
||||
|
||||
if(this.printTplList&&this.printTplList.length>0){
|
||||
this.selTplCode=[this.printTplList[0].tplCode];
|
||||
}
|
||||
},
|
||||
getDefaultPrinter(){
|
||||
return this.tanexPrinter.getDefaultPrinter();
|
||||
},
|
||||
getSelectPrinter(){
|
||||
return this.selPrinterName;
|
||||
},
|
||||
refreshPrintTpl(){
|
||||
this.printTplList=[];
|
||||
this.selTplCode=[];
|
||||
this.tanexPrinter.refreshPrintTpl()
|
||||
},
|
||||
lpadZero(val,len) {
|
||||
return (new Array(len + 1).join('0') + val).slice(-len);
|
||||
},
|
||||
/*
|
||||
高级批量打印
|
||||
[
|
||||
{
|
||||
"tplCode":tplCode,
|
||||
"printerName":printerName,
|
||||
"orderList":orderList.toString()
|
||||
}
|
||||
]
|
||||
|
||||
*/
|
||||
|
||||
batchPrintAdv(printDataList){
|
||||
if(this.printerStatus !=1){
|
||||
this.$modal.msgError("打印机未连接");
|
||||
return;
|
||||
}
|
||||
|
||||
this.isInitA4=false;
|
||||
|
||||
this.tanexPrinter.batchPrintAdv(printDataList,this.printManCode);
|
||||
},
|
||||
|
||||
batchPrint(orderList,tplCode,orderDetailList){
|
||||
|
||||
if(this.printerStatus !=1){
|
||||
this.$modal.msgError("打印机未连接");
|
||||
return;
|
||||
}
|
||||
this.isInitA4=false;
|
||||
|
||||
this.orderDetailMap=new Map();
|
||||
if(orderDetailList){
|
||||
orderDetailList.map(v=>{
|
||||
this.orderDetailMap[v.billCode]=v;
|
||||
});
|
||||
}
|
||||
|
||||
let that = this;
|
||||
let newOrderList=[];
|
||||
if(orderList){
|
||||
this.orderList=[...orderList]
|
||||
}
|
||||
|
||||
if(tplCode){
|
||||
this.selTplCode=tplCode
|
||||
}
|
||||
|
||||
// 打印子单
|
||||
// if(this.selTplCode=="TAN-GC-130" || this.selTplCode=="TAN-ENGC-130" || this.selTplCode=="VT-ENNOLOGO" ){
|
||||
if(['TAN-GC-130','TAN-ENGC-130','VT-ENNOLOGO'].some(element=>this.selTplCode.includes(element))){
|
||||
for(let i=0;i<this.orderList.length;i++){
|
||||
let billCode=this.orderList[i];
|
||||
let subBillStart=1;
|
||||
if(this.subBillStart&&this.subBillStart>0){
|
||||
subBillStart=this.subBillStart;
|
||||
}
|
||||
|
||||
let billDetail = this.orderDetailMap[billCode];
|
||||
|
||||
let subBillEnd=parseInt(billDetail.parcelQty);
|
||||
if(this.subBillEnd&&this.subBillEnd!=''){
|
||||
subBillEnd = parseInt(this.subBillEnd)<=parseInt(billDetail.parcelQty)?parseInt(this.subBillEnd):parseInt(billDetail.parcelQty);
|
||||
}
|
||||
|
||||
// 循环子单范围
|
||||
for(let i=subBillStart;i<=subBillEnd;i++){
|
||||
let subBillCode = billCode+""+this.lpadZero(i,4);
|
||||
newOrderList.push(subBillCode);
|
||||
}
|
||||
|
||||
}
|
||||
}else{
|
||||
newOrderList=[...orderList];
|
||||
}
|
||||
|
||||
// console.log("tnprint===>",newOrderList);
|
||||
// console.log("tnprint===>",that.selTplCode);
|
||||
this.printOrderList=newOrderList;
|
||||
|
||||
that.tanexPrinter.batchPrint(that.selTplCode,that.selPrinterName,newOrderList,this.printManCode)
|
||||
},
|
||||
|
||||
printPreviewAdv(printDataList,billCount){
|
||||
|
||||
if(this.printerStatus !=1){
|
||||
this.$modal.msgError("打印机未连接");
|
||||
return;
|
||||
}
|
||||
|
||||
this.isInitA4=false;
|
||||
|
||||
let that = this;
|
||||
const loadingInstance = this.$loading({
|
||||
text: '正在生成预览...'
|
||||
})
|
||||
|
||||
let orderSeqMap = new Map();
|
||||
console.log("printPreviewAdv===>",printDataList);
|
||||
|
||||
|
||||
let j=0;
|
||||
printDataList.forEach(item=>{
|
||||
let billArr = item.orderList.split(",");
|
||||
billArr.forEach(objBillCodeStr=>{
|
||||
if(!(objBillCodeStr in orderSeqMap)){
|
||||
orderSeqMap[objBillCodeStr]=j+1;
|
||||
console.log("orderSeqMap===>",objBillCodeStr,j+1);
|
||||
j++;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
that.pdfList=[];
|
||||
that.showCounter=0;
|
||||
this.tanexPrinter.batchGetPDFAdv(printDataList,billCount,this.printManCode,async function(code,msg,data){
|
||||
loadingInstance.close();
|
||||
|
||||
if(code == 500){
|
||||
that.$modal.msgError("打印出错:"+msg);
|
||||
}
|
||||
else if(code == 200){
|
||||
const pdfData=deepClone(data);
|
||||
|
||||
let pdfInfo={
|
||||
"billCode":pdfData.ydSn,
|
||||
"pdfUrl":null,
|
||||
"pdfBase64":pdfData.file,
|
||||
"tplCode":pdfData.tplCode,
|
||||
"seqNo":orderSeqMap[pdfData.ydSn]
|
||||
}
|
||||
|
||||
that.pdfList.push(pdfInfo);
|
||||
if(!that.openPdfView && that.showCounter==0){
|
||||
that.openPdfView = true;
|
||||
}
|
||||
|
||||
// if(that.pdfList.length == newOrderList.length){
|
||||
// that.isLoadComplete=true;
|
||||
// }
|
||||
|
||||
that.showCounter++;
|
||||
|
||||
}
|
||||
else if(code == 800){
|
||||
// 全部获取完成
|
||||
console.log("===全部获取完成ADV====>");
|
||||
that.pdfList.sort((one, two) => {
|
||||
let v=one.seqNo-two.seqNo;
|
||||
if(one.seqNo==two.seqNo){
|
||||
return one.tplCode.localeCompare(two.tplCode)
|
||||
}else{
|
||||
return v;
|
||||
}
|
||||
});
|
||||
|
||||
that.refreshKey();
|
||||
}
|
||||
|
||||
});
|
||||
},
|
||||
printPreview(orderList,isA4,tplCode,orderDetailList){
|
||||
this.refreshKey();
|
||||
if(this.printerStatus !=1){
|
||||
this.$modal.msgError("打印机未连接");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
this.orderDetailMap=new Map();
|
||||
if(orderDetailList){
|
||||
orderDetailList.map(v=>{
|
||||
this.orderDetailMap[v.billCode]=v;
|
||||
});
|
||||
}
|
||||
|
||||
// console.log("====>orderDetailMap==>",this.orderDetailMap);
|
||||
|
||||
if(tplCode){
|
||||
this.selTplCode=tplCode;
|
||||
}
|
||||
|
||||
if(isA4){
|
||||
this.isInitA4=isA4;
|
||||
}
|
||||
|
||||
let that = this;
|
||||
let newOrderList=[];
|
||||
if(orderList){
|
||||
this.orderList=[...orderList]
|
||||
}
|
||||
|
||||
// 打印子单
|
||||
// if(this.selTplCode=="TAN-GC-130"|| this.selTplCode=='TAN-ENGC-130' || this.selTplCode=='VT-ENNOLOGO' ){
|
||||
if(['TAN-GC-130','TAN-ENGC-130','VT-ENNOLOGO'].some(element=>this.selTplCode.includes(element))){ // 子单联无LOGO、英文子单无LOGO、越南英文子单无LOGO
|
||||
for(let i=0;i<this.orderList.length;i++){
|
||||
let billCode=this.orderList[i];
|
||||
let subBillStart=1;
|
||||
if(this.subBillStart&&this.subBillStart>0){
|
||||
subBillStart=this.subBillStart;
|
||||
}
|
||||
|
||||
let billDetail = this.orderDetailMap[billCode];
|
||||
console.log("====>billDetail==>",billDetail);
|
||||
|
||||
let subBillEnd=parseInt(billDetail.parcelQty);
|
||||
if(this.subBillEnd){
|
||||
subBillEnd = parseInt(this.subBillEnd)<=parseInt(billDetail.parcelQty)?parseInt(this.subBillEnd):parseInt(billDetail.parcelQty);
|
||||
}
|
||||
|
||||
// 循环子单范围
|
||||
for(let i=subBillStart;i<=subBillEnd;i++){
|
||||
let subBillCode = billCode+""+this.lpadZero(i,4);
|
||||
newOrderList.push(subBillCode);
|
||||
}
|
||||
|
||||
}
|
||||
}else{
|
||||
newOrderList=[...orderList];
|
||||
}
|
||||
|
||||
const loadingInstance = this.$loading({
|
||||
text: '正在生成预览...'
|
||||
})
|
||||
|
||||
this.printOrderList=newOrderList;
|
||||
|
||||
let orderSeqMap = new Map();
|
||||
for(let i=0; i<newOrderList.length; i++){
|
||||
let billCodeItem=newOrderList[i];
|
||||
orderSeqMap[billCodeItem]=i+1;
|
||||
}
|
||||
|
||||
that.pdfList=[];
|
||||
that.showCounter=0;
|
||||
// that.openPdfView = true;
|
||||
// if(!that.openPdfView && that.showCounter==0){
|
||||
// that.openPdfView = true;
|
||||
// }
|
||||
// that.showCounter++;
|
||||
// console.log('promise',this.tanexPrinter.batchGetPDF(this.selTplCode[0], this.selPrinterName, newOrderList, this.printManCode,async function(code,msg,data){}))
|
||||
this.selTplCode.forEach(element => {
|
||||
this.tanexPrinter.batchGetPDF(element,this.selPrinterName,newOrderList,this.printManCode,async function(code,msg,data){
|
||||
loadingInstance.close();
|
||||
|
||||
if(code == 500){
|
||||
that.$modal.msgError("打印出错:"+msg);
|
||||
}
|
||||
else if(code == 200){
|
||||
const pdfData=deepClone(data);
|
||||
let pdfInfo={
|
||||
"billCode":pdfData.ydSn,
|
||||
"pdfUrl":null,
|
||||
"pdfBase64":pdfData.file,
|
||||
"tplCode":pdfData.tplCode,
|
||||
"seqNo":orderSeqMap[pdfData.ydSn]
|
||||
}
|
||||
|
||||
that.pdfList.push(pdfInfo);
|
||||
|
||||
if(!that.openPdfView && that.showCounter==0){
|
||||
that.openPdfView = true;
|
||||
}
|
||||
that.showCounter++;
|
||||
|
||||
|
||||
}
|
||||
else if(code == 800){
|
||||
// 全部获取完成
|
||||
console.log("===全部获取完成2====>");
|
||||
that.pdfList.sort((one, two) => {
|
||||
let v=one.seqNo-two.seqNo;
|
||||
if(one.seqNo==two.seqNo){
|
||||
return one.tplCode.localeCompare(two.tplCode)
|
||||
}else{
|
||||
return v;
|
||||
}
|
||||
});
|
||||
console.log("===that.pdfList====>",that.pdfList);
|
||||
that.refreshKey();
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
downPDF(orderList,isA4,tplCode,orderDetailList){
|
||||
|
||||
if(this.printerStatus !=1){
|
||||
this.$modal.msgError("打印机未连接");
|
||||
return;
|
||||
}
|
||||
|
||||
this.orderDetailMap=new Map();
|
||||
if(orderDetailList){
|
||||
orderDetailList.map(v=>{
|
||||
this.orderDetailMap[v.billCode]=v;
|
||||
});
|
||||
}
|
||||
|
||||
if(tplCode){
|
||||
this.selTplCode=tplCode;
|
||||
}
|
||||
|
||||
if(isA4){
|
||||
this.isInitA4=isA4;
|
||||
}
|
||||
|
||||
let that = this;
|
||||
let newOrderList=[];
|
||||
if(orderList){
|
||||
this.orderList=[...orderList]
|
||||
}
|
||||
|
||||
// 打印子单
|
||||
// if(this.selTplCode=="TAN-GC-130" || this.selTplCode=='TAN-ENGC-130' || this.selTplCode=='VT-ENNOLOGO' ){
|
||||
if(['TAN-GC-130','TAN-ENGC-130','VT-ENNOLOGO'].some(element=>this.selTplCode.includes(element))){ // 子单联无LOGO、英文子单无LOGO、越南英文子单无LOGO
|
||||
for(let i=0;i<this.orderList.length;i++){
|
||||
let billCode=this.orderList[i];
|
||||
// 循环子单范围
|
||||
let subBillStart=1;
|
||||
if(this.subBillStart&&this.subBillStart>0){
|
||||
subBillStart=this.subBillStart;
|
||||
}
|
||||
|
||||
let billDetail = this.orderDetailMap[billCode];
|
||||
// console.log("====>billDetail==>",billDetail);
|
||||
|
||||
let subBillEnd=parseInt(billDetail.parcelQty);
|
||||
if(this.subBillEnd){
|
||||
subBillEnd = parseInt(this.subBillEnd)<=parseInt(billDetail.parcelQty)?parseInt(this.subBillEnd):parseInt(billDetail.parcelQty);
|
||||
}
|
||||
|
||||
for(let i=subBillStart;i<=subBillEnd;i++){
|
||||
let subBillCode = billCode+""+this.lpadZero(i,4);
|
||||
newOrderList.push(subBillCode);
|
||||
}
|
||||
}
|
||||
}else{
|
||||
newOrderList=[...orderList];
|
||||
}
|
||||
|
||||
const loadingInstance = this.$loading({
|
||||
text: '正在下载...'
|
||||
})
|
||||
|
||||
let orderSeqMap = new Map();
|
||||
for(let i=0; i<newOrderList.length; i++){
|
||||
let billCodeItem=newOrderList[i];
|
||||
orderSeqMap[billCodeItem]=i+1;
|
||||
}
|
||||
|
||||
// 清空以前的数据
|
||||
this.pdfList=[];
|
||||
this.selTplCode.forEach(item=>{
|
||||
this.tanexPrinter.batchGetPDF(this.selTplCode,this.selPrinterName,newOrderList,this.printManCode,function(code,msg,data){
|
||||
|
||||
if(code == 500){
|
||||
loadingInstance.close();
|
||||
that.$modal.msgError("下载出错:"+msg);
|
||||
}
|
||||
else if(code == 200){
|
||||
const pdfData=deepClone(data);
|
||||
let pdfInfo={
|
||||
"billCode":pdfData.ydSn,
|
||||
"pdfUrl":null,
|
||||
"pdfBase64":pdfData.file,
|
||||
"tplCode":pdfData.tplCode,
|
||||
"seqNo":orderSeqMap[pdfData.ydSn]
|
||||
}
|
||||
that.pdfList.push(pdfInfo);
|
||||
}
|
||||
else if(code == 800){
|
||||
loadingInstance.close();
|
||||
// console.log("===全部获取完成====>");
|
||||
// A4下载
|
||||
if(that.isInitA4){
|
||||
that.downA4PDF();
|
||||
}else{
|
||||
that.downSinglePDF();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
})
|
||||
},
|
||||
|
||||
downSinglePDF(){
|
||||
|
||||
this.$prompt('请输入保存文件名', "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
closeOnClickModal: false,
|
||||
inputValidator (value) {
|
||||
if (value) {
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
},
|
||||
inputErrorMessage: "文件名不能为空"
|
||||
}).then(async ({ value }) => {
|
||||
if(!value){
|
||||
this.$modal.msgError("文件名不能为空" );
|
||||
return
|
||||
}
|
||||
|
||||
let needGenList=[];
|
||||
|
||||
let newTmpList=[...this.pdfList];
|
||||
newTmpList.sort((one, two) => {
|
||||
let v=one.seqNo-two.seqNo;
|
||||
if(one.seqNo==two.seqNo){
|
||||
return one.tplCode.localeCompare(two.tplCode)
|
||||
}else{
|
||||
return v;
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
for(let j=0;j<newTmpList.length;j++){
|
||||
needGenList.push(newTmpList[j].pdfBase64)
|
||||
}
|
||||
|
||||
// let fileName=new Date().getTime()+".pdf";
|
||||
let fileName=value+".pdf";
|
||||
this.pdfUtils.mergePdf3(needGenList,fileName,true);
|
||||
}).catch(() => {});
|
||||
|
||||
},
|
||||
|
||||
downA4PDF(){
|
||||
this.$prompt('请输入保存文件名', "提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
closeOnClickModal: false,
|
||||
inputValidator (value) {
|
||||
if (value) {
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
},
|
||||
inputErrorMessage: "文件名不能为空"
|
||||
}).then(async ({ value }) => {
|
||||
|
||||
if(!value){
|
||||
this.$modal.msgError("文件名不能为空" );
|
||||
return
|
||||
}
|
||||
|
||||
let cacheA4FileList=[];
|
||||
const newList = Object.assign([], this.pdfList);
|
||||
if(newList&&newList.length>4){
|
||||
let spliteArr = (array = [], subGroupLength = 0) => {
|
||||
let index = 0;
|
||||
const newArray = [];
|
||||
while (index < array.length) {
|
||||
newArray.push(array.slice(index, index += subGroupLength));
|
||||
}
|
||||
return newArray;
|
||||
}
|
||||
const subPdfList=spliteArr(newList, 4);
|
||||
for (let i=0; i < subPdfList.length;i++){
|
||||
let fileItem={
|
||||
"billCode":"page-"+(i+1),
|
||||
"pdfUrl":null,
|
||||
"childreen":subPdfList[i]
|
||||
}
|
||||
cacheA4FileList.push(fileItem);
|
||||
}
|
||||
}else{
|
||||
let fileItem={
|
||||
"billCode":"page-"+1,
|
||||
"pdfUrl":null,
|
||||
"childreen":newList
|
||||
}
|
||||
cacheA4FileList.push(fileItem);
|
||||
}
|
||||
|
||||
// 下载
|
||||
// let mergeA4List=[];
|
||||
let needGenList=[];
|
||||
for(let i=0;i<cacheA4FileList.length;i++){
|
||||
let thisSubList=cacheA4FileList[i].childreen;
|
||||
for(let j=0;j<thisSubList.length;j++){
|
||||
needGenList.push(thisSubList[j].pdfBase64)
|
||||
}
|
||||
}
|
||||
|
||||
// let pdfUrl=await this.pdfUtils.mergePdfToA4(needGenList);
|
||||
// mergeA4List.push(pdfUrl);
|
||||
// let fileName=new Date().getTime()+".pdf";
|
||||
|
||||
console.log("==11111==>===> needGenList==>", needGenList);
|
||||
|
||||
let fileName=value+".pdf";
|
||||
this.pdfUtils.mergePdfToA4(needGenList,fileName,true);
|
||||
|
||||
}).catch(() => {});
|
||||
|
||||
},
|
||||
|
||||
// 响应PDF预览
|
||||
onPdfViewPrint(printCnt){
|
||||
this.$emit("onPrint",printCnt);
|
||||
},
|
||||
handleClose(){
|
||||
this.openPdfView=false;
|
||||
this.$emit("onPrintComplete");
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
.printPreDialog .el-dialog__body {
|
||||
margin: 0px!important;
|
||||
}
|
||||
|
||||
// .printPreDialog .el-dialog__header {
|
||||
// display: none;
|
||||
// }
|
||||
|
||||
.subBillRange .el-input__inner {
|
||||
padding:0px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
735
src/views/emis/emisWaybill/waybillIsPrintedNew.vue
Normal file
735
src/views/emis/emisWaybill/waybillIsPrintedNew.vue
Normal file
@ -0,0 +1,735 @@
|
||||
<template>
|
||||
<XdPageContainer class="app-container">
|
||||
<!-- label-width="100px" -->
|
||||
<SearchForm slot="pageHeader" :model="queryParams" ref="queryForm"
|
||||
size="mini" :maxShow="8"
|
||||
v-show="showSearch"
|
||||
@search="handleQuery"
|
||||
@reset="resetQuery"
|
||||
:isShowSearchBtn="false"
|
||||
>
|
||||
|
||||
<el-row :gutter="0" style="display: flex;flex-wrap: wrap;">
|
||||
<el-col :span="6">
|
||||
<el-form-item label="" prop="billCode">
|
||||
<div slot="label">
|
||||
<el-radio-group class="query-label" v-model="queryOrderType">
|
||||
<el-radio :key="1" label="1">运单号</el-radio>
|
||||
<!-- <el-radio :key="0" label="0">订单号</el-radio> -->
|
||||
</el-radio-group>
|
||||
</div>
|
||||
<XdTextareaInput
|
||||
v-model="queryParams.billCode"
|
||||
:placeholder="$t('多个流水号逗号或换行隔开')"
|
||||
clearable
|
||||
:rows="2"
|
||||
/>
|
||||
<!-- @keyup.enter.native="handleQuery" -->
|
||||
</el-form-item>
|
||||
<el-form-item label="发货时间" prop="dateTimeRange">
|
||||
<elDateAdvPicker clearable v-model="dateTimeRange" @dateTimeChange="onDateSelect" ></elDateAdvPicker>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="18">
|
||||
<el-form-item label="寄件客户" prop="custNo">
|
||||
<EmisMonthpayAccountPicker v-model="queryParams.custNo" @onChange="handleQuery"></EmisMonthpayAccountPicker>
|
||||
</el-form-item>
|
||||
<el-form-item label="寄件网点" prop="sendSiteCode">
|
||||
<EmisSiteSimplePicker1 v-model="queryParams.sendSiteCode" ></EmisSiteSimplePicker1>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="寄件公司" prop="sendCompany">
|
||||
<el-input
|
||||
v-model="queryParams.sendCompany"
|
||||
:placeholder="$t('寄件公司')"
|
||||
clearable
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item :label="$t('取件业务员')" prop="takePieceEmployeeCode">
|
||||
<EmisUserSimplePicker1 :placeholder="$t('取件员')" v-model="queryParams.takePieceEmployeeCode"></EmisUserSimplePicker1>
|
||||
</el-form-item>
|
||||
<el-form-item label="线路" prop="transLineType">
|
||||
<TransLinePicker v-model="queryParams.transLineType" isInitiated="true" ></TransLinePicker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="产品类型" prop="productType">
|
||||
<TransProductPicker placeholder="产品类型" v-model="queryParams.productType" :transLineCode="queryParams.transLineType"></TransProductPicker>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="目的网点" prop="dispatchUnderlingSiteCode">
|
||||
<EmisSiteSimplePicker2 v-model="queryParams.dispatchUnderlingSiteCode" ></EmisSiteSimplePicker2>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('操作员')" prop="operateEmployeeCode">
|
||||
<EmisUserSimplePicker0 :placeholder="$t('操作员')" v-model="queryParams.operateEmployeeCode"></EmisUserSimplePicker0>
|
||||
</el-form-item>
|
||||
|
||||
</el-col>
|
||||
|
||||
|
||||
</el-row>
|
||||
</SearchForm>
|
||||
|
||||
|
||||
<XdTable
|
||||
slot="pageContent"
|
||||
slot-scope="slotProps"
|
||||
:height="(slotProps.contentHeight)+'px'"
|
||||
|
||||
ref="refQueryTable"
|
||||
|
||||
:row-key="rowKey"
|
||||
|
||||
storageName="waybillIsPrinted_main"
|
||||
|
||||
v-loading="loading"
|
||||
border
|
||||
size="small"
|
||||
:data="emisWaybillList"
|
||||
:showSearch.sync="showSearch"
|
||||
:queryParams="queryParams"
|
||||
:total="total"
|
||||
@queryTable="getList"
|
||||
@selection-change="handleSelectionChange"
|
||||
@sort-change="handleSortChange"
|
||||
>
|
||||
|
||||
<div slot="toolbar">
|
||||
<el-row :gutter="10" class="mb8" style="display: flex;flex-wrap: wrap;">
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-search"
|
||||
size="mini"
|
||||
@click="handleQuery"
|
||||
>查询</el-button>
|
||||
</el-col>
|
||||
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
icon="el-icon-print"
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleBatchPrint(1)"
|
||||
>打印</el-button>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handlePrintPreview"
|
||||
>预览面单</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDownPDF"
|
||||
>下载pdf</el-button>
|
||||
</el-col>
|
||||
<!-- v-hasPermi="['emis:emisWaybill:downCustBill']" -->
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDownCustBillPDF"
|
||||
v-hasPermi="['emis:emisWaybill:downCustBill']"
|
||||
>下载客户账单(PDF)</el-button>
|
||||
</el-col>
|
||||
<!-- v-hasPermi="['emis:emisWaybill:downCustTaxBill']" -->
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="primary"
|
||||
plain
|
||||
size="mini"
|
||||
:disabled="multiple"
|
||||
@click="handleDownCustTaxBillPDF"
|
||||
v-hasPermi="['emis:emisWaybill:downCustTaxBill']"
|
||||
>下载税金账单(PDF)</el-button>
|
||||
</el-col>
|
||||
|
||||
<el-col :span="1.5">
|
||||
<TanexPrinterBatchPanel ref="tanexPrinter" :isShowPinters="true" :isShowTpl="true" :isShowSubBillRange="true" @onPrint="handleBatchPrint"></TanexPrinterBatchPanel>
|
||||
</el-col>
|
||||
|
||||
</el-row>
|
||||
</div>
|
||||
<el-table-column label="序号" align="center" min-width="60">
|
||||
<template slot-scope="scope">
|
||||
<span v-text="getIndex(scope.$index)"> </span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column type="selection" width="55" :reserve-selection="true" align="center" />
|
||||
<el-table-column :label="$t('运单编号')" align="center" prop="billCode" min-width="120" :show-overflow-tooltip="true" />
|
||||
<!-- <el-table-column :label="$t('订单号')" align="center" prop="orderSn" width="100" :show-overflow-tooltip="true"/> -->
|
||||
|
||||
<el-table-column :label="$t('是否打印')" align="center" prop="blPrint" min-width="80" >
|
||||
<template slot-scope="scope">
|
||||
<el-tag v-if="scope.row.blPrint==1" type="success">已打印</el-tag>
|
||||
<el-tag v-else type="danger">未打印</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('打印次数')" align="center" prop="printCount" min-width="80" />
|
||||
|
||||
<el-table-column :label="$t('打印时间')" align="center" prop="printDate" min-width="80" :show-overflow-tooltip="true"/>
|
||||
<el-table-column :label="$t('打印人')" align="center" prop="printManName" min-width="80" :show-overflow-tooltip="true"/>
|
||||
<el-table-column :label="$t('打印站点')" align="center" prop="printSiteName" min-width="80" :show-overflow-tooltip="true"/>
|
||||
|
||||
|
||||
<el-table-column :label="$t('进仓单号')" align="center" prop="warehouseInNo" width="80" :show-overflow-tooltip="true"/>
|
||||
<el-table-column :label="$t('发货日期')" align="center" prop="sendDate" min-width="100" :show-overflow-tooltip="true"/>
|
||||
<el-table-column :label="$t('取件方式')" align="center" prop="pickupMethod" width="100" >
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.emis_qujian_fangshi" :value="scope.row.pickupMethod"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('客户名称')" align="center" prop="custName" min-width="80" :show-overflow-tooltip="true">
|
||||
<template slot-scope="scope">
|
||||
<span v-if="scope.row.paymentType==2 || scope.row.paymentType==4 || scope.row.paymentType==5">{{scope.row.custName}}</span>
|
||||
<span v-else></span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column :label="$t('销售回款人')" align="center" prop="payee" min-width="100" />
|
||||
<el-table-column :label="$t('销售联系人')" align="center" prop="salesmen" min-width="100" />
|
||||
|
||||
<el-table-column :label="$t('起始国')" align="center" prop="sendCountryName" width="80" :show-overflow-tooltip="true"/>
|
||||
<el-table-column :label="$t('目的国')" align="center" prop="receiveCountryName" width="80" :show-overflow-tooltip="true"/>
|
||||
<el-table-column :label="$t('线路')" align="center" prop="transLineTypeName" min-width="80" :show-overflow-tooltip="true"/>
|
||||
<el-table-column :label="$t('产品类型')" align="center" prop="productTypeName" min-width="80" :show-overflow-tooltip="true"/>
|
||||
|
||||
<el-table-column :label="$t('清关方式')" align="center" prop="customsClear" min-width="80" >
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.emis_customs_clear" :value="scope.row.customsClear"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column :label="$t('报关方式')" align="center" prop="customsEclaration" min-width="80" >
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.emis_declare_mode" :value="scope.row.customsEclaration"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column :label="$t('寄件网点')" align="center" prop="sendSiteName" min-width="80" :show-overflow-tooltip="true"/>
|
||||
<el-table-column :label="$t('寄件人')" align="center" prop="sendName" min-width="80" :show-overflow-tooltip="true"/>
|
||||
<el-table-column :label="$t('寄件公司')" align="center" prop="sendCompany" min-width="80" :show-overflow-tooltip="true"/>
|
||||
|
||||
<el-table-column :label="$t('目的地')" align="center" prop="destinationName" min-width="80" :show-overflow-tooltip="true"/>
|
||||
<el-table-column :label="$t('目的网点')" align="center" prop="dispatchUnderlingSiteName" min-width="80" :show-overflow-tooltip="true"/>
|
||||
|
||||
<el-table-column :label="$t('收件人')" align="center" prop="receiveName" min-width="80" :show-overflow-tooltip="true"/>
|
||||
<el-table-column :label="$t('收件电话')" align="center" prop="receiveMobile" min-width="80" :show-overflow-tooltip="true"/>
|
||||
<el-table-column :label="$t('收件公司')" align="center" prop="receiveCompany" min-width="80" :show-overflow-tooltip="true"/>
|
||||
<el-table-column :label="$t('收件国家')" align="center" prop="receiveCountryName" min-width="80" :show-overflow-tooltip="true"/>
|
||||
<el-table-column :label="$t('收件省')" align="center" prop="receiveProvinceName" min-width="80" :show-overflow-tooltip="true"/>
|
||||
<!-- <el-table-column :label="$t('收件市')" align="center" prop="receiveCityName" min-width="80" :show-overflow-tooltip="true"/> -->
|
||||
<!-- <el-table-column :label="$t('收件区')" align="center" prop="receiveCountyName" min-width="80" :show-overflow-tooltip="true"/> -->
|
||||
|
||||
<el-table-column :label="$t('货物名称')" align="center" prop="goodsInfo" min-width="80" :show-overflow-tooltip="true"/>
|
||||
<el-table-column :label="$t('包装类型')" align="center" prop="packType" min-width="80" >
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.emis_tab_packing_type" :value="scope.row.packType"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('件数')" align="center" prop="parcelQty" min-width="80" />
|
||||
<el-table-column :label="$t('实际重量')" align="center" prop="billWeight" min-width="80" />
|
||||
<el-table-column :label="$t('体积')" align="center" prop="totalVolume" min-width="80" />
|
||||
<el-table-column :label="$t('体积重量')" align="center" prop="volumeWeight" min-width="80" />
|
||||
<el-table-column :label="$t('结算重量')" align="center" prop="settlementWeight" min-width="80" />
|
||||
|
||||
<el-table-column :label="$t('支付方式')" align="center" prop="paymentType" min-width="80" :show-overflow-tooltip="true" >
|
||||
<template slot-scope="scope">
|
||||
<dict-tag :options="dict.type.emis_payment_type" :value="scope.row.paymentType"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column :label="$t('运费')" align="center" prop="freight" min-width="80" />
|
||||
|
||||
<el-table-column :label="$t('录单人')" align="center" prop="registerManName" min-width="80" :show-overflow-tooltip="true" />
|
||||
<el-table-column :label="$t('录单备注')" align="center" prop="remark" min-width="80" :show-overflow-tooltip="true" />
|
||||
|
||||
|
||||
</XdTable>
|
||||
|
||||
</XdPageContainer>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listEmisWaybill, getEmisWaybill, delEmisWaybill, addEmisWaybill, updateEmisWaybill,queryPrintListSimple } from "@/api/emis/emisWaybill";
|
||||
import emisWaybillForm from '@/views/emis/emisWaybill/emisWaybillForm';
|
||||
import elDateAdvPicker from '@/components/DatePickerAdv/elDateAdvPicker';
|
||||
import CountryPicker0 from '@/views/emis/EmisBaseTools/CountryPicker.vue';
|
||||
import CountryPicker1 from '@/views/emis/EmisBaseTools/CountryPicker.vue';
|
||||
|
||||
import CountryPicker2 from '@/views/emis/EmisBaseTools/CountryPicker.vue';
|
||||
import ProvincePicker2 from '@/views/emis/EmisBaseTools/ProvincePicker.vue';
|
||||
|
||||
import TransLinePicker from '@/views/emis/EmisBaseTools/TransLinePicker.vue';
|
||||
import TransProductPicker from '@/views/emis/EmisBaseTools/TransProductPicker.vue';
|
||||
|
||||
import EmisMonthpayAccountPicker from '@/views/emis/EmisBaseTools/EmisMonthpayAccountPicker.vue';
|
||||
|
||||
import EmisUserSimplePicker0 from '@/views/emis/EmisBaseTools/EmisUserSimplePicker.vue';
|
||||
import EmisUserSimplePicker1 from '@/views/emis/EmisBaseTools/EmisUserSimplePicker.vue';
|
||||
|
||||
import EmisSiteSimplePicker1 from '@/views/emis/EmisBaseTools/EmisSiteSimplePicker.vue';
|
||||
import EmisSiteSimplePicker2 from '@/views/emis/EmisBaseTools/EmisSiteSimplePicker.vue';
|
||||
|
||||
import ProblemTypePicker from '@/views/emis/EmisBaseTools/ProblemTypePicker.vue';
|
||||
|
||||
import TanexPrinterPanel from '@/views/emis/EmisBaseTools/TanexPrinterPanel.vue';
|
||||
import TanexPrinterBatchPanel from "@/views/emis/EmisBaseTools/TanexPrinterBatchPanel.vue";
|
||||
import { formatSearchStr,deepClone } from '@/utils/index'
|
||||
import {timeDiffTime,timeFormat} from '@/utils/dateUtils'
|
||||
|
||||
export default {
|
||||
name: "WaybillIsPrinted",
|
||||
components: {
|
||||
TanexPrinterPanel,
|
||||
TanexPrinterBatchPanel,
|
||||
elDateAdvPicker,
|
||||
emisWaybillForm,
|
||||
CountryPicker1,
|
||||
CountryPicker2,
|
||||
ProvincePicker2,
|
||||
TransLinePicker,
|
||||
TransProductPicker,
|
||||
EmisUserSimplePicker0,
|
||||
EmisUserSimplePicker1,
|
||||
EmisSiteSimplePicker1,
|
||||
EmisSiteSimplePicker2,
|
||||
ProblemTypePicker,
|
||||
EmisMonthpayAccountPicker
|
||||
},
|
||||
dicts: ['emis_qujian_fangshi','emis_declare_mode','emis_customs_clear',
|
||||
'emis_tab_packing_type','emis_tab_dispatch_mode','emis_payment_type',
|
||||
'emis_calc_fee_type','emis_print_type','emis_payment_status','emis_waybill_status'
|
||||
],
|
||||
data() {
|
||||
return {
|
||||
tableHeight: 200,
|
||||
// 遮罩层
|
||||
loading: false,
|
||||
// 选中数组
|
||||
ids: [],
|
||||
// 非单个禁用
|
||||
single: true,
|
||||
// 非多个禁用
|
||||
multiple: true,
|
||||
// 显示搜索条件
|
||||
showSearch: true,
|
||||
// 创建时间搜索
|
||||
dateTimeRange:[],
|
||||
// 总条数
|
||||
total: 0,
|
||||
// 运单列表表格数据
|
||||
emisWaybillList: [],
|
||||
|
||||
currentId:null,
|
||||
openForm: false,
|
||||
titleForm: "",
|
||||
queryOrderType:null,
|
||||
currentSelection:[],
|
||||
|
||||
// 弹出展示层
|
||||
id:null,
|
||||
titleView:"",
|
||||
openView: false,
|
||||
// 更新网点时间范围
|
||||
daterangeOrderDate: [],
|
||||
// 更新网点时间范围
|
||||
daterangeEstimateDate: [],
|
||||
// 更新网点时间范围
|
||||
daterangePickStartDate: [],
|
||||
// 更新网点时间范围
|
||||
daterangePickFinishDate: [],
|
||||
// 更新网点时间范围
|
||||
daterangeDispFdDate: [],
|
||||
// 更新网点时间范围
|
||||
daterangeRegisterDate: [],
|
||||
// 更新网点时间范围
|
||||
daterangeSendDate: [],
|
||||
// 更新网点时间范围
|
||||
daterangeProduceBillDate: [],
|
||||
// 更新网点时间范围
|
||||
daterangeCreateTime: [],
|
||||
// 更新网点时间范围
|
||||
daterangeUpdateTime: [],
|
||||
// 查询参数
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 100,
|
||||
orderSn: null,
|
||||
billCode: null,
|
||||
billCodeSub: null,
|
||||
orderStatus: null,
|
||||
waybillStatus: null,
|
||||
orderType: null,
|
||||
orderDate: null,
|
||||
customerCode: null,
|
||||
customerName: null,
|
||||
receiveCustomerCode: null,
|
||||
receiveCustomerName: null,
|
||||
thirdCustomerCode: null,
|
||||
thirdCustomerName: null,
|
||||
receiveName: null,
|
||||
receiveCompany: null,
|
||||
receiveMobile: null,
|
||||
receiveTel: null,
|
||||
receiveCountry: null,
|
||||
receiveProvince: null,
|
||||
receiveCity: null,
|
||||
receiveCounty: null,
|
||||
receiveTown: null,
|
||||
receiveAddress: null,
|
||||
receivePostcode: null,
|
||||
receivePcd: null,
|
||||
sendName: null,
|
||||
sendCompany: null,
|
||||
sendMobile: null,
|
||||
sendTel: null,
|
||||
sendCountry: null,
|
||||
sendProvince: null,
|
||||
sendCity: null,
|
||||
sendCounty: null,
|
||||
sendTown: null,
|
||||
sendAddress: null,
|
||||
sendPostcode: null,
|
||||
sendPcd: null,
|
||||
paymentType: null,
|
||||
calcFeeType: null,
|
||||
custNo: null,
|
||||
transLineType: null,
|
||||
productType: null,
|
||||
timeType: null,
|
||||
meterType: null,
|
||||
customsClear: null,
|
||||
customsEclaration: null,
|
||||
estimateDate: null,
|
||||
packType: null,
|
||||
dispatchMethod: null,
|
||||
pickupMethod: null,
|
||||
pickStartDate: null,
|
||||
pickFinishDate: null,
|
||||
pickFailReason: null,
|
||||
intoWarehouseCode: null,
|
||||
intoWarehouseName: null,
|
||||
intoWarehouseAddress: null,
|
||||
intoWarehouseContact: null,
|
||||
intoWarehousePhone: null,
|
||||
intoWarehouseBillCode: null,
|
||||
warehouseInNo: null,
|
||||
customerDeliveryBeginTime: null,
|
||||
customerDeliveryEndTime: null,
|
||||
goodsType: null,
|
||||
goodsInfo: null,
|
||||
goodsPics: null,
|
||||
blPrepareInFreight: null,
|
||||
prepareInEstFee: null,
|
||||
prepareInRealFee: null,
|
||||
prepareInExpress: null,
|
||||
prepareInBillCode: null,
|
||||
prepareInRemark: null,
|
||||
prepareInSupplier: null,
|
||||
totalWeight: null,
|
||||
totalVolume: null,
|
||||
parcelQty: null,
|
||||
billWeight: null,
|
||||
volumeWeight: null,
|
||||
currency: null,
|
||||
settlementWeight: null,
|
||||
feeWeight: null,
|
||||
freight: null,
|
||||
blOverLong: null,
|
||||
blBill: null,
|
||||
blOverWeight: null,
|
||||
overWeightNumber: null,
|
||||
feeRemark: null,
|
||||
thirdCode: null,
|
||||
realValue: null,
|
||||
blInsure: null,
|
||||
insureValue: null,
|
||||
insureValueCurrency: null,
|
||||
insureFeeCurrency: null,
|
||||
insureFee: null,
|
||||
insureRemark: null,
|
||||
insureSiteCode: null,
|
||||
insureDate: null,
|
||||
blPrint: null,
|
||||
printManCode: null,
|
||||
printSite: null,
|
||||
printDate: null,
|
||||
printCount: null,
|
||||
blDispFd: null,
|
||||
transferCode: null,
|
||||
transferBillcode: null,
|
||||
dispFdDate: null,
|
||||
dispFdReason: null,
|
||||
currentSiteCode: null,
|
||||
lastSiteCode: null,
|
||||
registerSiteCode: null,
|
||||
registerDate: null,
|
||||
registerManCode: null,
|
||||
takePieceEmployeeCode: null,
|
||||
sendSiteCode: null,
|
||||
sendDate: null,
|
||||
dispatchManCode: null,
|
||||
dispatchDate: null,
|
||||
dispatchSiteCode: null,
|
||||
produceBillDate: null,
|
||||
produceBillSiteCode: null,
|
||||
produceBillManCode: null,
|
||||
destinationCode: null,
|
||||
destinationProvince: null,
|
||||
destinationCity: null,
|
||||
destinationCounty: null,
|
||||
dispatchUnderlingSiteCode: null,
|
||||
destinationCenterCode: null,
|
||||
marketManCode: null,
|
||||
payee: null,
|
||||
salesmen: null,
|
||||
operateEmployeeCode: null,
|
||||
blIsQuestion: null,
|
||||
problemType: null,
|
||||
problemCause: null,
|
||||
problemDelayDays: null,
|
||||
blMessage: null,
|
||||
blAcceptMessage: null,
|
||||
blGenSubbill: null,
|
||||
signMan: null,
|
||||
signManCode: null,
|
||||
signSiteCode: null,
|
||||
signDate: null,
|
||||
billPicSendRmk: null,
|
||||
billPicDispatchRmk: null,
|
||||
timezoneOffset: null,
|
||||
delFlag: null,
|
||||
remark: null,
|
||||
params:{
|
||||
queryOrderType:1,
|
||||
queryOrderDateType:1,
|
||||
isQueryPrintOrder:null,
|
||||
}
|
||||
},
|
||||
};
|
||||
},
|
||||
created() {
|
||||
// this.getList();
|
||||
this.queryOrderType="1";
|
||||
const end = new Date()
|
||||
const start = new Date()
|
||||
start.setHours(0,0,0,0)
|
||||
end.setHours(23,59,59,0)
|
||||
this.dateTimeRange=[timeFormat(start), timeFormat(end)]
|
||||
if(this.$store.getters.ownerSiteCode!='88888'){
|
||||
this.queryParams.sendSiteCode=this.$store.getters.ownerSiteCode;
|
||||
}
|
||||
},
|
||||
|
||||
methods: {
|
||||
rowKey (row) {
|
||||
return row.id;
|
||||
},
|
||||
handleDownCustBillPDF() {
|
||||
if(this.currentSelection&&this.currentSelection.length>0){
|
||||
this.currentSelection.forEach(item=>{
|
||||
this.download('emis/emisWaybill/exportCustBillTpl', {
|
||||
billCode:item.billCode,
|
||||
fileType:'pdf'
|
||||
}, `${item.billCode}-custbill.pdf`)
|
||||
|
||||
});
|
||||
}
|
||||
},
|
||||
handleDownCustTaxBillPDF() {
|
||||
if(this.currentSelection&&this.currentSelection.length>0){
|
||||
this.currentSelection.forEach(item=>{
|
||||
this.download('emis/emisWaybill/exportCustTaxBillTpl', {
|
||||
billCode:item.billCode,
|
||||
fileType:'pdf'
|
||||
}, `${item.billCode}-custTaxBill.pdf`)
|
||||
});
|
||||
}
|
||||
},
|
||||
handleBatchPrint(printCnt){
|
||||
this.$confirm("确定打印?", "提示", {
|
||||
cancelButtonText: "不打印",
|
||||
confirmButtonText: "确定打印",
|
||||
type: "warning",
|
||||
distinguishCancelAndClose: true,
|
||||
closeOnClickModal: false
|
||||
}).then(() => {
|
||||
let orderList=[];
|
||||
this.currentSelection.forEach(item=>{
|
||||
orderList.push(item.billCode);
|
||||
});
|
||||
|
||||
// batchPrint(orderList,tplCode,orderDetailList)
|
||||
if(printCnt){
|
||||
console.log("====printCnt==>",printCnt)
|
||||
for(let i=0; i<printCnt; i++){
|
||||
this.$refs.tanexPrinter.batchPrint(orderList,null,this.currentSelection);
|
||||
}
|
||||
|
||||
}else{
|
||||
this.$refs.tanexPrinter.batchPrint(orderList,null,this.currentSelection);
|
||||
}
|
||||
}).catch(() => {});
|
||||
},
|
||||
handlePrintPreview(){
|
||||
let orderList=[];
|
||||
this.currentSelection.forEach(item=>{
|
||||
orderList.push(item.billCode);
|
||||
});
|
||||
// printPreview(orderList,isA4,tplCode,orderDetailList)
|
||||
this.$refs.tanexPrinter.printPreview(orderList,false,null,this.currentSelection);
|
||||
},
|
||||
handleDownPDF(){
|
||||
let orderList=[];
|
||||
this.currentSelection.forEach(item=>{
|
||||
orderList.push(item.billCode);
|
||||
});
|
||||
this.$refs.tanexPrinter.downPDF(orderList,false,null,this.currentSelection);
|
||||
},
|
||||
initQueryParams(){
|
||||
this.queryParams=this.addDateRange(this.queryParams, this.dateTimeRange,"sendDate");
|
||||
let qParam=null;
|
||||
if(this.queryParams.billCode){
|
||||
qParam={
|
||||
pageNum:this.queryParams.pageNum,
|
||||
pageSize:this.queryParams.pageSize,
|
||||
billCode:this.queryParams.billCode,
|
||||
}
|
||||
}else{
|
||||
qParam={...this.queryParams}
|
||||
qParam.params.isQueryPrintOrder=1;
|
||||
}
|
||||
|
||||
return qParam;
|
||||
},
|
||||
/** 查询运单列表列表 */
|
||||
getList() {
|
||||
this.loading = true;
|
||||
let qParam=this.initQueryParams();
|
||||
queryPrintListSimple(qParam).then(response => {
|
||||
this.emisWaybillList = response.rows;
|
||||
this.total = response.total;
|
||||
this.loading = false;
|
||||
});
|
||||
},
|
||||
|
||||
onDateSelect(value){
|
||||
// console.log("date picker---->", value)
|
||||
this.dateTimeRange=value;
|
||||
// scanDate
|
||||
},
|
||||
/** 搜索按钮操作 */
|
||||
handleQuery() {
|
||||
|
||||
// 清除已选择
|
||||
if(this.ids&&this.ids.length>0){
|
||||
this.$refs.refQueryTable.clearSelection();
|
||||
}
|
||||
|
||||
this.queryParams.pageNum = 1;
|
||||
this.getList();
|
||||
},
|
||||
/** 重置按钮操作 */
|
||||
resetQuery() {
|
||||
this.resetForm("queryForm");
|
||||
this.handleQuery();
|
||||
},
|
||||
// 多选框选中数据
|
||||
handleSelectionChange(selection) {
|
||||
this.currentSelection=selection;
|
||||
this.ids = selection.map(item => item.id)
|
||||
this.single = selection.length!==1
|
||||
this.multiple = !selection.length
|
||||
},
|
||||
// 排序 查询字段是表格中字段名字 动态取值排序顺序
|
||||
handleSortChange(column) {
|
||||
this.queryParams.orderByColumn = column.prop;
|
||||
this.queryParams.isAsc = column.order;
|
||||
this.getList();
|
||||
},
|
||||
/** 新增按钮操作 */
|
||||
handleAdd(row) {
|
||||
this.currentId=null;
|
||||
this.openForm= true;
|
||||
this.titleForm = "新增";
|
||||
},
|
||||
handleShowMoreInput(){
|
||||
this.moreInputVisible = !this.moreInputVisible;
|
||||
},
|
||||
/** 修改按钮操作 */
|
||||
handleUpdate(row) {
|
||||
this.currentId= row.id;
|
||||
this.openForm = true;
|
||||
this.titleForm = "修改";
|
||||
},
|
||||
handleView(row) {
|
||||
this.id=row.id;
|
||||
this.titleView="查看";
|
||||
this.openView=true;
|
||||
// this.router.push({ path: '/emis/emisWaybill/viewDetail', query: { id: row.id }})
|
||||
},
|
||||
handleFormChanged(){
|
||||
this.openForm = false;
|
||||
this.getList();
|
||||
},
|
||||
cancelForm(){
|
||||
this.openForm = false;
|
||||
},
|
||||
/** 删除按钮操作 */
|
||||
handleDelete(row) {
|
||||
const ids = row.id || this.ids;
|
||||
this.$modal.confirm('是否确认删除').then(function() {
|
||||
return delEmisWaybill(ids);
|
||||
}).then(() => {
|
||||
this.getList();
|
||||
this.$modal.msgSuccess("删除成功");
|
||||
}).catch(() => {});
|
||||
},
|
||||
|
||||
/** 列索引函数 */
|
||||
getIndex($index) {
|
||||
return (this.queryParams.pageNum - 1) * this.queryParams.pageSize + $index + 1
|
||||
},
|
||||
/** 时间搜索响应函数 */
|
||||
dateTimeChange(value){
|
||||
this.dateTimeRange=value;
|
||||
},
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
.query-label {
|
||||
.el-radio{
|
||||
display: block;
|
||||
line-height: 23px;
|
||||
white-space: normal;
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.printPreDialog .el-dialog__body {
|
||||
margin: 0px!important;
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
Loading…
Reference in New Issue
Block a user