This commit is contained in:
liuyp 2024-06-01 19:50:57 +08:00
commit 851ce3cd72
11 changed files with 268 additions and 377 deletions

View File

@ -8,6 +8,7 @@ VUE_APP_VERSION = '20240516'
# 开发环境
#VUE_APP_BASE_API = '/dev-api'
VUE_APP_PDOMAIN = 'tanex56'
VUE_APP_DATA_FROM = 'pc'
# VUE_APP_BASE_API = 'http://api.emis.tanex56.com/api/bizsvr'
VUE_APP_BASE_API = 'http://47.102.220.189:58089/api/bizsvr'
# VUE_APP_BASE_API = 'http://47.96.189.20:58089/api/bizsvr'

View File

@ -8,6 +8,7 @@ VUE_APP_VERSION = '20240520'
# 管理系统/生产环境
VUE_APP_PDOMAIN = 'tanex56'
VUE_APP_DATA_FROM = 'pc'
VUE_APP_BASE_API = 'https://api.emis.tanex56.com/api/bizsvr'
VUE_APP_PRINTER_HOST = '127.0.0.1:17080'

View File

@ -11,6 +11,7 @@ VUE_APP_VERSION = '20240516'
# 测试环境
VUE_APP_BASE_API = '/stage-api'
VUE_APP_PDOMAIN = 'tanex56'
VUE_APP_DATA_FROM = 'pc'
VUE_APP_BASE_API = 'http://api.emis.tanex56.com/api/bizsvr'
VUE_APP_PRINTER_HOST = '127.0.0.1:17080'

View File

@ -227,10 +227,18 @@ export default {
},
// 下载
downPDF() {
var tempLink = document.createElement('a')
// 下载所有预览的PDF文件
if(this.cacheFileList&&this.cacheFileList.length>0){
this.cacheFileList.forEach(item=>{
this.downPdfFile(item.billCode,item.pdfUrl);
});
}
},
downPdfFile(fileName,pdfUrl){
var tempLink = document.createElement('a')
tempLink.style.display = 'none'
tempLink.href = this.loadPdfUrl
tempLink.setAttribute('download', (new Date()).getTime()+'.pdf')
tempLink.href = pdfUrl
tempLink.setAttribute('download', fileName+'.pdf')
if (typeof tempLink.download === 'undefined') {
tempLink.setAttribute('target', '_blank')
}

View File

@ -50,6 +50,53 @@ export default class PdfUtils {
// }
}
/**
* 通过模版生成A4纸面单
* @param {*} templatePath
* @param {*} outputPath
* @param {*} data
*/
// const { PDFDocument, StandardFonts } = require('pdf-lib');
// const fs = require('fs');
// const fontkit = require('@pdf-lib/fontkit')
// let pdfDoc
// let font
// 使用示例
// const templatePath = 'template.pdf';
// const outputPath = 'output.pdf';
// const data = {
// 'key': 'value支持中文参数',
// };
// fillPdfForm(templatePath, outputPath, data)
// .then(() => {
// console.log('PDF生成成功');
// })
// .catch((error) => {
// console.log('PDF生成失败:', error);
// });
async fillPdfForm(templatePath, outputPath, data) {
const templateBytes = await fs.promises.readFile(templatePath);
const fontBytes = await fs.promises.readFile('xxx.ttf');
pdfDoc = await PDFDocument.load(templateBytes);
pdfDoc.registerFontkit(fontkit);
font = await pdfDoc.embedFont(fontBytes);
const form = pdfDoc.getForm();
for (const fieldKey in data) {
const field = form.getTextField(fieldKey);
if (field) {
field.setText(data[fieldKey]);
field.updateAppearances(font)
}
}
const modifiedPdfBytes = await pdfDoc.save();
await fs.promises.writeFile(outputPath, modifiedPdfBytes);
}
// 添加 Text 水印
async addTextWatermark({ pdfDoc, text, docTitle }) {
// console.log(StandardFonts, 'StandardFonts-->>') // 字体

View File

@ -23,6 +23,10 @@ const service = axios.create({
// request拦截器
service.interceptors.request.use(config => {
// 设置标识来源
config.headers['dataFrom'] = process.env.VUE_APP_DATA_FROM
// 是否需要设置 token
const isToken = (config.headers || {}).isToken === false
// 是否需要防止数据重复提交
@ -30,8 +34,8 @@ service.interceptors.request.use(config => {
if (getToken() && !isToken) {
// config.headers['X-O-Auth'] = 'Bearer ' + getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
config.headers['X-Token'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
}
// 获取语言
let sLang = localStorage.getItem('locale') || navigator.language || 'zh-CN';
config.headers['lang'] = sLang;

View File

@ -57,7 +57,7 @@
</div>
</div>
<el-dialog class="printPreDialog" title="预览" :visible.sync="openPdfView" width="95%" height="100%" :close-on-click-modal="false" :destroy-on-close="true" v-dialogDrag append-to-body>
<el-dialog class="printPreDialog" title="预览" :visible.sync="openPdfView" width="95%" height="100%" :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 ref="pdfViewer" v-if="openPdfView" :pdfList="pdfList" @onPrint="onPdfViewPrint" ></PdfViewer>
</div>
@ -108,7 +108,7 @@
return {
svalue: this.value,
subBillStart:1,
subBillEnd:1,
subBillEnd:null,
openPdfView:false,
// 计数器
@ -290,29 +290,6 @@
that.showCounter++;
// const pdfDataList=[...pdfList];
// for(let i=0;i<pdfDataList.length;i++){
// let url= await pdfUtils.getBlobUrl(item);
// // that.pdfUrl=url;
// let pdfInfo={
// "billCode":"1"+new Date().getTime(),
// "pdfUrl":url
// }
// console.log(pdfInfo);
// that.pdfList.push(pdfInfo);
// }
// 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 if(code == 800){
// 全部获取完成
@ -338,11 +315,21 @@
if(this.selTplCode=="TAN-GC-130"){
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 subBillEnd=50;
if(this.subBillEnd){
subBillEnd = this.subBillEnd;
}
// 循环子单范围
for(let i=this.subBillStart;i<=this.subBillEnd;i++){
for(let i=subBillStart;i<=subBillEnd;i++){
let subBillCode = billCode+""+this.lpadZero(i,4);
newOrderList.push(subBillCode);
}
}
}else{
newOrderList=[...orderList];
@ -375,28 +362,6 @@
}
that.showCounter++;
// const pdfDataList=[...pdfList];
// for(let i=0;i<pdfDataList.length;i++){
// let url= await pdfUtils.getBlobUrl(item);
// // that.pdfUrl=url;
// let pdfInfo={
// "billCode":"1"+new Date().getTime(),
// "pdfUrl":url
// }
// console.log(pdfInfo);
// that.pdfList.push(pdfInfo);
// }
// 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 if(code == 800){
// 全部获取完成
@ -423,7 +388,17 @@
for(let i=0;i<this.orderList.length;i++){
let billCode=this.orderList[i];
// 循环子单范围
for(let i=this.subBillStart;i<=this.subBillEnd;i++){
let subBillStart=1;
if(this.subBillStart&&this.subBillStart>0){
subBillStart=this.subBillStart;
}
let subBillEnd=50;
if(this.subBillEnd){
subBillEnd = this.subBillEnd;
}
for(let i=subBillStart;i<=subBillEnd;i++){
let subBillCode = billCode+""+this.lpadZero(i,4);
newOrderList.push(subBillCode);
}
@ -447,52 +422,21 @@
loadingInstance.close();
let pdfUtils=new PdfUtils({});
pdfUtils.getBlobUrl(pdfData.file, pdfData.ydSn+".pdf",true )
// const pdfDataList=[...pdfList];
// for(let i=0;i<pdfDataList.length;i++){
// let url= await pdfUtils.getBlobUrl(item);
// // that.pdfUrl=url;
// let pdfInfo={
// "billCode":"1"+new Date().getTime(),
// "pdfUrl":url
// }
// console.log(pdfInfo);
// that.pdfList.push(pdfInfo);
// }
// 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 if(code == 800){
// 全部获取完成
// console.log("===全部获取完成====>");
}
// if(success){
// const pdfDataList=[...pdfList];
// let pdfUtils=new PdfUtils({});
// // for()
// // pdfUtils.mergePdf3(pdfDataList, (new Date()).getTime()+".pdf",true )
// pdfUtils.mergePdf3(pdfDataList, fileName+".pdf",true )
// }else{
// that.$modal.msgError("下载出错:"+erroMsg);
// }
});
},
// 响应PDF预览
onPdfViewPrint(){
this.$emit("onPrint");
},
handleClose(){
this.$emit("onPrintComplete");
}
}

View File

@ -1,28 +1,19 @@
<template>
<el-select
:loading="loading"
multiple
filterable
clearable
ref="selectRef"
default-first-option
v-el-select-loadmore="loadmore"
remote
:remote-method="remoteMethod"
:loading="loading"
:no-data-text="noDataText"
v-model="svalue"
:placeholder="placeholder"
style="width:100%"
allow-create
@change="onChange">
<el-option v-for="item in filterData" :key="item.inNo" :label="item.inNo" :value="item.inNo">
</el-option>
</el-select>
<!-- <el-checkbox-group v-model="svalue">
<el-option v-for="item in filterData" :key="item.id" :label="item.goodsName" :value="item.id">
<el-checkbox style="pointer-events: none" :label="item.goodsName"></el-checkbox>
</el-option>
</el-checkbox-group> -->
</template>
<script>
@ -46,7 +37,6 @@
// 搜索后的数据
filterData:[],
filterMap:new Map(),
noDataText: '无数据',
loading: false,
queryParams:{
pageNum: 1,
@ -56,41 +46,40 @@
},
watch: {
value(newVal) {
console.log(this.value)
// if(newVal != null && newVal!='') {
// this.svalue = this.value.spilt(',');
// }
this.svalue=this.value;
if(this.value&&this.value!='') {
this.svalue = this.value.split(',');
}
},
svalue(newVal, oldVal) {
}
},
created() {
if(this.value != null && this.value!='' && this.value!=undefined) {
if(this.value&&this.value!='') {
this.svalue = this.value.split(',');
}
this.queryData();
},
methods: {
onChange(val) {
let selData = [];
let selCodeStr = "";
let selNameStr="";
this.svalue.forEach(item=>{
let itemData=this.filterMap[item];
if(itemData!=null){
selData.push(itemData)
selCodeStr=selCodeStr+itemData.inNo+",";
}
});
selCodeStr = selCodeStr.substring(0,selCodeStr.length-1);
console.log(selData);
console.log(selCodeStr);
console.log(selNameStr);
this.$emit('input', selCodeStr)
this.$emit('onChange', selData,selNameStr)
if(selCodeStr){
selCodeStr = selCodeStr.substring(0,selCodeStr.length-1);
}
this.$emit('input', selCodeStr)
this.$emit('onChange', selCodeStr)
this.$refs.selectRef.createdLabel = null
},
remoteMethod(queryVal) {
this.queryParams.pageNum=1;

View File

@ -17,7 +17,8 @@
<el-col :span="24">
<el-form-item label="产品类型" prop="productType">
<!-- :transLineCode="form.transLineType" -->
<TransProductPicker placeholder="产品类型" v-model="form.productType" :transLineCode="form.transLineType"></TransProductPicker>
<TransProductMultiplePicker placeholder="产品类型" v-model="form.productType" :transLineCode="form.transLineType"></TransProductMultiplePicker>
<!-- <TransProductPicker placeholder="产品类型" v-model="form.productType" :transLineCode="form.transLineType"></TransProductPicker> -->
</el-form-item>
</el-col>
@ -95,6 +96,8 @@ import CountryPickerStart from '@/views/emis/EmisBaseTools/CountryPicker.vue';
import CountryPickerDest from '@/views/emis/EmisBaseTools/CountryPicker.vue';
import TransProductPicker from '@/views/emis/EmisBaseTools/TransProductPicker.vue';
import XdSteps from '@/components/XdSteps'
import TransProductMultiplePicker from '@/views/emis/EmisBaseTools/TransProductMultiplePicker.vue';
export default {
name: "emisTmsTransPlanForm",
@ -109,7 +112,8 @@ export default {
CountryPickerStart,
CountryPickerDest,
TransProductPicker,
XdSteps
XdSteps,
TransProductMultiplePicker
},
dicts: ['emis_biz_shipping_method'
],

View File

@ -12,19 +12,10 @@
<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="sendDate" placeholder="" disabled />
<!-- <el-input v-model="form.sendDate" placeholder="" readonly="" disabled /> -->
</el-form-item>
</el-col>
@ -33,9 +24,6 @@
<div style="display:inline-flex">
<div>
<el-input v-model="form.billCode" placeholder="运单号" style="font-weight:600;color:black" />
<!-- <el-input v-model="form.billCode" placeholder="单号输入后按回车" @keyup.enter.native="handleScanInput" style="font-weight:600;color:black" >
<i slot="suffix" class="iconfont">&#xe656;</i>
</el-input> -->
</div>
<div style="padding-left:5px"> <el-checkbox style="font-size:400;margin-right:10px;font-size:10px" @change="checked=>handleBillCodeChange(checked)"><span style="font-size:10px">电子主单</span></el-checkbox></div>
</div>
@ -56,7 +44,6 @@
</el-input>
</el-form>
</div>
<!-- <div style="padding-left:5px"> <el-checkbox style="font-size:400;margin-right:10px;font-size:10px" @change="checked=>handleBillCodeChange(checked)"><span style="font-size:10px">电子主单</span></el-checkbox></div> -->
</div>
</el-form-item>
</el-col>
@ -70,7 +57,6 @@
<el-col :span="10" v-if="action=='modify'">
</el-col>
<!-- 运单修改 end -->
@ -84,7 +70,6 @@
<el-col :span="8">
<el-form-item label="产品类型" prop="productType">
<TransProductCasPicker v-model="form.productTypeSelArr" :countryCode="form.destinationCountry" @onChange="onProductChange" ></TransProductCasPicker>
<!-- <trans-product-picker v-model="form.productType" :transLineCode="form.transLine"></trans-product-picker> -->
</el-form-item>
</el-col>
<el-col :span="5">
@ -143,24 +128,15 @@
:key="dict.value"
:label="dict.value"
>
<!-- style="font-size:10px" -->
<span >{{dict.label}}</span>
</el-radio>
</el-radio-group>
</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 v-if="action=='add'" style="position: absolute;right: 80px;top: 60px;z-index: 9999;">
<div v-if="action=='add'" style="position: absolute;right: 80px;top: 60px;z-index: 100;">
<div v-if="totalAvailablePag.mainHasCnt>0" style="display:inline-flex;font-size: 15px;font-weight: 700;">
<div style="width:230px">
@ -181,8 +157,7 @@
<div @click="handleApplyPag" style="font-size: 15px;font-weight: 700;color:red;cursor: pointer;">主单余量:0,请立即【<span style="color:blue">申购</span>】</div>
</div>
</div>
<!-- v-if="action=='add'" -->
<div style="position: absolute;right: 80px;top: 260px;z-index: 1;">
<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>
@ -196,7 +171,7 @@
</el-checkbox-group>
</div>
<div style="margin-left:10px">
<TanexPrinterPanel ref="tanexPrinter" v-model="printerStatus" @onPrint="handleBatchPrint"></TanexPrinterPanel>
<TanexPrinterPanel ref="tanexPrinter" v-model="printerStatus" @onPrint="handleBatchPrint" @onPrintComplete="onComplete"></TanexPrinterPanel>
</div>
</div>
</el-form-item>
@ -344,11 +319,6 @@
<el-checkbox style="font-size:400;margin-right:10px;font-size:10px" v-model="form.blAcceptMessage" :true-label="'1'" :false-label="'0'"><span style="font-size:10px">派件短信</span></el-checkbox>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="邮编" prop="receivePostcode">
<el-input v-model="form.receivePostcode" placeholder="请输入邮编" />
</el-form-item>
</el-col> -->
</el-row>
</el-col>
</el-row>
@ -362,14 +332,14 @@
<el-col :span="12">
<el-row :gutter="0" style="display: flex;flex-wrap: wrap;padding: 0px 15px;">
<el-col :span="24"><div style="font-weight:600">货物信息</div></el-col>
<!-- <el-col :span="24"><div style="font-weight:600">货物信息</div></el-col> -->
<el-col :span="24">
<el-form-item label="货物大类" prop="goodsType" label-width="70px">
<GoodsMultiplePicker v-model="form.goodsType" @onChange="onGoodsChange" placeholder="选择货物信息"></GoodsMultiplePicker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="货物名称" prop="goodsType" label-width="70px">
<el-form-item label="货物名称" prop="goodsInfo" label-width="70px">
<el-input v-model="form.goodsInfo" type="textarea" placeholder="" />
</el-form-item>
</el-col>
@ -388,10 +358,7 @@
<el-col :span="24">
<el-form-item label="" prop="goodsType" label-width="0px">
<!-- <GoodsSimplePicker v-model="form.goodsType" @onChange="onGoodsChange" placeholder="选择货物信息"></GoodsSimplePicker> -->
<!-- <div style="width:50%">
<GoodsMultiplePicker v-model="form.goodsType" @onChange="onGoodsChange" placeholder="选择货物信息"></GoodsMultiplePicker>
</div> -->
<el-table
class="cargoList"
:cell-style="{
@ -451,20 +418,6 @@
<el-table-column label="操作" align="left" min-width="50">
<template slot-scope="scope">
<!-- <span style="cursor: pointer;font-size: 21px;color: #6e6e6e;" title="删除"
@click="()=>{deleteGoodsItem(scope.row);event.stopPropagation()}"
>
<i class="el-icon-delete" />
</span>
<span style="cursor: pointer;font-size: 21px;color: #6e6e6e;" title="复制"
@click="()=>{copyGoodsItem(scope.row);event.stopPropagation()}"
>
<i class="el-icon-copy-document" />
</span> -->
<span class="icon iconfont"
style="cursor: pointer;font-size: 21px;color: #6e6e6e;"
@click="()=>deleteGoodsItem(scope.row,scope.$index)">&#xe7ae;</span>
@ -490,7 +443,6 @@
</el-form-item>
</el-col>
<!-- @blur="handleCalcVolumeWeight" -->
<el-col :span="12">
<el-form-item label="体积重量" prop="volumeWeight" label-width="70px">
<el-input v-model="form.volumeWeight" placeholder="" disabled>
@ -529,10 +481,10 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="生成子单" prop="blGenSubbill" label-width="70px" v-if="this.form.billCode && this.form.parcelQty>0">
<el-radio-group v-model="form.blGenSubbill" @change="handleGenSubbill">
<el-radio :key="1" :label="1">是</el-radio>
<el-radio :key="0" :label="0">否</el-radio>
<el-form-item label="生成子单" prop="blGenSubbill" label-width="70px" >
<el-radio-group v-model="form.blGenSubbill" @change="handleGenSubbill" >
<el-radio :key="'1'" label="1">是</el-radio>
<el-radio :key="'0'" label="0">否</el-radio>
</el-radio-group>
</el-form-item>
@ -600,7 +552,6 @@
<el-col :span="24">
<el-form-item label="计费方式" prop="calcFeeType" label-width="70px">
<!-- <el-input v-model="form.calcFeeType" placeholder="请输入计费方式" /> -->
<el-radio-group v-model="form.calcFeeType" @change="calcBillFee" >
<el-radio
v-for="dict in dict.type.emis_calc_fee_type"
@ -729,11 +680,13 @@
</el-collapse>
<div style="text-align: center;margin-top: 10px;margin-bottom: 10px;">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="initData">重置</el-button>
</div>
</el-form>
<div style="text-align: center;margin-top: 10px;margin-bottom: 10px;">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="initData">重置</el-button>
</div>
<el-dialog :title="titleSelectAddress" :visible.sync="openSelectAddress" width="60%" :destroy-on-close="true" v-dialogDrag append-to-body>
<AddressSelectPicker0 :addressType="addressType" :useSiteCode="form.sendSiteCode" @onSelected="onAddressChangeSelect"></AddressSelectPicker0>
@ -766,17 +719,12 @@ import CountryPicker1 from '@/views/emis/EmisBaseTools/CountryPicker.vue';
import ProvincePicker1 from '@/views/emis/EmisBaseTools/ProvincePicker.vue';
import CityPicker1 from '@/views/emis/EmisBaseTools/CityPicker.vue';
import DistrictPicker1 from '@/views/emis/EmisBaseTools/DistrictPicker.vue';
// import TownPicker1 from '@/views/emis/EmisBaseTools/TownPicker.vue';
import CountryPicker2 from '@/views/emis/EmisBaseTools/CountryPicker.vue';
import ProvincePicker2 from '@/views/emis/EmisBaseTools/ProvincePicker.vue';
import CityPicker2 from '@/views/emis/EmisBaseTools/CityPicker.vue';
import DistrictPicker2 from '@/views/emis/EmisBaseTools/DistrictPicker.vue';
// import TownPicker2 from '@/views/emis/EmisBaseTools/TownPicker.vue';
// import CustomerPicker0 from '@/views/emis/EmisBaseTools/CustomerPicker.vue';
// import CustomerPicker1 from '@/views/emis/EmisBaseTools/CustomerPicker.vue';
// import CustomerPicker2 from '@/views/emis/EmisBaseTools/CustomerPicker.vue';
import GoodsSimplePicker from '@/views/emis/EmisBaseTools/GoodsSimplePicker.vue';
import GoodsMultiplePicker from '@/views/emis/EmisBaseTools/GoodsMultiplePicker.vue';
@ -796,15 +744,11 @@ import feeItemForm from './feeItemForm.vue';
import TanexPrinterPanel from '@/views/emis/EmisBaseTools/TanexPrinterPanel.vue';
import { doScan } from "@/api/emis/emisTmsScanRecord";
import { deepClone } from '@/utils/index'
export default {
// name: "WaybillRecord",
name: "WaybillModify",
// props:{
// billCode:{
// type:String
// }
// },
components: {
SalemanPicker,
PayeePicker,
@ -955,7 +899,7 @@ data() {
{ required: true, message: "取件方式为空", trigger: ["blur",'change'] }
],
goodsInfo: [
{ required: true, message: "货物描述不能为空", trigger: ["blur",'change'] }
{ required: true, message: "货物名称不能为空", trigger: ["blur",'change'] }
],
totalVolume: [
{ required: true, message: "总体积不能为空", trigger: "blur" }
@ -966,12 +910,12 @@ data() {
billWeight: [
{ required: true, message: "实际重量不能为空", trigger: "blur" }
],
volumeWeight: [
{ required: true, message: "体积重量不能为空", trigger: "blur" }
],
settlementWeight: [
{ required: true, message: "结算重量不能为空", trigger: "blur" }
],
// volumeWeight: [
// { required: true, message: "体积重量不能为空", trigger: "blur" }
// ],
// settlementWeight: [
// { required: true, message: "结算重量不能为空", trigger: "blur" }
// ],
freight: [
{ required: true, message: "运费不能为空", trigger: "blur" }
],
@ -1005,27 +949,27 @@ data() {
computed: {
},
watch: {
"form.parcelQty":{
handler (newValue, oldValue) {
this.handleGenSubbill();
},
immediate: false,
deep: true
},
"form.billCode":{
handler (newValue, oldValue) {
this.handleGenSubbill();
},
immediate: false,
deep: true
},
"form.blGenSubbill":{
handler (newValue, oldValue) {
this.handleGenSubbill();
},
immediate: false,
deep: true
},
// "form.parcelQty":{
// handler (newValue, oldValue) {
// this.handleGenSubbill();
// },
// immediate: false,
// deep: true
// },
// "form.billCode":{
// handler (newValue, oldValue) {
// this.handleGenSubbill();
// },
// immediate: false,
// deep: true
// },
// "form.blGenSubbill":{
// handler (newValue, oldValue) {
// this.handleGenSubbill();
// },
// immediate: false,
// deep: true
// },
},
@ -1052,10 +996,7 @@ methods: {
this.totalAvailablePag.mainHasCnt=dataMap["1001"];
this.totalAvailablePag.subHasCnt=dataMap["1002"];
console.log(this.totalAvailablePag.mainHasCnt);
console.log(this.action);
if( this.totalAvailablePag.mainHasCnt <=0 && this.action=="add"){
if( (this.totalAvailablePag.mainHasCnt <=0 || this.totalAvailablePag.subHasCnt<=0 ) && this.action=="add"){
this.$confirm("电子面单数量不足,是否立即购买?", "提示", {
cancelButtonText: "返回",
confirmButtonText: "立即购买",
@ -1157,7 +1098,6 @@ methods: {
}
printDataList.push(mainBillItem);
// console.log("bbbbbbbbbbb=====>");
// 打印子单
// tplCode="探路速运-子单联(通用)";
// tplCode="TAN-GC-130";
@ -1184,10 +1124,6 @@ methods: {
printDataList.push(subBillItem);
}
// console.log(printDataList);
// console.log(billCount);
// 预览主子单
this.$refs.tanexPrinter.printPreviewAdv(printDataList,billCount)
@ -1208,6 +1144,19 @@ methods: {
}
},
onComplete(){
this.$confirm("操作已完成是否【操作下一单】", "提示", {
cancelButtonText: "返回",
confirmButtonText: "操作下一单",
type: "warning",
distinguishCancelAndClose: true,
closeOnClickModal: false
}).then(() => {
this.billCode=null;
this.form.billCode=null;
this.initData();
});
},
onDestCountryChange(item){
if(item){
this.form.reciever.country=item.code;
@ -1297,9 +1246,6 @@ methods: {
this.form.packType=this.form.packType.split(",");
}
// console.log("==================xxx==>");
// console.log(this.form.lockFlag);
if(this.form.lockFlag=="T"){
this.$confirm('已锁单,不允许修改!', '提示', {
confirmButtonText: '确认',
@ -1331,7 +1277,7 @@ methods: {
this.form.parcelQty=1;
this.form.packType=['2'];
this.form.blOverWeight='0';
this.form.blGenSubbill=1;
this.form.blGenSubbill='1';
this.form.paymentType='1';
this.form.calcFeeType='1';
this.form.blMessage='1'
@ -1517,26 +1463,29 @@ methods: {
},
realSaveOrderInfo(){
// 不影响原表单提交,clone 一份数据
let postForm=deepClone(this.form)
// 调整包装类型为多选
if(this.form.packType&&this.form.packType.length>0){
this.form.packType=this.form.packType.join(",");
postForm.packType=this.form.packType.join(",");
}
realSubmitOrder(this.form).then(response => {
realSubmitOrder(postForm).then(response => {
this.$modal.msgSuccess("下单成功");
// 弹出打印预览界面
this.handlePrintPreview();
// 新开单才需要打印
if(this.action == "add"){
// 做揽收扫描记录
handDoGotScan();
this.handDoGotScan();
// 弹出打印预览界面
this.handlePrintPreview();
}
else if(this.action == "modify"){
// 弹出是否继续的窗口
this.onComplete();
}
// this.$emit("on-changed");
});
},
handDoGotScan(){
@ -1549,12 +1498,12 @@ methods: {
}
// 揽收扫描
let scanData={
let scanData=[{
billCode:this.form.billCode,
scanWeight:null,
scanDate:new Date(),
dispatchOrSendManCode:opManCode
}
}];
let scanInfo = {scanType:"10",opType:2,scanData:scanData}
console.log(scanInfo)
doScan(scanInfo);
@ -1669,7 +1618,7 @@ methods: {
if(row!=null){
if(row.calcExp){
let expr="s+w*d";
let expr=row.calcExp;
expr=expr.replace("s",row.initialWeightFee);
expr=expr.replace("d",row.addWeightPrice);
expr=expr.replace("w",this.form.settlementWeight);
@ -1930,6 +1879,7 @@ methods: {
debounce(250, this.handleCargoQtyChange(row))
},
handleCargoQtyChange(row){
this.handleGenSubbill();
this.handleInitGenGoods();
this.handleCalcVolume(row);
},
@ -1969,6 +1919,7 @@ methods: {
realMatchWaybill(useSiteCode).then(response => {
this.form.billCode=response.data;
this.initGetTotalAvailablePag(this.form.sendSiteCode);
this.handleGenSubbill();
});
}else{
this.form.billCode=""
@ -2051,10 +2002,5 @@ methods: {
pointer-events: auto;
}
</style>

View File

@ -12,19 +12,10 @@
<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="sendDate" placeholder="" disabled />
<!-- <el-input v-model="form.sendDate" placeholder="" readonly="" disabled /> -->
</el-form-item>
</el-col>
@ -33,9 +24,6 @@
<div style="display:inline-flex">
<div>
<el-input v-model="form.billCode" placeholder="运单号" style="font-weight:600;color:black" />
<!-- <el-input v-model="form.billCode" placeholder="单号输入后按回车" @keyup.enter.native="handleScanInput" style="font-weight:600;color:black" >
<i slot="suffix" class="iconfont">&#xe656;</i>
</el-input> -->
</div>
<div style="padding-left:5px"> <el-checkbox style="font-size:400;margin-right:10px;font-size:10px" @change="checked=>handleBillCodeChange(checked)"><span style="font-size:10px">电子主单</span></el-checkbox></div>
</div>
@ -56,7 +44,6 @@
</el-input>
</el-form>
</div>
<!-- <div style="padding-left:5px"> <el-checkbox style="font-size:400;margin-right:10px;font-size:10px" @change="checked=>handleBillCodeChange(checked)"><span style="font-size:10px">电子主单</span></el-checkbox></div> -->
</div>
</el-form-item>
</el-col>
@ -70,7 +57,6 @@
<el-col :span="10" v-if="action=='modify'">
</el-col>
<!-- 运单修改 end -->
@ -84,7 +70,6 @@
<el-col :span="8">
<el-form-item label="产品类型" prop="productType">
<TransProductCasPicker v-model="form.productTypeSelArr" :countryCode="form.destinationCountry" @onChange="onProductChange" ></TransProductCasPicker>
<!-- <trans-product-picker v-model="form.productType" :transLineCode="form.transLine"></trans-product-picker> -->
</el-form-item>
</el-col>
<el-col :span="5">
@ -143,24 +128,15 @@
:key="dict.value"
:label="dict.value"
>
<!-- style="font-size:10px" -->
<span >{{dict.label}}</span>
</el-radio>
</el-radio-group>
</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 v-if="action=='add'" style="position: absolute;right: 80px;top: 60px;z-index: 9999;">
<div v-if="action=='add'" style="position: absolute;right: 80px;top: 60px;z-index: 100;">
<div v-if="totalAvailablePag.mainHasCnt>0" style="display:inline-flex;font-size: 15px;font-weight: 700;">
<div style="width:230px">
@ -181,8 +157,7 @@
<div @click="handleApplyPag" style="font-size: 15px;font-weight: 700;color:red;cursor: pointer;">主单余量:0,请立即【<span style="color:blue">申购</span>】</div>
</div>
</div>
<!-- v-if="action=='add'" -->
<div style="position: absolute;right: 80px;top: 260px;z-index: 1;">
<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>
@ -196,7 +171,7 @@
</el-checkbox-group>
</div>
<div style="margin-left:10px">
<TanexPrinterPanel ref="tanexPrinter" v-model="printerStatus" @onPrint="handleBatchPrint"></TanexPrinterPanel>
<TanexPrinterPanel ref="tanexPrinter" v-model="printerStatus" @onPrint="handleBatchPrint" @onPrintComplete="onComplete"></TanexPrinterPanel>
</div>
</div>
</el-form-item>
@ -344,11 +319,6 @@
<el-checkbox style="font-size:400;margin-right:10px;font-size:10px" v-model="form.blAcceptMessage" :true-label="'1'" :false-label="'0'"><span style="font-size:10px">派件短信</span></el-checkbox>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="邮编" prop="receivePostcode">
<el-input v-model="form.receivePostcode" placeholder="请输入邮编" />
</el-form-item>
</el-col> -->
</el-row>
</el-col>
</el-row>
@ -362,14 +332,14 @@
<el-col :span="12">
<el-row :gutter="0" style="display: flex;flex-wrap: wrap;padding: 0px 15px;">
<el-col :span="24"><div style="font-weight:600">货物信息</div></el-col>
<!-- <el-col :span="24"><div style="font-weight:600">货物信息</div></el-col> -->
<el-col :span="24">
<el-form-item label="货物大类" prop="goodsType" label-width="70px">
<GoodsMultiplePicker v-model="form.goodsType" @onChange="onGoodsChange" placeholder="选择货物信息"></GoodsMultiplePicker>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="货物名称" prop="goodsType" label-width="70px">
<el-form-item label="货物名称" prop="goodsInfo" label-width="70px">
<el-input v-model="form.goodsInfo" type="textarea" placeholder="" />
</el-form-item>
</el-col>
@ -388,10 +358,7 @@
<el-col :span="24">
<el-form-item label="" prop="goodsType" label-width="0px">
<!-- <GoodsSimplePicker v-model="form.goodsType" @onChange="onGoodsChange" placeholder="选择货物信息"></GoodsSimplePicker> -->
<!-- <div style="width:50%">
<GoodsMultiplePicker v-model="form.goodsType" @onChange="onGoodsChange" placeholder="选择货物信息"></GoodsMultiplePicker>
</div> -->
<el-table
class="cargoList"
:cell-style="{
@ -451,20 +418,6 @@
<el-table-column label="操作" align="left" min-width="50">
<template slot-scope="scope">
<!-- <span style="cursor: pointer;font-size: 21px;color: #6e6e6e;" title="删除"
@click="()=>{deleteGoodsItem(scope.row);event.stopPropagation()}"
>
<i class="el-icon-delete" />
</span>
<span style="cursor: pointer;font-size: 21px;color: #6e6e6e;" title="复制"
@click="()=>{copyGoodsItem(scope.row);event.stopPropagation()}"
>
<i class="el-icon-copy-document" />
</span> -->
<span class="icon iconfont"
style="cursor: pointer;font-size: 21px;color: #6e6e6e;"
@click="()=>deleteGoodsItem(scope.row,scope.$index)">&#xe7ae;</span>
@ -490,7 +443,6 @@
</el-form-item>
</el-col>
<!-- @blur="handleCalcVolumeWeight" -->
<el-col :span="12">
<el-form-item label="体积重量" prop="volumeWeight" label-width="70px">
<el-input v-model="form.volumeWeight" placeholder="" disabled>
@ -529,10 +481,10 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="生成子单" prop="blGenSubbill" label-width="70px" v-if="this.form.billCode && this.form.parcelQty>0">
<el-radio-group v-model="form.blGenSubbill" @change="handleGenSubbill">
<el-radio :key="1" :label="1">是</el-radio>
<el-radio :key="0" :label="0">否</el-radio>
<el-form-item label="生成子单" prop="blGenSubbill" label-width="70px" >
<el-radio-group v-model="form.blGenSubbill" @change="handleGenSubbill" >
<el-radio :key="'1'" label="1">是</el-radio>
<el-radio :key="'0'" label="0">否</el-radio>
</el-radio-group>
</el-form-item>
@ -600,7 +552,6 @@
<el-col :span="24">
<el-form-item label="计费方式" prop="calcFeeType" label-width="70px">
<!-- <el-input v-model="form.calcFeeType" placeholder="请输入计费方式" /> -->
<el-radio-group v-model="form.calcFeeType" @change="calcBillFee" >
<el-radio
v-for="dict in dict.type.emis_calc_fee_type"
@ -729,11 +680,13 @@
</el-collapse>
<div style="text-align: center;margin-top: 10px;margin-bottom: 10px;">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="initData">重置</el-button>
</div>
</el-form>
<div style="text-align: center;margin-top: 10px;margin-bottom: 10px;">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="initData">重置</el-button>
</div>
<el-dialog :title="titleSelectAddress" :visible.sync="openSelectAddress" width="60%" :destroy-on-close="true" v-dialogDrag append-to-body>
<AddressSelectPicker0 :addressType="addressType" :useSiteCode="form.sendSiteCode" @onSelected="onAddressChangeSelect"></AddressSelectPicker0>
@ -766,17 +719,12 @@ import CountryPicker1 from '@/views/emis/EmisBaseTools/CountryPicker.vue';
import ProvincePicker1 from '@/views/emis/EmisBaseTools/ProvincePicker.vue';
import CityPicker1 from '@/views/emis/EmisBaseTools/CityPicker.vue';
import DistrictPicker1 from '@/views/emis/EmisBaseTools/DistrictPicker.vue';
// import TownPicker1 from '@/views/emis/EmisBaseTools/TownPicker.vue';
import CountryPicker2 from '@/views/emis/EmisBaseTools/CountryPicker.vue';
import ProvincePicker2 from '@/views/emis/EmisBaseTools/ProvincePicker.vue';
import CityPicker2 from '@/views/emis/EmisBaseTools/CityPicker.vue';
import DistrictPicker2 from '@/views/emis/EmisBaseTools/DistrictPicker.vue';
// import TownPicker2 from '@/views/emis/EmisBaseTools/TownPicker.vue';
// import CustomerPicker0 from '@/views/emis/EmisBaseTools/CustomerPicker.vue';
// import CustomerPicker1 from '@/views/emis/EmisBaseTools/CustomerPicker.vue';
// import CustomerPicker2 from '@/views/emis/EmisBaseTools/CustomerPicker.vue';
import GoodsSimplePicker from '@/views/emis/EmisBaseTools/GoodsSimplePicker.vue';
import GoodsMultiplePicker from '@/views/emis/EmisBaseTools/GoodsMultiplePicker.vue';
@ -796,15 +744,11 @@ import feeItemForm from './feeItemForm.vue';
import TanexPrinterPanel from '@/views/emis/EmisBaseTools/TanexPrinterPanel.vue';
import { doScan } from "@/api/emis/emisTmsScanRecord";
import { deepClone } from '@/utils/index'
export default {
name: "WaybillRecord",
// name: "WaybillModify",
// props:{
// billCode:{
// type:String
// }
// },
components: {
SalemanPicker,
PayeePicker,
@ -955,7 +899,7 @@ data() {
{ required: true, message: "取件方式为空", trigger: ["blur",'change'] }
],
goodsInfo: [
{ required: true, message: "货物描述不能为空", trigger: ["blur",'change'] }
{ required: true, message: "货物名称不能为空", trigger: ["blur",'change'] }
],
totalVolume: [
{ required: true, message: "总体积不能为空", trigger: "blur" }
@ -966,12 +910,12 @@ data() {
billWeight: [
{ required: true, message: "实际重量不能为空", trigger: "blur" }
],
volumeWeight: [
{ required: true, message: "体积重量不能为空", trigger: "blur" }
],
settlementWeight: [
{ required: true, message: "结算重量不能为空", trigger: "blur" }
],
// volumeWeight: [
// { required: true, message: "体积重量不能为空", trigger: "blur" }
// ],
// settlementWeight: [
// { required: true, message: "结算重量不能为空", trigger: "blur" }
// ],
freight: [
{ required: true, message: "运费不能为空", trigger: "blur" }
],
@ -1005,27 +949,27 @@ data() {
computed: {
},
watch: {
"form.parcelQty":{
handler (newValue, oldValue) {
this.handleGenSubbill();
},
immediate: false,
deep: true
},
"form.billCode":{
handler (newValue, oldValue) {
this.handleGenSubbill();
},
immediate: false,
deep: true
},
"form.blGenSubbill":{
handler (newValue, oldValue) {
this.handleGenSubbill();
},
immediate: false,
deep: true
},
// "form.parcelQty":{
// handler (newValue, oldValue) {
// this.handleGenSubbill();
// },
// immediate: false,
// deep: true
// },
// "form.billCode":{
// handler (newValue, oldValue) {
// this.handleGenSubbill();
// },
// immediate: false,
// deep: true
// },
// "form.blGenSubbill":{
// handler (newValue, oldValue) {
// this.handleGenSubbill();
// },
// immediate: false,
// deep: true
// },
},
@ -1052,10 +996,7 @@ methods: {
this.totalAvailablePag.mainHasCnt=dataMap["1001"];
this.totalAvailablePag.subHasCnt=dataMap["1002"];
console.log(this.totalAvailablePag.mainHasCnt);
console.log(this.action);
if( this.totalAvailablePag.mainHasCnt <=0 && this.action=="add"){
if( (this.totalAvailablePag.mainHasCnt <=0 || this.totalAvailablePag.subHasCnt<=0 ) && this.action=="add"){
this.$confirm("电子面单数量不足,是否立即购买?", "提示", {
cancelButtonText: "返回",
confirmButtonText: "立即购买",
@ -1157,7 +1098,6 @@ methods: {
}
printDataList.push(mainBillItem);
// console.log("bbbbbbbbbbb=====>");
// 打印子单
// tplCode="探路速运-子单联(通用)";
// tplCode="TAN-GC-130";
@ -1184,10 +1124,6 @@ methods: {
printDataList.push(subBillItem);
}
// console.log(printDataList);
// console.log(billCount);
// 预览主子单
this.$refs.tanexPrinter.printPreviewAdv(printDataList,billCount)
@ -1208,6 +1144,19 @@ methods: {
}
},
onComplete(){
this.$confirm("操作已完成是否【操作下一单】", "提示", {
cancelButtonText: "返回",
confirmButtonText: "操作下一单",
type: "warning",
distinguishCancelAndClose: true,
closeOnClickModal: false
}).then(() => {
this.billCode=null;
this.form.billCode=null;
this.initData();
});
},
onDestCountryChange(item){
if(item){
this.form.reciever.country=item.code;
@ -1297,9 +1246,6 @@ methods: {
this.form.packType=this.form.packType.split(",");
}
// console.log("==================xxx==>");
// console.log(this.form.lockFlag);
if(this.form.lockFlag=="T"){
this.$confirm('已锁单,不允许修改!', '提示', {
confirmButtonText: '确认',
@ -1331,7 +1277,7 @@ methods: {
this.form.parcelQty=1;
this.form.packType=['2'];
this.form.blOverWeight='0';
this.form.blGenSubbill=1;
this.form.blGenSubbill='1';
this.form.paymentType='1';
this.form.calcFeeType='1';
this.form.blMessage='1'
@ -1517,26 +1463,29 @@ methods: {
},
realSaveOrderInfo(){
// 不影响原表单提交,clone 一份数据
let postForm=deepClone(this.form)
// 调整包装类型为多选
if(this.form.packType&&this.form.packType.length>0){
this.form.packType=this.form.packType.join(",");
postForm.packType=this.form.packType.join(",");
}
realSubmitOrder(this.form).then(response => {
realSubmitOrder(postForm).then(response => {
this.$modal.msgSuccess("下单成功");
// 弹出打印预览界面
this.handlePrintPreview();
// 新开单才需要打印
if(this.action == "add"){
// 做揽收扫描记录
handDoGotScan();
this.handDoGotScan();
// 弹出打印预览界面
this.handlePrintPreview();
}
else if(this.action == "modify"){
// 弹出是否继续的窗口
this.onComplete();
}
// this.$emit("on-changed");
});
},
handDoGotScan(){
@ -1549,12 +1498,12 @@ methods: {
}
// 揽收扫描
let scanData={
let scanData=[{
billCode:this.form.billCode,
scanWeight:null,
scanDate:new Date(),
dispatchOrSendManCode:opManCode
}
}];
let scanInfo = {scanType:"10",opType:2,scanData:scanData}
console.log(scanInfo)
doScan(scanInfo);
@ -1669,7 +1618,7 @@ methods: {
if(row!=null){
if(row.calcExp){
let expr="s+w*d";
let expr=row.calcExp;
expr=expr.replace("s",row.initialWeightFee);
expr=expr.replace("d",row.addWeightPrice);
expr=expr.replace("w",this.form.settlementWeight);
@ -1930,6 +1879,7 @@ methods: {
debounce(250, this.handleCargoQtyChange(row))
},
handleCargoQtyChange(row){
this.handleGenSubbill();
this.handleInitGenGoods();
this.handleCalcVolume(row);
},
@ -1969,6 +1919,7 @@ methods: {
realMatchWaybill(useSiteCode).then(response => {
this.form.billCode=response.data;
this.initGetTotalAvailablePag(this.form.sendSiteCode);
this.handleGenSubbill();
});
}else{
this.form.billCode=""
@ -2051,10 +2002,5 @@ methods: {
pointer-events: auto;
}
</style>