Commit bad77116 authored by huhaiqing's avatar huhaiqing

海运出货开发

parent 62288d09
......@@ -334,6 +334,21 @@ export function approvalCreate(data) {
});
}
/**
* 取消审核
*
* @export
* @param {*} data
* @return {*}
*/
export function approvalCancel(data) {
return request({
url: `/ecw/box-approval/cancel`,
method: "delete",
data,
});
}
/**
* 异常登记
*
......
......@@ -280,11 +280,10 @@ export default {
},
/** 删除按钮操作 */
handleDelete(row) {
const id = row.id;
this.$modal
.confirm('是否确认删除出货编号为"' + id + '"的数据项?')
.confirm(`是否确认删除出货编号为 ${row.selfNo} 的数据项?`)
.then(function () {
return deletebox(id);
return deletebox(row.id);
})
.then(() => {
this.getList();
......
......@@ -9,9 +9,7 @@
<el-button size="small" @click="handleCommand('router')">操作</el-button>
<el-button type="primary" size="small" @click="handleCommand('error')">异常登记</el-button>
<el-button type="primary" size="small" @click="handleCommand('cost')">费用登记</el-button>
<el-popconfirm title="确定是否删除" @confirm="handleCommand('delete')" style="marginLeft:10px;">
<el-button type="danger" size="small" slot="reference">删除</el-button>
</el-popconfirm>
<el-button type="danger" size="small" @click="handleCommand('delete')">删除</el-button>
</div>
</div>
<el-card style="margin-top: 15px">
......@@ -22,10 +20,10 @@
<el-descriptions-item label="运输方式">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="shipmentObj.transportType" />
</el-descriptions-item>
<el-descriptions-item label="出货渠道" v-if="shipmentObj.transportType !== '2'">
<!-- <el-descriptions-item label="出货渠道">
{{getShipChannelName(shipmentObj.shippingChannelId)}}
</el-descriptions-item>
<el-descriptions-item label="柜型" v-if="shipmentObj.transportType === '2'">
</el-descriptions-item> -->
<el-descriptions-item label="柜型">
{{getCabinetLabel(shipmentObj.cabinetId)}}
</el-descriptions-item>
<el-descriptions-item label="状态">
......@@ -66,7 +64,11 @@
</div>
<el-table :data="sectionObj.sectionOrderList" style="width: 100%" border>
<el-table-column type="index" align="center" label="序号" width="50" />
<el-table-column prop="orderNo" label="订单号" align="center"></el-table-column>
<el-table-column prop="orderNo" label="订单号" align="center">
<template v-slot="scope">
<a href="javascript:void(0)" @click="jumpOrderDetail(scope.row)">{{ scope.row.orderNo }}</a>
</template>
</el-table-column>
<el-table-column prop="goodsList" label="货物信息" width="250px" align="center">
<template v-slot="{row}">
<section>
......@@ -354,6 +356,13 @@ export default {
});
});
},
/* 跳转订单详情 */
jumpOrderDetail(row) {
this.$router.push({
path: "/order/detail",
query: { orderId: row.orderId },
});
},
// 事件执行
handleCommand(type) {
switch (type) {
......@@ -378,11 +387,28 @@ export default {
this.$set(this.dialogConfig, "type", "error");
break;
case "delete":
deletebox(this.shipmentId).then((res) => {
serviceMsg(res, this).then((res) => {
this.$router.push("/shipment/boxSea");
});
});
this.$modal
.confirm(
`是否确认删除出货编号为 ${this.shipmentObj.selfNo} 的数据项?`
)
.then(() => {
return deletebox(this.shipmentId);
})
.then((res) => {
serviceMsg(res, this).then((res) => {
// 获取当前path
const currPath = this.$router.currentRoute.path;
// 根据path获取view
const view = this.visitedViews.find(
(item) => item.path === currPath
);
if (view) {
this.$store.dispatch("tagsView/delView", view);
this.$router.push("/shipment/boxSea");
}
});
})
.catch(() => {});
break;
}
},
......@@ -404,6 +430,9 @@ export default {
formatDate,
},
computed: {
visitedViews() {
return this.$store.state.tagsView.visitedViews;
},
// 单证状态
getDocStatus() {
return (list = []) => {
......
......@@ -204,7 +204,7 @@ export default {
/* 是否显示卸柜箱数 */
isShowColumn() {
return (shippingVO) => {
return getSeaStatus(shippingVO) >= 142 ? true : false;
return getSeaStatus(shippingVO) >= 182 ? true : false;
};
},
},
......
<template>
<el-select filterable :value="value" @change="change" v-bind="$attrs">
<el-select filterable :value="value" @change="change" v-bind="$attrs" clearable>
<el-option v-for="dock in getDock" :key="dock.id" :label="dock.titleZh" :value="dock.id"></el-option>
</el-select>
</template>
......
<template>
<el-select filterable :value="value" @change="change" v-bind="$attrs">
<el-select filterable :value="value" @change="change" v-bind="$attrs" clearable>
<el-option v-for="supplier in getSuppliers" :key="supplier.id" :label="supplier.companyZh" :value="supplier.id"></el-option>
</el-select>
</template>
......
<template>
<el-select filterable :value="value" @change="change" v-bind="$attrs">
<el-select filterable :value="value" @change="change" v-bind="$attrs" clearable>
<el-option v-for="user in getUser" :key="user.id" :value="user.id" :label="user.nickname"></el-option>
</el-select>
</template>
......@@ -12,7 +12,7 @@ export default {
name: "userSelect",
inheritAttrs: false,
props: {
value: Number,
value: Number | Array,
allUsers: Array,
},
model: {
......
......@@ -260,7 +260,7 @@
</el-card>
<!-- 操作员 -->
<el-row style="margin-top: 15px">
<el-row style="margin-top: 15px" v-show="!isAudit">
<el-row>
<el-form ref="operatorForm" :model="operatorData" size="small" :inline="true" label-width="120px" :rules="rules">
<el-form-item label="目的地操作员" prop="noticeUser">
......@@ -268,10 +268,37 @@
</el-form-item>
</el-form>
</el-row>
<el-row style="margin-top: 10px">
<el-row>
<el-button type="primary" @click="onSubmit">提交申请</el-button>
</el-row>
</el-row>
<!-- 审核流程 -->
<el-row class="process-area" v-show="isAudit">
<div class="process">
<div>审批流程</div>
<div>流程图</div>
</div>
<!-- <div class="copy-user">
<div>
<label class="el-form-item__label">抄送</label>
<userSelect v-model="copyUser" placeholder="请选择抄送人" :allUsers="this.$attrs.allUsers" size="small" multiple collapse-tags />
</div>
<div>
<label class="el-form-item__label">抄送人</label>
<div class="copyUser-tag">
<el-tag v-for="user in copyUsers" :key="user.id" closable @close="removeCopyUser(user)">
{{user.nickname}}
</el-tag>
</div>
</div>
</div> -->
<div>
<el-button type="primary" :disabled=true>审核中</el-button>
<el-button type="primary" @click="canclAudit">取消审核</el-button>
<el-button type="primary" @click="closeDialog">返回</el-button>
</div>
</el-row>
</div>
</template>
......@@ -285,6 +312,7 @@ import {
createGoods,
deleteGoods,
approvalCreate,
approvalCancel,
} from "@/api/ecw/boxSea";
import userSelect from "./common/userSelect.vue";
import { formatDate, getTotlContent, serviceMsg } from "../utils";
......@@ -336,6 +364,10 @@ export default {
},
// 出货信息
shipmentObj: this.$attrs.shipmentObj,
// 抄送人
copyUser: undefined,
// 抄送人数组
copyUsers: [],
};
},
computed: {
......@@ -351,6 +383,11 @@ export default {
(item) => item.tradeType == "1" || item.type == "3"
);
},
/* 是否审核中 */
isAudit() {
const { currNode, shipmentObj } = this.$attrs;
return shipmentObj[currNode.keyName] === 23;
},
},
created() {
// 查询待预装
......@@ -504,7 +541,7 @@ export default {
orderId: item.orderId,
};
if (type === "all") {
params.orderItemIdList = item.orderItemList.map(
params.orderItemIdList = item.boxOrderItemList.map(
(data) => data.orderItemId
);
} else {
......@@ -544,6 +581,7 @@ export default {
this.pageParam.pageNo = 1;
this.getPreLoad();
},
/* 获取参数 */
getParams() {
const { rucangtime = [] } = this.queryParams;
return {
......@@ -556,6 +594,39 @@ export default {
: rucangtime[1],
};
},
/* 删除抄送人 */
removeCopyUser(user) {
this.copyUser = this.copyUser.filter((id) => id !== user.id);
},
/* 关闭弹框 */
closeDialog() {
this.$emit("closeDialog");
},
/* 取消审核 */
canclAudit() {
const { currNode, shipmentObj } = this.$attrs;
const { voName } = currNode;
approvalCancel({
id: shipmentObj[voName].id,
shipmentId: shipmentObj.id,
applyReason: "取消审核",
}).then((res) => {
serviceMsg(res, this).then(() => {
this.$emit("closeDialog", "submit");
});
});
},
},
watch: {
copyUser(val) {
const { allUsers } = this.$attrs;
let users = [];
for (const id of val) {
const user = allUsers.find((item) => item.id === id);
if (user) users.push(user);
}
this.copyUsers = users;
},
},
};
</script>
......@@ -638,6 +709,7 @@ export default {
}
.preinstall-card {
min-height: 550px;
.el-card__body {
height: 100%;
......@@ -646,5 +718,39 @@ export default {
}
}
}
.process-area {
margin-top: 15px;
padding-bottom: 30px;
.process {
display: flex;
flex-direction: column;
> :first-child {
color: #606266;
font-weight: bolder;
font-size: 16px;
}
> :last-child {
height: 300px;
}
}
.copy-user {
margin-bottom: 15px;
> div {
display: flex;
align-items: center;
}
> :last-child {
.copyUser-tag {
display: flex;
flex-wrap: wrap;
> span {
margin-right: 10px;
}
}
}
}
}
}
</style>
......@@ -61,7 +61,7 @@ export default {
if (operateType === 2) {
const { keyName } = this.$attrs.currNode;
const ulStatus = this.$attrs.shipmentObj[keyName];
if (ulStatus !== 145) {
if (ulStatus !== 185) {
this.$message.error("请先通过卸柜审批");
return;
}
......@@ -95,7 +95,7 @@ export default {
isStartUnloading() {
const { currNode, shipmentObj } = this.$attrs;
const status = shipmentObj[currNode.keyName];
return status === 146 ? true : false;
return status === 186 ? true : false;
},
},
};
......
......@@ -15,12 +15,12 @@
<!-- 当前部分 -->
<el-row class="number-area">
<p class="label-font">当前部分:</p>
<el-select v-model="currPart" placeholder="请选择当前部分">
<el-select placeholder="请选择" v-model="sectionId" @change="sectionChange">
<el-option key="0" label="全部" value="0"></el-option>
<el-option v-for="item in sectionList" :key="item.id" :label="item.title" :value="item.id"></el-option>
</el-select>
<p>
<span>无返回 箱</span>
<span>无返回 m3</span>
<span>无返回 kg</span>
{{getSectionInfo}}
</p>
</el-row>
......@@ -94,8 +94,9 @@ import {
batchUnload,
allUnload,
approvalCreate,
getSectionList,
} from "@/api/ecw/boxSea";
import { serviceMsg } from "../../utils";
import { serviceMsg, getTotlContent } from "../../utils";
/**
* 开始卸柜
......@@ -120,18 +121,36 @@ export default {
selfNo: this.$attrs.shipmentObj.selfNo,
// 当前行
currRow: {},
// 部分
sectionList: [],
// 已选部分
sectionId: "0",
// 部分订单商品
sectionObj: {
secStatistics: {},
sectionOrderList: [],
totalStatistics: {},
},
};
},
created() {
this.getLoadGoodsList();
// 部分
getSectionList({ shipmentId: this.$attrs.shipmentObj.id }).then((res) => {
this.sectionList = res.data.map((item, index) => {
return {
...item,
title: `第${index + 1}部分`,
};
});
});
},
methods: {
/* 获取卸柜数据 */
getLoadGoodsList(params) {
getLoadGoodsList() {
this.loading = true;
params = {
secId: 0,
...params,
let params = {
secId: this.sectionId,
shipmentId: this.$attrs.shipmentObj.id,
};
loadGoodsList(params).then((res) => {
......@@ -208,6 +227,21 @@ export default {
return "未清关";
}
},
// 部分切换
sectionChange() {
this.getLoadGoodsList();
},
},
computed: {
// 部分信息
getSectionInfo() {
const { totalStatistics, secStatistics } = this.pageData;
if (!this.sectionId) {
return getTotlContent(totalStatistics);
} else {
return getTotlContent(secStatistics);
}
},
},
};
</script>
......
......@@ -5,13 +5,10 @@
<div v-for="(nodes,index) in seaBaseData" :key="index" class="chart-nodes">
<div class="node-area">
<div v-for="node in nodes" :key="node.title" @click="nodeClick(index, node)" class="node-div">
<template v-if="!node.unNode">
<div v-show="isShowAgent(node.type)">
<img :src="getImgSrc(node)" alt="">
<p>{{node.title}}</p>
</template>
<template v-else-if="node.unNode">
<el-button type="primary" @click="nodeClick(index, node)" style="width:100px;">{{node.title}}</el-button>
</template>
</div>
</div>
</div>
<div class="arrow-area" v-if="index !== (seaBaseData.length-1)">
......@@ -77,6 +74,7 @@ export default {
seaBaseData: Array,
},
data() {
console.log(this.$store.state.user);
return {
// 弹窗配置
dialogConfig: {
......@@ -94,6 +92,20 @@ export default {
};
},
created() {},
computed: {
isShowAgent() {
return (type) => {
if (type === "agent") {
const { preInstallInfo } = this.shipmentObj;
const user = this.$store.state.user;
if (preInstallInfo && preInstallInfo.noticeUser === user.id)
return true;
return false;
}
return true;
};
},
},
methods: {
/** 关闭弹窗 */
closeDialog(type) {
......@@ -130,7 +142,7 @@ export default {
case "preinstall":
// 预装反审
const preStatus = this.shipmentObj[node.keyName];
if ([23, 24].includes(preStatus)) {
if ([24, 25].includes(preStatus)) {
this.currentComponent = `ReviewWidget`;
this.$set(this.dialogConfig, "width", "700px");
this.$set(this.dialogConfig, "title", "预装反审");
......@@ -142,7 +154,7 @@ export default {
case "unloading":
// 卸柜反审
const unStatus = this.shipmentObj[node.keyName];
if ([144, 145].includes(unStatus)) {
if ([184, 185].includes(unStatus)) {
this.currentComponent = `ReviewWidget`;
this.$set(this.dialogConfig, "width", "700px");
this.$set(this.dialogConfig, "title", "卸柜反审");
......
......@@ -12,9 +12,10 @@ function getStatusName(statu) {
statusName.set(12, "已订舱");
statusName.set(21, "未预装");
statusName.set(22, "预装审核中");
statusName.set(23, "预装审核失败");
statusName.set(24, "预装审核成功");
statusName.set(22, "预装中");
statusName.set(23, "预装审核中");
statusName.set(24, "预装审核失败");
statusName.set(25, "预装审核成功");
statusName.set(31, "未派车");
statusName.set(32, "已派车");
......@@ -54,16 +55,16 @@ function getStatusName(statu) {
statusName.set(131, "未清关");
statusName.set(132, "已清关");
statusName.set(141, "未卸柜");
statusName.set(142, "卸柜中");
statusName.set(143, "卸柜审核中");
statusName.set(144, "卸柜审核失败");
statusName.set(145, "卸柜审核成功");
statusName.set(146, "已卸柜");
statusName.set(181, "未卸柜");
statusName.set(182, "卸柜中");
statusName.set(183, "卸柜审核中");
statusName.set(184, "卸柜审核失败");
statusName.set(185, "卸柜审核成功");
statusName.set(186, "已卸柜");
statusName.set(151, "未结算");
statusName.set(152, "结算中");
statusName.set(153, "已结算");
statusName.set(191, "未结算");
statusName.set(192, "结算中");
statusName.set(193, "已结算");
return statusName.get(statu);
}
......@@ -107,14 +108,14 @@ function seaBaseData() {
type: "preinstall",
dataKey: "2", // 字典数据键值
/**
* 预装状态:21、未预装;22、预装审核中;23、预装审核失败;24、预装审核成功
* 预装状态:21、未预装;22、预装中;23、预装审核中;24、预装审核失败;25、预装审核成功
*/
voName: "preInstallInfo",
keyName: "prStatus",
status: {
start: [21],
wait: [22, 23],
end: [24],
wait: [22, 23, 24],
end: [25],
},
},
{
......@@ -374,14 +375,14 @@ function seaBaseData() {
type: "unloading",
dataKey: "14", // 字典数据键值
/**
* 卸柜状态:141、未卸柜;142、卸柜中;143、卸柜审核中;144、卸柜审核失败;145、卸柜审核成功;146、已卸柜
* 卸柜状态:181、未卸柜;182、卸柜中;183、卸柜审核中;184、卸柜审核失败;185、卸柜审核成功;186、已卸柜
*/
voName: "cabinetUnloadInfo",
keyName: "ulStatus",
status: {
start: [141],
wait: [142, 143, 144, 145],
end: [146],
start: [181],
wait: [182, 183, 184, 185],
end: [186],
},
},
],
......@@ -396,14 +397,14 @@ function seaBaseData() {
type: "settlement",
dataKey: "15", // 字典数据键值
/**
* 结算状态:151、未结算;152、结算中;153、已结算
* 结算状态:191、未结算;192、结算中;193、已结算
*/
voName: "settlementInfo",
keyName: "slStatus",
status: {
start: [151],
wait: [152],
end: [153],
start: [191],
wait: [192],
end: [193],
},
},
],
......
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