Commit d9647085 authored by dragondean@qq.com's avatar dragondean@qq.com

Merge branch 'release' into dev

# Conflicts:
#	collectI18nMessages.js
#	src/i18n/languages/en_US.json
#	src/views/ecw/deptTarget/allAchievement.vue
#	src/views/ecw/deptTarget/myAchievement.vue
#	src/views/ecw/deptTarget/myDeptAchievement.vue
#	src/views/ecw/order/prepayDeal.vue
#	src/views/ecw/order/stocking/components/ChooseOrderProducts.vue
parents 4741fdde 3c5133c1
...@@ -4426,7 +4426,7 @@ ...@@ -4426,7 +4426,7 @@
"还有{days}天到期": "Due in {days} days", "还有{days}天到期": "Due in {days} days",
"请选择客户经理。": "Please select an account manager.", "请选择客户经理。": "Please select an account manager.",
"回收客户": "Recycling customers", "回收客户": "Recycling customers",
"是否要回收当前{name}": "Do you want to recycle the current {name}", "是否要回收当前{name}": "",
"回收成功。": "Recycling successful.", "回收成功。": "Recycling successful.",
"已完成目标值": "Target value completed", "已完成目标值": "Target value completed",
"请输入目标单位": "Please enter the target unit", "请输入目标单位": "Please enter the target unit",
...@@ -4506,53 +4506,5 @@ ...@@ -4506,53 +4506,5 @@
"企业": "enterprise", "企业": "enterprise",
"身份证认证状态": "Identity card authentication status", "身份证认证状态": "Identity card authentication status",
"角标字段": "Subscript field", "角标字段": "Subscript field",
"不清楚请留空,已设勿改": "Unclear, please leave blank. It has been set to remain unchanged", "不清楚请留空,已设勿改": "Unclear, please leave blank. It has been set to remain unchanged"
"出仓纠错": "Out of warehouse correction",
"批量出仓纠错": "Batch outbound error correction",
"未出仓": "Not yet out of warehouse",
"出仓纠错(二维码/条形码编号)": "Out of warehouse correction (QR code/barcode number)",
"开始出仓": "Start warehouse release",
"装箱纠错": "Packing error correction",
"批量装箱纠错": "Batch packing error correction",
"计划/已装": "Planned/Installed",
"计划/已理": "Planned/Planned",
"已理": "Reasonable",
"未理": "Unreasoned",
"理货纠错(二维码/条形码编号)": "Correction of tally errors (QR code/barcode number)",
"仍有订单未理货,请完成所有订单箱号标签扫码后完成理货": "There are still orders that have not been tally. Please scan all order box number labels and complete the tally",
"所属目的国家": "Destination country",
" ": "",
"区间设置不完整,将被忽略": "Incomplete interval settings will be ignored",
"{n}个全包阶梯价": "{n} All inclusive tiered pricing",
"{n}个运费阶梯价": "{n} Shipping cost tiered pricing",
"{n}个清关费阶梯价": "{n} Staircase price for individual customs clearance fees",
"已选择{route}条路线,{product}个商品": "{route} selected, {product} products",
";确认提交修改?": "; Confirm submitting modifications?",
"空运{type}设置": "Air freight {type} settings",
"未选择包装类型将被忽略": "No packaging type selected will be ignored",
"请输入加价金额": "Please enter the markup amount",
"运费快捷加价": "Quick freight markup",
"提交运费": "Submit shipping fee",
"清关费快捷加价": "Quick increase in customs clearance fees",
"提交清关费": "Submit customs clearance fee",
"全包价快捷加价": "Quick and all inclusive price increase",
"提交全包价": "Submit full package price",
"第{no}阶段": "Stage {no}",
"线路重量上限": "Upper limit of line weight",
"包含": "contain",
"不包含": "Excluding",
"等于": "equal to",
"运费+清关费": "Freight+customs clearance fee",
"未设置全包价阶梯价": "No fully inclusive tiered pricing has been set",
"未设置运费阶梯价": "No freight tiered pricing has been set",
"渠道包装清关费": "Channel packaging customs clearance fee",
"所属国家": "Country",
"请输入所属国家": "Please enter your country of origin",
"包装加价": "Packaging markup",
"海运运费价格设置": "Ocean freight price setting",
"海运清关费价格设置": "Price setting for sea freight customs clearance fees",
"请设置{priceName}第{index}阶段的起始值": "Please set the starting value for the {index} stage of {priceName}",
"请设置{priceName}第{index}阶段的结束值": "Please set the end value for the {index} stage of {priceName}",
"请设置第{index}阶段的{priceName}": "Please set the {priceName} for the {index} stage",
"请设置第{index}阶段的包装类型{i}的{priceName}": "Please set the {priceName} for the packaging type {i} in the {index} stage"
} }
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
<el-form-item :label="$t('英文内容')" prop="contentEn"> <el-form-item :label="$t('英文内容')" prop="contentEn">
<editor v-model="form.contentEn" :min-height="150"/> <editor v-model="form.contentEn" :min-height="150"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('WEB端广告图片(建议尺寸长*宽')+'902*310)'" prop="bannerUrlWeb"> <el-form-item :label="$t('WEB端广告图片(建议尺寸长*宽')+'1120*450)'" prop="bannerUrlWeb">
<el-col :span="8"> <el-col :span="8">
<el-input v-model="form.bannerUrlWeb" :placeholder="$t('请上传WEB端广告图片')" /> <el-input v-model="form.bannerUrlWeb" :placeholder="$t('请上传WEB端广告图片')" />
</el-col> </el-col>
...@@ -113,7 +113,7 @@ ...@@ -113,7 +113,7 @@
</el-button> </el-button>
</el-upload> </el-upload>
</el-form-item> </el-form-item>
<el-form-item :label="$t('APP端广告图片(建议尺寸长*宽')+'688*294)'" prop="bannerUrlApp"> <el-form-item :label="$t('APP端广告图片(建议尺寸长*宽')+'675*304)'" prop="bannerUrlApp">
<el-col :span="8"> <el-col :span="8">
<el-input v-model="form.bannerUrlApp" :placeholder="$t('请上传APP端广告图片')" /> <el-input v-model="form.bannerUrlApp" :placeholder="$t('请上传APP端广告图片')" />
</el-col> </el-col>
......
<template> <template>
<div class="app-container"> <div class="app-container">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="88px">
<el-form-item :label="$t('自编号')" prop="selfNo"> <el-form-item :label="$t('自编号')" prop="selfNo">
<el-input v-model="queryParams.selfNo" :placeholder="$t('请输入自编号')" clearable @keyup.enter.native="handleQuery" /> <el-input v-model="queryParams.selfNo" :placeholder="$t('请输入自编号')" clearable @keyup.enter.native="handleQuery" />
</el-form-item> </el-form-item>
...@@ -43,6 +43,18 @@ ...@@ -43,6 +43,18 @@
</el-option> </el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('目的港清关')" prop="destinationClearance">
<el-select v-model="queryParams.destinationClearance" :placeholder="$t('请选择目的港清关')" clearable size="small">
<el-option v-for="item in destinationClearanceData" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('发货方式')" prop="deliveryType">
<el-select v-model="queryParams.deliveryType" :placeholder="$t('请选择发货方式')" clearable size="small">
<el-option v-for="item in deliveryTypeData" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-row> </el-row>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{ $t('搜索') }}</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{ $t('搜索') }}</el-button>
...@@ -332,7 +344,31 @@ export default { ...@@ -332,7 +344,31 @@ export default {
'13':430, '13':430,
'14':435, '14':435,
'15':438, '15':438,
},
destinationClearanceData: [
{
label: '我司清关',
value: 1
},
{
label: '合作方清关',
value: 2
},
{
label: '客户',
value: 3
},
],
deliveryTypeData: [
{
label: '多票',
value: 1
},
{
label: '单票',
value: 2
} }
]
} }
}, },
computed: { computed: {
......
...@@ -213,7 +213,7 @@ import { ...@@ -213,7 +213,7 @@ import {
getbox, getbox,
getboxPage, getboxPage,
exportboxExcel, exportboxExcel,
getNoticeList, dealCustomsSplitNotify, exportSeaPreloadGoodsList, zipDownload, getNoticeList, dealCustomsSplitNotify, exportSeaPreloadGoodsList, zipDownload, downloadLoadGoodsList,
} from "@/api/ecw/box"; } from "@/api/ecw/box";
import { import {
downloadFile, downloadFile,
...@@ -498,12 +498,9 @@ export default { ...@@ -498,12 +498,9 @@ export default {
this.exportExcel(exportSeaPreloadGoodsList, { shipmentId: row.id }, this.$t("预装单") + `(${row.selfNo}).xlsx`) this.exportExcel(exportSeaPreloadGoodsList, { shipmentId: row.id }, this.$t("预装单") + `(${row.selfNo}).xlsx`)
break; break;
case "downloadLoadGoodsList": case "downloadLoadGoodsList":
downloadFile( downloadLoadGoodsList({ shipmentId: row.id }).then(res => {
command, this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载'))
{ shipmentId: row.id }, })
this.$t("已装单") + `(${row.selfNo}).xlsx`,
"xlsx"
);
break; break;
case "downloadReceivableList": case "downloadReceivableList":
downloadFile( downloadFile(
......
...@@ -111,7 +111,12 @@ import { ...@@ -111,7 +111,12 @@ import {
getMakeBillList, getMakeBillList,
makeBillService, makeBillService,
getBillService, getBillService,
deleteBillService, zipDownload, downloadReceivableList, makeAirBillService, downloadAirReceivableList, deleteBillService,
zipDownload,
downloadReceivableList,
makeAirBillService,
downloadAirReceivableList,
downloadLoadGoodsList,
} from "@/api/ecw/box"; } from "@/api/ecw/box";
import { import {
getTotlContent, getTotlContent,
...@@ -217,12 +222,15 @@ export default { ...@@ -217,12 +222,15 @@ export default {
}); });
break; break;
case "downloadLoadGoodsList": case "downloadLoadGoodsList":
downloadFile( downloadLoadGoodsList({ shipmentId: this.shipmentObj.id }).then(res => {
this.$message.success(this.$t('已加入导出队列,请稍后在下载日志中下载'))
})
/*downloadFile(
type, type,
{ shipmentId: this.shipmentObj.id }, { shipmentId: this.shipmentObj.id },
this.$t("已装单") + `(${this.shipmentObj.selfNo}).xlsx`, this.$t("已装单") + `(${this.shipmentObj.selfNo}).xlsx`,
"xlsx" "xlsx"
); );*/
return; return;
case "downloadReceivableList": case "downloadReceivableList":
const api = this.type == 'air' ? downloadAirReceivableList : downloadReceivableList; const api = this.type == 'air' ? downloadAirReceivableList : downloadReceivableList;
......
...@@ -665,6 +665,12 @@ export default { ...@@ -665,6 +665,12 @@ export default {
}, },
formatDate, formatDate,
downloadDetailFile(row) { downloadDetailFile(row) {
if(row.serviceName == 'downloadLoadGoods'){
if(this.shipmentObj.tyStatus < 2112){
this.$message.error('请先完成理货后,再下载已装单')
return
}
}
const { fileFormat, type } = row; const { fileFormat, type } = row;
if (type === "url") { if (type === "url") {
downloadFileByUrl(row.serviceName, { shipmentId: this.shipmentId }); downloadFileByUrl(row.serviceName, { shipmentId: this.shipmentId });
......
...@@ -60,6 +60,14 @@ ...@@ -60,6 +60,14 @@
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="airCheckoutObj.checkoutTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker> <el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="airCheckoutObj.checkoutTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item :label="$t('计划箱数')" prop="planNum">
<el-input-number v-model="airCheckoutObj.planNum" :controls="false" :precision="0" disabled />
</el-form-item>
<el-form-item :label="$t('出仓箱数')" prop="realNum">
<el-input-number v-model="airCheckoutObj.realNum" :controls="false" :precision="0" />
</el-form-item>
<el-form-item :label="$t('出仓影像')"> <el-form-item :label="$t('出仓影像')">
<ImageUpload :limit="1" :isShowTip=false v-model="airCheckoutObj.checkoutFiles" /> <ImageUpload :limit="1" :isShowTip=false v-model="airCheckoutObj.checkoutFiles" />
</el-form-item> </el-form-item>
...@@ -121,6 +129,8 @@ export default { ...@@ -121,6 +129,8 @@ export default {
let oldData = { ...this.$attrs.shipmentObj[voName] }; let oldData = { ...this.$attrs.shipmentObj[voName] };
oldData = formatDateStr(oldData, ["checkoutTime"]); oldData = formatDateStr(oldData, ["checkoutTime"]);
this.airCheckoutObj = oldData; this.airCheckoutObj = oldData;
this.$set(this.airCheckoutObj, 'planNum', this.$attrs.shipmentObj.planNum)
this.$set(this.airCheckoutObj, 'realNum', this.$attrs.shipmentObj.realNum)
let shipmentdData = { ...this.$attrs.shipmentObj["boxAirShipmentBackVO"] }; let shipmentdData = { ...this.$attrs.shipmentObj["boxAirShipmentBackVO"] };
shipmentdData = formatDateStr(shipmentdData, ["deliverTime"]); shipmentdData = formatDateStr(shipmentdData, ["deliverTime"]);
...@@ -132,6 +142,10 @@ export default { ...@@ -132,6 +142,10 @@ export default {
onSubmit(operateType) { onSubmit(operateType) {
this.$refs["airCheckoutForm"].validate((valid) => { this.$refs["airCheckoutForm"].validate((valid) => {
if (valid) { if (valid) {
if(this.airCheckoutObj.planNum != this.airCheckoutObj.realNum){
this.$message.error(this.$t("出仓件数与计划出仓件数不一致,请检查"));
return;
}
airCheckoutCreate({ airCheckoutCreate({
...this.airCheckoutObj, ...this.airCheckoutObj,
shipmentId: this.$attrs.shipmentObj.id, shipmentId: this.$attrs.shipmentObj.id,
......
...@@ -118,7 +118,7 @@ ...@@ -118,7 +118,7 @@
<pkg-page v-if="pkgPageType == 2" :pkgData="pkgData" :shipmentObj="shipmentObj" @closeDialog="closeDialog" @reload="getList" /> <pkg-page v-if="pkgPageType == 2" :pkgData="pkgData" :shipmentObj="shipmentObj" @closeDialog="closeDialog" @reload="getList" />
</el-dialog> </el-dialog>
<!-- 打印标签 --> <!-- 打印标签 -->
<el-dialog :title="$t('集运封箱标签')" :visible.sync="printdialogVisible" width="350px" :modal-append-to-body="false" append-to-body> <el-dialog :title="$t('封箱标签')" :visible.sync="printdialogVisible" width="350px" :modal-append-to-body="false" append-to-body>
<print-tag v-if="printdialogVisible" :tagData="tagData" /> <print-tag v-if="printdialogVisible" :tagData="tagData" />
</el-dialog> </el-dialog>
...@@ -129,7 +129,7 @@ ...@@ -129,7 +129,7 @@
<el-radio-button :label="2">{{ $t('已装箱列表') }}</el-radio-button> <el-radio-button :label="2">{{ $t('已装箱列表') }}</el-radio-button>
</el-radio-group> </el-radio-group>
</div> </div>
<pkg-page :pkgData="showPkgData" :shipmentObj="shipmentObj" flag="show" @closeDialog="closeDialog" @reload="getList" /> <pkg-page v-if="showPagedialogVisible" :pkgData="showPkgData" :shipmentObj="shipmentObj" flag="show" @closeDialog="closeDialog" @reload="getList" />
</el-dialog> </el-dialog>
<el-row style="margin-top: 15px" class="operate-button"> <el-row style="margin-top: 15px" class="operate-button">
......
...@@ -76,25 +76,43 @@ ...@@ -76,25 +76,43 @@
<pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.rows" @pagination="getList" /> <pagination v-show="total > 0" :total="total" :page.sync="queryParams.page" :limit.sync="queryParams.rows" @pagination="getList" />
</el-row> </el-row>
<!-- 封箱 --> <!-- 封箱 -->
<el-dialog :title="$t('封箱确认')" :visible.sync="sealBoxdialogVisible" width="700px" :modal-append-to-body="false" append-to-body> <el-dialog :title="$t('封箱确认')" :visible.sync="sealBoxdialogVisible" width="800px" :modal-append-to-body="false" append-to-body>
<el-form ref="sealBoxForm" :model="sealBoxForm" label-width="100px"> <el-form ref="sealBoxForm" :model="sealBoxForm" label-width="100px">
<el-form-item :label="$t('箱号')" prop="pkgNum"> <el-form-item :label="$t('箱号')" prop="pkgNum">
{{ pkgData.pkgNum }} {{ pkgData.pkgNum }}
</el-form-item> </el-form-item>
<el-row> <el-row>
<el-col :span="8"> <el-col :span="8">
<el-form-item :label="$t('长')" prop="pkgLength"> <el-form-item :label="$t('长')" prop="pkgLength" :rules="[
<el-input-number v-model="sealBoxForm.pkgLength" :controls="false" :precision="2" style="width: 100px" /> { pattern: /^((0{1}\.\d{1,2})|([1-9]\d*\.{1}\d{1,2})|([1-9]+\d*))$/, message: $t('长度保留两位小数')}
]">
<el-input v-model="sealBoxForm.pkgLength" style="width: 150px" @change="culSumVolume">
<template slot="append">
{{ $t('cm') }}
</template>
</el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item :label="$t('宽')" prop="pkgWidth"> <el-form-item :label="$t('宽')" prop="pkgWidth" :rules="[
<el-input-number v-model="sealBoxForm.pkgWidth" :controls="false" :precision="2" style="width: 100px" /> { pattern: /^((0{1}\.\d{1,2})|([1-9]\d*\.{1}\d{1,2})|([1-9]+\d*))$/, message: $t('宽度保留两位小数')}
]">
<el-input v-model="sealBoxForm.pkgWidth" style="width: 150px" @change="culSumVolume">
<template slot="append">
{{ $t('cm') }}
</template>
</el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item :label="$t('高')" prop="pkgHight"> <el-form-item :label="$t('高')" prop="pkgHight" :rules="[
<el-input-number v-model="sealBoxForm.pkgHight" :controls="false" :precision="2" style="width: 100px" /> { pattern: /^((0{1}\.\d{1,2})|([1-9]\d*\.{1}\d{1,2})|([1-9]+\d*))$/, message: $t('高度保留两位小数')}
]">
<el-input v-model="sealBoxForm.pkgHight" style="width: 150px" @change="culSumVolume">
<template slot="append">
{{ $t('cm') }}
</template>
</el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
...@@ -135,7 +153,7 @@ ...@@ -135,7 +153,7 @@
</div> </div>
</el-dialog> </el-dialog>
<!-- 打印标签 --> <!-- 打印标签 -->
<el-dialog :title="$t('集运封箱标签')" :visible.sync="printdialogVisible" width="350px" :modal-append-to-body="false" append-to-body> <el-dialog :title="$t('封箱标签')" :visible.sync="printdialogVisible" width="350px" :modal-append-to-body="false" append-to-body>
<print-tag v-if="printdialogVisible" :tagData="tagData" /> <print-tag v-if="printdialogVisible" :tagData="tagData" />
</el-dialog> </el-dialog>
<!-- 对话框 --> <!-- 对话框 -->
...@@ -310,6 +328,23 @@ export default { ...@@ -310,6 +328,23 @@ export default {
}) })
return arr.toString() return arr.toString()
}, },
//计算封箱体积
culSumVolume() {
let temp = this.sealBoxForm.pkgLength*this.sealBoxForm.pkgWidth*0.01*0.01
let sumVolume = this.accMul(temp, this.sealBoxForm.pkgHight*0.01)
if(sumVolume <= 0){
sumVolume = 0.01
}
this.$set(this.sealBoxForm, 'sumVolume', sumVolume)
},
accMul(arg1,arg2)
{
var m=0,s1=arg1.toString(),s2=arg2.toString();
try{m+=s1.split(".")[1].length}catch(e){}
try{m+=s2.split(".")[1].length}catch(e){}
let num = Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m)
return num.toFixed(2)
},
getpositionNo(arr){ getpositionNo(arr){
if(!arr) return arr if(!arr) return arr
let data = [] let data = []
......
<template> <template>
<div> <div>
<div class="tag"> <div class="tag">
<div style="display: flex;height: 180px;"> <div style="display: flex;height: 160px;">
<div style="border-right: 1px solid #999; width: 140px"> <div style="border-right: 1px solid #999; width: 140px">
<div> <div style="text-align: center">
<p style="margin-top: 1mm; text-align: center"> <p style="margin-top: 1mm; text-align: center">
<span style="text-align: center; font-weight: 600; font-size: 3mm">{{ $t('扫码查看产品数量') }}</span> <span style="text-align: center; font-weight: 600; font-size: 3mm">{{ $t('扫码查看产品数量') }}</span>
</p> </p>
<img :src="tagData.qrCodeUrl" :alt="tagData.qrCodeUrl" style="width: 26mm" /> <img :src="tagData.qrCodeUrl" :alt="tagData.qrCodeUrl" style="width: 26mm"/>
<p style="margin-top: -1mm; text-align: center"> <p style="margin-top: -1mm; text-align: center">
<span style="text-align: center; font-weight: 600; font-size: 4mm">{{ tagData.mergePkgNo }}</span> <span style="text-align: center; font-weight: 600; font-size: 4mm">{{ tagData.mergePkgNo }}</span>
</p> </p>
...@@ -17,15 +17,17 @@ ...@@ -17,15 +17,17 @@
<p style="margin-top: 1mm; text-align: center"> <p style="margin-top: 1mm; text-align: center">
<span style="text-align: center; font-weight: 600; font-size: 4mm">{{ tagData.mergePkgNo }}</span> <span style="text-align: center; font-weight: 600; font-size: 4mm">{{ tagData.mergePkgNo }}</span>
</p> </p>
<div style="border-top: 1px solid #999;margin-left: 10px;" /> <div style="border-top: 1px solid #999;margin-left: 10px;"/>
<p style="margin-top: 1mm; text-align: center"> <p style="margin-top: 1mm; text-align: center">
<span style="text-align: center; font-weight: 600; font-size: 4mm">{{ tagData.company }}</span> <span style="text-align: center; font-weight: 600; font-size: 4mm">{{ tagData.company }}</span>
</p> </p>
<div style="border-top: 1px solid #999;margin-left: 10px;" /> <div style="border-top: 1px solid #999;margin-left: 10px;"/>
<p style="margin-top: 1mm; text-align: center"> <p style="margin-top: 1mm; text-align: center">
<span style="text-align: center; font-weight: 600; font-size: 4mm">{{ tagData.startWarehouse }} -> {{ tagData.endWarehouse }}</span> <span style="text-align: center; font-weight: 600; font-size: 4mm">{{
tagData.startWarehouse
}} -> {{ tagData.endWarehouse }}</span>
</p> </p>
<div style="border-top: 1px solid #999;margin-left: 10px;" /> <div style="border-top: 1px solid #999;margin-left: 10px;"/>
<div style="display: flex;margin-top: 10px;"> <div style="display: flex;margin-top: 10px;">
<div style="border-right: 1px solid #999;width: 45px;"> <div style="border-right: 1px solid #999;width: 45px;">
<p style="margin-top: 1mm; text-align: center"> <p style="margin-top: 1mm; text-align: center">
...@@ -40,18 +42,13 @@ ...@@ -40,18 +42,13 @@
</div> </div>
</div> </div>
</div> </div>
<div style="border-top: 1px solid #999;margin: 10px;" /> <div style="border-top: 1px solid #999;margin: 10px;"/>
<!--<div> <div style="padding: 10px; width: 250px; height: 20px; text-align: center; font-size: 12px; color:#000;">
<img :src="tagData.barcodeUrl" style="width:250px;height: 50px;" /> E&C Logistics: www.groupage.com
</div>-->
<div style="height: 50px;">
<p style="margin-top: 1mm; text-align: center">
<span style="text-align: center; font-weight: 600; font-size: 3mm">E&C Logistics: www.groupage.com</span>
</p>
</div> </div>
</div> </div>
<div style="text-align:center;margin-top: 20px;"> <div style="text-align:center;margin-top: 20px;">
<el-button type="primary" @click="print">{{$t('确定打印')}}</el-button> <el-button type="primary" @click="print">{{ $t('确定打印') }}</el-button>
</div> </div>
</div> </div>
</template> </template>
...@@ -79,7 +76,7 @@ export default { ...@@ -79,7 +76,7 @@ export default {
LODOP.SET_PRINT_PAGESIZE(0, 800, 600, "TAG"); LODOP.SET_PRINT_PAGESIZE(0, 800, 600, "TAG");
for(let i in items){ for(let i in items){
LODOP.ADD_PRINT_HTM("2mm",0,800,600, items[i].innerHTML); LODOP.ADD_PRINT_HTM(0,0,800,600, items[i].outerHTML);
if(i < items.length){ if(i < items.length){
LODOP.NewPage() LODOP.NewPage()
} }
......
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<el-button :disabled="shipmentObj.approvaling" size="small" type="primary" @click="()=>tallyClick('batch')">{{$t('批量理货')}}</el-button> <el-button :disabled="shipmentObj.approvaling" size="small" type="primary" @click="()=>tallyClick('batch')">{{$t('批量理货')}}</el-button>
<el-button :disabled="shipmentObj.approvaling" size="small" type="primary" @click="()=>removeClick('batch')">{{$t('批量移出')}}</el-button> <el-button :disabled="shipmentObj.approvaling" size="small" type="primary" @click="()=>removeClick('batch')">{{$t('批量移出')}}</el-button>
</div> </div>
<div> <div v-if="false">
<template> <template>
<el-input v-model="qrCode" :placeholder="$t('请输入二维码/条码编号')" clearable></el-input> <el-input v-model="qrCode" :placeholder="$t('请输入二维码/条码编号')" clearable></el-input>
<el-button type="primary" @click="handlerBatchCreate()">{{$t('确定')}}</el-button> <el-button type="primary" @click="handlerBatchCreate()">{{$t('确定')}}</el-button>
......
...@@ -186,6 +186,10 @@ export default { ...@@ -186,6 +186,10 @@ export default {
break; break;
// 清关 // 清关
case "cusClearance": case "cusClearance":
if(!this.shipmentObj.sapStatus || this.shipmentObj.sapStatus <= 151){
this.$message.error(this.$t("请先完成到港操作"));
return;
}
this.$set(this.dialogConfig, "width", "700px"); this.$set(this.dialogConfig, "width", "700px");
break; break;
// AGENT // AGENT
...@@ -220,6 +224,10 @@ export default { ...@@ -220,6 +224,10 @@ export default {
break; break;
// 卸柜 // 卸柜
case "unloading": case "unloading":
if(!this.shipmentObj.sapStatus || this.shipmentObj.sapStatus <= 151){
this.$message.error(this.$t("请先完成到港操作"));
return;
}
// 卸柜反审 // 卸柜反审
const unStatus = this.shipmentObj[node.keyName]; const unStatus = this.shipmentObj[node.keyName];
if ([186].includes(unStatus)) { if ([186].includes(unStatus)) {
......
...@@ -307,12 +307,12 @@ ...@@ -307,12 +307,12 @@
this.totalData.developWeight =this.myAchievementData.devTotalWeight this.totalData.developWeight =this.myAchievementData.devTotalWeight
this.totalData.developVolume =this.myAchievementData.devTotalVolume this.totalData.developVolume =this.myAchievementData.devTotalVolume
this.totalData.developNum =this.myAchievementData.devTotalNum this.totalData.developNum =this.myAchievementData.devTotalNum
this.$set(this.totalData,'newTotalNum',this.myAchievementData.newTotalNum ) this.$set(this.totalData,'newTotalNum',this.myAchievementData.newTotalNum ||0 )
this.$set(this.totalData,'newTotalVolume',this.myAchievementData.newTotalVolume) this.$set(this.totalData,'newTotalVolume',this.myAchievementData.newTotalVolume || 0 )
this.$set(this.totalData,'newTotalWeight',this.myAchievementData.newTotalWeight) this.$set(this.totalData,'newTotalWeight',this.myAchievementData.newTotalWeight || 0)
this.$set(this.totalData,'oldTotalNum',this.myAchievementData.oldTotalNum) this.$set(this.totalData,'oldTotalNum',this.myAchievementData.oldTotalNum || 0)
this.$set(this.totalData,'oldTotalVolume',this.myAchievementData.oldTotalVolume) this.$set(this.totalData,'oldTotalVolume',this.myAchievementData.oldTotalVolume || 0 )
this.$set(this.totalData,'oldTotalWeight',this.myAchievementData.oldTotalWeight) this.$set(this.totalData,'oldTotalWeight',this.myAchievementData.oldTotalWeight || 0)
this.loading = false; this.loading = false;
}); });
}, },
......
...@@ -514,11 +514,11 @@ ...@@ -514,11 +514,11 @@
</el-form-item> </el-form-item>
</div> </div>
<div v-if="[3,4].indexOf(+form.transportId) > -1"> <!--<div v-if="[3,4].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('航空公司')"> <el-form-item :label="$t('航空公司')">
<supplier-selector v-model="form.airlineCompany" company-type="10" :disabled="false"/> <supplier-selector v-model="form.airlineCompany" company-type="10" :disabled="false"/>
</el-form-item> </el-form-item>
</div> </div>-->
<div v-if="[2].indexOf(+form.transportId) > -1"> <div v-if="[2].indexOf(+form.transportId) > -1">
<el-form-item :label="$t('船公司')"> <el-form-item :label="$t('船公司')">
<supplier-selector v-model="form.shippingCompany" company-type="9" :disabled="false" /> <supplier-selector v-model="form.shippingCompany" company-type="9" :disabled="false" />
......
...@@ -621,11 +621,8 @@ export default { ...@@ -621,11 +621,8 @@ export default {
this.reset() this.reset()
} }
// 空运需要获取货币和体积单位
if([3, 4].indexOf(this.orderData.transportId) > -1){
getCurrencyList().then(res => this.currencyList = res.data) getCurrencyList().then(res => this.currencyList = res.data)
getUnitList().then(res => this.unitList = res.data) getUnitList().then(res => this.unitList = res.data)
}
}) })
// 获取入仓记录 // 获取入仓记录
getOrderWarehouseIn(this.queryParams.orderId).then(res => { getOrderWarehouseIn(this.queryParams.orderId).then(res => {
...@@ -946,22 +943,6 @@ export default { ...@@ -946,22 +943,6 @@ export default {
if(!this.orderData || !this.orderData.orderItemVOList ||this.orderData.length==0){ if(!this.orderData || !this.orderData.orderItemVOList ||this.orderData.length==0){
return sums return sums
} }
/*var orderSum = 0
var orderV = 0
var orderW = 0
var leviteSum = 0
var leviteV = 0
var leviteW = 0
this.orderData.orderItemVOList.forEach((column, index) => {
orderSum += column.num
orderV += column.volume
orderW += column.weight
leviteSum += column.warehouseInInfoVO?column.warehouseInInfoVO.cartonsNum:0
leviteV += column.warehouseInInfoVO?column.warehouseInInfoVO.volume:0
leviteW += column.warehouseInInfoVO?column.warehouseInInfoVO.weight:0
});
sums[1] = this.$t('下单统计')+' '+ orderSum+' '+this.$t('箱')+' '+ orderV.toFixed(2) +' m³ ' + orderW + ' kg ' + ' '+this.$t('入仓统计:')+ leviteSum+' '+this.$t('箱')+' '+ leviteV.toFixed(2) +' m³ ' + leviteW + ' kg'
*/
sums[1] = [ sums[1] = [
this.$t('下单统计'), this.$t('下单统计'),
this.orderData.costVO?.totalNum + ' '+this.$t(''), this.orderData.costVO?.totalNum + ' '+this.$t(''),
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
append-to-body append-to-body
width="90vw" width="90vw"
> >
<el-table ref="multipleTable" :data="orderItemDetails" @selection-change="handleSelectionChange"> <el-table ref="multipleTable" :data="flatList" @selection-change="handleSelectionChange" :span-method="objectSpanMethod">
<el-table-column type="selection" width="55"></el-table-column> <el-table-column type="selection" width="55"></el-table-column>
<el-table-column :label="$t('品名')" prop="name"> <el-table-column :label="$t('品名')" prop="name">
<template #default="{row}">{{$l(row, "prodName")}}</template> <template #default="{row}">{{$l(row, "prodName")}}</template>
...@@ -22,32 +22,37 @@ ...@@ -22,32 +22,37 @@
<el-table-column :label="$t('用途')" prop="unit"> <el-table-column :label="$t('用途')" prop="unit">
<template #default="{row}">{{$l(row, "usageNames")}}</template> <template #default="{row}">{{$l(row, "usageNames")}}</template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('数量')" prop="quantityAll"></el-table-column> <el-table-column :label="$t('总数量')" prop="quantityAll"></el-table-column>
<el-table-column :label="$t('总箱数')" prop="cartonsNum"></el-table-column>
<el-table-column :label="$t('包装类型')" prop="specificationType">
<template #default="{row}">
<dict-tag :type="DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE" :value="row.specificationType"></dict-tag>
</template>
</el-table-column>
<el-table-column :label="$t('规格')" prop="boxGauge"></el-table-column>
<el-table-column :label="$t('总重量')" prop="weight"></el-table-column>
<el-table-column :label="$t('快递单号')" prop="expressNo"></el-table-column>
<el-table-column :label="$t('影像')" prop="quantityAll">
<template #default="{row}">
<el-button type="text" @click="curPictrues = row.pictureUrls">{{$t('查看影像')}}</el-button>
</template>
</el-table-column>
</el-table> </el-table>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleSubmit">{{$t('确定')}}</el-button> <el-button type="primary" @click="handleSubmit">{{$t('确定')}}</el-button>
<el-button @click="handleClose">{{$t('取消')}}</el-button> <el-button @click="handleClose">{{$t('取消')}}</el-button>
</div> </div>
<media-dialog v-if="curPictrues" :value="curPictrues" @close="curPictrues=null"></media-dialog>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import ProductSelector from "@/components/ProductSelector" import {getOrderItemCommonAttr} from "@/api/ecw/order"
import WarehouseAreaSelect from "@/components/WarehouseAreaSelect" import MediaDialog from "@/views/ecw/order/stocking/components/MediaDialog.vue";
import {getFeeTypeByOrderProduct, getProductBrankPage} from "@/api/ecw/productBrank"
import {cancelProcessInstance} from "@/api/bpm/processInstance"
import WorkFlow from "@/components/WorkFlow"
import {DICT_TYPE, getDictDataLabel, getDictDatas} from "@/utils/dict"
import {finishPacked, getOrderItemCommonAttr, orderWarehouseIn, orderWarehouseInUpdateApply} from "@/api/ecw/order"
import {getProductAttrList} from "@/api/ecw/productAttr"
import {getProductTypeList} from "@/api/ecw/productType"
import {addProduct} from "@/api/ecw/product"
import WarehouseRecordDetail from "@/views/ecw/order/warehousing/components/WarehouseRecordDetail.vue";
import ImageAndVideoUpload from "@/components/ImageAndVideoUpload/index.vue";
import Template from "@/views/cms/template/index.vue";
export default { export default {
components: {MediaDialog},
props: { props: {
orderId: { orderId: {
type: Number, type: Number,
...@@ -60,7 +65,8 @@ export default { ...@@ -60,7 +65,8 @@ export default {
visible: true, visible: true,
// 备选的商品明细 // 备选的商品明细
orderItemDetails: [], orderItemDetails: [],
multipleSelection:[] multipleSelection:[],
curPictrues: null
} }
}, },
watch:{ watch:{
...@@ -70,8 +76,19 @@ export default { ...@@ -70,8 +76,19 @@ export default {
} }
}, },
}, },
computed:{
flatList(){
let arr = []
this.orderItemDetails.forEach(item => {
item.orderWarehouseInCommonAttrVOList?.forEach((vo, index) => {
arr.push({...item, ...vo, index, span: index === 0 ? item.orderWarehouseInCommonAttrVOList?.length : 0})
})
})
return arr
}
},
async created() { async created() {
getOrderItemCommonAttr(this.orderId, this.warehouseInId).then(res => { getOrderItemCommonAttr(this.orderId, this.warehouseInId || 0).then(res => {
this.orderItemDetails = res.data this.orderItemDetails = res.data
}) })
}, },
...@@ -99,6 +116,18 @@ export default { ...@@ -99,6 +116,18 @@ export default {
}, },
handleClose() { handleClose() {
this.visible = false this.visible = false
},
objectSpanMethod({ row, column, rowIndex, columnIndex }){
if(columnIndex > 6){
return {
rowspan: row.span,
colspan: 1
}
}
return {
rowspan: 1,
colspan: 1
}
} }
} }
} }
......
...@@ -40,7 +40,7 @@ export default { ...@@ -40,7 +40,7 @@ export default {
</script> </script>
<template> <template>
<el-dialog :visible.sync="show" :before-close="onBeforeClose"> <el-dialog :visible.sync="show" :before-close="onBeforeClose" append-to-body title="$t('查看影像')">
<image-and-video-upload v-model="pictureUrls" readonly></image-and-video-upload> <image-and-video-upload v-model="pictureUrls" readonly></image-and-video-upload>
</el-dialog> </el-dialog>
</template> </template>
<template> <template>
<el-dialog <el-dialog
:title="$t('添加新品名')" :title="$t('添加新品名')"
:visible.sync="visible" :visible.sync="visible"
width="90vw" width="90vw"
......
...@@ -65,9 +65,15 @@ ...@@ -65,9 +65,15 @@
<el-button type="text" @click="showMedia(props.row)">{{$t('查看')}}</el-button> <el-button type="text" @click="showMedia(props.row)">{{$t('查看')}}</el-button>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="areaName" :label="$t(' ')" width="220px"> <el-table-column prop="areaName" width="220px">
<template v-slot="{row}"> <template v-slot="{row}">
<WarehouseRecordDetail v-model="row.orderWarehouseInDetailsVOList" @input="saveDetail(props.row)" /> <WarehouseRecordDetail
v-model="row.orderWarehouseInDetailsVOList"
@input="saveDetail(props.row)"
show-choose-order-item
:order-id="orderId"
:warehouse-in-id="row.id"
/>
<el-button class="pl-5 pr-5" size="mini" type="primary" @click="package(props.row, $t('修改打包'))">{{$t('修改')}}</el-button> <el-button class="pl-5 pr-5" size="mini" type="primary" @click="package(props.row, $t('修改打包'))">{{$t('修改')}}</el-button>
<el-button class="pl-5 pr-5" size="mini" type="danger" @click="package(props.row, $t('修改打包'))">{{$t('删除')}}</el-button> <el-button class="pl-5 pr-5" size="mini" type="danger" @click="package(props.row, $t('修改打包'))">{{$t('删除')}}</el-button>
</template> </template>
...@@ -168,7 +174,9 @@ ...@@ -168,7 +174,9 @@
</template> </template>
<el-button class="pl-5 pr-5" v-else size="mini" type="primary" @click="package(row, $t('修改打包'))">{{$t('修改打包')}}</el-button> <el-button class="pl-5 pr-5" v-else size="mini" type="primary" @click="package(row, $t('修改打包'))">{{$t('修改打包')}}</el-button>
<el-button size="mini" type="danger" @click="rollback(row)">{{$t('退仓')}}</el-button> <el-tooltip :content="$t('请确认货物打包完成再并箱')" :value="true" manual>
<el-button size="mini" type="danger" @click="rollback(row)">{{$t('并箱')}}</el-button>
</el-tooltip>
<el-button class="pl-5 pr-5" size="mini" type="info" @click="printTag">{{$t('打印标签')}}</el-button> <el-button class="pl-5 pr-5" size="mini" type="info" @click="printTag">{{$t('打印标签')}}</el-button>
</el-button-group> </el-button-group>
</template> </template>
......
...@@ -792,6 +792,9 @@ export default { ...@@ -792,6 +792,9 @@ export default {
this.form.feeType = this.warehousing.feeType this.form.feeType = this.warehousing.feeType
this.form.pictureUrls = this.warehousing.pictureUrls this.form.pictureUrls = this.warehousing.pictureUrls
this.form.usageIds = this.warehousing.usageIds?.split(',') || [] this.form.usageIds = this.warehousing.usageIds?.split(',') || []
if (this.form.usageIds.length > 0 && this.form.usageIds[0] === ''){
this.usageIds.splice(0, 1)
}
this.warehousing.orderWarehouseInBackItemDoList.forEach(e => { this.warehousing.orderWarehouseInBackItemDoList.forEach(e => {
let bg = {} let bg = {}
......
...@@ -162,6 +162,9 @@ export default { ...@@ -162,6 +162,9 @@ export default {
if (this.value.usageIds) { if (this.value.usageIds) {
this.usageIds = this.value.usageIds.split(',') || [] this.usageIds = this.value.usageIds.split(',') || []
if (this.usageIds.length > 0 && this.usageIds[0] === ''){
this.usageIds.splice(0, 1)
}
} }
if (this.value.boxGauge) { if (this.value.boxGauge) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment