Commit a240066c authored by huhaiqing's avatar huhaiqing

报关/额外费用界面联调

parent b8695a51
......@@ -385,7 +385,7 @@ export function preloadPage(params) {
* 创建预装部分
*
* @export
* @param {*} params
* @param {*} data
* @return {*}
*/
export function createSection(data) {
......@@ -400,7 +400,7 @@ export function createSection(data) {
* 删除预装部分
*
* @export
* @param {*} params
* @param {*} id
* @return {*}
*/
export function deleteSection(id) {
......@@ -414,7 +414,7 @@ export function deleteSection(id) {
* 删除预装货物
*
* @export
* @param {*} params
* @param {*} id
* @return {*}
*/
export function deleteGoods(id) {
......@@ -428,7 +428,7 @@ export function deleteGoods(id) {
* 预装
*
* @export
* @param {*} params
* @param {*} data
* @return {*}
*/
export function createGoods(data) {
......@@ -542,7 +542,7 @@ export function boxUpdate(data) {
* 获取卸柜数据
*
* @export
* @param {*} data
* @param {*} params
* @return {*}
*/
export function loadGoodsList(params) {
......@@ -600,6 +600,70 @@ export function createError(data) {
/***************************** 卸柜 end **********************************/
/***************************** 报关费用 start **********************************/
/**
* 搜索出货单下的订单
*
* @export
* @param {*} data
* @return {*}
*/
export function extraCostOrder(data) {
return request({
url: "/ecw/box-customs-extra-cost/searchByOrderNo",
method: "post",
data,
});
}
/**
* 创建额外报关费用
*
* @export
* @param {*} data
* @return {*}
*/
export function extraCostCreate(data) {
return request({
url: "/ecw/box-customs-extra-cost/create",
method: "post",
data,
});
}
/**
* 更新额外报关费用
*
* @export
* @param {*} data
* @return {*}
*/
export function extraCostUpdate(data) {
return request({
url: "/ecw/box-customs-extra-cost/update",
method: "put",
data,
});
}
/**
* 获得额外报关费用列表
*
* @export
* @param {*} data
* @return {*}
*/
export function extraCostList(params) {
return request({
url: "/ecw/box-customs-extra-cost/list",
method: "get",
params,
});
}
/***************************** 报关费用 end **********************************/
/**
* 服务提示消息回调
*
......
......@@ -30,7 +30,7 @@
<el-button type="primary" @click="onSubmit(1)">保存</el-button>
<el-button type="success" @click="onSubmit(2)">封柜</el-button>
<el-button @click="cancel">关闭</el-button>
<el-button type="danger" @click="startCabinet">开始装柜</el-button>
<el-button type="danger" @click="startCabinet" :disabled="isStartCabinet">开始装柜</el-button>
</el-row>
</div>
</template>
......@@ -104,6 +104,13 @@ export default {
this.dialogVisible = true;
},
},
computed: {
isStartCabinet() {
const { currNode, shipmentObj } = this.$attrs;
const status = shipmentObj[currNode.keyName];
return status === 46 ? true : false;
},
},
};
</script>
......
......@@ -120,14 +120,10 @@
<el-dialog custom-class="shipping-dialog" :title="dialogConfig.title" :visible.sync="dialogConfig.dialogVisible" :fullscreen="dialogConfig.fullscreen" :width="dialogConfig.width" :modal-append-to-body=false append-to-body>
<!-- 已装未装订单 -->
<template v-if="dialogConfig.type === 'orderTable'">
<div style="display: flex;">
<el-table :data="orderList.loadList">
<el-table-column label="已装" align="center" prop="loadTag" />
</el-table>
<el-table :data="orderList.unLoadList">
<el-table-column label="未装" align="center" prop="unloadTag" />
</el-table>
</div>
<el-table :data="orderList" border>
<el-table-column label="已装" align="center" prop="loadTag" />
<el-table-column label="未装" align="center" prop="unloadTag" />
</el-table>
</template>
<!-- 补单 -->
<supplementOrder v-if="dialogConfig.type === 'supplementOrder' && dialogConfig.dialogVisible" v-bind="$attrs" :shipmentObj="shipmentObj" @supplementFinish="supplementFinish" />
......@@ -240,7 +236,7 @@ export default {
fullscreen: false,
},
// 已装/未装
orderList: {},
orderList: [],
// 柜型
cabinetList: [],
// 二维码/条码编号
......@@ -295,14 +291,20 @@ export default {
orderClick(row) {
orderTagList({ orderId: row.orderId }).then((res) => {
const { data = [] } = res;
this.orderList = {
loadList: data.loadList.map((item) => ({
loadTag: item,
})),
unLoadList: data.unLoadList.map((item) => ({
unloadTag: item,
})),
};
this.orderList = [];
// 取最长的list
let dataLength = data.loadList.length;
if (data.unLoadList.length > dataLength) {
dataLength = data.unLoadList.length;
}
// 组装数据,用一个table组件渲染
for (let index = 0; index < dataLength; index++) {
this.orderList.push({
loadTag: data.loadList[index],
unloadTag: data.unLoadList[index],
});
}
});
this.shwoDialog({
type: "orderTable",
......
......@@ -70,31 +70,31 @@
<el-button type="primary" @click="onSubmit(1)">保存</el-button>
<el-button type="success" @click="onSubmit(2)">提交</el-button>
<el-button @click="cancel">关闭</el-button>
<el-button type="primary" @click="extraCost">额外费用</el-button>
<el-button type="primary" @click="extraCost" v-show="cusDeclarationObj.dcCustomsStatus === '2' || cusDeclarationObj.dcCustomsStatus === '3'">额外费用</el-button>
</el-row>
<!-- 对话框 -->
<el-dialog custom-class="shipping-dialog customsClearance" :title="dialogConfig.title" :visible.sync="dialogConfig.dialogVisible" width="700px" :modal-append-to-body=false append-to-body destroy-on-close>
<el-dialog custom-class="shipping-dialog customsClearance" :title="dialogConfig.title" :visible.sync="dialogConfig.dialogVisible" width="700px" :modal-append-to-body=false append-to-body>
<el-row>
<el-row>
<el-form label-width="100px">
<el-form-item label="订单号" class="two-element">
<el-input v-model="orderNo" placeholder="请输入订单号" clearable />
<el-button type="primary" icon="el-icon-search"></el-button>
<el-button type="primary" icon="el-icon-search" @click="searchOrder"></el-button>
</el-form-item>
</el-form>
</el-row>
<el-row>
<el-table :data="[{}]">
<el-table-column label="订单号" align="center" prop="selfNo" />
<el-table-column label="报关费用" align="center" prop="orderFees">
<el-table :data="costOrderList">
<el-table-column label="订单号" align="center" prop="orderNo" />
<el-table-column label="报关费用" align="center" prop="fee">
<template slot-scope="scope">
<el-input v-model="scope.row.orderFees" placeholder="请输入内容" />
<el-input-number v-model="scope.row.fee" controls-position="right" :min="1"></el-input-number>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button type="primary" size="small">确定</el-button>
<el-button type="primary" size="small" @click="createExtraCost(scope.row)">确定</el-button>
</template>
</el-table-column>
</el-table>
......@@ -102,22 +102,22 @@
<el-row class="cost-title">
<div>额外费用订单</div>
<div>
<el-button size="small">重置</el-button>
<el-button size="small" @click="restCostList()">重置</el-button>
</div>
</el-row>
<el-row>
<el-table :data="[{}]">
<el-table :data="costList">
<el-table-column type="selection" width="55" />
<el-table-column label="订单号" align="center" prop="selfNo" />
<el-table-column label="报关费用" align="center" prop="customsFees">
<el-table-column label="订单号" align="center" prop="orderNo" />
<el-table-column label="报关费用" align="center" prop="fee" width="220px">
<template slot-scope="scope">
<el-input v-model="scope.row.customsFees" placeholder="请输入内容" />
<el-input-number v-model="scope.row.fee" controls-position="right" :min="1"></el-input-number>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button type="primary" size="small">修改</el-button>
<el-button size="small">重置</el-button>
<el-button type="primary" size="small" @click="updateExtraCost(scope.row)">修改</el-button>
<el-button size="small" @click="restCostList(scope.row)">重置</el-button>
</template>
</el-table-column>
</el-table>
......@@ -129,7 +129,15 @@
<script>
import supplierSelect from "./common/supplierSelect.vue";
import { customsCreate, serviceMsg } from "@/api/ecw/boxSea";
import {
customsCreate,
serviceMsg,
extraCostList,
extraCostOrder,
extraCostCreate,
extraCostUpdate,
approvalCreate,
} from "@/api/ecw/boxSea";
import { formatNumberString, formatDateStr } from "../utils";
import ImageUpload from "@/components/ImageUpload";
......@@ -157,6 +165,10 @@ export default {
},
// 订单号
orderNo: "",
// 订单列表
costOrderList: [],
// 额外费用列表
costList: [],
};
},
created() {
......@@ -184,13 +196,107 @@ export default {
shipmentId: this.$attrs.shipmentObj.id,
operateType,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel("submit");
});
// 查验
const { dcCustomsStatus, dcCheckStatus } = this.cusDeclarationObj;
if (dcCustomsStatus === "3") {
// 退场/部分退场
if (["1", "2"].includes(dcCheckStatus)) {
approvalCreate({
approvalStatus: 0,
approvalType: dcCheckStatus === "1" ? 5 : 6, // 5报关全退,6报关部分退
shipmentId: this.$attrs.shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel("submit");
});
});
}
} else {
serviceMsg(res, this).then(() => {
this.cancel("submit");
});
}
});
}
});
},
/* 查询订单号 */
searchOrder() {
if (!this.orderNo) {
this.$message.error("请输入订单号");
return;
}
extraCostOrder({
shipmentId: this.$attrs.shipmentObj.id,
orderNo: this.orderNo,
}).then((res) => {
this.costOrderList = [
{
orderNo: this.orderNo,
orderId: res.data,
},
];
this.searchCostList(res.data);
});
},
/* 查询额外费用订单 */
searchCostList(orderId) {
extraCostList({
shipmentId: this.$attrs.shipmentObj.id,
orderId: orderId,
}).then((res) => {
this.costList = res.data.map((item) => {
return { originalFee: item.fee, ...item };
});
});
},
/* 创建额外费用 */
createExtraCost(row) {
if (!row.fee) {
this.$message.error("请输入费用");
return;
}
extraCostCreate({
fee: row.fee,
orderId: row.orderId,
orderNo: row.orderNo,
shipmentId: this.$attrs.shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.searchCostList(row.orderId);
});
});
},
/* 修改额外费用 */
updateExtraCost(row) {
if (!row.fee) {
this.$message.error("请输入费用");
return;
}
extraCostUpdate(row).then((res) => {
serviceMsg(res, this).then(() => {
this.searchCostList(row.orderId);
});
});
},
/* 重置 */
restCostList(row) {
this.costList = this.costList.map((item) => {
if (row && row.id === item.id) {
return {
...item,
fee: item.originalFee,
};
}
if (!row) {
return {
...item,
fee: item.originalFee,
};
}
return item;
});
},
/** 取消 */
cancel(type) {
this.$emit("closeDialog", type);
......@@ -203,7 +309,12 @@ export default {
},
// 额外费用
extraCost() {
this.$set(this.dialogConfig, "title", "自编号");
const { shipmentObj } = this.$attrs;
// 清空额外费用
this.orderNo = "";
this.costOrderList = [];
this.costList = [];
this.$set(this.dialogConfig, "title", `${shipmentObj.selfNo} 报关费用`);
this.$set(this.dialogConfig, "dialogVisible", true);
},
// 计算VGM重量
......
......@@ -16,7 +16,7 @@
import { approvalCreate, serviceMsg } from "@/api/ecw/boxSea";
/**
* 预装反审
* 反审
*/
export default {
name: "review",
......@@ -32,11 +32,12 @@ export default {
onSubmit() {
this.$refs["reviewForm"].validate((valid) => {
if (valid) {
const { currNode, shipmentObj } = this.$attrs;
approvalCreate({
shipmentId: this.$attrs.shipmentObj.id,
shipmentId: shipmentObj.id,
...this.reviewObj,
approvalStatus: 0,
approvalType: 4, // 预装反审
approvalType: currNode.type === "preinstall" ? 4 : 7, // 4预装反审 7卸柜反审核
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel("submit");
......
......@@ -16,7 +16,7 @@
<el-button type="primary" @click="onSubmit(1)">保存</el-button>
<el-button type="success" @click="onSubmit(2)">提交</el-button>
<el-button @click="cancel">关闭</el-button>
<el-button type="danger" @click="startUnloading">开始卸柜</el-button>
<el-button type="danger" @click="startUnloading" :disabled="isStartUnloading">开始卸柜</el-button>
</el-row>
<!-- 开始卸柜 -->
......@@ -91,6 +91,13 @@ export default {
this.dialogVisible = true;
},
},
computed: {
isStartUnloading() {
const { currNode, shipmentObj } = this.$attrs;
const status = shipmentObj[currNode.keyName];
return status === 146 ? true : false;
},
},
};
</script>
......
......@@ -32,7 +32,6 @@
import bookingWidget from "./nodePage/booking.vue";
import trailerWidget from "./nodePage/trailer.vue";
import preinstallWidget from "./nodePage/preinstall.vue";
import preinstallReviewWidget from "./nodePage/preinstallReview.vue";
import agentWidget from "./nodePage/agent.vue";
import cabinetWidget from "./nodePage/cabinet/index.vue";
import cusDeclarationWidget from "./nodePage/cusDeclaration.vue";
......@@ -46,6 +45,7 @@ import arrivalWidget from "./nodePage/arrival.vue";
import cusClearanceWidget from "./nodePage/cusClearance.vue";
import unloadingWidget from "./nodePage/unloading/index.vue";
import settlementWidget from "./nodePage/settlement.vue";
import ReviewWidget from "./nodePage/review.vue";
/**
* 海运流程图
......@@ -70,7 +70,7 @@ export default {
cusClearanceWidget,
unloadingWidget,
settlementWidget,
preinstallReviewWidget,
ReviewWidget,
},
props: {
shipmentObj: Object,
......@@ -129,15 +129,24 @@ export default {
// 预装
case "preinstall":
// 预装反审
const status = this.shipmentObj[node.keyName];
if ([23, 24].includes(status)) {
this.currentComponent = `preinstallReviewWidget`;
const preStatus = this.shipmentObj[node.keyName];
if ([23, 24].includes(preStatus)) {
this.currentComponent = `ReviewWidget`;
this.$set(this.dialogConfig, "width", "700px");
this.$set(this.dialogConfig, "title", "预装反审");
} else {
this.$set(this.dialogConfig, "fullscreen", true);
this.$set(this.dialogConfig, "title", "出货安排(预装)");
}
// 卸柜
case "unloading":
// 卸柜反审
const unStatus = this.shipmentObj[node.keyName];
if ([144, 145].includes(unStatus)) {
this.currentComponent = `ReviewWidget`;
this.$set(this.dialogConfig, "width", "700px");
this.$set(this.dialogConfig, "title", "卸柜反审");
}
break;
}
this.$set(this.dialogConfig, "dialogVisible", true);
......@@ -192,9 +201,10 @@ export default {
<style lang="scss">
.app-seaProcess {
.shipping-chart {
width: max-content;
display: flex;
padding: 10px 0;
padding: 10px 10px;
min-width: 1320px;
.chart-nodes {
display: flex;
align-items: center;
......
<template>
<div class="app-seaStepDetail">
<el-scrollbar :vertical="true">
<div class="shipping-step">
<template v-for="(step, index) in flatSeaStep">
<div :key="index" v-if="shipmentObj[step.voName] && columnsMapping[step.voName]" class="step-table">
<div class="step-title">{{step.title}}</div>
<div v-for="(data, index) in columnsMapping[step.voName]" :key="index" class="step-content">
<p>{{data.title}}</p>
<p>{{getObjInfo(step.voName, data)}}</p>
</div>
<el-scrollbar :vertical="true" viewClass="shipping-step">
<!-- <div class="shipping-step"> -->
<template v-for="(step, index) in flatSeaStep">
<div :key="index" v-if="shipmentObj[step.voName] && columnsMapping[step.voName]" class="step-table">
<div class="step-title">{{step.title}}</div>
<div v-for="(data, index) in columnsMapping[step.voName]" :key="index" class="step-content">
<p>{{data.title}}</p>
<p>{{getObjInfo(step.voName, data)}}</p>
</div>
</template>
</div>
</div>
</template>
<!-- </div> -->
</el-scrollbar>
</div>
</template>
......@@ -30,348 +30,7 @@ export default {
data() {
return {
flatSeaStep: this.seaBaseData.flat(),
columnsMapping: {
bookSeaInfo: [
{
title: "SO NO",
key: "sono",
},
{
title: "船公司类型",
key: "shipCompanyType",
type: "supplier",
},
{
title: "驳船港",
key: "bargePortId",
type: "dock",
},
{
title: "大船港",
key: "bigPortId",
type: "dock",
},
{
title: "目的港",
key: "destPortId",
type: "dock",
},
{
title: "订舱公司",
key: "spaceCompanyId",
type: "supplier",
},
{
title: "预计驳船时间",
key: "bargeTime",
type: "date",
},
{
title: "预计开船时间",
key: "sailTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
preInstallInfo: [
{
title: "预装时间",
key: "createTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
trailerInfo: [
{
title: "货柜号",
key: "tlContainerNo",
},
{
title: "封条",
key: "tlStripSeal",
},
{
title: "拖车公司",
key: "tlCompanyId",
type: "supplier",
},
{
title: "拖车时间",
key: "tlTime",
type: "date",
},
{
title: "车牌",
key: "tlLicensePlate",
},
{
title: "司机",
key: "tlDriver",
},
{
title: "联系方式",
key: "tlDriverContact",
},
{
title: "业务员",
key: "operator",
},
],
agentInfo: [
{
title: "代理商",
key: "agentId",
type: "supplier",
},
{
title: "业务员",
key: "operator",
},
],
cabinetInfo: [
{
title: "到仓时间",
key: "ldInWarehouseTime",
type: "date",
},
{
title: "仓库类型",
key: "ldWarehouseType",
type: "warehouse",
},
{
title: "装柜时间",
key: "ldBoxTime",
type: "date",
},
{
title: "出仓时间",
key: "ldOutWarehouseTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
customsInfo: [
{
title: "报关方式",
key: "dcCustomsType",
type: "shipping_customs_type",
},
{
title: "报关行公司",
key: "dcCompanyId",
type: "supplier",
},
{
title: "截关时间",
key: "dcCutOffTime",
type: "date",
},
{
title: "状态",
key: "dcCustomsStatus",
type: "shipping_dcCustoms_status",
},
{
title: "放行时间",
key: "dcPassTime",
type: "date",
},
{
title: "新封条",
key: "dcStripSeal",
},
{
title: "柜重",
key: "dcBoxWgt",
},
{
title: "货重",
key: "dcGoodsWgt",
},
{
title: "VGM重量",
key: "dcVgmWgt",
},
{
title: "业务员",
key: "operator",
},
],
shipConfigInfo: [
{
title: "已配/免配",
key: "saExmtStatus",
type: "saExmtStatus",
},
{
title: "业务员",
key: "operator",
},
],
ladingBillInfo: [
{
title: "清关代理",
key: "agentId",
type: "supplier",
},
{
title: "提单品名",
key: "blMblNo",
},
{
title: "通知方",
key: "notifyingId",
},
{
title: "提单备注",
key: "remarks",
},
{
title: "数量",
key: "packageNum",
},
{
title: "体积",
key: "cbm",
},
{
title: "业务员",
key: "operator",
},
],
bargeInfo: [
{
title: "驳船",
key: "bgExmtStatus",
type: "bgExmtStatus",
},
{
title: "业务员",
key: "operator",
},
],
shippingInfo: [
{
title: "实际开船时间",
key: "dtRealShipTime",
type: "datetime",
},
{
title: "预计到港时间",
key: "dtEstArrivalTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
clearanceDocInfo: [
{
title: "agent list",
key: "cdAgentlistType",
type: "isFile",
},
{
title: "soncap",
key: "cdSoncapType",
type: "isFile",
},
{
title: "出单方式",
key: "cdOutBillType",
type: "billingMethod",
},
{
title: "寄送时间",
key: "cdSendTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
arrivalInfo: [
{
title: "实际到港时间",
key: "apRealTime",
type: "datetime",
},
{
title: "确认到港",
key: "apConfirmTime",
type: "datetime",
},
{
title: "卸港时间",
key: "apUnloadPortTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
clearanceInfo: [
{
title: "预计清关时间",
key: "clEstTime",
type: "date",
},
{
title: "清关时间",
key: "clClearTime",
type: "datetime",
},
{
title: "业务员",
key: "operator",
},
],
cabinetUnloadInfo: [
{
title: "到仓时间",
key: "ulWarehouseTime",
type: "date",
},
{
title: "卸货时间",
key: "ulBoxTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
settlementInfo: [
{
title: "可结算",
key: "slSettlementTime",
type: "date",
},
{
title: "已结算",
key: "slSettledTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
},
columnsMapping: _C.getColmnMapping(),
};
},
methods: {
......@@ -445,6 +104,8 @@ export default {
flex-wrap: wrap;
align-content: flex-start;
height: 550px;
min-width: 1300px;
padding: 10px 10px;
p {
margin: 0;
......
import dayjs from "dayjs";
/**
* 节点状态值
*
* @return {*}
*/
function getStatusName() {
const statusName = new Map();
......@@ -63,6 +68,11 @@ function getStatusName() {
return statusName;
}
/**
* 海运流程
*
* @return {*}
*/
function seaBaseData() {
return [
[
......@@ -400,6 +410,359 @@ function seaBaseData() {
];
}
/**
* 详情显示列
*
* @return {*}
*/
function getColmnMapping() {
return {
bookSeaInfo: [
{
title: "SO NO",
key: "sono",
},
{
title: "船公司类型",
key: "shipCompanyType",
type: "supplier",
},
{
title: "驳船港",
key: "bargePortId",
type: "dock",
},
{
title: "大船港",
key: "bigPortId",
type: "dock",
},
{
title: "目的港",
key: "destPortId",
type: "dock",
},
{
title: "订舱公司",
key: "spaceCompanyId",
type: "supplier",
},
{
title: "预计驳船时间",
key: "bargeTime",
type: "date",
},
{
title: "预计开船时间",
key: "sailTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
preInstallInfo: [
{
title: "预装时间",
key: "createTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
trailerInfo: [
{
title: "货柜号",
key: "tlContainerNo",
},
{
title: "封条",
key: "tlStripSeal",
},
{
title: "拖车公司",
key: "tlCompanyId",
type: "supplier",
},
{
title: "拖车时间",
key: "tlTime",
type: "date",
},
{
title: "车牌",
key: "tlLicensePlate",
},
{
title: "司机",
key: "tlDriver",
},
{
title: "联系方式",
key: "tlDriverContact",
},
{
title: "业务员",
key: "operator",
},
],
agentInfo: [
{
title: "代理商",
key: "agentId",
type: "supplier",
},
{
title: "业务员",
key: "operator",
},
],
cabinetInfo: [
{
title: "到仓时间",
key: "ldInWarehouseTime",
type: "date",
},
{
title: "仓库类型",
key: "ldWarehouseType",
type: "warehouse",
},
{
title: "装柜时间",
key: "ldBoxTime",
type: "date",
},
{
title: "出仓时间",
key: "ldOutWarehouseTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
customsInfo: [
{
title: "报关方式",
key: "dcCustomsType",
type: "shipping_customs_type",
},
{
title: "报关行公司",
key: "dcCompanyId",
type: "supplier",
},
{
title: "截关时间",
key: "dcCutOffTime",
type: "date",
},
{
title: "状态",
key: "dcCustomsStatus",
type: "shipping_dcCustoms_status",
},
{
title: "放行时间",
key: "dcPassTime",
type: "date",
},
{
title: "新封条",
key: "dcStripSeal",
},
{
title: "柜重",
key: "dcBoxWgt",
},
{
title: "货重",
key: "dcGoodsWgt",
},
{
title: "VGM重量",
key: "dcVgmWgt",
},
{
title: "业务员",
key: "operator",
},
],
shipConfigInfo: [
{
title: "已配/免配",
key: "saExmtStatus",
type: "saExmtStatus",
},
{
title: "业务员",
key: "operator",
},
],
ladingBillInfo: [
{
title: "清关代理",
key: "agentId",
type: "supplier",
},
{
title: "提单品名",
key: "blMblNo",
},
{
title: "通知方",
key: "notifyingId",
},
{
title: "提单备注",
key: "remarks",
},
{
title: "数量",
key: "packageNum",
},
{
title: "体积",
key: "cbm",
},
{
title: "业务员",
key: "operator",
},
],
bargeInfo: [
{
title: "驳船",
key: "bgExmtStatus",
type: "bgExmtStatus",
},
{
title: "业务员",
key: "operator",
},
],
shippingInfo: [
{
title: "实际开船时间",
key: "dtRealShipTime",
type: "datetime",
},
{
title: "预计到港时间",
key: "dtEstArrivalTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
clearanceDocInfo: [
{
title: "agent list",
key: "cdAgentlistType",
type: "isFile",
},
{
title: "soncap",
key: "cdSoncapType",
type: "isFile",
},
{
title: "出单方式",
key: "cdOutBillType",
type: "billingMethod",
},
{
title: "寄送时间",
key: "cdSendTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
arrivalInfo: [
{
title: "实际到港时间",
key: "apRealTime",
type: "datetime",
},
{
title: "确认到港",
key: "apConfirmTime",
type: "datetime",
},
{
title: "卸港时间",
key: "apUnloadPortTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
clearanceInfo: [
{
title: "预计清关时间",
key: "clEstTime",
type: "date",
},
{
title: "清关时间",
key: "clClearTime",
type: "datetime",
},
{
title: "业务员",
key: "operator",
},
],
cabinetUnloadInfo: [
{
title: "到仓时间",
key: "ulWarehouseTime",
type: "date",
},
{
title: "卸货时间",
key: "ulBoxTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
settlementInfo: [
{
title: "可结算",
key: "slSettlementTime",
type: "date",
},
{
title: "已结算",
key: "slSettledTime",
type: "date",
},
{
title: "业务员",
key: "operator",
},
],
};
}
/**
* 常量字典
*/
const constantDict = {
// 配船状态
saExmtStatus: [
......@@ -447,6 +810,13 @@ const constantDict = {
],
};
/**
* string format number
*
* @param {*} obj
* @param {*} keys
* @return {*}
*/
function formatStringNumber(obj, keys) {
for (const [key, value] of Object.entries(obj)) {
if (keys.includes(key) && !Number.isNaN(Number(value))) {
......@@ -456,6 +826,13 @@ function formatStringNumber(obj, keys) {
return obj;
}
/**
* number format string
*
* @param {*} obj
* @param {*} keys
* @return {*}
*/
function formatNumberString(obj, keys) {
for (const [key, value] of Object.entries(obj)) {
if (keys.includes(key) && value) {
......@@ -465,6 +842,14 @@ function formatNumberString(obj, keys) {
return obj;
}
/**
* stringDate format Date
*
* @param {*} obj
* @param {*} keys
* @param {string} [format="YYYY-MM-DD"]
* @return {*}
*/
function formatDateStr(obj, keys, format = "YYYY-MM-DD") {
for (const [key, value] of Object.entries(obj)) {
if (keys.includes(key) && dayjs(value).isValid()) {
......@@ -487,6 +872,7 @@ export const fileTypes = [
export {
getStatusName,
getColmnMapping,
seaBaseData,
constantDict,
formatStringNumber,
......
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