<template>
|
<div class="scan-container">
|
<el-card class="scan-card">
|
<div slot="header" class="clearfix">
|
<span>发货校验</span>
|
</div>
|
<el-form ref="form" :model="formData" label-width="120px" class="scan-form">
|
<el-form-item label="扫描类别">
|
<el-radio-group v-model="formData.scanType">
|
<el-radio label="快递单号">快递单号</el-radio>
|
<el-radio label="出库单号">出库单号</el-radio>
|
<el-radio label="波次号">波次号</el-radio>
|
</el-radio-group>
|
</el-form-item>
|
<el-form-item label="快递类别">
|
<el-select v-model="formData.expressCorpType" :disabled="formData.noCheckExpressCorp" placeholder="选择快递类别" class="input-300" @change="changeExpressCorpType">
|
<el-option v-for="(item, index) in dropDownExpresstype" :key="index" :label="item.value02" :value="item.value01"></el-option>
|
</el-select>
|
<span class="sub-item">
|
<span class="sub-label w-140">不校验快递公司:</span>
|
<el-switch v-model="formData.noCheckExpressCorp"></el-switch>
|
</span>
|
</el-form-item>
|
<el-form-item label="快递名称">
|
<el-select v-model="formData.expressCorp" :disabled="formData.noCheckExpressCorp" placeholder="选择快递名称" class="input-300">
|
<el-option v-for="(item, index) in dropDownExpressName" :label="item.expressCorpName" :value="item.expressCorp_Id" :key="index"></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item :label="formData.scanType" @keyup.native.enter.stop="checkPackingBarcode">
|
<el-input ref="expressCode" v-model="formData.expressCode" class="input-300"></el-input>
|
</el-form-item>
|
<el-form-item label="重量(kg)">
|
<el-input ref="weight" v-model="formData.weight" :disabled="formData.isReadonly" class="input-300" @keyup.native.enter.stop="onSubmit"></el-input>
|
</el-form-item>
|
<el-form-item>
|
<el-button :disabled="formData.isReadonly" type="primary" @click="onSubmit">校验订单</el-button>
|
<el-button @click="onReset">重置</el-button>
|
</el-form-item>
|
</el-form>
|
</el-card>
|
<el-card class="scan-card body-no-padding">
|
<div slot="header" class="clearfix">
|
<span>扫描结果</span>
|
</div>
|
<el-table :data="tableData" stripe style="width: 100%">
|
<el-table-column prop="orderCode" label="订单号" width="150">
|
</el-table-column>
|
<el-table-column prop="expressCode" label="面单号" width="150">
|
</el-table-column>
|
<el-table-column prop="shippingName" label="收件人" width="120">
|
</el-table-column>
|
<el-table-column prop="shippingAddress" label="详细地址" width="280">
|
</el-table-column>
|
<el-table-column prop="weight" label="重量(kg)" width="80">
|
</el-table-column>
|
</el-table>
|
</el-card>
|
|
<!--声音文件-->
|
<audio ref="sound_error" controls="controls" style="display:none;">
|
<source src="@/assets/sounds/error2.mp3" type="audio/mpeg" />
|
</audio>
|
<audio ref="sound_correct" controls="controls" style="display:none;">
|
<source src="@/assets/sounds/feixin.mp3" type="audio/mpeg" />
|
</audio>
|
<audio ref="sound_scan" controls="controls" style="display:none;">
|
<source src="@/assets/sounds/saomiao.wav" type="audio/mpeg" />
|
</audio>
|
</div>
|
</template>
|
|
<script>
|
export default {
|
name: "outbound-scan-order-send",
|
data() {
|
return {
|
formData: {
|
scanType: "快递单号",
|
orderCode: null,
|
noCheckExpressCorp: false,
|
expressCorpType: "",
|
expressCorpName: "",
|
expressCode: null, // 快递单号
|
expressCorp: null,
|
isReadonly: true
|
},
|
dropDownExpresstype: [], // 快递单号下拉框
|
dropDownExpressName: [], // 快递单号下拉框
|
tableData: [],
|
dataInfo: {}, // 快递单号返回的数据
|
// 系统配置参数
|
config: {
|
out_sendNoWeight: true
|
}
|
};
|
},
|
created() {
|
this.getExpressCorpType();
|
},
|
methods: {
|
// 初始化配置参数
|
getConfig() {
|
var url = "/api/sys/config/getConfig";
|
var params = {
|
keys: "out_sendNoWeight"
|
};
|
this.common.ajax(url, params, res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
// 将数组转为对象
|
res.data.forEach(item => {
|
if (this.common.isNumber(item.value)) {
|
var value = parseInt(item.value);
|
if (value === 1) value = true;
|
else if (value === 0) value = false;
|
|
this.config[item.code] = value;
|
} else {
|
this.config[item.code] = item.value;
|
}
|
});
|
}
|
});
|
},
|
// 获得快递类别
|
getExpressCorpType() {
|
var url = "/api/common/loadDropDown";
|
var params = {
|
openNodeApi: true,
|
where: [502]
|
};
|
var callBack = res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
if (res.data) {
|
this.dropDownExpresstype = res.data["dropdown502"];
|
}
|
}
|
};
|
this.common.ajax(url, params, callBack, true);
|
},
|
// 选中快递类别改变快递名称
|
changeExpressCorpType() {
|
this.formData.expressCorp = null;
|
var url = "/api/basicInfo/base/expressCorp/getList";
|
var params = {
|
expressCorpType: this.formData.expressCorpType
|
};
|
var callBack = res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
this.dropDownExpressName = res.data;
|
}
|
};
|
this.common.ajax(url, params, callBack, true);
|
},
|
// 快递单号回车事件
|
checkPackingBarcode() {
|
var isNoCheckExpressCorp = this.formData.noCheckExpressCorp;
|
var scanType = this.formData.scanType;
|
var expressCode = this.formData.expressCode;
|
var expressCorp_Id = this.formData.expressCorp;
|
|
const url = "/api/outbound/orderSend/checkExpressCode";
|
const params = {
|
scanType: scanType,
|
expressCode: expressCode,
|
expressCorp_Id: expressCorp_Id,
|
isNoCheckExpressCorp: isNoCheckExpressCorp
|
};
|
this.common.ajax(
|
url,
|
params,
|
res => {
|
this.common.showMsg(res);
|
if (res.result) {
|
this.dataInfo = res.data;
|
this.formData.isReadonly = false;
|
this.$nextTick(() => {
|
this.$refs.weight.focus();
|
this.$refs.weight.select();
|
});
|
} else {
|
this.$refs.expressCode.focus();
|
this.$refs.expressCode.select();
|
}
|
},
|
true
|
);
|
},
|
onSubmit() {
|
const the = this;
|
var expressCode = this.formData.expressCode;
|
var expressCorp_Id = this.formData.expressCorp;
|
var dropDownExpressName = this.dropDownExpressName;
|
var expressCorpName = "";
|
for (var index in dropDownExpressName) {
|
if (expressCorp_Id === dropDownExpressName[index].expressCorp_Id) {
|
expressCorpName = dropDownExpressName[index].expressCorpName;
|
}
|
}
|
var order_Id = this.dataInfo.order_Id;
|
var outer_Id = this.dataInfo.outer_Id;
|
var orderCode = this.dataInfo.orderCode;
|
var isBatchOuter = this.dataInfo.isBatchOuter;
|
var scanType = this.formData.scanType;
|
var weight = 0;
|
|
// 需要称重
|
if (this.config.out_sendNoWeight) {
|
weight = this.formData.weight;
|
}
|
|
var isNoCheckExpressCorp = this.formData.noCheckExpressCorp;
|
if (!outer_Id) {
|
this.$message({
|
showClose: true,
|
message: "出库单不存在",
|
type: "error"
|
});
|
return;
|
}
|
if (isNoCheckExpressCorp) {
|
// 校验快递公司,只要校验类型
|
expressCorp_Id = 0;
|
} else {
|
if (!expressCorp_Id) {
|
// 播放声音
|
this.$refs.sound_error.play(); // 播放声音
|
this.$message({
|
showClose: true,
|
message: "请选择快递公司!",
|
type: "error"
|
});
|
return;
|
}
|
}
|
if (!orderCode) {
|
// 播放声音
|
this.$refs.sound_error.play(); // 播放声音
|
alert("请先校验快递单号!");
|
this.$refs.expressCode.focus();
|
return;
|
}
|
|
const url = "/api/outbound/orderSend/orderSave";
|
const postParams = {
|
openNodeApi: true,
|
scanType: scanType,
|
isNoCheckExpressCorp: isNoCheckExpressCorp,
|
expressCorp_Id: expressCorp_Id,
|
expressCode: expressCode,
|
expressCorpName: expressCorpName,
|
outer_Id: outer_Id,
|
order_Id: order_Id,
|
orderCode: orderCode,
|
isBatchOuter: isBatchOuter,
|
weight: weight
|
};
|
const callBack = res => {
|
the.common.showMsg(res);
|
if (res.result) {
|
this.$set(this.tableData, this.tableData.length, res.data);
|
// 播放声音
|
this.$refs.sound_correct.play();
|
} else {
|
// 播放声音
|
this.$refs.sound_error.play();
|
}
|
this.$refs.expressCode.focus();
|
this.$refs.expressCode.select();
|
};
|
this.common.ajax(url, postParams, callBack, true);
|
},
|
// 重置
|
onReset() {
|
this.formData = {
|
orderCode: null,
|
noCheckExpressCorp: false,
|
expressCorpType: "",
|
expressCorpName: "",
|
expressCode: null, // 快递单号
|
expressCorp: null,
|
isReadonly: true
|
};
|
this.tableData = [];
|
}
|
}
|
};
|
</script>
|
|
<style lang="scss" scoped>
|
@import "../../../styles/scan.scss";
|
</style>
|