Commit d26dac3e authored by huhaiqing's avatar huhaiqing

开始卸柜/卸柜异常开发

parent c84801c0
...@@ -521,6 +521,70 @@ export function boxUpdate(data) { ...@@ -521,6 +521,70 @@ export function boxUpdate(data) {
/***************************** 装柜 end **********************************/ /***************************** 装柜 end **********************************/
/***************************** 卸柜 start **********************************/
/**
* 获取卸柜数据
*
* @export
* @param {*} data
* @return {*}
*/
export function loadGoodsList(params) {
return request({
url: "/ecw/box-preload-goods/loadGoodsList",
method: "get",
params,
});
}
/**
* 批量卸柜
*
* @export
* @param {*} data
* @return {*}
*/
export function batchUnload(data) {
return request({
url: "/ecw/box-load-info/batchUnload",
method: "post",
data,
});
}
/**
* 一键卸柜
*
* @export
* @param {*} data
* @return {*}
*/
export function allUnload(data) {
return request({
url: "/ecw/box-load-info/allUnload",
method: "post",
data,
});
}
/**
* 异常
*
* @export
* @param {*} data
* @return {*}
*/
export function createError(data) {
return request({
url: "/ecw/box-cabinet-unload-abnormal/create",
method: "post",
data,
});
}
/***************************** 卸柜 end **********************************/
/** /**
* 服务提示消息回调 * 服务提示消息回调
* *
......
...@@ -162,6 +162,7 @@ export const DICT_TYPE = { ...@@ -162,6 +162,7 @@ export const DICT_TYPE = {
BOX_SHIPPING_CUSTOMS_TYPE: 'shipping_customs_type', // 报关方式 BOX_SHIPPING_CUSTOMS_TYPE: 'shipping_customs_type', // 报关方式
BOX_SHIPPING_DCCUSTOMS_STATUS: 'shipping_dcCustoms_status', // 报关放行状态 BOX_SHIPPING_DCCUSTOMS_STATUS: 'shipping_dcCustoms_status', // 报关放行状态
BOX_SHIPPING_CHECK_STATUS: 'shipping_check_status', // 查验状态 BOX_SHIPPING_CHECK_STATUS: 'shipping_check_status', // 查验状态
BOX_SHIPPING_UNLOADING_ERROR: 'shipping_unloading_error', // 卸柜异常类型
} }
/** /**
......
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
<script> <script>
import startPacking from "./startPacking.vue"; import startPacking from "./startPacking.vue";
import { cabinetCreate, serviceMsg, approvalCreate } from "@/api/ecw/boxSea"; import { cabinetCreate, serviceMsg } from "@/api/ecw/boxSea";
import { formatDateStr } from "../../utils"; import { formatDateStr } from "../../utils";
import ImageUpload from "@/components/ImageUpload"; import ImageUpload from "@/components/ImageUpload";
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
<!-- 表格 --> <!-- 表格 -->
<el-row class="table-content"> <el-row class="table-content">
<el-table :data="tableData.sectionOrderList"> <el-table :data="tableData.sectionOrderList" border>
<el-table-column label="序号" type="index" align="center" width="50" /> <el-table-column label="序号" type="index" align="center" width="50" />
<el-table-column label="订单号" align="center" prop="orderNo"> <el-table-column label="订单号" align="center" prop="orderNo">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
<el-table-column label="货物信息" align="center" prop="goodsList"> <el-table-column label="货物信息" align="center" prop="goodsList">
<template slot-scope="scope"> <template slot-scope="scope">
<section class="table-goodList"> <section class="table-goodList">
<div v-for="item in scope.row.goodsList" :key="item.orderId" class="goodList-div"> <div v-for="(item, index) in scope.row.goodsList" :key="index" class="goodList-div">
<p>品名:{{item.prodTitleZh}}</p> <p>品名:{{item.prodTitleZh}}</p>
<p>品牌:【 <p>品牌:【
<dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="item.productRecord" /> <dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="item.productRecord" />
...@@ -378,7 +378,7 @@ export default { ...@@ -378,7 +378,7 @@ export default {
}; };
if (type === "single") { if (type === "single") {
if (!this.qrCode) { if (!this.qrCode) {
this.$message.warning("请输入二维码/条码编号"); this.$message.error("请输入二维码/条码编号");
return; return;
} }
params.orderNumCode = this.qrCode; params.orderNumCode = this.qrCode;
...@@ -438,7 +438,7 @@ export default { ...@@ -438,7 +438,7 @@ export default {
approvalCreate({ approvalCreate({
shipmentId: this.shipmentObj.id, shipmentId: this.shipmentObj.id,
approvalStatus: 0, approvalStatus: 0,
approvalType: 2, approvalType: 2, // 封柜
}).then((res) => { }).then((res) => {
serviceMsg(res, this); serviceMsg(res, this);
}); });
......
...@@ -84,7 +84,7 @@ ...@@ -84,7 +84,7 @@
</el-row> </el-row>
<el-collapse-transition> <el-collapse-transition>
<div v-show="!item.fold"> <div v-show="!item.fold">
<el-table :data="item.orderItemList" border> <el-table v-loading="loading" :data="item.orderItemList" border>
<el-table-column label="序号" type="index" align="center" width="50" /> <el-table-column label="序号" type="index" align="center" width="50" />
<el-table-column label="品名" align="center" prop="prodTitleZh" min-width="500" /> <el-table-column label="品名" align="center" prop="prodTitleZh" min-width="500" />
<el-table-column label="品牌" align="center" prop="brandType" width="120"> <el-table-column label="品牌" align="center" prop="brandType" width="120">
...@@ -173,6 +173,7 @@ export default { ...@@ -173,6 +173,7 @@ export default {
// 待预装 // 待预装
toBePreList: [], toBePreList: [],
total: 0, total: 0,
loading: false,
}; };
}, },
created() { created() {
...@@ -204,6 +205,7 @@ export default { ...@@ -204,6 +205,7 @@ export default {
}, },
/* 查询待预装 */ /* 查询待预装 */
getPreLoad() { getPreLoad() {
this.loading = true;
// 处理查询参数 // 处理查询参数
let params = { let params = {
...this.queryParams, ...this.queryParams,
...@@ -211,6 +213,7 @@ export default { ...@@ -211,6 +213,7 @@ export default {
preloadPage({ ...params, ...this.pageParam }).then((res) => { preloadPage({ ...params, ...this.pageParam }).then((res) => {
this.toBePreList = res.data.list; this.toBePreList = res.data.list;
this.total = res.data.total; this.total = res.data.total;
this.loading = false;
}); });
}, },
/* 删除订单 */ /* 删除订单 */
......
...@@ -401,7 +401,7 @@ export default { ...@@ -401,7 +401,7 @@ export default {
...this.operatorData, ...this.operatorData,
shipmentId: this.$attrs.shipmentObj.id, shipmentId: this.$attrs.shipmentObj.id,
approvalStatus: 0, approvalStatus: 0,
approvalType: 1, approvalType: 1, // 预装
}).then((res) => { }).then((res) => {
serviceMsg(res, this).then(() => { serviceMsg(res, this).then(() => {
this.$emit("closeDialog", "submit"); this.$emit("closeDialog", "submit");
...@@ -503,7 +503,7 @@ export default { ...@@ -503,7 +503,7 @@ export default {
if (type === "selected") { if (type === "selected") {
const rows = this.selectedRows[data.id] ?? []; const rows = this.selectedRows[data.id] ?? [];
if (!rows.length) { if (!rows.length) {
this.$message.warning("请选择订单"); this.$message.error("请选择订单");
return; return;
} }
ids = rows.map((item) => item.orderItemId); ids = rows.map((item) => item.orderItemId);
......
...@@ -35,8 +35,8 @@ export default { ...@@ -35,8 +35,8 @@ export default {
approvalCreate({ approvalCreate({
shipmentId: this.$attrs.shipmentObj.id, shipmentId: this.$attrs.shipmentObj.id,
...this.reviewObj, ...this.reviewObj,
approvalStatus: -1, approvalStatus: 0,
approvalType: 4, approvalType: 4, // 预装反审
}).then((res) => { }).then((res) => {
serviceMsg(res, this).then(() => { serviceMsg(res, this).then(() => {
this.cancel("submit"); this.cancel("submit");
......
...@@ -20,8 +20,8 @@ ...@@ -20,8 +20,8 @@
</el-row> </el-row>
<!-- 开始卸柜 --> <!-- 开始卸柜 -->
<el-dialog title="开始卸柜" :visible.sync="dialogVisible" fullscreen :modal-append-to-body=false append-to-body destroy-on-close> <el-dialog title="开始卸柜" :visible.sync="dialogVisible" fullscreen :modal-append-to-body=false append-to-body>
<startUnloading /> <startUnloading v-if="dialogVisible" v-bind="$attrs" @closeStart="closeStart" />
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
...@@ -62,7 +62,7 @@ export default { ...@@ -62,7 +62,7 @@ export default {
const { keyName } = this.$attrs.currNode; const { keyName } = this.$attrs.currNode;
const ulStatus = this.$attrs.shipmentObj[keyName]; const ulStatus = this.$attrs.shipmentObj[keyName];
if (ulStatus !== 145) { if (ulStatus !== 145) {
this.$message.warning("请先通过卸柜审批"); this.$message.error("请先通过卸柜审批");
return; return;
} }
} }
...@@ -82,6 +82,10 @@ export default { ...@@ -82,6 +82,10 @@ export default {
cancel(type) { cancel(type) {
this.$emit("closeDialog", type); this.$emit("closeDialog", type);
}, },
/* 关闭弹窗 */
closeStart() {
this.dialogVisible = false;
},
// 开始卸柜 // 开始卸柜
startUnloading() { startUnloading() {
this.dialogVisible = true; this.dialogVisible = true;
......
...@@ -4,11 +4,11 @@ ...@@ -4,11 +4,11 @@
<!-- 自编号 --> <!-- 自编号 -->
<el-row class="number-area"> <el-row class="number-area">
<p class="label-font">自编号:</p> <p class="label-font">自编号:</p>
<p class="label-font">CNG2510</p> <p class="label-font">{{selfNo}}</p>
<el-input v-model="labelNo" placeholder="请输入标签号"></el-input> <el-input v-model="labelNo" placeholder="请输入标签号"></el-input>
<div> <div>
<el-button>批量输入</el-button> <el-button type="primary" @click="modifyBatchUnload">批量输入</el-button>
<el-button>一键卸柜</el-button> <el-button type="primary" @click="modifyAllUnload">一键卸柜</el-button>
</div> </div>
</el-row> </el-row>
...@@ -25,24 +25,31 @@ ...@@ -25,24 +25,31 @@
</el-row> </el-row>
<!-- 表格 --> <!-- 表格 -->
<el-row> <el-row class="table-area">
<el-table v-loading="loading" :data="list"> <el-table v-loading="loading" :data="pageData.sectionOrderList" border>
<el-table-column label="序号" type="index" width="50" /> <el-table-column label="序号" type="index" align="center" width="50" />
<!-- <el-table-column label="订单号" align="center" prop="selfNo"> <el-table-column label="订单号" align="center" prop="orderNo">
<template slot-scope="scope"> <template slot-scope="scope">
<a href="javascript:void(0);" class="order-href" @click="orderClick(scope.row)">{{ scope.row.selfNo }}</a> <a href="javascript:void(0);" class="order-href">{{ scope.row.orderNo }}</a>
</template> </template>
</el-table-column> --> </el-table-column>
<el-table-column label="订单号" align="center" prop="cubNo" /> <el-table-column label="商品信息" align="center" prop="goodsList">
<el-table-column label="商品信息" align="center" prop="cubNo" /> <template slot-scope="scope">
<el-table-column label="实装箱数" align="center" prop="cabinetId" /> <section class="table-goodList">
<el-table-column label="卸柜箱数" align="center" prop="transportType" /> <div v-for="(item, index) in scope.row.goodsList" :key="index" class="goodList-div">
<el-table-column label="清关状态" align="center" prop="squareNumber" /> <p>{{index+1}}{{item.prodTitleZh}}</p>
<el-table-column label="体积" align="center" prop="weight" /> </div>
</section>
</template>
</el-table-column>
<el-table-column label="实装箱数" align="center" prop="installNum" />
<el-table-column label="卸柜箱数" align="center" prop="unloadNum" />
<el-table-column label="清关状态" align="center" prop="" />
<el-table-column label="体积" align="center" prop="volume" />
<el-table-column label="重量" align="center" prop="weight" /> <el-table-column label="重量" align="center" prop="weight" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="danger" size="small" @click="openError">异常</el-button> <el-button type="danger" size="small" @click="openError(scope.row)">异常</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -50,40 +57,48 @@ ...@@ -50,40 +57,48 @@
<!-- 总计 --> <!-- 总计 -->
<el-row> <el-row>
<div> <div class="label-font">
<p> <p>
<span>总计:</span> <span>总计:</span>
<span>33箱子</span> <span>{{pageData.totalStatistics ? pageData.totalStatistics.num : 0}}箱</span>
<span>10.83m3</span> <span>{{pageData.totalStatistics ? pageData.totalStatistics.volume : 0}}m3</span>
<span>210kg</span> <span>{{pageData.totalStatistics ? pageData.totalStatistics.weight : 0}}kg</span>
</p> </p>
</div> </div>
<div> <div class="label-font">
<p> <p>
<span>已卸:</span> <span>已卸:</span>
<span>16</span> <span>0</span>
</p> </p>
</div> </div>
</el-row> </el-row>
<el-row> <el-row>
<el-button type="success">卸柜完成</el-button> <el-button type="success" @click="onSubmit">卸柜完成</el-button>
</el-row> </el-row>
<!-- 对话框 --> <!-- 对话框 -->
<el-dialog custom-class="shipping-dialog" title="异常" :visible.sync="dialogVisible" width="500px" :modal-append-to-body=false append-to-body destroy-on-close> <el-dialog custom-class="shipping-dialog" title="异常" :visible.sync="dialogVisible" width="600px" :modal-append-to-body=false append-to-body>
<unloadingError @closeDialog="dialogVisible = false" /> <unloadingError v-if="dialogVisible" @closeDialog="closeDialog" v-bind="$attrs" :currRow="currRow" />
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
<script> <script>
import unloadingError from "./unloadingError.vue"; import unloadingError from "./unloadingError.vue";
import {
loadGoodsList,
batchUnload,
allUnload,
approvalCreate,
serviceMsg,
} from "@/api/ecw/boxSea";
/** /**
* 开始卸柜 * 开始卸柜
*/ */
export default { export default {
name: "startUnloading", name: "startUnloading",
inheritAttrs: false,
components: { unloadingError }, components: { unloadingError },
data() { data() {
return { return {
...@@ -93,29 +108,87 @@ export default { ...@@ -93,29 +108,87 @@ export default {
currPart: "", currPart: "",
// loading // loading
loading: false, loading: false,
// 表格数据 // 页面数据
list: [{}], pageData: {},
// 弹窗配置 // 弹窗配置
dialogVisible: false, dialogVisible: false,
// 自编号
selfNo: this.$attrs.shipmentObj.selfNo,
// 当前行
currRow: {},
}; };
}, },
watch: {}, created() {
this.getLoadGoodsList();
},
methods: { methods: {
/* 获取卸柜数据 */
getLoadGoodsList(params) {
this.loading = true;
params = {
secId: 0,
...params,
shipmentId: this.$attrs.shipmentObj.id,
};
loadGoodsList(params).then((res) => {
const { data } = res;
this.pageData = data;
this.loading = false;
});
},
/* 批量输入 */
modifyBatchUnload() {
if (!this.labelNo) {
this.$message.error("请输入标签号");
return;
}
batchUnload({
orderNo: this.labelNo,
shipmentId: this.$attrs.shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then((res) => {
this.getLoadGoodsList();
});
});
},
/* 一键卸柜 */
modifyAllUnload() {
this.$confirm("确认卸柜?", "提示", {
type: "warning",
})
.then((_) => {
allUnload({ shipmentId: this.$attrs.shipmentObj.id }).then((res) => {
serviceMsg(res, this).then((res) => {
this.getLoadGoodsList();
});
});
})
.catch((_) => {});
},
/** 提交 */ /** 提交 */
onSubmit() { onSubmit() {
this.$refs["unloadingForm"].validate((valid) => { approvalCreate({
if (valid) { shipmentId: this.$attrs.shipmentObj.id,
// TODO 判断是否已经卸柜 approvalStatus: 0,
this.$message.warning("请先通过卸柜审批"); approvalType: 3, // 卸柜
} }).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel();
});
}); });
}, },
/** 取消 */ /** 取消 */
cancel() { cancel() {
this.$emit("closeDialog"); this.$emit("closeStart");
},
/* 关闭弹窗 */
closeDialog() {
this.dialogVisible = false;
this.getLoadGoodsList();
}, },
// 打开异常 // 打开异常
openError() { openError(row) {
this.currRow = row;
this.dialogVisible = true; this.dialogVisible = true;
}, },
}, },
...@@ -147,5 +220,19 @@ export default { ...@@ -147,5 +220,19 @@ export default {
width: 200px; width: 200px;
} }
} }
.table-area {
.table-goodList {
.goodList-div {
> p {
text-align: left;
}
> p:last-child {
> span {
margin-right: 5px;
}
}
}
}
}
} }
</style> </style>
...@@ -2,18 +2,20 @@ ...@@ -2,18 +2,20 @@
<div> <div>
<el-form ref="errorForm" :model="errorObj" label-width="100px"> <el-form ref="errorForm" :model="errorObj" label-width="100px">
<el-form-item label="异常"> <el-form-item label="异常">
<el-radio-group v-model="errorObj.errorStatus"> <el-radio-group v-model="errorObj.exceptionType ">
<el-radio v-for="item in this.getDictDatas(DICT_TYPE.BOX_SHIPPING_UNLOADING_ERROR)" :key="item.value" :label="item.value">{{item.label}}</el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="品名"> <el-form-item label="品名">
<el-select v-model="errorObj.goodName" placeholder="请选择品名"> <el-select v-model="errorObj.productId" placeholder="请选择品名">
<el-option v-for="(item, index) in goodsList" :key="index" :value="item.orderItemId" :label="item.prodTitleZh"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="件数"> <el-form-item label="件数">
<el-input-number v-model="errorObj.pieces" controls-position="right" :min="1"></el-input-number> <el-input-number v-model="errorObj.productNum" controls-position="right" :min="1"></el-input-number>
</el-form-item> </el-form-item>
<el-form-item label="异常详情"> <el-form-item label="异常详情">
<el-input v-model="errorObj.details" type="textarea" rows="2" placeholder="请输入异常详情"></el-input> <el-input v-model="errorObj.exceptionDetail" type="textarea" rows="2" placeholder="请输入异常详情"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -25,15 +27,21 @@ ...@@ -25,15 +27,21 @@
</template> </template>
<script> <script>
import { createError, serviceMsg } from "@/api/ecw/boxSea";
/** /**
* 卸柜异常 * 卸柜异常
*/ */
export default { export default {
name: "unloadingError", name: "unloadingError",
inheritAttrs: false,
data() { data() {
const { currRow } = this.$attrs;
return { return {
// 异常对象 // 异常对象
errorObj: {}, errorObj: {},
// 品名
goodsList: currRow.goodsList ?? [],
}; };
}, },
methods: { methods: {
...@@ -41,7 +49,21 @@ export default { ...@@ -41,7 +49,21 @@ export default {
onSubmit() { onSubmit() {
this.$refs["errorForm"].validate((valid) => { this.$refs["errorForm"].validate((valid) => {
if (valid) { if (valid) {
alert("submit!"); const { productNum = 0 } = this.errorObj;
const { currRow } = this.$attrs;
if (productNum > currRow.installNum) {
this.$message.error("货物异常数量不能大于装柜数量");
return;
}
createError({
...this.errorObj,
orderId: this.$attrs.currRow.orderId,
shipmentId: this.$attrs.shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then((res) => {
this.$emit("closeDialog");
});
});
} }
}); });
}, },
......
...@@ -161,7 +161,7 @@ export default { ...@@ -161,7 +161,7 @@ export default {
} }
// 页面内元素弹窗form控件宽度设置 // 页面内元素弹窗form控件宽度设置
.el-form-item__content { .el-form-item__content {
> div { > div:not(.el-input-number) {
width: 100%; width: 100%;
} }
} }
......
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