Commit 8bfd7470 authored by dragondean@qq.com's avatar dragondean@qq.com

解决冲突

parents 54b92f1f 6df8d884
...@@ -443,6 +443,82 @@ export function loadSecGoodsList(params) { ...@@ -443,6 +443,82 @@ export function loadSecGoodsList(params) {
}); });
} }
/**
* 订单装箱编号列表
*
* @export
* @param {*} data
* @return {*}
*/
export function orderTagList(data) {
return request({
url: "/ecw/box-load-info/orderTagList",
method: "post",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
data: jsonToFormData(data),
});
}
/**
* 批量装柜
*
* @export
* @param {*} data
* @return {*}
*/
export function batchCreate(data) {
return request({
url: "/ecw/box-load-info/batchCreate",
method: "post",
data,
});
}
/**
* 批量删除已装柜标签
*
* @export
* @param {*} data
* @return {*}
*/
export function batchDelete(data) {
return request({
url: "/ecw/box-load-info/batchDelete",
method: "post",
data,
});
}
/**
* 移出
*
* @export
* @param {*} data
* @return {*}
*/
export function remove(data) {
return request({
url: "/ecw/box-load-info/remove",
method: "post",
data,
});
}
/**
* 修改柜信息
*
* @export
* @param {*} data
* @return {*}
*/
export function boxUpdate(data) {
return request({
url: "/ecw/box-load-info/boxUpdate",
method: "post",
data,
});
}
/***************************** 装柜 end **********************************/ /***************************** 装柜 end **********************************/
/** /**
......
...@@ -258,3 +258,40 @@ export function getCargoControlOrderPage(params){ ...@@ -258,3 +258,40 @@ export function getCargoControlOrderPage(params){
}) })
} }
//获得调仓明细
export function orderWarehouseInGetAdjustInfo(params){
return request({
url:'order/order-warehouse-in/get-adjust-info',
method:'get',
params
})
}
export function warehouseAdjustSendOut(data){
return request({
url:'/order/order-warehouse-in/warehouse-adjust-send-out',
method:'put',
data
})
}
//获得订单仓库图片分页
export function orderWarehousePicturePage(params){
return request({
url:'/order/warehouse-picture/page',
method:'get',
params
})
}
export function warehouseAdjustPage(params){
return request({
url:'/order/warehouse-adjust/page',
method:'get',
params
})
}
export function warehouseAdjustArrived(data){
return request({
url:'/order/order-warehouse-in/warehouse-adjust-arrived',
method:'put',
data
})
}
\ No newline at end of file
<template>
<div class="component-upload-image">
<div style="display: flex;flex-wrap: wrap ">
<div v-for="(item, index) in fileList " :key="index" style="height: 148px; width:148px; border:1px solid;margin:5px 10px">
<el-image style="height: 148px; width:148px;" fit="fit" :src="item.url">
<video controls width="148px" height="148px" slot="error" :src="item.url" ></video>
</el-image>
</div>
<div>
<el-upload
multiple
:action="uploadImgUrl"
list-type="picture-card"
:on-success="handleUploadSuccess"
:before-upload="handleBeforeUpload"
:on-error="handleUploadError"
name="file"
:on-remove="handleRemove"
:show-file-list="false"
:headers="headers"
:on-preview="handlePictureCardPreview"
>
<i class="el-icon-plus"></i>
</el-upload>
<!-- 上传提示 -->
<div class="el-upload__tip" slot="tip" v-if="showTip">
请上传
<template v-if="fileSize"> 大小不超过 <b style="color: #f56c6c">{{ fileSize }}MB</b> </template> <br>
<template v-if="fileType"> 格式为 <b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>
的文件
</div>
</div>
</div>
<el-dialog
:visible.sync="dialogVisible"
title="预览"
width="800"
append-to-body
>
<img
:src="dialogImageUrl"
style="display: block; max-width: 100%; margin: 0 auto"
/>
</el-dialog>
</div>
</template>
<script>
import { getToken } from "@/utils/auth";
export default {
props: {
value: [Array],
// 大小限制(MB)
fileSize: {
type: Number,
default: 30,
},
// 文件类型, 例如['png', 'jpg', 'jpeg']
fileType: {
type: Array,
default: () => ["png", "jpg", "jpeg" ,"mp4","m4v" ],
},
// 是否显示提示
isShowTip: {
type: Boolean,
default: true
}
},
data() {
return {
number: 0,
uploadList: [],
dialogImageUrl: "",
dialogVisible: false,
hideUpload: false,
baseUrl: process.env.VUE_APP_BASE_API,
uploadImgUrl: process.env.VUE_APP_BASE_API + "/app-api/file/upload", // 上传的图片服务器地址
headers: {
Authorization: "Bearer " + getToken(),
},
fileList: []
};
},
watch: {
value: {
handler(val) {
if (val) {
// 首先将值转为数组
const list = Array.isArray(val) ? val : this.value.split(',');
// 然后将数组转为对象数组
this.fileList = list.map(item => {
if (typeof item === "string") {
if (item.indexOf(this.baseUrl) === -1) {
item = { name: item, url: item };
} else {
item = { name: item, url: item };
}
}
return item;
});
} else {
this.fileList = [];
return [];
}
},
deep: true,
immediate: true
}
},
computed: {
// 是否显示提示
showTip() {
return this.isShowTip && (this.fileType || this.fileSize);
},
},
methods: {
// 删除图片
handleRemove(file, fileList) {
const findex = this.fileList.map(f => f.name).indexOf(file.name);
if(findex > -1) {
this.fileList.splice(findex, 1);
this.$emit("input", this.listToString(this.fileList));
}
},
// 上传成功回调
handleUploadSuccess(res) {
if(res.code === 0){
this.uploadList.push({ name: res.data.split('/').pop(), url: res.data });
if (this.uploadList.length === this.number) {
this.fileList = this.fileList.concat(this.uploadList);
this.uploadList = [];
this.number = 0;
this.$emit("input", this.listToString(this.fileList));
this.$modal.closeLoading();
}
}else {
this.handleUploadError();
}
},
// 上传前loading加载
handleBeforeUpload(file) {
let isImg = false;
if (this.fileType.length) {
let fileExtension = "";
if (file.name.lastIndexOf(".") > -1) {
fileExtension = file.name.slice(file.name.lastIndexOf(".") + 1);
}
isImg = this.fileType.some(type => {
if (file.type.indexOf(type) > -1) return true;
if (fileExtension && fileExtension.indexOf(type) > -1) return true;
return false;
});
} else {
isImg = file.type.indexOf("image") > -1;
}
if (!isImg) {
this.$modal.msgError(`文件格式不正确, 请上传${this.fileType.join("/")}的图片或视频文件!`);
return false;
}
if (this.fileSize) {
const isLt = file.size / 1024 / 1024 < this.fileSize;
if (!isLt) {
this.$modal.msgError(`上传头像图片大小不能超过 ${this.fileSize} MB!`);
return false;
}
}
this.$modal.loading("正在上传图片或视频,请稍候...");
this.number++;
},
// 上传失败
handleUploadError() {
this.$modal.msgError("上传图片或视频失败,请重试");
this.$modal.closeLoading();
},
// 预览
handlePictureCardPreview(file) {
this.dialogImageUrl = file.url;
this.dialogVisible = true;
},
// 对象转成指定字符串分隔
listToString(list) {
return list.map(e => e.url);
}
}
};
</script>
<style scoped lang="scss">
// .el-upload--picture-card 控制加号部分
::v-deep.hide .el-upload--picture-card {
display: none;
}
// 去掉动画效果
::v-deep .el-list-enter-active,
::v-deep .el-list-leave-active {
transition: all 0s;
}
::v-deep .el-list-enter, .el-list-leave-active {
opacity: 0;
transform: translateY(0);
}
</style>
...@@ -356,26 +356,26 @@ export const constantRoutes = [ ...@@ -356,26 +356,26 @@ export const constantRoutes = [
} }
}, },
{ {
path: 'withdrawal/:orderId', path: 'transfer-warehousing/:orderId/:type',
component:()=>import ('@/views/ecw/order/withdrawal'), component:()=>import('@/views/ecw/order/transferWarehousing'),
name:'withdrawal', name:'transferWarehousing',
props: true, props: true,
meta:{ meta:{
title:'退', title:'调拨出',
icon:'', icon:'',
activeMenu:'order/withdrawal', activeMenu:'order/transferWarehousing',
noCache:true, noCache:true,
} }
}, },
{ {
path: 'transfer-warehousing/:orderId', path: 'transfer-to-warehouse/:orderId/:type',
component:()=>import('@/views/ecw/order/transferWarehousing'), component:()=>import('@/views/ecw/order/transferWarehousing'),
name:'transferWarehousing', name:'transferToWarehouse',
props: true, props: true,
meta:{ meta:{
title:'调拨', title:'调拨',
icon:'', icon:'',
activeMenu:'order/transferWarehousing', activeMenu:'order/transferToWarehouse',
noCache:true, noCache:true,
} }
} }
......
...@@ -75,27 +75,23 @@ export default { ...@@ -75,27 +75,23 @@ export default {
onSubmit(operateType) { onSubmit(operateType) {
this.$refs["cabinetForm"].validate((valid) => { this.$refs["cabinetForm"].validate((valid) => {
if (valid) { if (valid) {
if (operateType === 2) {
const { currNode, shipmentObj } = this.$attrs;
const status = shipmentObj[currNode.keyName];
if (status !== 46) {
this.$message.error("请先进行装柜->审批->确认封柜");
return;
}
}
cabinetCreate({ cabinetCreate({
shipmentId: this.$attrs.shipmentObj.id, shipmentId: this.$attrs.shipmentObj.id,
...this.cabinetObj, ...this.cabinetObj,
operateType, operateType,
}).then((res) => {
if (operateType === 2) {
approvalCreate({
shipmentId: this.$attrs.shipmentObj.id,
approvalStatus: 0,
approvalType: 2,
}).then((res) => { }).then((res) => {
serviceMsg(res, this).then(() => { serviceMsg(res, this).then(() => {
this.cancel("submit"); this.cancel("submit");
}); });
}); });
} else {
serviceMsg(res, this).then(() => {
this.cancel("submit");
});
}
});
} }
}); });
}, },
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<el-row class="content-area"> <el-row class="content-area">
<!-- 左侧 --> <!-- 左侧 -->
<el-col :span="4" class="left-area"> <el-col :span="6" class="left-area">
<el-row v-for="item in listData" :key="item.id" class="title-info" :class="item.id === tableData.id ? 'selected' : ''"> <el-row v-for="item in listData" :key="item.id" class="title-info" :class="item.id === tableData.id ? 'selected' : ''">
<div @click="partClick(item)"> <div @click="partClick(item)">
<p>{{item.title}}</p> <p>{{item.title}}</p>
...@@ -20,27 +20,29 @@ ...@@ -20,27 +20,29 @@
</el-col> </el-col>
<!-- 右侧 --> <!-- 右侧 -->
<el-col :span="20" class="right-area"> <el-col :span="18" class="right-area">
<!-- 操作 --> <!-- 操作 -->
<el-row class="table-title"> <el-row class="table-title">
<div>当前装柜:{{tableData.title}}</div> <div>当前装柜:{{tableData.title}}</div>
<div> <div>
<el-input v-model="qrCode" placeholder="请输入二维码/条码编号"></el-input> <template v-if="!isUnderReview">
<el-button type="primary">确定</el-button> <el-input v-model="qrCode" placeholder="请输入二维码/条码编号" clearable></el-input>
<el-button type="primary" @click="handlerBatchCreate('single')">确定</el-button>
<el-button type="primary" @click="handlerClick('batchInput','批量输入')">批量输入</el-button> <el-button type="primary" @click="handlerClick('batchInput','批量输入')">批量输入</el-button>
<el-button type="primary" @click="handlerClick('correction','装柜纠错')">装柜纠错</el-button> <el-button type="primary" @click="handlerClick('correction','装柜纠错')">装柜纠错</el-button>
<el-button type="primary" @click="handlerClick('correctionOrder','批量装柜纠错')">批量装柜纠错</el-button> <el-button type="primary" @click="handlerClick('correctionOrder','批量装柜纠错')">批量装柜纠错</el-button>
</template>
</div> </div>
</el-row> </el-row>
<!-- 表格 --> <!-- 表格 -->
<el-row class="table-content"> <el-row class="table-content">
<el-table v-loading="loading" :data="tableData.sectionOrderList"> <el-table :data="tableData.sectionOrderList">
<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="orderId"> <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.orderId }}</a> <a href="javascript:void(0);" class="order-href" @click="orderClick(scope.row)">{{ scope.row.orderNo }}</a>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="货物信息" align="center" prop="goodsList"> <el-table-column label="货物信息" align="center" prop="goodsList">
...@@ -48,9 +50,9 @@ ...@@ -48,9 +50,9 @@
<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 in scope.row.goodsList" :key="item.orderId" 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" />
</p> </p>
<p>其他:<span>{{item.num}}</span><span>{{item.volume}}</span><span>{{item.weight}}Kg</span></p> <p>其他:<span>{{item.num}}</span><span>{{item.volume}}</span><span>{{item.weight}}Kg</span></p>
</div> </div>
...@@ -79,7 +81,8 @@ ...@@ -79,7 +81,8 @@
</el-table-column> </el-table-column>
<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="primary" size="small">移出</el-button> <el-button type="text" size="small" @click="moveOut(scope.row)" v-if="!isUnderReview">移出</el-button>
<el-button type="text" size="small" disabled>拆单</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -93,7 +96,9 @@ ...@@ -93,7 +96,9 @@
<el-row> <el-row>
<el-col :span="6" class="totle-info"> <el-col :span="6" class="totle-info">
<div class="count-info"> <div class="count-info">
<p>总计:<span>{{sumData.count.num}}箱</span><span>{{sumData.count.volume}}m³</span><span>{{sumData.count.weight}}Kg</span></p> <p>总计:
<!-- <span>{{sumData.count.num}}箱</span><span>{{sumData.count.volume}}m³</span><span>{{sumData.count.weight}}Kg</span> -->111
</p>
</div> </div>
<div> <div>
<p>容量:</p> <p>容量:</p>
...@@ -105,41 +110,45 @@ ...@@ -105,41 +110,45 @@
<!-- 操作 --> <!-- 操作 -->
<el-row class="button-area"> <el-row class="button-area">
<el-button type="primary" @click="handlerClick('supplementOrder','补单')">补单</el-button> <el-button type="primary" @click="handlerClick('supplementOrder','补单')" v-if="!isUnderReview">补单</el-button>
<el-button type="primary">申请封柜</el-button> <el-button type="primary" v-if="!isUnderReview" @click="applyCloseCabinet">申请封柜</el-button>
<el-button type="primary" @click="handlerClick('modifyCabinet','修改柜信息')">修改柜信息</el-button> <el-button type="primary" @click="handlerClick('modifyCabinet','修改柜信息')" v-if="!isUnderReview">修改柜信息</el-button>
<el-button type="primary">封柜审核中</el-button> <el-button type="primary" v-if="isUnderReview">封柜审核中</el-button>
</el-row> </el-row>
<!-- 对话框 --> <!-- 对话框 -->
<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 destroy-on-close> <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'"> <template v-if="dialogConfig.type === 'orderTable'">
<el-table :data="[]"> <div style="display: flex;">
<el-table-column label="已装" align="center" prop="selfNo" /> <el-table :data="orderList.loadList">
<el-table-column label="未装" align="center" prop="cubNo" /> <el-table-column label="已装" align="center" prop="loadTag" />
</el-table> </el-table>
<el-table :data="orderList.unLoadList">
<el-table-column label="未装" align="center" prop="unloadTag" />
</el-table>
</div>
</template> </template>
<!-- 补单 --> <!-- 补单 -->
<template v-if="dialogConfig.type === 'supplementOrder'"> <supplementOrder v-if="dialogConfig.type === 'supplementOrder' && dialogConfig.dialogVisible" v-bind="$attrs" :shipmentObj="shipmentObj" @supplementFinish="supplementFinish" />
<supplementOrder />
</template>
<!-- 修改柜信息 --> <!-- 修改柜信息 -->
<template v-if="dialogConfig.type === 'modifyCabinet'"> <template v-if="dialogConfig.type === 'modifyCabinet' && dialogConfig.dialogVisible">
<el-form ref="modifyForm" :rules="rules" :model="modifyCabinetObj" label-width="80px"> <el-form ref="modifyForm" :rules="rules" :model="modifyCabinetObj" label-width="80px">
<el-form-item label="起运仓库" prop="warehouse"> <el-form-item label="起运仓库" prop="startWarehouseId">
<el-select v-model="modifyCabinetObj.warehouse" placeholder="请选择起运仓库"> <el-select v-model="modifyCabinetObj.startWarehouseId" placeholder="请选择仓库" filterable>
<el-option v-for="warehouse in $attrs.warehouseList" :key="warehouse.id" :label="warehouse.titleZh" :value="warehouse.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="预计时间" prop="estimatedTime"> <el-form-item label="预计时间" prop="estimatedTime">
<el-date-picker type="date" placeholder="请选择日期" v-model="modifyCabinetObj.estimatedTime" value-format="yyyy-MM-dd"></el-date-picker> <el-date-picker type="date" placeholder="请选择日期" v-model="modifyCabinetObj.estimatedTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="选择柜型" prop="cabinetType"> <el-form-item label="选择柜型" prop="cabinetId">
<el-select v-model="modifyCabinetObj.cabinetType" placeholder="请选择柜型"> <el-select v-model="modifyCabinetObj.cabinetId" placeholder="请选择柜型">
<el-option v-for="item in cabinetList" :label="item.name" :value="item.name" :key="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="柜号"> <el-form-item label="柜号">
<el-input v-model="modifyCabinetObj.cabinetNo" placeholder="请输入柜号" clearable /> <el-input v-model="modifyCabinetObj.cubNo" placeholder="请输入柜号" clearable />
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row class="operate-button"> <el-row class="operate-button">
...@@ -148,7 +157,7 @@ ...@@ -148,7 +157,7 @@
</el-row> </el-row>
</template> </template>
<!-- 装柜纠错 --> <!-- 装柜纠错 -->
<template v-if=" dialogConfig.type === 'correction'"> <template v-if="dialogConfig.type === 'correction' && dialogConfig.dialogVisible">
<el-form ref="correctionForm" :rules="rules" :model="correctionObj" label-position="top"> <el-form ref="correctionForm" :rules="rules" :model="correctionObj" label-position="top">
<el-form-item label="装柜纠错(二维码/条形码编号)" prop="qrCode"> <el-form-item label="装柜纠错(二维码/条形码编号)" prop="qrCode">
<el-input v-model="correctionObj.qrCode" placeholder="请输入二维码/条形码编号" clearable /> <el-input v-model="correctionObj.qrCode" placeholder="请输入二维码/条形码编号" clearable />
...@@ -160,10 +169,10 @@ ...@@ -160,10 +169,10 @@
</el-row> </el-row>
</template> </template>
<!-- 批量装柜纠错(订单号) --> <!-- 批量装柜纠错(订单号) -->
<template v-if=" dialogConfig.type === 'correctionOrder'"> <template v-if=" dialogConfig.type === 'correctionOrder' && dialogConfig.dialogVisible">
<el-form ref="orderForm" :rules="rules" :model="orderObj" label-position="top"> <el-form ref="orderForm" :rules="rules" :model="orderObj" label-position="top">
<el-form-item label="装柜纠错(订单号)" prop="orderNo"> <el-form-item label="装柜纠错(订单号)" prop="orderNo">
<el-input v-model="orderObj.orderNo" placeholder="请输入订单号" clearable /> <el-input type="textarea" :rows="3" v-model="orderObj.orderNo" placeholder="请输入,多个以逗号分隔" clearable />
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row class="operate-button"> <el-row class="operate-button">
...@@ -172,7 +181,7 @@ ...@@ -172,7 +181,7 @@
</el-row> </el-row>
</template> </template>
<!-- 装柜批量输入 --> <!-- 装柜批量输入 -->
<template v-if=" dialogConfig.type === 'batchInput'"> <template v-if=" dialogConfig.type === 'batchInput' && dialogConfig.dialogVisible">
<el-form ref="batchForm" :rules="rules" :model="batchObj" label-position="top"> <el-form ref="batchForm" :rules="rules" :model="batchObj" label-position="top">
<el-form-item label="" prop="qrCode"> <el-form-item label="" prop="qrCode">
<el-input type="textarea" :rows="3" v-model="batchObj.qrCode" placeholder="请输入,多个以逗号分隔" clearable /> <el-input type="textarea" :rows="3" v-model="batchObj.qrCode" placeholder="请输入,多个以逗号分隔" clearable />
...@@ -189,7 +198,17 @@ ...@@ -189,7 +198,17 @@
<script> <script>
import supplementOrder from "./supplementOrder.vue"; import supplementOrder from "./supplementOrder.vue";
import { loadSecGoodsList } from "@/api/ecw/boxSea"; import { getCabinetPage } from "@/api/ecw/cabinet";
import {
loadSecGoodsList,
orderTagList,
batchCreate,
batchDelete,
remove,
serviceMsg,
boxUpdate,
approvalCreate,
} from "@/api/ecw/boxSea";
/** /**
* 开始装柜 * 开始装柜
...@@ -205,8 +224,6 @@ export default { ...@@ -205,8 +224,6 @@ export default {
}, },
data() { data() {
return { return {
// laoding
loading: false,
// 表格数据 // 表格数据
listData: [], listData: [],
// 表格数据 // 表格数据
...@@ -223,6 +240,10 @@ export default { ...@@ -223,6 +240,10 @@ export default {
type: "", type: "",
fullscreen: false, fullscreen: false,
}, },
// 已装/未装
orderList: {},
// 柜型
cabinetList: [],
// 二维码/条码编号 // 二维码/条码编号
qrCode: "", qrCode: "",
// 批量输入 // 批量输入
...@@ -235,9 +256,11 @@ export default { ...@@ -235,9 +256,11 @@ export default {
modifyCabinetObj: {}, modifyCabinetObj: {},
// 修改柜信息校验 // 修改柜信息校验
rules: { rules: {
warehouse: [{ required: true, message: "必填", trigger: "change" }], startWarehouseId: [
{ required: true, message: "必填", trigger: "change" },
],
estimatedTime: [{ required: true, message: "必填", trigger: "change" }], estimatedTime: [{ required: true, message: "必填", trigger: "change" }],
cabinetType: [{ required: true, message: "必填", trigger: "change" }], cabinetId: [{ required: true, message: "必填", trigger: "change" }],
qrCode: [{ required: true, message: "必填", trigger: "change" }], qrCode: [{ required: true, message: "必填", trigger: "change" }],
orderNo: [{ required: true, message: "必填", trigger: "change" }], orderNo: [{ required: true, message: "必填", trigger: "change" }],
}, },
...@@ -245,6 +268,10 @@ export default { ...@@ -245,6 +268,10 @@ export default {
}, },
created() { created() {
this.getLoadSecGoodsList(); this.getLoadSecGoodsList();
// 柜型
getCabinetPage(null).then((response) => {
this.cabinetList = response.data.list;
});
}, },
methods: { methods: {
/* 装柜部分列表 */ /* 装柜部分列表 */
...@@ -254,7 +281,7 @@ export default { ...@@ -254,7 +281,7 @@ export default {
this.listData = data.map((item, index) => { this.listData = data.map((item, index) => {
return { return {
...item, ...item,
title: `第${++index}部分`, title: `第 ${++index} 部分`,
}; };
}); });
if (this.listData.length) { if (this.listData.length) {
...@@ -268,6 +295,17 @@ export default { ...@@ -268,6 +295,17 @@ export default {
}, },
/** 表格订单号点击 */ /** 表格订单号点击 */
orderClick(row) { 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.shwoDialog({ this.shwoDialog({
type: "orderTable", type: "orderTable",
title: row.selfNo, title: row.selfNo,
...@@ -279,12 +317,27 @@ export default { ...@@ -279,12 +317,27 @@ export default {
this.$set(this.dialogConfig, "type", config.type); this.$set(this.dialogConfig, "type", config.type);
switch (config.type) { switch (config.type) {
case "orderTable": case "orderTable":
case "modifyCabinet":
this.$set(this.dialogConfig, "fullscreen", false); this.$set(this.dialogConfig, "fullscreen", false);
break; break;
case "supplementOrder": case "supplementOrder":
this.$set(this.dialogConfig, "fullscreen", true); this.$set(this.dialogConfig, "fullscreen", true);
break; break;
case "batchInput":
this.$set(this.dialogConfig, "fullscreen", false);
this.batchObj = {};
break;
case "correction":
this.$set(this.dialogConfig, "fullscreen", false);
this.correctionObj = {};
break;
case "correctionOrder":
this.$set(this.dialogConfig, "fullscreen", false);
this.orderObj = {};
break;
case "modifyCabinet":
this.$set(this.dialogConfig, "fullscreen", false);
this.modifyCabinetObj = {};
break;
} }
this.$set(this.dialogConfig, "dialogVisible", true); this.$set(this.dialogConfig, "dialogVisible", true);
}, },
...@@ -296,15 +349,100 @@ export default { ...@@ -296,15 +349,100 @@ export default {
onSubmit(formName) { onSubmit(formName) {
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
alert("submit!"); if (formName === "batchForm") {
this.handlerBatchCreate("batch");
}
if (formName === "correctionForm") {
this.handlerBatchDelete({
orderNumCode: this.correctionObj.qrCode,
});
}
if (formName === "orderForm") {
this.handlerBatchDelete({ orderNo: this.orderObj.orderNo });
}
if (formName === "modifyForm") {
this.modifyBoxUpdate();
}
} }
}); });
}, },
/* 部分点击 */ /* 部分点击 */
partClick(item) { partClick(item) {
console.log(item);
this.tableData = item; this.tableData = item;
}, },
/* 装柜 */
handlerBatchCreate(type) {
let params = {
shipmentId: this.shipmentObj.id,
secId: this.tableData.id,
};
if (type === "single") {
if (!this.qrCode) {
this.$message.warning("请输入二维码/条码编号");
return;
}
params.orderNumCode = this.qrCode;
} else {
params.orderNo = this.batchObj.qrCode;
}
batchCreate(params).then((res) => {
serviceMsg(res, this).then(() => {
this.getLoadSecGoodsList();
});
});
},
/* 删除已装柜 */
handlerBatchDelete(params) {
params = {
shipmentId: this.shipmentObj.id,
secId: this.tableData.id,
...params,
};
batchDelete(params).then((res) => {
serviceMsg(res, this).then(() => {
this.getLoadSecGoodsList();
});
});
},
/* 移出 */
moveOut(row) {
let params = {
shipmentId: this.shipmentObj.id,
secId: this.tableData.id,
orderId: row.orderId,
};
remove(params).then((res) => {
serviceMsg(res, this).then(() => {
this.getLoadSecGoodsList();
});
});
},
/* 修改柜信息 */
modifyBoxUpdate() {
let params = {
shipmentId: this.shipmentObj.id,
...this.modifyCabinetObj,
};
boxUpdate(params).then((res) => {
serviceMsg(res, this);
});
},
/* 补单完成 */
supplementFinish() {
this.closeDialog();
this.getLoadSecGoodsList();
},
/* 申请封柜 */
applyCloseCabinet() {
approvalCreate({
shipmentId: this.shipmentObj.id,
approvalStatus: 0,
approvalType: 2,
}).then((res) => {
serviceMsg(res, this);
});
},
}, },
watch: { watch: {
listData(val) { listData(val) {
...@@ -328,6 +466,13 @@ export default { ...@@ -328,6 +466,13 @@ export default {
this.$set(this.sumData, "count", count); this.$set(this.sumData, "count", count);
}, },
}, },
computed: {
/* 是否审核中 */
isUnderReview() {
const { currNode } = this.$attrs;
this.shipmentObj[currNode.keyName] === 44 ? true : false;
},
},
}; };
</script> </script>
...@@ -358,6 +503,7 @@ export default { ...@@ -358,6 +503,7 @@ export default {
background-color: #f2f2f2; background-color: #f2f2f2;
line-height: 30px; line-height: 30px;
text-align: center; text-align: center;
cursor: pointer;
} }
> :last-child { > :last-child {
display: flex; display: flex;
......
...@@ -7,22 +7,34 @@ ...@@ -7,22 +7,34 @@
<!-- 左侧 --> <!-- 左侧 -->
<el-col :span="6" class="left-area"> <el-col :span="6" class="left-area">
<el-row> <el-row>
<el-button type="primary">新增</el-button> <el-button type="primary" @click="addPart">新增</el-button>
<el-button type="primary">删除</el-button> <el-button type="danger" @click="deletePart">删除</el-button>
</el-row> </el-row>
<el-row v-for="item in testData" :key="item.key" class="title-info"> <el-scrollbar style="height:calc(100% - 40px)">
<div> <el-row v-for="item in partList" :key="item.id" class="title-info" :class="item.id === partData.id ? 'selected' : ''">
<div @click="partClick(item)">
<p>{{item.title}}</p> <p>{{item.title}}</p>
</div> </div>
<el-collapse-transition>
<div v-if="item.fold === false ? true : false">
<div v-for="(secGoog, index) in item.sectionGoodsList" :key="index" class="part-secGoog">
<p>{{secGoog.orderNo}}</p>
<p>{{secGoog.prodTitleZh}}</p>
<div> <div>
<p>111</p> <i class="el-icon-delete" @click="deleteOrder(secGoog)"></i>
<p>111</p>
<p>111</p>
<div>
<i class="el-icon-delete"></i>
</div> </div>
</div> </div>
</div>
</el-collapse-transition>
<div class="part-secGoog">
<template>
<p>{{item.secStatistics ? item.secStatistics.num : 0}}</p>
<p>{{item.secStatistics ? item.secStatistics.volume : 0}}</p>
<p>{{item.secStatistics ? item.secStatistics.weight : 0}}Kg</p>
</template>
</div>
</el-row> </el-row>
</el-scrollbar>
</el-col> </el-col>
<!-- 右侧 --> <!-- 右侧 -->
...@@ -30,16 +42,19 @@ ...@@ -30,16 +42,19 @@
<el-row class="right-title"> <el-row class="right-title">
<div>货物筛选</div> <div>货物筛选</div>
<div>当前装柜:第一部分</div> <div>当前装柜:{{partData.title}}</div>
<div>可预装方数:111m³,重量:22KG</div> <div>可预装方数:无返回m³,重量:无返回Kg</div>
</el-row> </el-row>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-row> <el-row>
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="68px">
<el-form-item label="始发地">111</el-form-item> <el-form-item label="始发地">
<p>{{importCityName(queryParams.startWarehouseId)}}</p>
</el-form-item>
<el-form-item label="目的地" prop="destination"> <el-form-item label="目的地" prop="destination">
<el-select v-model="queryParams.destination" placeholder="请选择目的地"> <el-select v-model="queryParams.destWarehouseIdList" placeholder="请选择目的地" multiple>
<el-option v-for="item in importWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="订单号" prop="orderNo"> <el-form-item label="订单号" prop="orderNo">
...@@ -47,41 +62,61 @@ ...@@ -47,41 +62,61 @@
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search">搜索</el-button> <el-button type="primary" icon="el-icon-search" @click="queryAllData">搜索</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-row> </el-row>
<!-- 表格 --> <!-- 表格 -->
<el-row> <el-scrollbar style="height:calc(100% - 124px)">
<el-row v-for="(item, index) in toBePreList" :key="index" class="toBePre-table">
<el-row class="table-title"> <el-row class="table-title">
<div>EC1111111</div> <div>{{item.orderNo}}</div>
<div>发往:xxxxxxxxxx</div> <div>发往:{{item.destWarehouseName}}</div>
<div>我司全代</div> <div>
<div>入仓时间:1111111</div> <dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="item.customsType" />
</div>
<div>入仓时间:{{item.rucangtime}}</div>
<div> <div>
<div>[全部预装]</div> <el-button type="text" @click="handleGoods('all', item)">[全部预装]</el-button>
<div>[收起]</div> <el-button type="text" @click="foldTable(index, item)">[{{item.fold ? '展开' : '收起'}}]</el-button>
</div> </div>
</el-row> </el-row>
<el-table v-loading="loading" :data="listData"> <el-collapse-transition>
<el-table-column label="序号" type="index" width="50" /> <div v-show="!item.fold">
<el-table-column label="订单号" align="center" prop="selfNo" /> <el-table :data="item.orderItemList" border>
<el-table-column label="货物信息" align="center" prop="cubNo" /> <el-table-column label="序号" type="index" align="center" width="50" />
<el-table-column label="计划箱数" align="center" prop="cabinetId" /> <el-table-column label="品名" align="center" prop="prodTitleZh" min-width="500" />
<el-table-column label="实装箱数" align="center" prop="transportType" /> <el-table-column label="品牌" align="center" prop="brandType" width="120">
<el-table-column label="体积" align="center" prop="squareNumber" /> <template slot-scope="scope">
<el-table-column label="重量" align="center" prop="weight" /> <dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="scope.row.brandType" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> </template>
</el-table-column>
<el-table-column label="箱数" align="center" prop="num" width="120" />
<el-table-column label="体积" align="center" prop="volume" width="120">
<template slot-scope="scope">
<p v-if="scope.row.volume">{{scope.row.volume}}</p>
</template>
</el-table-column>
<el-table-column label="重量" align="center" prop="weight" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="primary" size="small">预装</el-button> <p v-if="scope.row.weight">{{scope.row.weight}}kg</p>
</template>
</el-table-column>
<el-table-column label="预装柜" align="center" prop="weight" width="120" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">
<template slot-scope="scope">
<el-button type="text" size="small" @click="handleGoods('singele',scope.row)">预装</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div>
</el-collapse-transition>
</el-row> </el-row>
</el-scrollbar>
<!-- 分页 --> <!-- 分页 -->
<el-pagination background layout="prev, pager, next" :total="1000"></el-pagination> <el-pagination background layout="prev, pager, next" :page-size="pageParam.pageSize" :total="total" @current-change="pageChange" v-show="total > 0"></el-pagination>
</el-col> </el-col>
</el-row> </el-row>
...@@ -99,73 +134,233 @@ ...@@ -99,73 +134,233 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row class="button-area"> <el-row class="button-area">
<el-button type="primary">完成</el-button> <el-button type="primary" @click="handlerFinish">完成</el-button>
</el-row> </el-row>
</div> </div>
</template> </template>
<script> <script>
import {
secGoodsList,
preloadPage,
createSection,
deleteSection,
serviceMsg,
createGoods,
deleteGoods,
} from "@/api/ecw/boxSea";
/** /**
* 补单 * 补单
*/ */
export default { export default {
name: "supplementOrder", name: "supplementOrder",
inheritAttrs: false,
data() { data() {
return { return {
// loading
loading: false,
// 二维码/条码编号 // 二维码/条码编号
cabinetNo: "", cabinetNo: "",
// 表格数据 // 表格数据
listData: [ listData: [],
{ // 选中部分
selfNo: "111aaa", partData: {},
cubNo: "11111111111111111111111111", // 部分列表
}, partList: [],
{
selfNo: "111aaa",
cubNo: "11111111111111111111111111",
},
],
// 左侧数据
testData: [
{
key: 1,
title: "第一部分",
},
{
key: 2,
title: "第二部分",
},
],
// 查询参数 // 查询参数
queryParams: {}, queryParams: {
startWarehouseId: this.$attrs.shipmentObj.startWarehouseId,
},
pageParam: { pageNo: 1, pageSize: 10 },
// 待预装
toBePreList: [],
total: 0,
}; };
}, },
methods: {}, created() {
this.queryAllData();
},
methods: {
/* 查询已预装 */
getSecGoods() {
secGoodsList({ shipmentId: this.$attrs.shipmentObj.id }).then((res) => {
this.partList = res.data.map((item, index) => {
item.fold = true;
if (
Object.keys(this.partData).length &&
this.partData.id === item.id
) {
item.fold = false;
}
return {
...item,
title: `第 ${++index} 部分`,
};
});
if (this.partList.length && !Object.keys(this.partData).length) {
this.partList[0].fold = false;
this.partData = this.partList[0];
}
});
},
/* 查询待预装 */
getPreLoad() {
// 处理查询参数
let params = {
...this.queryParams,
};
preloadPage({ ...params, ...this.pageParam }).then((res) => {
this.toBePreList = res.data.list;
this.total = res.data.total;
});
},
/* 删除订单 */
deleteOrder(data) {
let ids = [data.orderItemId];
deleteGoods(ids).then((res) => {
serviceMsg(res, this).then(() => {
this.getSecGoods();
});
});
},
/** 预装 */
handleGoods(type, item) {
let params = {
secId: this.partData.id,
shipmentId: this.$attrs.shipmentObj.id,
orderId: item.orderId,
};
if (type === "all") {
params.orderItemIdList = item.orderItemList.map(
(data) => data.orderItemId
);
} else {
params.orderItemIdList = [item.orderItemId];
}
createGoods(params).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
},
/* 增加部分 */
addPart() {
createSection({ shipmentId: this.$attrs.shipmentObj.id }).then((res) => {
serviceMsg(res, this).then(() => {
this.getSecGoods();
});
});
},
/* 删除部分 */
deletePart() {
this.$confirm("确认删除该部分及其已预装订单?", "提示", {
type: "warning",
})
.then((_) => {
deleteSection(this.partData.id).then((res) => {
serviceMsg(res, this).then(() => {
this.partData = {};
this.getSecGoods();
});
});
})
.catch((_) => {});
},
/* 部分点击 */
partClick(item) {
item.fold = !item.fold;
this.partData = item;
let copyList = [...this.partList];
copyList = copyList.map((cItem) => {
cItem.fold = true;
if (item.id === cItem.id) {
cItem.fold = false;
return cItem;
}
});
this.$set(this.partList, copyList);
},
/* 获取城市 */
importCityName(id) {
var arr = this.$attrs.warehouseList.filter((item) => item.id == id);
return arr.length > 0 ? arr[0].titleZh : "";
},
/* 待预装订单分页 */
pageChange(page) {
this.pageParam.pageNo = page;
this.getPreLoad();
},
/* 折叠 */
foldTable(index, item) {
item.fold = !item.fold;
this.$set(this.toBePreList, index, item);
},
/* 查询所有数据 */
queryAllData() {
this.getSecGoods();
this.pageParam.pageNo = 1;
this.getPreLoad();
},
/* 完成 */
handlerFinish() {
this.$confirm("确定执行操作?", "提示", {
type: "warning",
})
.then((_) => {
this.$emit("supplementFinish");
})
.catch((_) => {});
},
},
computed: {
/** 目的地 */
importWarehouseList() {
return this.$attrs.warehouseList.filter(
(item) => item.tradeType == "1" || item.type == "3"
);
},
},
}; };
</script> </script>
<style lang="scss" scoped> <style lang="scss">
.supplementOrder { .supplementOrder {
display: flex;
flex-direction: column;
p { p {
margin: 0; margin: 0;
} }
.el-card__body {
height: 100%;
}
.content-area { .content-area {
display: flex; display: flex;
height: 100%;
.left-area { .left-area {
border-right: 3px solid #e6ebf5; border-right: 3px solid #e6ebf5;
.el-scrollbar__view {
padding-right: 10px; padding-right: 10px;
}
.title-info { .title-info {
margin-top: 10px; margin-top: 10px;
height: auto; height: auto;
&.selected {
> div:first-child {
background-color: #4f9cdd;
color: #fff;
}
}
> div:first-child { > div:first-child {
font-size: 16px; font-size: 16px;
background-color: #f2f2f2; background-color: #f2f2f2;
line-height: 30px; line-height: 30px;
text-align: center; text-align: center;
cursor: pointer;
} }
> :last-child { .part-secGoog {
margin-top: 5px;
display: flex; display: flex;
align-items: center; align-items: center;
> p { > p {
...@@ -205,6 +400,7 @@ export default { ...@@ -205,6 +400,7 @@ export default {
} }
.table-title { .table-title {
display: flex; display: flex;
align-items: center;
line-height: 30px; line-height: 30px;
background-color: #4f9cdd; background-color: #4f9cdd;
color: #fff; color: #fff;
...@@ -215,7 +411,10 @@ export default { ...@@ -215,7 +411,10 @@ export default {
flex: 1; flex: 1;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;
> div { > .el-button--text {
color: #fff;
}
> .el-button--text:last-child {
margin-right: 10px; margin-right: 10px;
} }
} }
...@@ -225,6 +424,10 @@ export default { ...@@ -225,6 +424,10 @@ export default {
padding: 0; padding: 0;
text-align: right; text-align: right;
} }
.toBePre-table {
margin-bottom: 10px;
}
} }
} }
.totle-info { .totle-info {
......
...@@ -120,9 +120,11 @@ ...@@ -120,9 +120,11 @@
<el-button type="primary" size="small" @click="foldTable(index, part)">{{part.fold ? '展开' : '收起'}}</el-button> <el-button type="primary" size="small" @click="foldTable(index, part)">{{part.fold ? '展开' : '收起'}}</el-button>
</div> </div>
</el-row> </el-row>
<el-table v-loading="preLoading" border :data="part.sectionGoodsList" v-show="!part.fold" @select="(selection)=>checkboxSelect(selection, part)" @select-all="(selection)=>checkboxSelect(selection, part)"> <el-collapse-transition>
<div v-show="!part.fold">
<el-table v-loading="preLoading" border :data="part.sectionGoodsList" @select="(selection)=>checkboxSelect(selection, part)" @select-all="(selection)=>checkboxSelect(selection, part)">
<el-table-column type="selection" align="center" width="55" fixed="left" /> <el-table-column type="selection" align="center" width="55" fixed="left" />
<el-table-column label="订单号" align="center" prop="orderId" width="120" /> <el-table-column label="订单号" align="center" prop="orderNo" width="120" />
<el-table-column label="目的地" align="center" prop="destWarehouseName" width="120" /> <el-table-column label="目的地" align="center" prop="destWarehouseName" width="120" />
<el-table-column label="入仓时间" align="center" prop="rucangtime" width="120" /> <el-table-column label="入仓时间" align="center" prop="rucangtime" width="120" />
<el-table-column label="品名" align="center" prop="prodTitleZh" width="120" /> <el-table-column label="品名" align="center" prop="prodTitleZh" width="120" />
...@@ -155,6 +157,8 @@ ...@@ -155,6 +157,8 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div>
</el-collapse-transition>
</el-row> </el-row>
</el-scrollbar> </el-scrollbar>
</el-col> </el-col>
...@@ -177,8 +181,8 @@ ...@@ -177,8 +181,8 @@
</div> </div>
</div> </div>
</el-row> </el-row>
<el-scrollbar style="height:calc(100% - 40px)">
<el-pagination background layout="prev, pager, next" :page-size="pageParam.pageSize" :total="total" @current-change="pageChange" v-show="total > 0"></el-pagination> <el-pagination background layout="prev, pager, next" :page-size="pageParam.pageSize" :total="total" @current-change="pageChange" v-show="total > 0"></el-pagination>
<el-scrollbar style="height:calc(100% - 75px)">
<el-row v-for="(item, index) in toBePreList" :key="index" class="tobePre-row"> <el-row v-for="(item, index) in toBePreList" :key="index" class="tobePre-row">
<el-row class="preinstall-title order-title"> <el-row class="preinstall-title order-title">
<div> <div>
...@@ -189,7 +193,9 @@ ...@@ -189,7 +193,9 @@
<p>{{item.destWarehouseName}}</p> <p>{{item.destWarehouseName}}</p>
</div> </div>
<div> <div>
<p>{{item.warehouseType}}</p> <p>
<dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="item.customsType" />
</p>
</div> </div>
<div> <div>
<p>入仓时间:</p> <p>入仓时间:</p>
...@@ -309,7 +315,7 @@ export default { ...@@ -309,7 +315,7 @@ export default {
// 查询参数 // 查询参数
queryParams: {}, queryParams: {},
pageParam: { pageNo: 1, pageSize: 5 }, pageParam: { pageNo: 1, pageSize: 10 },
// 目的地操作员 // 目的地操作员
operatorData: {}, operatorData: {},
// 校验 // 校验
...@@ -441,7 +447,7 @@ export default { ...@@ -441,7 +447,7 @@ export default {
}, },
/* 待预装订单分页 */ /* 待预装订单分页 */
pageChange(page) { pageChange(page) {
this.queryParams.page = page; this.pageParam.pageNo = page;
this.getPreLoad(); this.getPreLoad();
}, },
/* 折叠 */ /* 折叠 */
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
<script> <script>
import { shipConfigure, serviceMsg } from "@/api/ecw/boxSea"; import { shipConfigure, serviceMsg } from "@/api/ecw/boxSea";
import { formatNumberString, constantDict } from "../utils"; import { formatNumberString, formatDateStr, constantDict } from "../utils";
/** /**
* 配船 * 配船
*/ */
...@@ -47,6 +47,7 @@ export default { ...@@ -47,6 +47,7 @@ export default {
const voName = this.$attrs.currNode.voName; const voName = this.$attrs.currNode.voName;
let oldData = { ...this.shipmentObj[voName] }; let oldData = { ...this.shipmentObj[voName] };
oldData = formatNumberString(oldData, ["saExmtStatus"]); oldData = formatNumberString(oldData, ["saExmtStatus"]);
oldData = formatDateStr(oldData, ["configTime"]);
this.shipObj = oldData; this.shipObj = oldData;
}, },
methods: { methods: {
......
...@@ -59,7 +59,8 @@ export default { ...@@ -59,7 +59,8 @@ export default {
this.$refs["unloadingForm"].validate((valid) => { this.$refs["unloadingForm"].validate((valid) => {
if (valid) { if (valid) {
if (operateType === 2) { if (operateType === 2) {
const { ulStatus } = this.$attrs.shipmentObj; const { keyName } = this.$attrs.currNode;
const ulStatus = this.$attrs.shipmentObj[keyName];
if (ulStatus !== 145) { if (ulStatus !== 145) {
this.$message.warning("请先通过卸柜审批"); this.$message.warning("请先通过卸柜审批");
return; return;
......
...@@ -13,15 +13,15 @@ ...@@ -13,15 +13,15 @@
<el-descriptions-item label="出货渠道"> <el-descriptions-item label="出货渠道">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="details.channelId"></dict-tag> <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="details.channelId"></dict-tag>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="始发地">{{details.logisticsInfoDto.startTitleZh}}</el-descriptions-item> <el-descriptions-item label="始发地">{{ details.logisticsInfoDto ? details.logisticsInfoDto.startTitleZh :''}}</el-descriptions-item>
<el-descriptions-item label="目的地">{{details.logisticsInfoDto.destTitleZh}}</el-descriptions-item> <el-descriptions-item label="目的地">{{details.logisticsInfoDto ? details.logisticsInfoDto.destTitleZh : ''}}</el-descriptions-item>
<el-descriptions-item label="发货人姓名">{{details.consignorVO.name}}</el-descriptions-item> <el-descriptions-item label="发货人姓名">{{details.consignorVO ? details.consignorVO.name : ''}}</el-descriptions-item>
<el-descriptions-item label="发货人公司">{{details.consignorVO.company}}</el-descriptions-item> <el-descriptions-item label="发货人公司">{{details.consignorVO ? details.consignorVO.company : ''}}</el-descriptions-item>
<el-descriptions-item label="发货人电话">{{details.consignorVO.phone}}</el-descriptions-item> <el-descriptions-item label="发货人电话">{{details.consignorVO ? details.consignorVO.phone : ''}}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item> <el-descriptions-item></el-descriptions-item>
<el-descriptions-item label="收货人姓名">{{details.consigneeVO.name}}</el-descriptions-item> <el-descriptions-item label="收货人姓名">{{details.consigneeVO ? details.consigneeVO.name :''}}</el-descriptions-item>
<el-descriptions-item label="收货人公司">{{details.consigneeVO.company}}</el-descriptions-item> <el-descriptions-item label="收货人公司">{{details.consigneeVO ? details.consigneeVO.company :''}}</el-descriptions-item>
<el-descriptions-item label="收货人电话">{{details.consigneeVO.phone}}</el-descriptions-item> <el-descriptions-item label="收货人电话">{{details.consigneeVO ? details.consigneeVO.phone :''}}</el-descriptions-item>
<el-descriptions-item></el-descriptions-item> <el-descriptions-item></el-descriptions-item>
</el-descriptions> </el-descriptions>
</div> </div>
...@@ -36,9 +36,14 @@ export default { ...@@ -36,9 +36,14 @@ export default {
type:Object, type:Object,
default:()=>{ default:()=>{
return { return {
logisticsInfoDto:undefined, logisticsInfoDto:{
consignorVO:undefined, startTitleZh:'',
consigneeVO:undefined, destTitleZh:''
},
consignorVO:{},
consigneeVO:{},
} }
} }
}, },
......
...@@ -55,13 +55,13 @@ ...@@ -55,13 +55,13 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<div style="padding: 20px">
<work-flow xmlkey="free_apply" v-model="selectedUsers" />
</div>
<div style="text-align: center;margin-top: 20px;"> <div style="text-align: center;margin-top: 20px;">
<el-button style="margin-right: 30px;" @click="submit">提交</el-button> <el-button style="margin-right: 30px;" @click="submit">提交</el-button>
<el-button>取消</el-button> <el-button>取消</el-button>
</div> </div>
<div style="padding: 20px">
<work-flow xmlkey="free_apply" v-model="selectedUsers" />
</div>
</div> </div>
</template> </template>
...@@ -128,6 +128,7 @@ export default { ...@@ -128,6 +128,7 @@ export default {
this.isModifyIf = false; this.isModifyIf = false;
}, },
submit(){ submit(){
if(this.isModifyIf){ if(this.isModifyIf){
applicationUpdate({...this.list[this.isModify.findIndex(e => e === false)],status:1}).then(r => { applicationUpdate({...this.list[this.isModify.findIndex(e => e === false)],status:1}).then(r => {
if(r.code === 0){ if(r.code === 0){
...@@ -144,6 +145,8 @@ export default { ...@@ -144,6 +145,8 @@ export default {
this.selectedUsers = []; this.selectedUsers = [];
} }
}) })
}else {
this.$message.success('当前有申请费用为审核中或未提交,请审核后在申请');
} }
} }
}, },
......
...@@ -202,6 +202,7 @@ ...@@ -202,6 +202,7 @@
v-hasPermi="['ecw:order:update']">退仓</el-button> v-hasPermi="['ecw:order:update']">退仓</el-button>
<el-button type="text" v-if="scope.row.status === 5" size="mini" @click="$router.push({path:'/order/batch-single-application',query:{list:scope.row.orderId}})" >调仓</el-button> <el-button type="text" v-if="scope.row.status === 5" size="mini" @click="$router.push({path:'/order/batch-single-application',query:{list:scope.row.orderId}})" >调仓</el-button>
<el-button type="text" size="mini" @click="$router.push({path:'/order/transfer-warehousing/' + scope.row.orderId + '/' + 1 })" >调拨出仓</el-button> <el-button type="text" size="mini" @click="$router.push({path:'/order/transfer-warehousing/' + scope.row.orderId + '/' + 1 })" >调拨出仓</el-button>
<el-button type="text" size="mini" @click="$router.push({path:'/order/transfer-to-warehouse/' + scope.row.orderId + '/' + 2 })" >调拨到仓</el-button>
</div> </div>
</el-popover> </el-popover>
......
<template> <template>
<div style="padding: 0 20px"> <div style="padding: 0 20px">
<h1>调拨出仓</h1> <h1>调拨出仓</h1>
<el-divider content-position="left"> <el-divider content-position="left">
订单信息 订单信息
</el-divider> </el-divider>
<ordeDetailsForm :details="{}"></ordeDetailsForm> <ordeDetailsForm :details="orderDetails"></ordeDetailsForm>
<el-divider content-position="left"> <el-divider content-position="left">
货物信息 货物信息
</el-divider> </el-divider>
<el-table> <el-table :data="orderDetails.orderItemVOList ? orderDetails.orderItemVOList : [] ">
<el-table-column label="序号"></el-table-column> <el-table-column type="index" label="序号"></el-table-column>
<el-table-column label="品名"></el-table-column> <el-table-column label="品名">
<el-table-column label="填单货物属性"></el-table-column> <template v-slot="{row}">
<el-table-column label="入库货物属性"></el-table-column> <div>{{ row.prodTitleZh }}</div>
<div>{{ row.prodTitleEn }}</div>
</template>
</el-table-column>
<el-table-column label="填单货物属性">
<template v-slot="{row}">
<el-descriptions size="mini" :column="1">
<el-descriptions-item label="品牌">{{ row.brand }}</el-descriptions-item>
<el-descriptions-item label="箱数">{{ row.num }}</el-descriptions-item>
<el-descriptions-item label="体积">{{ row.volume }}</el-descriptions-item>
<el-descriptions-item label="重量">
</el-descriptions-item>
</el-descriptions>
</template>
</el-table-column>
<el-table-column label="入库货物属性">
<template v-slot="{row}">
<el-descriptions size="mini" :column="4">
<el-descriptions-item label="品牌">{{ row.brand }}</el-descriptions-item>
<el-descriptions-item label="箱数"> {{ row.warehouseInInfoVO.cartonsNum }}</el-descriptions-item>
<el-descriptions-item label="体积">{{ row.warehouseInInfoVO.volume }}</el-descriptions-item>
<el-descriptions-item label="重量"> {{ row.warehouseInInfoVO.weight }}</el-descriptions-item>
</el-descriptions>
</template>
</el-table-column>
<el-table-column label="最后操作时间"></el-table-column> <el-table-column label="最后操作时间"></el-table-column>
<el-table-column label="状态"></el-table-column> <el-table-column label="状态">
<template v-slot="{row}">
<dict-tag :value="row.warehouseInInfoVO.diffType" :type="DICT_TYPE.ORDER_WAREHOUSE_IN_STATUS"/>
</template>
</el-table-column>
</el-table> </el-table>
<el-divider content-position="left"> <el-divider content-position="left" v-if="type == 2">
调仓明细 调仓明细
</el-divider> </el-divider>
<el-table> <el-table :data="warehouseList" v-if="type == 2">
<el-table-column label="调仓编号"></el-table-column> <el-table-column label="调仓编号" prop="id"></el-table-column>
<el-table-column label="调出仓库"></el-table-column> <el-table-column label="调出仓库" prop="warehouseOutId" ></el-table-column>
<el-table-column label="调入仓库"></el-table-column> <el-table-column label="调入仓库" prop="warehouseInId"></el-table-column>
<el-table-column label="申请人"></el-table-column> <el-table-column label="申请人"></el-table-column>
<el-table-column label="申请时间"></el-table-column> <el-table-column label="申请时间">
<el-table-column label="状态"></el-table-column> <template v-slot="{row}">
<el-table-column label="操作"></el-table-column>
</template>
</el-table-column>
<el-table-column label="状态">
<template v-slot="{row}">
{{STATUS[row.status]}}
</template>
</el-table-column>
<el-table-column label="操作">
<template v-slot="{row}">
<el-button v-if="row.status === 4" type="text">
撤销
</el-button>
</template>
</el-table-column>
</el-table> </el-table>
<el-descriptions :column="4" border> <el-descriptions style="margin-top: 20px" :column="4" border>
<el-descriptions-item label="集运仓库">kooriookami</el-descriptions-item> <el-descriptions-item label="集运仓库">{{ warehouseDetails.warehouseOutName }}</el-descriptions-item>
<el-descriptions-item label="储位">18100000000</el-descriptions-item> <el-descriptions-item label="储位">{{}}</el-descriptions-item>
<el-descriptions-item label="调拨目标仓">苏州市</el-descriptions-item> <el-descriptions-item label="调拨目标仓">{{ warehouseDetails.warehouseInId }}</el-descriptions-item>
<el-descriptions-item label="物流公司"></el-descriptions-item> <el-descriptions-item label="物流公司">
<el-descriptions-item label="物流单号"> 1188 号</el-descriptions-item> <el-input v-model="params.logisticsCompany"></el-input>
<el-descriptions-item label="联系电话"> 1188 号</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="出仓日期"> 1188 号</el-descriptions-item> <el-descriptions-item label="物流单号">
<el-descriptions-item label="到仓日期"> 1188 号</el-descriptions-item> <el-input v-model="params.logisticsNo"></el-input>
</el-descriptions-item>
<el-descriptions-item label="联系电话">
<el-input v-model="params.phone"></el-input>
</el-descriptions-item>
<el-descriptions-item label="出仓日期">
<el-date-picker
v-model="params.deliveryDate"
type="date"
placeholder="选择日期">
</el-date-picker>
</el-descriptions-item>
<!-- <el-descriptions-item label="到仓日期">-->
<!-- <el-date-picker-->
<!-- v-model="params.deliveryDate"-->
<!-- type="date"-->
<!-- placeholder="选择日期">-->
<!-- </el-date-picker>-->
<!-- </el-descriptions-item>-->
</el-descriptions> </el-descriptions>
<el-divider content-position="left"> <el-divider content-position="left">
出仓影像 出仓影像
</el-divider> </el-divider>
<el-from> <image-and-video-upload :fileSize="50" :isShowTip="true" v-model="params.urls" ></image-and-video-upload>
<el-form-item label="备注"></el-form-item> <el-form>
</el-from> <el-form-item label="备注">
<el-input v-model="params.deliveryRemark" type="textarea"></el-input>
</el-form-item>
</el-form>
<div> <div>
<el-button>确认出仓</el-button> <el-button v-if="type === 1" @click="submit">确认出仓</el-button>
<el-button>返回</el-button> <el-button v-else @click="submit2">确认到仓</el-button>
<el-button @click="$router.back()">返回</el-button>
</div>
</div> </div>
</div>
</template> </template>
<script> <script>
import ordeDetailsForm from "@/views/ecw/order/components/ordeDetailsForm"; import ordeDetailsForm from "@/views/ecw/order/components/ordeDetailsForm";
import {
getOrder,
orderWarehouseInGetAdjustInfo,
orderWarehousePicturePage, warehouseAdjustArrived, warehouseAdjustPage,
warehouseAdjustSendOut
} from "@/api/ecw/order";
import Template from "@/views/cms/template";
import {DICT_TYPE} from '@/utils/dict';
import ImageAndVideoUpload from "@/components/ImageAndVideoUpload/index";
let STATUS = {1:'审核中', 2:'已通过', 3:'已拒绝', 4:'已出仓', 5:'已到仓'}
export default { export default {
name: "transferWarehousing", name: "transferWarehousing",
components:{ components: {
ordeDetailsForm ImageAndVideoUpload,
Template,
ordeDetailsForm,
},
props: {
orderId: [String, Number],
type: [String],
},
data() {
return {
STATUS,
orderDetails: {},
DICT_TYPE,
warehouseDetails: {},
warehouseList:[],
params: {
deliveryDate: "",
deliveryRemark: "",
id: undefined,
logisticsCompany: "",
logisticsNo: "",
phone: "",
urls: []
}
}
},
created() {
getOrder(this.orderId).then(r => {
if (r.code === 0) {
this.orderDetails = r.data;
}
})
if(this.type == 2){
warehouseAdjustPage({rows:100,orderId:this.orderId}).then(r => {
this.warehouseList = r.data.list
})
}
orderWarehouseInGetAdjustInfo({orderId: this.orderId, lang: 0}).then(r => {
this.warehouseDetails = r.data[0]
this.params.phone = this.warehouseDetails.phone;
this.params.logisticsNo = this.warehouseDetails.logisticsNo;
this.params.id = this.warehouseDetails.id;
this.params.deliveryDate = this.warehouseDetails.deliveryDate
orderWarehousePicturePage({rows:100,bizId:this.params.id,type:this.type == 1 ? 2 : 3 }).then(r => {
if(r.code === 0){
this.params.urls = r.data.list.map(e => e.url);
}
})
})
},
methods:{
submit(){
warehouseAdjustSendOut(this.params).then(
r => {
if(r.code === 0){
this.$message.success('调拨出仓成功');
this.$router.back();
}
}
)
},
submit2(){
warehouseAdjustArrived(this.params).then(r => {
{
if(r.code === 0){
this.$message.success('调到仓成功');
this.$router.back();
}
}
})
}
}, },
} }
</script> </script>
......
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