This commit is contained in:
linfso 2024-05-20 03:04:49 +08:00
parent 3a9e7a6c67
commit 310e4f87ee
4 changed files with 239 additions and 48 deletions

View File

@ -9,5 +9,23 @@ export function getStaffList(query) {
})
}
// 获取销售
export function getSalemanList(query) {
return request({
url: '/emis/emisStaff/getSalemanList',
method: 'get',
params: query
})
}
// 获取回款
export function getPayeeList(query) {
return request({
url: '/emis/emisStaff/getPayeeList',
method: 'get',
params: query
})
}

View File

@ -96,6 +96,7 @@
this.queryData();
},
onChange(val) {
this.confirmOk()
},
queryData(queryVal) {
this.queryParams.pageNum=1;

View File

@ -100,19 +100,28 @@
<el-col :span="6">
<el-form-item label="寄件网点" prop="sendSiteCode">
<!-- <el-input v-model="form.sendSiteCode" placeholder="" /> -->
<EmisSiteSimplePicker v-model="form.sendSiteCode" @onChange="onSendSiteSelect" ></EmisSiteSimplePicker>
<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="18">
<el-form-item label="打印选项:" prop="sendSiteName">
<el-checkbox-group v-model="printTypeCheckList">
<el-checkbox
<el-form-item label="打印选项:" prop="printTypeCheckList">
<el-checkbox-group v-model="form.printTypeCheckList">
<!-- <el-checkbox
v-for="dict in dict.type.emis_print_type"
:key="dict.value"
:label="dict.label"
>
<span style="font-size:13px" >{{dict.label}}</span>
<span >{{dict.label}}</span>
</el-checkbox> -->
<el-checkbox :key="1" :label="1" >
<span >寄件网点存根联</span>
</el-checkbox>
<el-checkbox :key="5" :label="5" >
<span >子单</span>
</el-checkbox>
</el-checkbox-group>
</el-form-item>
@ -175,6 +184,11 @@
<el-input v-model="form.sender.phone" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="寄件公司" prop="sender.company">
<el-input v-model="form.sender.company" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="国家地区" prop="sender.province" >
<div style="display:inline-flex">
@ -190,11 +204,6 @@
<el-input v-model="form.sender.address" rows="3" type="textarea" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="寄件公司" prop="sender.company">
<el-input v-model="form.sender.company" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="" prop="blMessage">
@ -237,6 +246,11 @@
<el-input v-model="form.reciever.phone" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="收件公司" prop="reciever.company">
<el-input v-model="form.reciever.company" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="国家地区" prop="reciever.province">
<div style="display:inline-flex">
@ -252,11 +266,7 @@
<el-input v-model="form.reciever.address" type="textarea" rows="3" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="收件公司" prop="reciever.company">
<el-input v-model="form.reciever.company" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="目的地" prop="destinationCode">
<DestinationPicker v-model="form.destinationCode" :countryCode="form.reciever.country" :lineCode="form.transLine" @onChange="onDestinationChange"></DestinationPicker>
@ -303,7 +313,7 @@
</el-col>
<el-col :span="12">
<el-form-item label="总件数" prop="parcelQty" label-width="70px">
<el-input v-model="form.parcelQty" style="text-align: right;" placeholder="" />
<el-input v-model="form.parcelQty" style="text-align: right;" @blur="handleGenGoods" @keyup.enter.native="handleGenGoods" placeholder="" />
</el-form-item>
</el-col>
<el-col :span="12">
@ -337,12 +347,12 @@
style="width: 100%"
max-height="300px"
>
<el-table-column prop="goodsName" label="描述" align="center" width="100">
<template slot-scope="scope">
<el-input v-model="scope.row.goodsName" @input="(val)=>handleCalcQty(val,scope.row)" size="mini" placeholder=""></el-input>
</template>
</el-table-column>
<el-table-column label="序号" align="center" width="60">
<template slot-scope="scope">
<span > {{scope.$index+1}}</span>
</template>
</el-table-column>
<el-table-column prop="length" label="长(cm)" align="center" width="60">
<template slot-scope="scope">
<el-input v-model="scope.row.length" @input="(val)=>handleCalcVolume(val,scope.row)" size="mini" placeholder=""></el-input>
@ -365,10 +375,17 @@
</el-table-column>
<el-table-column prop="cargoQty" label="件数" align="center" width="60">
<template slot-scope="scope">
<el-input v-model="scope.row.cargoQty" @input="(val)=>handleCalcQty(val,scope.row)" size="mini" placeholder=""></el-input>
<el-input v-model="scope.row.cargoQty" size="mini" placeholder=""></el-input>
</template>
</el-table-column>
<!-- @input="(val)=>handleCalcQty(val,scope.row)" -->
<!-- <el-table-column prop="goodsName" label="描述" align="center" width="100">
<template slot-scope="scope">
<el-input v-model="scope.row.goodsName" @input="(val)=>handleCalcQty(val,scope.row)" size="mini" placeholder=""></el-input>
</template>
</el-table-column> -->
<el-table-column label="操作" align="left" min-width="50">
<template slot-scope="scope">
<span class="icon iconfont"
@ -481,6 +498,12 @@
</el-form-item>
</el-col>
<el-form-item label="特殊报价" prop="ext" label-width="70px">
<el-checkbox style="font-size:400;margin-right:10px;font-size:10px" v-model="form.blSpecialQuote" :true-label="1" :false-label="0">特殊报价</el-checkbox>
<el-checkbox style="font-size:400;margin-right:10px;font-size:10px" v-model="form.blSensitive" :true-label="1" :false-label="0">敏感物</el-checkbox>
</el-form-item>
<el-col :span="24">
<el-form-item label="" prop="goodsType" label-width="0px">
<el-table
@ -516,22 +539,27 @@
<el-table-column prop="initialWeightFee" label="首重费" align="center" width="60">
<template slot-scope="scope">
<el-input v-model="scope.row.initialWeightFee" @input="(val)=>handleCalcFeeItem(val,scope.row)" size="mini" placeholder=""></el-input>
<el-input v-if="form.blSpecialQuote==1" v-model="scope.row.initialWeightFee" @input="(val)=>handleCalcFeeItem(val,scope.row)" size="mini" placeholder=""></el-input>
<div v-else> {{scope.row.initialWeightFee}} </div>
</template>
</el-table-column>
<el-table-column prop="addWeightPrice" label="续重单价" align="center" width="70">
<template slot-scope="scope">
<el-input v-model="scope.row.addWeightPrice" @input="(val)=>handleCalcFeeItem(val,scope.row)" size="mini" placeholder=""></el-input>
<el-input v-if="form.blSpecialQuote==1" v-model="scope.row.addWeightPrice" @input="(val)=>handleCalcFeeItem(val,scope.row)" size="mini" placeholder=""></el-input>
<div v-else> {{scope.row.addWeightPrice}} </div>
</template>
</el-table-column>
<el-table-column prop="realFee" label="实收" align="center" width="50">
<template slot-scope="scope">
<el-input v-model="scope.row.realFee" @input="(val)=>handleCalcFeeItem(val,scope.row)" size="mini" placeholder=""></el-input>
<el-input v-if="form.blSpecialQuote==1" v-model="scope.row.realFee" @input="(val)=>handleCalcFeeItem(val,scope.row)" size="mini" placeholder=""></el-input>
<div v-else> {{scope.row.realFee}} </div>
</template>
</el-table-column>
<el-table-column prop="remark" label="描述" align="center" min-width="50">
<el-table-column prop="remark" label="描述" align="center" min-width="50">
<template slot-scope="scope">
<el-input v-model="scope.row.remark" size="mini" placeholder=""></el-input>
<el-input v-if="form.blSpecialQuote==1" v-model="scope.row.remark" size="mini" placeholder=""></el-input>
<div v-else> {{scope.row.remark}} </div>
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="50">
@ -598,13 +626,13 @@
</el-col>
<el-col :span="12">
<el-form-item label="回款联系人" prop="payee" label-width="80px">
<EmisUserSimplePicker2 :placeholder="$t('回款联系人')" v-model="form.payee" ></EmisUserSimplePicker2>
<PayeePicker :placeholder="$t('回款联系人')" v-model="form.payee" ></PayeePicker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="销售联系人" prop="salesmen" label-width="80px">
<EmisUserSimplePicker3 :placeholder="$t('销售联系人')" v-model="form.salesmen" ></EmisUserSimplePicker3>
<SalemanPicker :placeholder="$t('销售联系人')" v-model="form.salesmen" ></SalemanPicker>
</el-form-item>
</el-col>
@ -630,6 +658,17 @@
<AddressSelectPicker0 :addressType="addressType" @onSelected="onAddressChangeSelect"></AddressSelectPicker0>
</el-dialog>
<el-dialog class="previe_dialog" title="打印预览" :visible.sync="openPdfView" width="80%" :close-on-click-modal="false" v-dialogDrag append-to-body>
<PdfViewer :pdfUrl="pdfUrl" width="100%" @onPrint="handleBatchPrint" ></PdfViewer>
</el-dialog>
<!-- 打印机状态 -->
<div style="padding:5px 0px;text-align: right;position: fixed;top: 150px;right: 10px; z-index: 9999;">
<el-tag type="danger" v-if="printerStatus==0">{{ printerStatusMessage }}</el-tag>
<el-tag type="success" v-if="printerStatus==1">{{ printerStatusMessage }}</el-tag>
</div>
</div>
</template>
@ -678,9 +717,14 @@ import AddressSelectPicker1 from '@/views/emis/EmisBaseTools/AddressSelectPicker
import EmisMonthpayAccountPicker from '@/views/emis/EmisBaseTools/EmisMonthpayAccountPicker.vue';
import WarehouseInNoPicker from '@/views/emis/EmisBaseTools/WarehouseInNoPicker.vue';
import PayeePicker from '@/views/emis/EmisBaseTools/PayeePicker.vue';
import SalemanPicker from '@/views/emis/EmisBaseTools/SalemanPicker.vue';
import TransProductCasPicker from '@/views/emis/EmisBaseTools/TransProductCasPicker.vue';
import feeItemForm from './feeItemForm.vue';
import PdfViewer from '@/components/PdfViewer/index.vue';
import PdfUtils from '@/utils/pdfUtils'
export default {
@ -691,6 +735,9 @@ export default {
// }
// },
components: {
SalemanPicker,
PayeePicker,
PdfViewer,
feeItemForm,
TransProductCasPicker,
WarehouseInNoPicker,
@ -706,24 +753,18 @@ components: {
EmisUserSimplePicker2,
EmisUserSimplePicker3,
EmisSiteSimplePicker,
// CustomerPicker0,
// CustomerPicker1,
// CustomerPicker2,
DestinationPicker,
TransLinePicker,
TransProductPicker,
// AreaPicker0,
CountryPicker0,
CountryPicker1,
ProvincePicker1,
CityPicker1,
DistrictPicker1,
// TownPicker1,
CountryPicker2,
ProvincePicker2,
CityPicker2,
DistrictPicker2,
// TownPicker2,
},
dicts: ['emis_qujian_fangshi','emis_declare_mode','emis_customs_clear',
'emis_tab_packing_type','emis_tab_dispatch_mode','emis_payment_type',
@ -738,13 +779,25 @@ data() {
loading: true,
isNeedSave:false,
triggerCount:0,
printTypeCheckList:['1','2','5'],
// 表单参数
form: {},
timer:null,
isNeedCalc:false,
titleSelectAddress:'',
openSelectAddress:false,
tanexPrinter:null,
printerDownUrl:null,
printerStatus:0,
printerStatusMessage:'打印组件未连接',
printerList:[],
printTplList:[],
selTplName:null,
selPrinterName:null,
openPdfView:false,
pdfUrl:null,
// 表单校验
rules: {
billCode: [
@ -929,9 +982,77 @@ updated(){
created() {
this.billCode=this.$route.query.billCode;
this.initData();
this.initTanexPrinterSdk();
},
methods: {
initTanexPrinterSdk(){
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.printerStatusMessage="打印组件已连接,可以打印.";
},
onPrinterClose(evt){
console.log("onPrinterClose")
this.printerStatus = 0;
this.printerStatusMessage="打印组件已断开!";
},
onPrinterError(evt){
console.log("onPrinterError")
this.printerStatus = 0;
this.printerStatusMessage="打印组件已断开!";
},
handleBatchPrint(){
// 重要,设置为true才会把右上角X和取消区分开来
this.$confirm("确定打印?", "提示", {
cancelButtonText: "不打印",
confirmButtonText: "确定打印",
type: "warning",
distinguishCancelAndClose: true,
closeOnClickModal: false
}).then(() => {
let orderList=[];
this.currentSelection.forEach(item=>{
orderList.push(item.billCode);
});
this.tanexPrinter.batchPrint(this.selTplName,this.selPrinterName,orderList)
}).catch(() => {});
},
async handlePrintPreview(){
let pdfUrlList=[];
this.currentSelection.forEach(item=>{
let url=this.tanexPrinter.getPdfUrl(item.billCode,this.selTplName,this.selPrinterName);
pdfUrlList.push(url)
});
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 => {
});
},
handleAddFee(){
this.triggerCount++;
},
@ -942,7 +1063,6 @@ methods: {
this.form.feeItems.push(newItem);
this.handleCalcFeeItem();
}
},
deleteFeeItem(row){
if(row.blAutoGen==1){
@ -980,13 +1100,13 @@ methods: {
},
handleGenSubbill(value){
if(this.form.blGenSubbill==1 && this.form.parcelQty > 0 && this.form.billCode){
// let billSubCodeStr="";
// for(let i=1;i<this.form.parcelQty;i++){
// let subBillCode = this.form.billCode+""+this.lpadZero(i,3);
// billSubCodeStr=billSubCodeStr+subBillCode+";"
// console.log(billSubCodeStr);
// }
let billSubCodeStr = this.form.billCode+"["+this.lpadZero(1,3)+"-"+this.lpadZero(this.form.parcelQty,3)+"]";
let billSubCodeStr="";
for(let i=1;i<this.form.parcelQty;i++){
let subBillCode = this.form.billCode+""+this.lpadZero(i,4);
billSubCodeStr=billSubCodeStr+subBillCode+";"
console.log(billSubCodeStr);
}
// let billSubCodeStr = this.form.billCode+"["+this.lpadZero(1,3)+"-"+this.lpadZero(this.form.parcelQty,3)+"]";
console.log(billSubCodeStr);
this.form.billCodeSub=billSubCodeStr;
}else{
@ -1020,19 +1140,22 @@ methods: {
// this.form.customsEclaration = this.dict.type.emis_declare_mode[0].value;
this.form.customsEclaration='1';
this.form.customsClear='1';
this.form.pickupMethod='2';
// this.form.pickupMethod='2';
this.form.dispatchMethod='1';
// this.form.billWeight=1.0;
// this.form.totalVolume=0.0;
this.form.parcelQty=1;
this.form.packType='2';
this.form.blOverWeight='0';
this.form.blGenSubbill=0;
this.form.blGenSubbill=1;
this.form.paymentType='1';
this.form.calcFeeType='1';
this.form.blMessage='1'
this.form.blAcceptMessage='1'
this.isNeedSave=true;
this.form.printTypeCheckList=[1,5],
this.handleGenGoods();
}
@ -1137,6 +1260,8 @@ methods: {
meterType:null,
blGenSubbill:null,
billCodeSub:null,
blSpecialQuote:null,
blSensitive:null,
};
this.resetForm("form");
},
@ -1261,6 +1386,22 @@ methods: {
this.handleGenSubbill();
},
handleCalcFeeItem(val,row){
let childRealFee=0.0;
if(row!=null){
if(row.calcExp){
let expr=row.calcExp+"";
expr=expr.replace("s",row.initialWeightFee);
expr=expr.replace("d",row.addWeightPrice);
expr=expr.replace("w",this.form.settlementWeight);
console.log(expr);
let childRealFee=parseFloat(eval(expr)).toFixed(2);
row.realFee=childRealFee;
console.log(childRealFee);
}
}
let totalFee=0;
this.form.feeItems.forEach(item=>{
totalFee=totalFee+parseInt(item.realFee);
@ -1368,6 +1509,38 @@ methods: {
this.form.goodsInfo = selNameStr;
},
handleGenGoods(){
if(this.form.parcelQty>0){
// 新件数大于
if(this.form.parcelQty>=this.form.cargoList.length){
console.log()
let len=this.form.parcelQty-this.form.cargoList.length;
for(let i=0;i<len;i++){
let cargo={
"goodsCode": "",
"goodsName": "",
"cargoQty": 1,
"length": 0,
"width": 0,
"height": 0,
"volume": 0,
}
this.form.cargoList.push(cargo);
}
}
else{
let newList=[];
for(let i=0;i<this.form.parcelQty;i++){
newList.push(this.form.cargoList[i])
}
this.form.cargoList=newList;
}
}else{
this.form.cargoList=[];
}
},
onGoodsChange_old(goodsName){
if(goodsName&& goodsName!='') {
// 旧map

View File

@ -683,7 +683,6 @@ export default {
methods: {
initTanexPrinterSdk(){
this.tanexPrinter = this.$tanexPrinter;
console.log( this.tanexPrinter);
this.getConfigKey("sys.printer.downurl").then(response => {
this.printerDownUrl = response.msg;