Commit 535efd75 authored by 我在何方's avatar 我在何方
parents 262a7a8d 50ee17e5
......@@ -331,6 +331,50 @@ export function settlementCreate(data) {
});
}
/**
* 空运出货
*
* @export
* @param {*} data
* @return {*}
*/
export function airShipmentCreate(data) {
if (data.id) {
return request({
url: "/ecw/box-air-shipment/update",
method: "put",
data,
});
}
return request({
url: "/ecw/box-air-shipment/create",
method: "post",
data,
});
}
/**
* 空运出仓
*
* @export
* @param {*} data
* @return {*}
*/
export function airCheckoutCreate(data) {
if (data.id) {
return request({
url: "/ecw/box-air-checkout/update",
method: "put",
data,
});
}
return request({
url: "/ecw/box-air-checkout/create",
method: "post",
data,
});
}
/**
* 出货审核
*
......
......@@ -98,9 +98,7 @@ export default {
getChannelList().then((res) => (this.channelList = res.data))
},
destinationClearanceSelect(val) {
if(val == 3){
this.$set(this.form,'destinationClearance',val)
}
this.$set(this.form,'destinationClearance',val)
},
/** 提交按钮 */
submitForm() {
......
<template>
<div>
<el-form ref="airCheckoutForm" :model="airCheckoutObj" :rules="rules" label-width="80px">
<el-form-item :label="$t('出仓日期')">
<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 :label="$t('出仓影像')">
<ImageUpload :limit="1" :isShowTip=false v-model="airCheckoutObj.checkoutFiles" />
</el-form-item>
<el-form-item :label="$t('备注')">
<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 @click="cancel">{{$t('关闭')}}</el-button>
</el-row>
</div>
</template>
<script>
import { airCheckoutCreate } from "@/api/ecw/boxSea";
import userSelect from "./common/userSelect.vue";
import ImageUpload from "@/components/ImageUpload";
import { constantDict, formatDateStr, formatNumberString, serviceMsg } from "../utils";
/**
* 驳船
*/
export default {
name: "checkout",
inheritAttrs: false,
components: { userSelect, ImageUpload },
data() {
return {
// 空运出货对象
airCheckoutObj: {},
// 校验
rules: {
//deliverType: [{ required: true, message: this.$t("必填"), trigger: "change" }],
},
};
},
created() {
const voName = this.$attrs.currNode.voName;
let oldData = { ...this.$attrs.shipmentObj[voName] };
oldData = formatDateStr(oldData, ["checkoutTime"]);
this.airCheckoutObj = oldData;
},
methods: {
/** 提交 */
onSubmit(operateType) {
this.$refs["airCheckoutForm"].validate((valid) => {
if (valid) {
airCheckoutCreate({
...this.airCheckoutObj,
shipmentId: this.$attrs.shipmentObj.id,
operateType,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel("submit");
});
});
}
});
},
/** 取消 */
cancel(type) {
this.$emit("closeDialog", type);
},
},
};
</script>
<style lang="scss" scoped>
</style>
......@@ -70,6 +70,9 @@
{{getCheckExamineStatus}}
</el-form-item>
</el-form-item>
<el-form-item v-show="cusDeclarationObj.overMachineStatus == 2 && cusDeclarationObj.overMachineAbnormalStatus == 1">
<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">
<el-radio-group v-model="cusDeclarationObj.weightMisreport" :disabled="inReview">
<el-radio :label="1">{{$t('机场误差3%')}}</el-radio>
......@@ -188,6 +191,7 @@ import {
resetById,
resetByShipmentId,
customsOrderList,
approvalCreate
} from "@/api/ecw/boxSea";
import {
formatNumberString,
......@@ -360,6 +364,18 @@ export default {
});
});
},
//提交删单退场审核
approvalCreate(){
approvalCreate({
shipmentId: this.shipmentObj.id,
approvalStatus: 0,
approvalType: 10
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel("submit");
});
});
},
/** 提交 */
onSubmit(operateType) {
this.$refs["cusDeclarationForm"].validate((valid) => {
......
......@@ -82,6 +82,16 @@
<p>{{importCityName(shipmentObj.destWarehouseId)}}</p>
</div>
</el-row>
<el-row class="preinstall-title">
<div>
<p>{{$t('出货渠道')}}</p>
<p>{{getShipChannelName(shipmentObj.channelRespVO.channelId)}}</p>
</div>
<div>
<p>{{$t('可出特性')}}</p>
<p>{{shipmentObj.channelRespVO.attrNameList?shipmentObj.channelRespVO.attrNameList.toString():''}}</p>
</div>
</el-row>
<el-row class="preinstall-table">
<!-- 已分拣订单 -->
<el-col :span="12">
......@@ -157,6 +167,11 @@
</div>
</template>
</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():''}}
</template>
</el-table-column>
<el-table-column :label="$t('备案')" align="center" prop="productRecord" width="100">
<template slot-scope="{row}">
<template v-if="row.brandName">{{row.brandName}}</template>
......@@ -221,6 +236,10 @@
<p>{{$t('入仓时间')}}</p>
<p>{{formatDate(item.rucangTime)}}</p>
</div>
<div>
<p>{{$t('出货渠道')}}</p>
<p>{{getShipChannelName(item.channelId)}}</p>
</div>
<div>
<p>{{$t('重货比')}}</p>
<p>{{item.weightRatio}}</p>
......@@ -274,6 +293,11 @@
<dict-tag :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" :value="scope.row.material" />
</template>
</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():""}}
</template>
</el-table-column>
<!-- <el-table-column :label="$t('操作')" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-dropdown trigger="click" @command="(command)=>handleGoods('single',scope.row,command)">
......@@ -344,6 +368,7 @@ import {
getAllRelateOrderList
} from "@/api/ecw/boxSea";
import { createGoods, preloadPage } from "@/api/ecw/boxAir"
import { getChannelList } from "@/api/ecw/channel";
import userSelect from "./common/userSelect.vue";
import {
formatDate,
......@@ -370,6 +395,8 @@ export default {
{ value: "1", label: this.$t("拆单") },
{ value: "2", label: this.$t("关联单") },
],
// 渠道
channelList: [],
// 备案
filingOps: this.getDictDatas(DICT_TYPE.BRAND_CUSTOMER_CHARGING_MODEL),
// 报关方式
......@@ -448,12 +475,24 @@ export default {
const { cabinetRespVO } = this.$attrs.shipmentObj;
return getCapacity(cabinetRespVO);
},
/* 渠道 */
getShipChannelName() {
return (shippingChannelId) => {
for (const channelItem of this.channelList) {
if (channelItem.channelId == shippingChannelId) {
return this.$l(channelItem, "name");
}
}
};
},
},
created() {
// 查询待分拣
this.handleQuery("toBePre");
this.handleQuery("pre");
this.smartInstall = 0;
// 查询渠道
getChannelList().then((res) => (this.channelList = res.data));
},
methods: {
formatDate,
......
......@@ -4,7 +4,7 @@
<el-form-item :label="$t('申请理由')">
<el-input v-model="reviewObj.applyReason" type="textarea" rows="2" :placeholder="$t('请输入申请理由')" :disabled="isReview"></el-input>
</el-form-item>
<span v-if="voKey=='preInstallBackInfo'" style="color: red;margin-left: 120px;">{{$t('请注意,预装反审后,全部提单需重新制作')}}</span>
<span v-if="voKey=='preInstallBackInfo'" style="color: red;margin-left: 120px;">{{$t('请注意,分拣反审后,全部提单需重新制作')}}</span>
</el-form>
<el-row class="operate-button">
<el-button type="success" @click="onSubmit" v-show="!isReview">{{$t('发起申请')}}</el-button>
......
<template>
<div>
<el-form ref="airShipmentForm" :model="airShipmentObj" :rules="rules" label-width="80px">
<el-form-item :label="$t('')" prop="deliverType">
<el-radio-group v-model="airShipmentObj.deliverType">
<el-radio v-for="item in deliverTypes" :key="item.value" :label="item.value">{{item.label}}</el-radio>
</el-radio-group>
</el-form-item>
<div v-show="airShipmentObj.deliverType === '1'">
<el-form-item :label="$t('送货时间')">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="airShipmentObj.deliverTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item :label="$t('送货地址')">
<el-input v-model="airShipmentObj.deliverAddress" :placeholder="$t('请输入送货地址')"></el-input>
</el-form-item>
<el-form-item :label="$t('车牌')">
<el-input v-model="airShipmentObj.licensePlate" :placeholder="$t('请输入车牌')"></el-input>
</el-form-item>
<el-form-item :label="$t('司机')">
<el-input v-model="airShipmentObj.driver" :placeholder="$t('请输入司机')"></el-input>
</el-form-item>
<el-form-item :label="$t('司机联系方式')">
<el-input v-model="airShipmentObj.driverPhone" :placeholder="$t('请输入司机联系方式')"></el-input>
</el-form-item>
</div>
<div v-show="airShipmentObj.deliverType === '2'">
<el-form-item :label="$t('自提时间')">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="airShipmentObj.deliverTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item :label="$t('自提地址')">
<el-input v-model="airShipmentObj.deliverAddress" :placeholder="$t('请输入自提地址')"></el-input>
</el-form-item>
<el-form-item :label="$t('车牌')">
<el-input v-model="airShipmentObj.licensePlate" :placeholder="$t('请输入车牌')"></el-input>
</el-form-item>
<el-form-item :label="$t('司机')">
<el-input v-model="airShipmentObj.driver" :placeholder="$t('请输入司机')"></el-input>
</el-form-item>
<el-form-item :label="$t('司机联系方式')">
<el-input v-model="airShipmentObj.driverPhone" :placeholder="$t('请输入司机联系方式')"></el-input>
</el-form-item>
</div>
</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 @click="cancel">{{$t('关闭')}}</el-button>
</el-row>
</div>
</template>
<script>
import { airShipmentCreate } from "@/api/ecw/boxSea";
import userSelect from "./common/userSelect.vue";
import { constantDict, formatDateStr, formatNumberString, serviceMsg } from "../utils";
/**
* 驳船
*/
export default {
name: "shipment",
inheritAttrs: false,
components: { userSelect },
data() {
return {
// 空运出货对象
airShipmentObj: {},
// 送货方式
deliverTypes: constantDict.deliverType,
// 校验
rules: {
deliverType: [{ required: true, message: this.$t("必填"), trigger: "change" }],
},
};
},
created() {
const voName = this.$attrs.currNode.voName;
let oldData = { ...this.$attrs.shipmentObj[voName] };
oldData = formatDateStr(oldData, ["deliverTime"]);
oldData = formatNumberString(oldData, ["deliverType"]);
this.airShipmentObj = oldData;
console.log(this.airShipmentObj)
},
methods: {
/** 提交 */
onSubmit(operateType) {
this.$refs["airShipmentForm"].validate((valid) => {
if (valid) {
airShipmentCreate({
...this.airShipmentObj,
shipmentId: this.$attrs.shipmentObj.id,
operateType,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel("submit");
});
});
}
});
},
/** 取消 */
cancel(type) {
this.$emit("closeDialog", type);
},
},
};
</script>
<style lang="scss" scoped>
</style>
......@@ -7,8 +7,8 @@
<el-form-item :label="$t('实际起飞时间')" prop="dtRealFlyTime">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="twoWayTakeoffObj.dtRealFlyTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item :label="$t('实际头程时间')" prop="realHeadTravelTime">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="twoWayTakeoffObj.realHeadTravelTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
<el-form-item :label="$t('实际头程时间')" prop="dtRealHeadTime">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="twoWayTakeoffObj.dtRealHeadTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-form>
......@@ -30,6 +30,7 @@
import regError from "../../regError";
import { takeoffCreate } from "@/api/ecw/boxAir";
import { formatDateStr, serviceMsg } from "../utils";
import dayjs from "dayjs";
/**
* 起飞
......@@ -47,7 +48,7 @@ export default {
// 校验
rules: {
dtRealFlyTime: [{ required: true, message: this.$t("必填"), trigger: "blur" }],
realHeadTravelTime: [{ required: true, message: this.$t("必填"), trigger: "blur" }],
dtRealHeadTime: [{ required: true, message: this.$t("必填"), trigger: "blur" }],
},
// 弹窗配置
dialogVisible: false,
......@@ -59,7 +60,7 @@ export default {
const voName = this.$attrs.currNode.voName;
let oldData = { ...this.$attrs.shipmentObj[voName] };
oldData = formatDateStr(oldData, ["dtRealFlyTime"], "YYYY-MM-DD HH:mm:ss");
oldData = formatDateStr(oldData, ["realHeadTravelTime"], "YYYY-MM-DD HH:mm:ss");
oldData = formatDateStr(oldData, ["dtRealHeadTime"], "YYYY-MM-DD HH:mm:ss");
this.twoWayTakeoffObj = oldData;
},
watch: {
......
......@@ -45,6 +45,8 @@ import twoWayArrivalWidget from "./nodePage/twoWayArrival.vue";
import unloadingWidget from "./nodePage/unloading/index.vue";
import settlementWidget from "./nodePage/settlement.vue";
import reviewWidget from "./nodePage/review.vue";
import shipmentWidget from "./nodePage/shipment.vue";
import checkoutWidget from "./nodePage/checkout.vue";
import tallyWidget from "./nodePage/tally/index.vue";
import mergePkgWidget from "./nodePage/mergePkg/index.vue";
import {checkPermi} from '@/utils/permission'
......@@ -74,6 +76,8 @@ export default {
twoWayArrivalWidget,
unloadingWidget,
settlementWidget,
shipmentWidget,
checkoutWidget,
reviewWidget,
tallyWidget,
mergePkgWidget
......@@ -180,7 +184,7 @@ export default {
if ([25].includes(preStatus)) {
this.currentComponent = `reviewWidget`;
this.$set(this.dialogConfig, "width", "700px");
this.$set(this.dialogConfig, "title", this.$t("预装反审"));
this.$set(this.dialogConfig, "title", this.$t("分拣反审"));
} else {
this.$set(this.dialogConfig, "fullscreen", true);
this.$set(this.dialogConfig, "title", this.$t("空运-排单"));
......
......@@ -104,17 +104,17 @@ function airBaseData() {
wait: require("@/assets/images/shipping/zg-wait.png"),
end: require("@/assets/images/shipping/zg-end.png"),
},
type: "cabinet",
type: "shipment",
dataKey: "4", // 字典数据键值
/**
* 装柜状态:41、未装柜;42、装柜中;43、已装柜、待封柜;44、封柜审核中;45、封柜审核失败;46、封柜审核成功;47、已封柜,待出仓
* 出货状态:171、待出货 172、已出货
*/
voName: "cabinetInfo",
keyName: "ldStatus",
voName: "boxAirShipmentBackVO",
keyName: "airShipmentStatus",
status: {
start: [41],
wait: [42, 43, 44, 45, 46],
end: [47],
start: [171],
wait: [],
end: [172],
},
},
{
......@@ -124,17 +124,17 @@ function airBaseData() {
wait: require("@/assets/images/shipping/zg-wait.png"),
end: require("@/assets/images/shipping/zg-end.png"),
},
type: "cabinet",
dataKey: "4", // 字典数据键值
type: "checkout",
dataKey: "5", // 字典数据键值
/**
* 装柜状态:41、未装柜;42、装柜中;43、已装柜、待封柜;44、封柜审核中;45、封柜审核失败;46、封柜审核成功;47、已封柜,待出仓
* 出仓状态:221、未出仓 222、已出仓
*/
voName: "cabinetInfo",
keyName: "ldStatus",
voName: "boxAirCheckoutBackVO",
keyName: "checkoutStatus",
status: {
start: [41],
wait: [42, 43, 44, 45, 46],
end: [47],
start: [221],
wait: [],
end: [222],
},
},
],
......@@ -246,14 +246,14 @@ function airBaseData() {
type: "arrival",
dataKey: "12", // 字典数据键值
/**
* 到港状态:121、未到港;112、已到港
* 到港状态:151、未到港;152、已到港
*/
voName: "arrivalInfo",
keyName: "apStatus",
voName: "airArrivalInfo",
keyName: "sapStatus",
status: {
start: [121],
start: [151],
wait: [],
end: [122],
end: [152],
},
},
],
......@@ -1186,6 +1186,17 @@ const constantDict = {
label: i18n.$t("已做"),
},
],
deliverType: [
{
value: "1",
label: i18n.$t("送货上门"),
},
{
value: "2",
label: i18n.$t("供应商自提"),
},
],
};
/**
......
......@@ -2,7 +2,7 @@
<div>
<el-descriptions class="margin-top" border :column="4">
<el-descriptions-item :label="$t('唛头')">{{details.marks}}</el-descriptions-item>
<el-descriptions-item label="已到箱数/总箱数">{{details.sumNum || 0}}/{{details.costVO ? details.costVO.totalNum : 0}}</el-descriptions-item>
<el-descriptions-item label="已到箱数/总箱数">{{details.sumNum || 0}}/{{details.sumNum || 0 }}</el-descriptions-item>
<el-descriptions-item :label="$t('订单状态')">
<dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="details.status" />
</el-descriptions-item>
......
......@@ -29,7 +29,8 @@
<el-table-column
:label="$t('入仓统计')">
<template v-slot="{row}">
<div>总箱数:{{row.totalNum}}</div>
<div>总箱数:{{row.sumNum}}</div>
<div>体积:{{row.sumVolume}}CBM </div>
<div>重量:{{row.sumWeight}}kg</div>
</template>
......
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