This commit is contained in:
linfso 2024-05-30 20:39:28 +08:00
parent a2b76d32d2
commit 0d1ba882ae
10 changed files with 427 additions and 274 deletions

View File

@ -2771,7 +2771,9 @@
--editor-toolbar-base-offset:105px;
--main-color:rgb(12 12 13);
--body-bg-color:rgb(212 212 215);
/* --body-bg-color:rgb(212 212 215); */
--body-bg-color: #282829;
--progressBar-color:rgb(10 132 255);
--progressBar-bg-color:rgb(221 221 222);
--progressBar-blend-color:rgb(116 177 239);
@ -2782,7 +2784,8 @@
--sidebar-narrow-bg-color:rgb(212 212 215 / 0.9);
--sidebar-toolbar-bg-color:rgb(245 246 247);
--toolbar-bg-color:rgb(249 249 250);
/* --toolbar-bg-color:rgb(249 249 250); */
--toolbar-bg-color:#fff;
--toolbar-border-color:rgb(184 184 184);
--toolbar-box-shadow:0 1px 0 var(--toolbar-border-color);
--toolbar-border-bottom:none;
@ -3130,6 +3133,7 @@ body{
.editorParamsToolbar{
position:relative;
height:32px;
/* background-color:var(--toolbar-bg-color); */
background-color:var(--toolbar-bg-color);
box-shadow:var(--toolbar-box-shadow);
border-bottom:var(--toolbar-border-bottom);

View File

@ -276,7 +276,7 @@ See https://github.com/adobe-type-tools/cmap-resources
<span data-l10n-id="pdfjs-toggle-sidebar-button-label">Toggle Sidebar</span>
</button>
<div class="toolbarButtonSpacer"></div>
<button id="viewFind" class="toolbarButton" title="Find in Document" tabindex="12" data-l10n-id="pdfjs-findbar-button" aria-expanded="false" aria-controls="findbar">
<button id="viewFind" style="display: none;" class="toolbarButton" title="Find in Document" tabindex="12" data-l10n-id="pdfjs-findbar-button" aria-expanded="false" aria-controls="findbar">
<span data-l10n-id="pdfjs-findbar-button-label">Find</span>
</button>
<div class="splitToolbarButton hiddenSmallView">
@ -293,7 +293,8 @@ See https://github.com/adobe-type-tools/cmap-resources
</span>
<span id="numPages" class="toolbarLabel"></span>
</div>
<div id="toolbarViewerRight">
<!-- style="display: none;" -->
<div id="toolbarViewerRight" style="display: none;">
<div id="editorModeButtons" class="splitToolbarButton toggled" role="radiogroup">
<button id="editorHighlight" class="toolbarButton" hidden="true" disabled="disabled" title="Highlight" role="radio" aria-checked="false" aria-controls="editorHighlightParamsToolbar" tabindex="31" data-l10n-id="pdfjs-editor-highlight-button">
<span data-l10n-id="pdfjs-editor-highlight-button-label">Highlight</span>

View File

@ -20,11 +20,11 @@ export function realMatchWaybill() {
}
// 获取总的可以使用面单数
export function getTotalAvailablePag() {
export function getTotalAvailablePag(useSiteCode,prefix) {
return request({
url: '/emis/common/getTotalAvailablePag',
method: 'post',
data: {}
data: {sendSiteCode:useSiteCode,prefix:prefix}
})
}

View File

@ -13,7 +13,6 @@
</template>
<script>
import pdf from 'vue-pdf'
export default {
name: "PdfViewer",
@ -23,22 +22,14 @@ export default {
required: false
},
},
components: {
pdf
},
computed: {
},
created () {
},
destroyed () {
},
mounted () {
},
data() {
return {
isExit: false,
value: 1,
src: this.pdfUrl,
pdfLoadUrl:null,
currentPage: 0,
pageCount: 0,
@ -48,91 +39,23 @@ export default {
},
watch: {
pdfUrl(newVal) {
console.log(this.pdfUrl)
if(this.pdfUrl){
// this.src=this.pdfUrl;
this.pdfLoadUrl='/static/pdfjs/4.2.67/web/viewer.html?file=' + encodeURIComponent(this.pdfUrl)
console.log(this.pdfLoadUrl)
}
this.showPdfViewer();
},
},
mounted () {
this.loadPdfHandler();
this.showPdfViewer();
},
methods: {
async loadPdfHandler () {
console.log(this.pdfUrl)
this.pdfLoadUrl = pdf.createLoadingTask(this.pdfUrl);
showPdfViewer(){
this.pdfLoadUrl='/static/pdfjs/4.2.67/web/viewer.html?file=' + encodeURIComponent(this.pdfUrl)+"&t="+new Date().getTime()
console.log(this.pdfLoadUrl)
this.pdfLoadUrl.promise.then(pdf => {
this.pageCount = pdf.numPages
console.log(this.pageCount)
})
},
// pdf加载时
// loadPdfHandler() {
// this.value = this.currentPage = 1 // 加载的时候先加载第一页
// },
// 第一页
FirstPage() {
this.value = this.currentPage = 1
this.isExit = false
},
// 最后一页
lastPage() {
this.value = this.currentPage = this.pageCount
this.isExit = false
},
// 改变PDF页码,val 传过来区分上一页下一页的值,0 上一页,1 下一页
changePdfPage(val) {
if (val === 0 && this.currentPage > 1) {
this.currentPage--
}
if (val === 1 && this.currentPage < this.pageCount) {
this.currentPage++
}
this.value = this.currentPage
this.isExit = false
},
// 页码选择
pageSelect() {
this.currentPage = this.value
this.isExit = false
},
// 控制下拉选择框显示隐藏
setIsExit() {
this.isExit = true
},
// 放大
scaleD() {
this.scale += 5
this.$refs.pdf.$el.style.width = parseInt(this.scale) + '%'
},
// 缩小
scaleX() {
if (this.scale === 100) {
return
}
this.scale += -5
this.$refs.pdf.$el.style.width = parseInt(this.scale) + '%'
},
// 顺时针
clock() {
this.pageRotate += 90
},
// 逆时针
counterClock() {
this.pageRotate -= 90
},
// 下载
downPDF() {
var url = this.src
var tempLink = document.createElement('a')
tempLink.style.display = 'none'
tempLink.href = url
tempLink.href = this.pdfUrl
tempLink.setAttribute('download', (new Date()).getTime()+'.pdf')
// console.log(typeof tempLink.download,11111);
if (typeof tempLink.download === 'undefined') {
tempLink.setAttribute('target', '_blank')
}

View File

@ -46,6 +46,7 @@ class TanexPrinterSdk {
onGetPrinterCallback =[];
onGetPrintTplCallback =[];
onBatchGetPDFCallback = [];
onBatchGetPDFCompleteCallback = [];
// 自定义 回调函数
callbacks ={}
@ -96,10 +97,22 @@ class TanexPrinterSdk {
setOnOpen(callback){
this.onOpenCallback.push(callback);
if(this.connected){
if(callback!=null){
callback();
}
}
}
setOnClose(callback){
this.onCloseCallback.push(callback);
if(!this.connected){
if(callback!=null){
callback();
}
}
}
setOnError(callback){
@ -108,17 +121,31 @@ class TanexPrinterSdk {
setOnGetPrinter(callback){
this.onGetPrinterCallback.push(callback);
if(this.connected){
if(callback!=null){
callback();
}
}
}
setOnGetPrintTpl(callback){
this.onGetPrintTplCallback.push(callback);
if(this.connected){
if(callback!=null){
callback();
}
}
}
// 只支持一个事件响应
setOnBatchGetPDF(callback){
setOnBatchGetPDF(callback,completeCallback){
// this.onBatchGetPDFCallback.push(callback);
this.onBatchGetPDFCallback=[];
this.onBatchGetPDFCallback.push(callback);
this.onBatchGetPDFCompleteCallback=[];
this.onBatchGetPDFCompleteCallback.push(completeCallback);
}
// 获取打印机列表
@ -160,6 +187,31 @@ class TanexPrinterSdk {
}
}
batchGetPDFAdv(printDataList,billCount,callback){
if(printDataList&&printDataList.length>0){
if(callback){
this.setOnBatchGetPDF(callback);
}
// 超时计算
this.sendBatchGetPDFAdvCMD(printDataList,billCount);
this.recievePdfFileTimer = setTimeout(function(){
if(this.onBatchGetPDFCallback){
if(this.onBatchGetPDFCallback.length>0){
this.onBatchGetPDFCallback.forEach(callback=>{
if(callback!=null){
callback([],false,"打印超时");
}
})
}
}
clearTimeout(this.recievePdfFileTimer);
}, 6000)
}
}
// 批量打印
batchPrint(tplCode,printerName,orderList){
if(tplCode&&printerName&&orderList&&orderList.length>0){
@ -167,6 +219,13 @@ class TanexPrinterSdk {
}
}
// 高级打印接口,多个模版
batchPrintAdv(printDataList){
if(printDataList&&printDataList.length>0){
this.sendBatchPrintAdvCMD(printDataList);
}
}
refreshPrintTpl(){
this.sendRefreshPrintTplListCMD();
}
@ -191,6 +250,56 @@ class TanexPrinterSdk {
this.send(JSON.stringify(printCmd),null);
}
sendBatchPrintAdvCMD(printDataList){
// {"CMD":"batchPrint","status":"1","Data":["DT20210901001","DT20210901002"]}
var printCmd={};
printCmd['RequestId']=this.getRequestId();
printCmd['CMD']="batchPrint";
printCmd['Status']="1";
if(printDataList && printDataList.length>0){
printCmd['Data']=printDataList
this.send(JSON.stringify(printCmd),null);
}
/*
[
{
"tplCode":tplCode,
"printerName":printerName,
"orderList":orderList.toString()
}
]
*/
// if(orderList!=null && orderList.length>0){
// let printData=[{
// "tplCode":tplCode,
// "printerName":printerName,
// "orderList":orderList.toString()
// }]
// printCmd['Data']=printData
// // console.log(JSON.stringify(printCmd));
// this.send(JSON.stringify(printCmd),null);
// }
}
sendBatchGetPDFAdvCMD(printDataList,billCount){
// {"CMD":"batchGetPDF","status":"1","Data":["DT20210901001","DT20210901002"]}
var printCmd={};
printCmd['RequestId']=this.getRequestId();
printCmd['CMD']="batchGetPDF";
printCmd['Status']="1";
if(printDataList && printDataList.length>0){
printCmd['Data']=printDataList
this.sendPdfFileListCount = billCount;
this.send(JSON.stringify(printCmd),null);
}
}
sendBatchPrintCMD(tplCode,printerName,orderList){
// {"CMD":"batchPrint","status":"1","Data":["DT20210901001","DT20210901002"]}
var printCmd={};
@ -198,11 +307,11 @@ class TanexPrinterSdk {
printCmd['CMD']="batchPrint";
printCmd['Status']="1";
if(orderList!=null && orderList.length>0){
let printData={
let printData=[{
"tplCode":tplCode,
"printerName":printerName,
"orderList":orderList.toString()
}
}]
printCmd['Data']=printData
// console.log(JSON.stringify(printCmd));
this.send(JSON.stringify(printCmd),null);
@ -216,17 +325,17 @@ class TanexPrinterSdk {
printCmd['CMD']="batchGetPDF";
printCmd['Status']="1";
if(orderList!=null && orderList.length>0){
let printData={
let printData=[{
"tplCode":tplCode,
"printerName":printerName,
"orderList":orderList.toString()
}
}]
this.recievePdfFileList = []
this.sendPdfFileListCount = orderList.length;
printCmd['Data']=printData
console.log(JSON.stringify(printCmd));
// console.log(JSON.stringify(printCmd));
this.send(JSON.stringify(printCmd),null);
}
}
@ -516,7 +625,7 @@ class TanexPrinterSdk {
// 发送数据的方法
send(data) {
console.log("send:"+data)
// console.log("send:"+data)
if (this.getWSReadyState() === this.WS_OPEN ) {
this.sendRetryCount = 0
this.ws.send(data)

View File

@ -87,7 +87,7 @@
let queryParams = {
pageNum:1,
pageSize:50,
pageSize:100,
countryCode:this.countryCode,
regionCode:key,
regionType:1

View File

@ -9,8 +9,8 @@
<el-tag type="danger" >{{ printerStatusMessage }}</el-tag>
</div>
<div v-if="printerStatus==1" style="display: inline-flex;">
<div style="font-size: 12px; line-height: 28px;font-weight: 600;">模板:</div>
<div>
<div v-if="isShowPinters==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" 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()">
@ -25,16 +25,16 @@
/>
</el-select>
</div>
<div v-if="selTplCode=='TAN-GC-130'" class="subBillRange" style="display: inline-flex;font-size: 12px; line-height: 28px; font-weight: 600;">
<span >子单:
<div v-if="selTplCode=='TAN-GC-130' && 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 style="font-size: 12px;line-height: 28px;font-weight: 600;">打印机:</div>
<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"
@ -45,6 +45,9 @@
</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>
@ -55,7 +58,7 @@
<el-dialog class="printPreDialog" title="预览" :visible.sync="openPdfView" width="95%" :close-on-click-modal="false" v-dialogDrag append-to-body>
<div style="height: 1600px;width:100%;overflow: auto;">
<PdfViewer :pdfUrl="pdfUrl" style="width:100%" @onPrint="batchPrint" ></PdfViewer>
<PdfViewer :pdfUrl="pdfUrl" style="width:100%" @onPrint="onPdfViewPrint" ></PdfViewer>
</div>
</el-dialog>
@ -76,12 +79,27 @@
mixins: [emitter],
props: {
value: {
type: [String],
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() {
@ -120,7 +138,7 @@
this.initTanexPrinterSdk();
},
beforeDestroy(){
this.tanexPrinter.close();
// this.tanexPrinter.close();
},
methods: {
initTanexPrinterSdk(){
@ -142,17 +160,20 @@
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){
@ -170,6 +191,9 @@
this.selTplCode=this.printTplList[0].tplCode;
},
getDefaultPrinter(){
return this.tanexPrinter.getDefaultPrinter();
},
refreshPrintTpl(){
this.printTplList=[];
this.selTplCode=null;
@ -178,52 +202,81 @@
lpadZero(val,len) {
return (new Array(len + 1).join('0') + val).slice(-len);
},
batchPrint(orderList){
/*
高级批量打印
[
{
"tplCode":tplCode,
"printerName":printerName,
"orderList":orderList.toString()
}
]
*/
batchPrintAdv(printDataList){
this.tanexPrinter.batchPrintAdv(printDataList);
},
batchPrint(orderList,tplCode){
let that = this;
let newOrderList=[];
if(orderList){
this.orderList=[...orderList]
}
// 打印子单
if(this.selTplCode=="TAN-GC-130"){
for(let i=0;i<this.orderList.length;i++){
let billCode=this.orderList[i];
// 循环子单范围
for(let i=this.subBillStart;i<=this.subBillEnd;i++){
let subBillCode = billCode+""+this.lpadZero(i,4);
newOrderList.push(subBillCode);
}
if(tplCode){
this.selTplCode=tplCode
}
}else{
newOrderList=[...orderList];
}
that.tanexPrinter.batchPrint(that.selTplCode,that.selPrinterName,newOrderList)
},
printPreview(orderList){
printPreviewAdv(printDataList,billCount){
let that = this;
const loadingInstance = this.$loading({
text: '正在生成预览...'
})
this.tanexPrinter.batchGetPDFAdv(printDataList,billCount,function(pdfList,success,erroMsg){
// console.log(erroMsg);
if(success){
const pdfDataList=[...pdfList];
let pdfUtils=new PdfUtils({});
pdfUtils.mergePdf3(pdfDataList, (new Date()).getTime()+".pdf",false )
.then(url=>{
loadingInstance.close();
that.pdfUrl=url;
that.openPdfView = true;
})
.catch(error => {
// console.log(error)
that.$modal.msgError("打印出错:"+erroMsg);
});
}else{
that.$modal.msgError("打印出错:"+erroMsg);
}
});
},
printPreview(orderList,tplCode,subStart,subEnd){
let that = this;
let newOrderList=[];
if(orderList){
this.orderList=[...orderList]
}
// 打印子单
if(this.selTplCode=="TAN-GC-130"){
for(let i=0;i<this.orderList.length;i++){
let billCode=this.orderList[i];
// 循环子单范围
for(let i=this.subBillStart;i<=this.subBillEnd;i++){
let subBillCode = billCode+""+this.lpadZero(i,4);
newOrderList.push(subBillCode);
if(tplCode){
this.selTplCode=tplCode
}
if(subStart){
this.subBillStart=subStart;
}
if(subEnd){
this.subBillEnd=subEnd;
}
}else{
newOrderList=[...orderList];
}
const loadingInstance = this.$loading({
text: '正在生成预览...'
@ -278,6 +331,7 @@
if(success){
const pdfDataList=[...pdfList];
let pdfUtils=new PdfUtils({});
// for()
pdfUtils.mergePdf3(pdfDataList, (new Date()).getTime()+".pdf",true )
}else{
that.$modal.msgError("下载出错:"+erroMsg);
@ -285,6 +339,11 @@
});
},
// 响应PDF预览
onPdfViewPrint(){
this.$emit("onPrint");
}
}
};
</script>

View File

@ -1,9 +1,19 @@
<template>
<XdPageContainer class="app-container">
<SearchForm slot="pageHeader" class="queryForm" :model="queryParams" ref="queryForm" size="mini" :maxShow="9" label-width="100px" v-show="showSearch" @search="handleQuery" @reset="resetQuery">
<!-- <el-row :gutter="10">
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="6"><div class="grid-content bg-purple">123</div></el-col>
<el-col :xs="8" :sm="6" :md="8" :lg="8" :xl="6"><div class="grid-content bg-purple-light">123</div></el-col>
<el-col :xs="8" :sm="6" :md="8" :lg="8" :xl="6"><div class="grid-content bg-purple">123</div></el-col>
<el-col :xs="8" :sm="6" :md="8" :lg="8" :xl="6"><div class="grid-content bg-purple-light">123</div></el-col>
</el-row> -->
<!-- label-width="100px" -->
<el-row :gutter="0" style="display: flex;flex-wrap: wrap;">
<el-col :span="6">
<!-- :span="6" -->
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="6">
<el-row :gutter="0" style="display: flex;flex-wrap: wrap;">
<el-col :span="24">
<el-form-item label="" prop="billCode">
@ -25,7 +35,7 @@
</el-row>
</el-col>
<el-col :span="6">
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="6">
<el-form-item label="寄件网点" prop="productType">
<EmisSiteSimplePicker1 v-model="queryParams.sendSiteCode" ></EmisSiteSimplePicker1>
</el-form-item>
@ -47,9 +57,9 @@
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="6">
<el-form-item label="线路" prop="transLineType">
<TransLinePicker v-model="queryParams.transLineType" isInitiated="true" @onChange="handleQuery"></TransLinePicker>
</el-form-item>
@ -59,8 +69,6 @@
</el-col>
</el-row>
<el-row :gutter="0" style="display: flex;flex-wrap: wrap;">
@ -83,7 +91,7 @@
</el-row>
<el-row :gutter="0" style="display: flex;flex-wrap: wrap;">
<el-col :span="6">
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="6">
<el-form-item label="寄件人" prop="sendName">
<el-input
v-model="queryParams.sendName"
@ -131,7 +139,7 @@
</el-col>
<el-col :span="6">
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="6">
<el-form-item label="收件人" prop="receiveName">
<el-input
@ -176,7 +184,7 @@
</el-form-item>
</el-col>
<el-col :span="6">
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="6">
<!-- <el-form-item label="运单状态" prop="siteType">
<el-select v-model="queryParams.waybillStatus" placeholder="运单状态" clearable filterable>
@ -249,7 +257,7 @@
</el-col>
<el-col :span="6">
<el-col :xs="8" :sm="8" :md="8" :lg="8" :xl="6">
<el-form-item label="问题件方式" prop="pickupMethod">
<el-select clearable="" v-model="queryParams.params.problemQueryType" placeholder="请选择">
@ -555,6 +563,7 @@
</template>
<script>
import 'element-ui/lib/theme-chalk/display.css';
import { listEmisWaybill, getEmisWaybill, delEmisWaybill, addEmisWaybill, updateEmisWaybill } from "@/api/emis/emisWaybill";
import elDateSimplePicker from '@/components/DatePickerAdv/elDateSimplePicker';
// import emisWaybillView from '@/views/emis/emisWaybill/emisWaybillView';

View File

@ -257,7 +257,7 @@
</el-col>
<el-col :span="1.5">
<TanexPrinterPanel ref="tanexPrinter"></TanexPrinterPanel>
<TanexPrinterPanel ref="tanexPrinter" :isShowPinters="true" :isShowTpl="true" :isShowSubBillRange="true" @onPrint="handleBatchPrint"></TanexPrinterPanel>
</el-col>

View File

@ -4,22 +4,30 @@
<el-collapse v-model="activeNames">
<el-collapse-item title="" name="1">
<template slot="title">
<div style="display:inline-flex">
<div class="form-group-title"><span class="title">{{ $t('发货信息') }}</span></div>
</div>
</template>
<div>
<el-row :gutter="0" style="display: flex;flex-wrap: wrap;">
<!-- 运单录入 -->
<!-- <el-col :span="4">
<el-form-item label="寄件网点" prop="sendSiteCode">
<EmisSiteSimplePicker v-if="$store.getters.ownerSiteCode== '88888'" v-model="form.sendSiteCode" @onChange="onSendSiteSelect" ></EmisSiteSimplePicker>
<el-input v-else v-model="form.sendSiteName" placeholder="" disabled />
</el-form-item>
</el-col> -->
<el-col :span="6" v-if="action=='add'">
<el-form-item :label="$t('发货时间')" prop="sendDate">
<el-input v-model="form.sendDate" placeholder="" readonly="" disabled />
</el-form-item>
</el-col>
<el-col :span="12" v-if="action=='add'">
<el-col :span="18" v-if="action=='add'">
<el-form-item label="运单号" prop="billCode" >
<div style="display:inline-flex">
<div>
@ -33,19 +41,7 @@
</el-form-item>
</el-col>
<el-col :span="6" v-if="action=='add'">
<div v-if="totalAvailablePag.mainHasCnt>0" style="display:inline-flex;font-size: 15px;font-weight: 700;">
<div>
主单剩余:<el-tag type="info">{{ totalAvailablePag.mainHasCnt }}</el-tag>
</div>
<div>
子单剩余:<el-tag type="info">{{ totalAvailablePag.subHasCnt }}</el-tag>
</div>
</div>
<div v-else >
<div @click="handleApplyPag" style="font-size: 15px;font-weight: 700;color:red;cursor: pointer;">主单余量:0,请立即【<span style="color:blue">申购</span>】</div>
</div>
</el-col>
<!-- 运单录入 end -->
<!-- 运单修改 -->
@ -150,17 +146,42 @@
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="寄件网点" prop="sendSiteCode">
<!-- <el-input v-model="form.sendSiteCode" placeholder="" /> -->
<!-- <el-col :xs="{span: 24}" :sm="{span: 12}" :md="{span: 12}" :lg="{span: 6}" :xl="{span: 6}">
<el-form-item label="寄件客户" prop="customerCode">
<customer-picker0 v-model="form.customerCode"></customer-picker0>
</el-form-item>
</el-col> -->
</el-row>
<div v-if="action=='add'" style="position: absolute;right: 80px;top: 60px;z-index: 9999;">
<div v-if="totalAvailablePag.mainHasCnt>0" style="display:inline-flex;font-size: 15px;font-weight: 700;">
<div style="width:230px">
<el-form-item prop="sendSiteCode">
<span slot="label" style="color:gray">寄件网点:</span>
<EmisSiteSimplePicker v-if="$store.getters.ownerSiteCode== '88888'" v-model="form.sendSiteCode" @onChange="onSendSiteSelect" ></EmisSiteSimplePicker>
<el-input v-else v-model="form.sendSiteName" placeholder="" disabled />
</el-form-item>
</el-col>
</div>
<div style="margin-left: 12px;">
主单剩余:<span>{{ totalAvailablePag.mainHasCnt }}</span>
</div>
<div>
子单剩余:<span>{{ totalAvailablePag.subHasCnt }}</span>
</div>
</div>
<div v-else >
<div @click="handleApplyPag" style="font-size: 15px;font-weight: 700;color:red;cursor: pointer;">主单余量:0,请立即【<span style="color:blue">申购</span>】</div>
</div>
</div>
<el-col :span="18" v-if="action=='add'">
<el-form-item label="打印选项:" prop="printTypeCheckList" style="display:inline-flex">
<div v-if="action=='add'" style="position: absolute;right: 80px;top: 260px;z-index: 1;">
<el-form-item label="打印选项:" prop="printTypeCheckList">
<div style="display:inline-flex">
<div>
<el-checkbox-group v-model="form.printTypeCheckList">
<el-checkbox :key="1" :label="1" >
@ -171,18 +192,12 @@
</el-checkbox>
</el-checkbox-group>
</div>
<div>
<TanexPrinterPanel ref="tanexPrinter" ></TanexPrinterPanel>
<div style="margin-left:10px">
<TanexPrinterPanel ref="tanexPrinter" v-model="printerStatus" @onPrint="handleBatchPrint"></TanexPrinterPanel>
</div>
</div>
</el-form-item>
</el-col>
<!-- <el-col :xs="{span: 24}" :sm="{span: 12}" :md="{span: 12}" :lg="{span: 6}" :xl="{span: 6}">
<el-form-item label="寄件客户" prop="customerCode">
<customer-picker0 v-model="form.customerCode"></customer-picker0>
</el-form-item>
</el-col> -->
</el-row>
</div>
</div>
</el-collapse-item>
@ -839,6 +854,7 @@ data() {
isNeedCalc:false,
titleSelectAddress:'',
openSelectAddress:false,
printerStatus:0,
// 可用面单数
totalAvailablePag:{
@ -1023,8 +1039,8 @@ methods: {
this.initData();
},
// 初始化可用面单数量
initGetTotalAvailablePag(){
getTotalAvailablePag().then(response => {
initGetTotalAvailablePag(useSiteCode){
getTotalAvailablePag(useSiteCode,"T7080").then(response => {
let dataMap=response.data;
this.totalAvailablePag.mainHasCnt=dataMap["1001"];
this.totalAvailablePag.subHasCnt=dataMap["1002"];
@ -1061,29 +1077,41 @@ methods: {
distinguishCancelAndClose: true,
closeOnClickModal: false
}).then(() => {
let printDataList=[]
// 打印主单,子单
let orderList=[];
// this.currentSelection.forEach(item=>{
// orderList.push(item.billCode);
// });
// 打印主单
orderList.push(this.form.billCode);
let selPrinterName=this.tanexPrinter.getDefaultPrinter();
let selTplName="探路速运-主单联(通用)";
this.tanexPrinter.batchPrint(selTplName,selPrinterName,orderList)
let mainBillItem ={
"tplCode":"TAN-GM-130",
"printerName":this.$refs.tanexPrinter.getDefaultPrinter(),
"orderList":orderList.toString()
}
printDataList.push(mainBillItem);
// 打印子单
selTplName="探路速运-子单联(通用)";
// tplCode="探路速运-子单联(通用)";
// tplCode="TAN-GC-130";
let childOrderList=[]
orderList=this.form.billCodeSub.split(',');
orderList.forEach(item=>{
let subBillArr=this.form.billCodeSub.split(',');
for(let i=0;i<subBillArr.length&&i<50;i++){
let item=subBillArr[i];
if(item!=null && item!=''){
childOrderList.push(item);
}
});
this.tanexPrinter.batchPrint(selTplName,selPrinterName,childOrderList)
}
let subBillItem ={
"tplCode":"TAN-GC-130",
"printerName":this.$refs.tanexPrinter.getDefaultPrinter(),
"orderList":childOrderList.toString()
}
printDataList.push(subBillItem);
// 直接打印主子单
this.$refs.tanexPrinter.batchPrintAdv(printDataList)
}).catch(() => {});
@ -1108,34 +1136,45 @@ methods: {
if(this.printerStatus == 1){
if(this.form.billCode){
let pdfUrlList=[];
let selPrinterName=this.tanexPrinter.getDefaultPrinter();
let selTplName="探路速运-主单联(通用)";
let url=this.tanexPrinter.getPdfUrl(this.form.billCode,selTplName,selPrinterName);
pdfUrlList.push(url)
// 子单url
if(this.form.billCodeSub){
selTplName="探路速运-子单联(通用)";
let orderList=this.form.billCodeSub.split(',');
orderList.forEach(item=>{
let billCount=1;
let printDataList=[]
// 打印主单,子单
let orderList=[];
orderList.push(this.form.billCode);
let mainBillItem ={
"tplCode":"TAN-GM-130",
"printerName":this.$refs.tanexPrinter.getDefaultPrinter(),
"orderList":orderList.toString()
}
printDataList.push(mainBillItem);
// 打印子单
// tplCode="探路速运-子单联(通用)";
// tplCode="TAN-GC-130";
let childOrderList=[]
let subBillArr=this.form.billCodeSub.split(',');
for(let i=0;i<subBillArr.length&&i<7;i++){
let item=subBillArr[i];
if(item!=null && item!=''){
let url=this.tanexPrinter.getPdfUrl(item,selTplName,selPrinterName);
pdfUrlList.push(url)
childOrderList.push(item);
billCount=billCount+1;
}
});
}
let pdfUtils=new PdfUtils({});
const loadingInstance = this.$loading({
text: '正在生成预览...'
})
pdfUtils.mergePdf2(pdfUrlList, (new Date()).getTime()+".pdf" )
.then(url=>{
loadingInstance.close();
this.pdfUrl=url;
this.openPdfView = true;
})
.catch(error => {
});
let subBillItem ={
"tplCode":"TAN-GC-130",
"printerName":this.$refs.tanexPrinter.getDefaultPrinter(),
"orderList":childOrderList.toString()
}
printDataList.push(subBillItem);
// 预览主子单
this.$refs.tanexPrinter.printPreviewAdv(printDataList,billCount)
}
}
else{
@ -1227,8 +1266,7 @@ methods: {
initData() {
this.reset();
// 获取可用运单数
this.initGetTotalAvailablePag();
if(this.billCode && this.billCode!=undefined) {
this.loading = true;
@ -1247,6 +1285,8 @@ methods: {
});
}else{
this.form.sendDate = parseTime(new Date());
this.form.sendSiteCode=this.$store.getters.ownerSiteCode;
this.form.sendSiteName=this.$store.getters.ownerSiteName;
@ -1269,6 +1309,9 @@ methods: {
this.isNeedSave=true;
this.form.printTypeCheckList=[1,5],
// 获取可用运单数
this.initGetTotalAvailablePag(this.form.sendSiteCode);
this.handleInitGenGoods();
}
@ -1395,6 +1438,11 @@ methods: {
}
this.form.sendSiteCode=item.siteCode;
this.form.sendSiteName=item.siteName;
this.initGetTotalAvailablePag(this.form.sendSiteCode);
this.calcBillFee();
},
/** 提交按钮 */
submitForm() {
@ -1426,7 +1474,7 @@ methods: {
realSaveOrderInfo(){
// 调整包装类型为多选
if(this.form.packType){
if(this.form.packType&&this.form.packType.length>0){
this.form.packType=this.form.packType.join(",");
}