Commit 928dfb9d authored by 我在何方's avatar 我在何方

空运审核优化

parents 3f8f81b9 3cb0abfb
......@@ -229,6 +229,15 @@ export function getNoticeList(data) {
});
}
// 空运出货提示
export function getAirNoticeList(data) {
return request({
url: "/shipment/box/airNoticeList",
method: "post",
data,
});
}
/**
* 根据订单ID下载提货单
*
......
......@@ -220,6 +220,7 @@ export const DICT_TYPE = {
BOX_SHIPPING_BRAND_TYPE: 'shipping_brand_type', // 出货品牌类型
BOX_SHIPPING_NOTICE_TYPE: 'shipping_notice_type', // 出货通知类型
BOX_ORDER_SHIPMENT_STATE: 'order_shipment_state',
BOX_AIR_SHIPMENT_STATE: 'air_shipment_status',
BOX_INSPECTION_TIME_CUSTOMS: 'inspection_time_customs', // 校验时间-报关
BOX_INSPECTION_TIME_SHIPPING: 'inspection_time_shipping', // 校验时间-起运
BOX_INSPECTION_TIME_ARRIVAL: 'inspection_time_arrival', // 校验时间-到港
......
......@@ -433,6 +433,17 @@ export default {
component: "shippingDetail",
processId: this.processInstance.businessKey
},
// 出货反审
shipment_review: {
component: "shippingDetail",
processId: this.processInstance.businessKey
},
// 删单退场
customs_declare_remove: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
type: 'deleteExit'
},
// 空运到仓审核
air_warehouse: {
component: "shippingDetail",
......@@ -444,7 +455,7 @@ export default {
component: "shippingDetail",
processId: this.processInstance.businessKey,
type: 'air_warehouse'
},
}
}
console.log('formCustomViewPath', this.processInstance.processDefinition.formCustomViewPath.trim())
return map[this.processInstance.processDefinition.formCustomViewPath.trim()]
......
<template>
<el-dialog :title="orderNo + $t('订单转异')" center :visible.sync="show" v-bind="$attrs" :close-on-click-modal="false" :before-close="cancel">
<el-form label-position="top" label-width="200" ref="exceptionForm" :model="form" :rules="exceptionRules">
<el-form-item :label="$t('原因类型')" prop="manualExceptionType">
<dict-selector v-model="form.manualExceptionType" form-type="checkbox" :type="DICT_TYPE.MANUAL_EXCEPTION_TYPE" multiple ></dict-selector>
</el-form-item>
<el-form-item :label="$t('附件')">
<image-upload v-model="form.exceptionUrls"></image-upload>
</el-form-item>
<el-form-item :label="$t('详细信息')">
<el-input v-model="form.descZh" type="textarea"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="handleException">{{$t('确认转异')}}</el-button>
<el-button @click="cancel">{{$t('取消')}}</el-button>
</span>
</el-dialog>
</template>
<script>
import imageUpload from "@/components/ImageUpload/index.vue";
import {batchException} from "@/api/ecw/order";
export default {
components: {imageUpload},
props:{
orderNo:{
type: String,
},
orderId:{
type: Number,
}
},
data(){
return {
show: false,
form: {
manualExceptionType: [],
exceptionUrls: '',
descZh: ''
},
exceptionRules:{}
}
},
async created(){
this.$nextTick()
this.show = true
},
methods:{
cancel(){
this.show = false
this.$emit('cancel');
},
handleException(){
if(!this.form.manualExceptionType.length){
return this.$message.error(this.$t('请选择异常类型'))
}
batchException({
orderIds: [this.orderId],
manualExceptionType: this.form.manualExceptionType.join(","),
exceptionUrls: this.form.exceptionUrls?.split(",") || [],
descZh: this.form.descZh
}).then(res=>{
this.$message.success(this.$t('操作成功'));
this.show = false
this.$emit('success');
})
}
}
}
</script>
<style scoped lang="scss">
</style>
......@@ -21,9 +21,9 @@
</el-select>
</el-form-item>
<el-form-item :label="$t('状态')" prop="boxStatus">
<el-select v-model="queryParams.boxStatus" :placeholder="$t('请选择状态')" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.BOX_SHIPMENT_STATUS)" :key="dict.value" :label="$l(dict, 'label')" :value="dict.value" />
<el-form-item :label="$t('状态')" prop="shipmentStatusAir">
<el-select v-model="queryParams.shipmentStatusAir" :placeholder="$t('请选择状态')" clearable size="small">
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.BOX_AIR_SHIPMENT_STATE)" :key="dict.value" :label="$l(dict, 'label')" :value="dict.value" />
</el-select>
</el-form-item>
<el-row>
......@@ -195,13 +195,13 @@
<script>
import {
deletebox,
getbox,
getboxPage,
exportboxExcel,
getNoticeList,
dealCustomsSplitNotify,
exportPreloadGoodsList
deletebox,
getbox,
getboxPage,
exportboxExcel,
getNoticeList,
dealCustomsSplitNotify,
exportPreloadGoodsList, downloadReceivableList, getAirNoticeList, zipDownload
} from '@/api/ecw/box'
import { getChannelList } from '@/api/ecw/channel'
import { getWarehouseList } from '@/api/ecw/warehouse'
......@@ -268,7 +268,7 @@ export default {
selfNo: null,
cubNo: null,
cabinetId: null,
boxStatus: null,
shipmentStatusAir: null,
startWarehouseId: null,
destWarehouseId: null,
transportType: null
......@@ -358,7 +358,7 @@ export default {
getChannelList().then((res) => (this.channelList = res.data))
},
queryNotice() {
getNoticeList({
getAirNoticeList({
transportTypeList: this.transportTypes.map((item) => item.value),
}).then((res) => {
const { data } = res;
......@@ -531,20 +531,19 @@ export default {
);
break;
case "downloadReceivableList":
downloadFile(
command,
{shipmentId: row.id},
this.$t("应收汇总表") + `(${row.selfNo}).xlsx`,
"xlsx"
this.exportExcel(
downloadReceivableList,
{shipmentId: row.id}
);
break;
case "zipDownload":
downloadFile(
/*downloadFile(
command,
{shipmentId: row.id},
this.$t("提货单") + `(${row.selfNo}).zip`,
"zip"
);
);*/
this.exportExcel(zipDownload, { shipmentId: row.id }, this.$t("提货单") + `(${row.selfNo}).zip`)
break;
case "downloadAgentListFiles":
case "downloadSoncapFiles":
......
......@@ -209,11 +209,11 @@
<script>
import {
deletebox,
getbox,
getboxPage,
exportboxExcel,
getNoticeList, dealCustomsSplitNotify, exportPreloadGoodsList,
deletebox,
getbox,
getboxPage,
exportboxExcel,
getNoticeList, dealCustomsSplitNotify, exportPreloadGoodsList, zipDownload,
} from "@/api/ecw/box";
import {
downloadFile,
......@@ -514,12 +514,13 @@ export default {
);
break;
case "zipDownload":
downloadFile(
/* downloadFile(
command,
{ shipmentId: row.id },
this.$t("提货单") + `(${row.selfNo}).zip`,
"zip"
);
);*/
this.exportExcel(zipDownload, { shipmentId: row.id }, this.$t("提货单") + `(${row.selfNo}).zip`)
break;
case "downloadAgentListFiles":
case "downloadSoncapFiles":
......
......@@ -68,12 +68,12 @@
<el-input type="textarea" :rows ="6" v-model="airCheckoutObj.remark" :placeholder="$t('备注')"></el-input>
</el-form-item>
</el-form>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit(1)">{{$t('保存')}}</el-button>
<el-button type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button>
<el-button :disabled="$attrs.shipmentObj.approvaling" type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button>
<el-button @click="cancel">{{$t('关闭')}}</el-button>
</el-row>
</div>
......
......@@ -67,8 +67,12 @@
</el-form-item>
<el-form-item v-show="cusDeclarationObj.overMachineStatus == 2 && cusDeclarationObj.overMachineAbnormalStatus == 1" :label="$t('删单退场类型')">
<el-radio-group v-model="cusDeclarationObj.deleteExitType" :disabled="inReview||inOverReview">
<el-radio :label="1">{{$t('退场时间')}}</el-radio>
<el-radio :label="2">{{$t('返回仓库')}}</el-radio>
<el-radio :label="1">{{$t('退场时间')}}<el-tooltip class="item" effect="dark" :content="$t('选择退场时间,填写退场时间后,提交删单退场审核,订单返回到“已订舱”环节修改订舱号后,提交之后直接到报关流程')" placement="top">
<div class="el-icon-question"></div>
</el-tooltip></el-radio>
<el-radio :label="2">{{$t('返回仓库')}}<el-tooltip class="item" effect="dark" :content="$t('删单退场审核通过后,通过PDA空运退场到仓进行货物入仓')" placement="top">
<div class="el-icon-question"></div>
</el-tooltip></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-show="cusDeclarationObj.overMachineStatus == 2 && cusDeclarationObj.overMachineAbnormalStatus == 1 && cusDeclarationObj.deleteExitType == 1" :label="$t('退场时间')">
......@@ -79,7 +83,7 @@
{{getOverExamineStatus}}
</el-form-item>
</el-form-item>
<el-form-item v-show="cusDeclarationObj.overMachineStatus == 2 && cusDeclarationObj.overMachineAbnormalStatus == 1 && shipmentObj.overMachineExamineStatus == 0 && (typeof cusDeclarationObj.id != 'undefined')">
<el-form-item v-show="cusDeclarationObj.overMachineStatus == 2 && cusDeclarationObj.overMachineAbnormalStatus == 1 && ![1].includes(shipmentObj.overMachineExamineStatus)">
<el-button type="primary" @click="approvalCreate">{{$t('提交删单退场审核')}}</el-button>
</el-form-item>
<el-form-item prop="weightMisreport" v-show="cusDeclarationObj.overMachineStatus == 2 && cusDeclarationObj.overMachineAbnormalStatus == 2">
......@@ -120,6 +124,7 @@
<el-button type="primary" plain @click="canclAudit">{{cusDeclarationObj.dcCheckStatus === '1' ? $t('取消全部退场审核') : $t('取消部分退场审核')}}</el-button>
</el-row>
<el-row class="operate-button">
<el-button type="primary" v-if="inOverReview" @click="exitReviewDetail">{{$t('删单退场审核中')}}</el-button>
<el-button type="primary" v-if="inOverReview" plain @click="canclOverAudit">{{$t('取消删单退场审核')}}</el-button>
<el-button type="primary" @click="onSubmit(1)" :disabled="isCheckDeal('submit')">{{$t('保存')}}</el-button>
<el-button type="success" v-if="!inReview&&!inOverReview" @click="onSubmit(2)" :disabled="isCheckDeal('submit')">{{$t('提交')}}</el-button>
......@@ -308,6 +313,13 @@ export default {
this.$set(this.cusDeclarationObj, "overMachineStatus", 2)
this.$set(this.cusDeclarationObj, "overMachineAbnormalStatus", 1)
}
if(this.shipmentObj.customsDeleteExitApprovalInfo){
if(this.shipmentObj.customsDeleteExitApprovalInfo.details){
let details = JSON.parse(this.shipmentObj.customsDeleteExitApprovalInfo.details)
this.$set(this.cusDeclarationObj, "deleteExitType", details.deleteExitType)
this.$set(this.cusDeclarationObj, "deleteExitTime", details.deleteExitTime)
}
}
},
methods: {
strToArray(str) {
......@@ -386,8 +398,15 @@ export default {
},
//提交删单退场审核
approvalCreate(){
if(!this.cusDeclarationObj.deleteExitType || !this.cusDeclarationObj.deleteExitTime){
this.$message.error(this.$t("请选择类型或者时间"));
// this.$refs["cusDeclarationForm"].validate((valid) => {
// if (valid) {}
// })
if(!this.cusDeclarationObj.deleteExitType){
this.$message.error(this.$t("请选择删单退场类型或者时间"));
return;
}
if(this.cusDeclarationObj.deleteExitType == 1 && !this.cusDeclarationObj.deleteExitTime){
this.$message.error(this.$t("请选择退场时间"));
return;
}
let details = {
......@@ -399,9 +418,8 @@ export default {
approvalStatus: 0,
approvalType: 11,
details: JSON.stringify(details)
}).then((res) => {
serviceMsg(res, this).then(() => {
});
}).then(() => {
this.onSubmit(1)
});
},
/** 提交 */
......@@ -587,6 +605,12 @@ export default {
toReviewDetail.apply(this, [customsApprovalInfo.bpmProcessId]);
this.cancel("close");
},
//删单退场审核详情
exitReviewDetail() {
const { customsDeleteExitApprovalInfo } = this.shipmentObj;
toReviewDetail.apply(this, [customsDeleteExitApprovalInfo.bpmProcessId]);
this.cancel("close");
},
/* 取消退场审核 */
canclAudit() {
console.log(this.shipmentObj)
......@@ -719,20 +743,20 @@ export default {
}
return this.$t("未审核");
},
/* 获取报关审核退场状态文字 */
/* 获取报关审核删单退场状态文字 */
getOverExamineStatus() {
const { overMachineExamineStatus, checkDealStatus, customsInfo } =
this.shipmentObj;
const { dcCheckStatus } = customsInfo ?? {};
if (overMachineExamineStatus === 1) {
return dcCheckStatus === 1
? this.$t("退场审核中")
: this.$t("部分退场审核中");
? this.$t("删单退场审核中")
: this.$t("删单退场审核中");
}
if (overMachineExamineStatus === 2 && checkDealStatus === 0) {
return dcCheckStatus === 1
? this.$t("审核通过,退场中")
: this.$t("审核通过,部分退场中");
? this.$t("删单退场审核通过,退场中")
: this.$t("删单退场审核通过,退场中");
}
return this.$t("未审核");
},
......
......@@ -24,6 +24,7 @@
<el-button
size="small"
type="primary"
:disabled="shipmentObj.approvaling"
@click="
addMergedialogVisible = true
isMergeEdit = false
......@@ -57,8 +58,8 @@
</el-table-column>
<el-table-column :label="$t('操作')" align="center" width="260" class-name="small-padding fixed-width" fixed="right">
<template slot-scope="scope">
<el-button v-if="scope.row.status == 1" type="text" size="small" @click="editMerge(scope.row)">{{ $t('编辑') }}</el-button>
<el-button type="text" size="small" @click="pkgPage(scope.row)">{{ $t('装箱') }}</el-button>
<el-button :disabled="shipmentObj.approvaling" v-if="scope.row.status == 1" type="text" size="small" @click="editMerge(scope.row)">{{ $t('编辑') }}</el-button>
<el-button :disabled="shipmentObj.approvaling" type="text" size="small" @click="pkgPage(scope.row)">{{ $t('装箱') }}</el-button>
<el-button v-if="scope.row.status != 2" type="text" size="small" @click="deleteMerge(scope.row.id)">{{ $t('删除') }}</el-button>
<el-button type="text" size="small" @click="printTag(scope.row.id)">{{ $t('打印标签') }}</el-button>
</template>
......@@ -115,7 +116,7 @@
</el-dialog>
<el-row style="margin-top: 15px" class="operate-button">
<el-button size="small" type="primary" @click="finish">{{ $t('完成') }}</el-button>
<el-button :disabled="shipmentObj.approvaling" size="small" type="primary" @click="finish">{{ $t('完成') }}</el-button>
<el-button size="small" @click="$emit('closeDialog')">{{ $t('取消') }}</el-button>
</el-row>
</el-col>
......
......@@ -174,7 +174,7 @@
</el-table-column>
<el-table-column :label="$t('特性')" align="center" prop="attrNameList" width="120">
<template slot-scope="scope">
{{scope.row.attrNameList?scope.row.attrNameList.toString():''}}
{{scope.row.warehouseInAttrNameList?scope.row.warehouseInAttrNameList.toString():""}}
</template>
</el-table-column>
<el-table-column :label="$t('备案')" align="center" prop="productRecord" width="100">
......
......@@ -6,6 +6,7 @@
</el-form-item>
<span v-if="voKey=='preInstallBackInfo'" style="color: red;margin-left: 120px;">{{$t('请注意,分拣反审后,全部提单需重新制作')}}</span>
</el-form>
<work-flow v-if="xmlKey" :xmlkey="xmlKey" v-model="copyUserId"></work-flow>
<el-row class="operate-button">
<el-button type="success" @click="onSubmit" v-show="!isReview">{{$t('发起申请')}}</el-button>
<el-button type="primary" @click="jumpReviewDetail" v-show="isReview">{{$t('审核中')}}</el-button>
......@@ -18,6 +19,7 @@
<script>
import { approvalCreate, approvalCancel } from "@/api/ecw/boxSea";
import { serviceMsg, toReviewDetail } from "../utils";
import WorkFlow from "@/components/WorkFlow/index.vue";
/**
* 反审
......@@ -25,6 +27,7 @@ import { serviceMsg, toReviewDetail } from "../utils";
export default {
name: "review",
inheritAttrs: false,
components: {WorkFlow},
data() {
return {
// 反审对象
......@@ -32,8 +35,21 @@ export default {
isReview: false,
bpmProcessId: "",
voKey: "",
copyUserId: [], // 抄送人
};
},
computed:{
type(){
return this.$attrs.currNode?.type
},
xmlKey(){
if(!this.type) return null
return {
// 出货反审核
'shipment': 'shipment_audit_no'
}[this.type]
}
},
created() {
const { currNode, shipmentObj } = this.$attrs;
......@@ -48,6 +64,8 @@ export default {
case "unloading":
voKey = "cabinetUnloadBackApprovalInfo";
break;
case "shipment":
voKey = "airShipmentBackApprovalInfo";
}
if (voKey) {
......@@ -95,6 +113,7 @@ export default {
let approvalType = 14; // 预装反审
if (currNode.type === "cabinet") approvalType = 9; // 装柜反审
if (currNode.type === "unloading") approvalType = 16; // 到仓反审核
if(currNode.type === "shipment") approvalType = 19; // 出货反审核
approvalCreate({
shipmentId: shipmentObj.id,
......
......@@ -61,7 +61,7 @@
<el-button v-if="airShipmentApprovalInfo && airShipmentApprovalInfo.approvalStatus == 1" type="primary" @click="$router.push({path: '/bpm/process-instance/detail', query: {id: airShipmentApprovalInfo.bpmProcessId}})">{{$t('出货审核中')}}</el-button>
<el-button v-if="airShipmentApprovalInfo && airShipmentApprovalInfo.approvalStatus == 1" type="primary" @click="canclAudit">{{$t('取消出货审核')}}</el-button>
<el-button type="primary" @click="onSubmit(1)">{{$t('保存')}}</el-button>
<el-button v-if="!airShipmentApprovalInfo || airShipmentApprovalInfo.approvalStatus != 1" type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button>
<el-button :disabled="$attrs.shipmentObj.approvaling" v-if="!airShipmentApprovalInfo || airShipmentApprovalInfo.approvalStatus != 1" type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button>
<el-button @click="cancel">{{$t('关闭')}}</el-button>
</el-row>
</div>
......
......@@ -64,7 +64,7 @@
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit(1)">{{$t('保存')}}</el-button>
<el-button type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button>
<el-button :disabled="shipmentObj.approvaling" type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button>
<el-button @click="cancel">{{$t('关闭')}}</el-button>
<el-button :disabled="shipmentObj.ladingBillInfo == null" @click="download">{{$t('下载提单确认件')}}</el-button>
</el-row>
......@@ -134,7 +134,7 @@ export default {
packageUnit: oldData.packageUnit === 0 ? undefined : oldData.packageUnit,
};
if(!this.shipmentObj.ladingBillInfo){
this.$set(this.subMaterialObj,'agentId',this.shipmentObj.agentInfo?.agentId||undefined)
this.$set(this.subMaterialObj,'soNo',this.shipmentObj.bookSeaInfo?.sono||undefined)
this.$set(this.subMaterialObj,'blMblNo',this.shipmentObj.bookSeaInfo?.sono||undefined)
......@@ -192,7 +192,7 @@ export default {
download() {
getBoxLadingBillPdf({shipmentId: this.shipmentObj.id}).then(res=>{
let blob = new Blob([res], {type: "application/vnd.ms-excel"})
FileSaver.saveAs(blob, this.$t('提单确认件.xlsx'));
FileSaver.saveAs(blob, this.$t('提单确认件.xlsx'));
})
}
},
......
......@@ -21,8 +21,8 @@
<el-row style="margin-top: 15px">
<el-row>
<el-button size="small" type="primary" @click="()=>tallyClick('batch')">{{$t('批量理货')}}</el-button>
<el-button size="small" type="primary" @click="()=>removeClick('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-row>
<el-row style="margin-top: 5px">
<el-table border :data="tallyList" @select="checkboxSelect" @select-all="checkboxSelect" max-height="600px">
......@@ -93,8 +93,9 @@
</el-table-column>
<el-table-column :label="$t('操作')" align="center" width="160" class-name="small-padding fixed-width" fixed="right">
<template slot-scope="scope">
<el-button type="text" size="small" @click="tallyClick('single',scope.row)">{{$t('理货')}}</el-button>
<el-button type="text" size="small" @click="removeClick('single',scope.row)">{{$t('移出')}}</el-button>
<el-button :disabled="shipmentObj.approvaling" type="text" size="small" @click="tallyClick('single',scope.row)">{{$t('理货')}}</el-button>
<el-button :disabled="shipmentObj.approvaling" type="text" size="small" @click="removeClick('single',scope.row)">{{$t('移出')}}</el-button>
<el-button type="text" size="small" @click="currentTurnExceptionOrder=scope.row">{{$t('转异')}}</el-button>
</template>
</el-table-column>
</el-table>
......@@ -102,7 +103,7 @@
</el-row>
<el-row style="margin-top: 15px" class="operate-button">
<el-button size="small" type="primary" @click="tallyFinish">{{$t('完成理货')}}</el-button>
<el-button :disabled="shipmentObj.approvaling" size="small" type="primary" @click="tallyFinish">{{$t('完成理货')}}</el-button>
<el-button size="small" @click="cancel">{{$t('取消')}}</el-button>
</el-row>
</el-col>
......@@ -112,6 +113,13 @@
<batchTally v-if="dialogConfig.dialogVisible" v-bind="$attrs" @closeDialog="closeDialog" :type="dialogConfig.type" :tallyRows="tallyRows" :shipmentObj="shipmentObj" />
</el-dialog>
<warehouse-detail :order="order" :orderItemId="showWarehouseInItemId" v-if="showWarehouseInItemId" @close="showWarehouseInItemId=null" />
<exception
v-if="currentTurnExceptionOrder"
:orderNo="currentTurnExceptionOrder.orderNo"
:orderId="currentTurnExceptionOrder.orderId"
append-to-body
@cancel="currentTurnExceptionOrder=null"
@success="currentTurnExceptionOrder=null" />
</div>
</template>
......@@ -121,11 +129,13 @@ import { getTallyList, tallyRemove, tallyCommit } from "@/api/ecw/boxSea";
import { formatDate, serviceMsg } from "../../utils";
import WarehouseDetail from "./warehouseDetail";
import { getOrder } from "@/api/ecw/order";
import Exception from "@/views/ecw/box/components/Exception.vue";
export default {
name: "tally",
inheritAttrs: false,
components: {
Exception,
batchTally,
WarehouseDetail,
},
......@@ -149,6 +159,8 @@ export default {
type: "",
fullscreen: false,
},
// 当前转异订单
currentTurnExceptionOrder: null
};
},
created() {
......@@ -203,6 +215,9 @@ export default {
},
// 理货点击
tallyClick(type, data) {
if(this.shipmentObj.approvaling){
return this.$message.error(this.$t('业务待审核,暂不能操作'))
}
if (type === "batch") {
if (this.selectedRows.length === 0) {
this.$message.error(this.$t("请选择需要理货的订单"));
......
......@@ -162,6 +162,14 @@ export default {
this.$set(this.dialogConfig, "fullscreen", true);
this.$set(this.dialogConfig, "title", this.$t("合包列表"));
break;
// 出货
case "shipment":
if (this.shipmentObj[node.keyName] == 175) {
this.currentComponent = `reviewWidget`;
this.$set(this.dialogConfig, "width", "700px");
this.$set(this.dialogConfig, "title", this.$t("出货反审"));
}
break;
// 清关文件
case "clrDocument":
this.$set(this.dialogConfig, "width", "700px");
......
......@@ -293,7 +293,7 @@ function airBaseData() {
* 卸柜状态:181、未卸柜;182、卸柜中;183、卸柜审核中;184、卸柜审核失败;185、卸柜审核成功;186、已卸柜
*/
voName: "cabinetUnloadInfo",
keyName: "ulStatus",
keyName: "toWarehouseStatus",
status: {
start: [181],
wait: [182, 183, 184, 185],
......
......@@ -9,7 +9,7 @@
<el-descriptions-item :label="$t('出货渠道')">
{{getShipChannelName(boxBackVO.shippingChannelId)}}
</el-descriptions-item>
<el-descriptions-item v-if="type!='air_warehouse'" :label="$t('柜型')">
<el-descriptions-item :label="$t('柜型')" v-if="boxBackVO.transportType != 3&&type!='air_warehouse'">
{{cabinetLabel}}
</el-descriptions-item>
<el-descriptions-item :label="$t('体积/重量')">
......@@ -21,7 +21,7 @@
</el-descriptions>
<div class="mt-20" v-if="type === 'shipment'">
<el-descriptions :column="1" v-if="boxAirShipmentBackVO" border label-style="width: 200px">
<el-descriptions :column="1" v-if="boxAirShipmentBackVO" border :label-style="{width: '200px'}">
<el-descriptions-item :label="$t('出货方式')">
{{deliverType}}
</el-descriptions-item>
......@@ -194,6 +194,9 @@ export default {
if (this.type === "shipment") {
this.getShipmentDetail();
}
if (this.type === "deleteExit") {
this.getDeleteExit();
}
});
},
getShipmentDetail(){
......
......@@ -261,7 +261,7 @@ export default {
if (r.code === 0) {
this.$emit('getList')
this.$emit('update:dialogVisible', false)
this.$message.success(this.$t('调仓申请提交成功,请耐心等待审核'));
this.$message.success(r.data);
}
})
......
......@@ -524,7 +524,7 @@
<el-card class="mt-10" v-if="showWorkFlow">
<div class="card-title" slot="header">{{$t('审批流程')}}</div>
<work-flow xmlkey="order_modify" v-model="ccIdArr" />
<work-flow :xmlkey="updateChannel ? 'shipment_channel_change' : 'order_modify'" v-model="ccIdArr" />
</el-card>
<div style="margin: 30px 0; display: flex">
......
......@@ -84,7 +84,7 @@
<template v-slot:header>
<span style="color: red">*</span>{{ $t('箱数') }}</template>
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.cartonsNum">
<el-form-item :rules="tableFormRules.cartonsNum" :prop="`table.${$index}.cartonsNum`">
<el-input v-model="form.table[$index].cartonsNum" placeholder="" @blur="handleVolume($index)" :disabled="$index < protectRowCount">
<span slot="append">{{ getDictDataLabel(DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE, form.table[$index].specificationType) }}</span>
</el-input>
......@@ -106,7 +106,7 @@
<span>{{ $t('') }}</span>(cm)
</template>
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.boxGauge1">
<el-form-item :rules="tableFormRules.boxGauge1" :prop="`table.${$index}.boxGauge1`">
<el-input :disabled="$index < protectRowCount" type="number" v-model="form.table[$index].boxGauge1" placeholder="" @blur="handleVolume($index)"></el-input>
</el-form-item>
</template>
......@@ -116,7 +116,7 @@
<span>{{ $t('') }}</span>(cm)
</template>
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.boxGauge2">
<el-form-item :rules="tableFormRules.boxGauge2" :prop="`table.${$index}.boxGauge2`">
<el-input :disabled="$index < protectRowCount" type="number" v-model="form.table[$index].boxGauge2" placeholder="" @blur="handleVolume($index)"></el-input>
</el-form-item>
</template>
......@@ -126,7 +126,7 @@
<span>{{ $t('') }}</span>(cm)
</template>
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.boxGauge3">
<el-form-item :rules="tableFormRules.boxGauge3" :prop="`table.${$index}.boxGauge3`">
<el-input :disabled="$index < protectRowCount" type="number" v-model="form.table[$index].boxGauge3" placeholder="" @blur="handleVolume($index)"></el-input>
</el-form-item>
</template>
......@@ -136,7 +136,7 @@
<span style="color: red">*</span> <span>{{ $t('体积') }}</span>(m³)
</template>
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.volume">
<el-form-item :rules="tableFormRules.volume" :prop="`table.${$index}.volume`">
<el-input :disabled="$index < protectRowCount" v-model="form.table[$index].volume" placeholder="" type="number"></el-input>
</el-form-item>
</template>
......@@ -146,7 +146,7 @@
<span style="color: red">*</span> <span>{{ $t('重量') }}</span>(Kg)
</template>
<template v-slot="{r,c,$index}">
<el-form-item :rules="tableFormRules.weight">
<el-form-item :rules="tableFormRules.weight" :prop="`table.${$index}.weight`">
<el-input :disabled="$index < protectRowCount" v-model="form.table[$index].weight" placeholder="" type="number"></el-input>
</el-form-item>
</template>
......@@ -376,13 +376,13 @@ export default {
brand: [{required: true, message: this.$t("请选择品牌"), trigger: "change"}],
},
tableFormRules: {
// cartonsNum: [{required: true, message: this.$t("箱数不能为空"), trigger: "change"}],
// boxGauge1: [{required: true, message: this.$t("货物长不能为空"), trigger: "change"}],
// boxGauge2: [{required: true, message: this.$t("货物宽不能为空"), trigger: "change"}],
// boxGauge3: [{required: true, message: this.$t("货物高不能为空"), trigger: "change"}],
// volume: [{required: true, message: this.$t("体积不能为空"), trigger: "change"}],
// weight: [{required: true, message: this.$t("重量不能为空"), trigger: "change"}],
// // quantityAll: [{required: true, message: this.$t("数量不能为空"), trigger: "change"}]
cartonsNum: [{required: true, message: this.$t("箱数不能为空"), trigger: "change"}],
boxGauge1: [{required: true, message: this.$t("货物长不能为空"), trigger: "change"}],
boxGauge2: [{required: true, message: this.$t("货物宽不能为空"), trigger: "change"}],
boxGauge3: [{required: true, message: this.$t("货物高不能为空"), trigger: "change"}],
volume: [{required: true, message: this.$t("体积不能为空"), trigger: "change"}],
weight: [{required: true, message: this.$t("重量不能为空"), trigger: "change"}],
// quantityAll: [{required: true, message: this.$t("数量不能为空"), trigger: "change"}]
},
......@@ -492,31 +492,30 @@ export default {
type: 'warning'
})
}
this.$refs['form'].validate(valid => {
this.$refs['tableForm'].validate(valid1 => {
if (!valid || !valid1) {
return
}
// 首次入仓、入仓补充
return finishPacked({
brand: this.form.brand,
orderId: this.warehousing.orderId,
orderItemId: this.warehousing.orderItemId,
orderWarehouseInItemDtoList: this.form.table.map(e => {
return {
...e,
boxGauge: e.boxGauge1 + '*' + e.boxGauge2 + '*' + e.boxGauge3,
orderLocationCreateReqVOList: e.orderLocationBackVOList
}
}),
}).then(r => {
if (r.data) {
this.$message.success('打包成功')
this.handleClose()
} else {
this.$message.success('打包失败')
this.$refs['tableForm'].validate(valid1 => {
console.log("表单校验", valid1)
if (!valid1) {
return
}
// 首次入仓、入仓补充
return finishPacked({
brand: this.form.brand,
orderId: this.warehousing.orderId,
orderItemId: this.warehousing.orderItemId,
orderWarehouseInItemDtoList: this.form.table.map(e => {
return {
...e,
boxGauge: e.boxGauge1 + '*' + e.boxGauge2 + '*' + e.boxGauge3,
orderLocationCreateReqVOList: e.orderLocationBackVOList
}
})
}),
}).then(r => {
if (r.data) {
this.$message.success('打包成功')
this.handleClose()
} else {
this.$message.success('打包失败')
}
})
})
},
......
......@@ -306,7 +306,7 @@
{{ form1.table[$index].cartonsNum }}
{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, form1.table[$index].unit) }}
</span>
<el-input v-else v-model="form1.table[$index].cartonsNum" placeholder="">
<el-input v-else v-model="form1.table[$index].cartonsNum" placeholder="" @blur="handleVolume($index, 1)">
<span slot="append">{{ getDictDataLabel(DICT_TYPE.ECW_PACKAGING_TYPE, form1.table[$index].unit) }}</span>
</el-input>
<dict-selector :type="DICT_TYPE.WAREHOUSING_SPECIFICATION_TYPE" v-model="form1.table[$index].specificationType" @change="handleVolume($index, 1)"></dict-selector>
......@@ -743,10 +743,15 @@ export default {
this.form.orderId = this.warehousing.orderId
this.form.orderItemId = this.warehousing.orderItemId
this.form.orderNo = this.warehousing.orderNo
this.form.warehouseInProdAttrIds =
this.warehousing.warehouseInProdAttrIds?.split(',').map(e => +e)
|| this.warehousing.prodAttrIds?.split(',').map(e => +e)
|| []
if (this.edit || this.isAdd) {
this.form.warehouseInProdAttrIds = this.warehousing.warehouseInProdAttrIds?.split(',').map(e => +e) || []
} else {
this.form.warehouseInProdAttrIds =
this.warehousing.warehouseInProdAttrIds?.split(',').map(e => +e)
|| this.warehousing.prodAttrIds?.split(',').map(e => +e)
|| []
}
this.form.prodId = this.warehousing.prodId
this.form.prodTitleEn = this.warehousing.prodTitleEn
this.form.prodTitleZh = this.warehousing.prodTitleZh
......
......@@ -321,8 +321,6 @@ export default {
this.$set(this.form, 'stepPrice', 1)
}
})
},
methods: {
// 获取模板数据(复制的源路线价格信息)
......@@ -351,11 +349,13 @@ export default {
stepPrice,
specialList,
priceStepList,
minWeight,
minWeightUnit
minWeight,
minWeightUnit,
needOrderInquiry,
needBook
} = res.data
this.$set(this, 'form', Object.assign({}, this.form, {
const data = {
allPrice,
allPriceUnit,
allVolumeUnit,
......@@ -370,8 +370,16 @@ export default {
specialList,
priceStepList,
minWeight,
minWeightUnit
}))
minWeightUnit,
needOrderInquiry,
needBook
}
// 海运需要填充货柜位置和订单方数上限
if(this.type == 'sea'){
data.containerLocation = res.data.containerLocation
data.square = res.data.square
}
this.$set(this, 'form', Object.assign({}, this.form, data))
// 产品选择器默认选择的商品
getProduct(res.data.productId).then(res => {
......
......@@ -876,7 +876,8 @@ export default {
// 复制模板
copyTemplate(row){
// 跳转到批量设置页面,并填充数据
this.$router.push(`../../lineProject/batch-edit-${row.transportType == 3 || row.transportType == 4 ? 'air' : 'sea'}?templateId=${row.id}`)
let transportType = row.warehouseLineDO.transportType
this.$router.push(`../../lineProject/batch-edit-${transportType == 3 || transportType == 4 ? 'air' : 'sea'}?templateId=${row.id}`)
},
// 关闭更多阶梯价格窗口
closeMoreStepPrice(){
......
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