Commit 75fb143a authored by 邓春圆's avatar 邓春圆

Merge remote-tracking branch 'origin/dev' into dev

parents e28900f5 5b817927
......@@ -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,
});
}
/**
* 出货审核
*
......
......@@ -1142,7 +1142,7 @@
"手续费(RMB)": "Handling fee (RMB)",
"需要": "need",
"不需要": "unnecessary",
"美元": "Dollar",
"元": "RMB",
"银行收款明细": "Bank Receipt Details",
"批量核销": "Batch write-off",
"添加收款明细": "Add Receipt Details",
......
......@@ -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("供应商自提"),
},
],
};
/**
......
......@@ -990,7 +990,7 @@
// this.productId1 = this.handlerParams.productId
// this.productId2 = this.handlerParams.productId
// }
if(this.orderExceptionData.orderExceptionType=='not_shipping_channel_exception'){
if(this.orderExceptionData.orderExceptionType=='not_shipping_channel_exception'||this.orderExceptionData.orderExceptionType=='channel_exception'){
this.getOpenedRouterList()
}
......
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