Commit 2fa74d32 authored by dragondean@qq.com's avatar dragondean@qq.com
parents bb983352 a1a853fb
...@@ -163,6 +163,15 @@ export function orderWarehouseIn(data){ ...@@ -163,6 +163,15 @@ export function orderWarehouseIn(data){
}) })
} }
// 入仓
export function orderWarehouseInUpdateApply(data){
return request({
url: '/order/order-warehouse-in/update-apply',
method: 'put',
data
})
}
// 入仓完成 // 入仓完成
export function orderWarehouseInFinish(data){ export function orderWarehouseInFinish(data){
return request({ return request({
......
...@@ -170,9 +170,12 @@ export default { ...@@ -170,9 +170,12 @@ export default {
}, },
}, },
watch: { watch: {
processId(val) { processId: {
immediate: true,
handler(val) {
this.getApprovalDetail(val); this.getApprovalDetail(val);
}, },
},
boxBackVO(val) { boxBackVO(val) {
// 柜型 // 柜型
this.getCabinetLabel(val.cabinetId); this.getCabinetLabel(val.cabinetId);
......
<template>
<div class="app-container">
<!-- 搜索工作栏 -->
<el-card>
<div slot="header" class="card-title">拆单申请-{{orderData.orderNo||''}}</div>
<div class="btn-header">
<span class="card-title">原单信息</span>
<div>
<span v-if="orderData.status==99" class="red">异常无法拆单</span>
<el-button v-else type="primary" @click="addSplit">新建拆单 </el-button>
</div>
</div>
<el-descriptions :column="4">
<el-descriptions-item label="唛头">
{{orderData.marks?orderData.marks:''}}
</el-descriptions-item>
<el-descriptions-item label="已到箱数/总箱数">
<span>{{orderData.sumNum||0}}/{{orderData.costVO?orderData.costVO.totalNum:0}}</span>
</el-descriptions-item>
<el-descriptions-item label="订单状态">
<!-- <dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="orderData.status" /> -->
{{orderData.status==99?'异常':'正常'}}
</el-descriptions-item>
<el-descriptions-item label="送货日期">
{{orderData.consigneeVO?orderData.consigneeVO.deliveryDate:''}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="4">
<el-descriptions-item label="运输方式">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="orderData.transportId" />
</el-descriptions-item>
<el-descriptions-item label="始发地">
{{orderData.logisticsInfoDto?orderData.logisticsInfoDto.startTitleZh:''}}
</el-descriptions-item>
<el-descriptions-item label="目的地">
{{orderData.logisticsInfoDto?orderData.logisticsInfoDto.destTitleZh:''}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="4">
<el-descriptions-item label="发货人姓名">
{{orderData.consignorVO?orderData.consignorVO.name||'':''}}
</el-descriptions-item>
<el-descriptions-item label="发货公司">
{{orderData.consignorVO?orderData.consignorVO.company||'':''}}
</el-descriptions-item>
<el-descriptions-item label="发货电话">
{{orderData.consignorVO?(orderData.consignorVO.phone?(orderData.consignorVO.countryCode+orderData.consignorVO.phone):''):''}}
</el-descriptions-item>
</el-descriptions>
<el-descriptions :column="4">
<el-descriptions-item label="收货人姓名">
{{orderData.consigneeVO?orderData.consigneeVO.name||'':''}}
</el-descriptions-item>
<el-descriptions-item label="收货公司">
{{orderData.consigneeVO?orderData.consigneeVO.company||'':''}}
</el-descriptions-item>
<el-descriptions-item label="收货电话">
{{orderData.consigneeVO?(orderData.consigneeVO.phone?(orderData.consigneeVo.countryCode+orderData.consigneeVO.phone):''):''}}
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-card class="card">
<!-- 列表 -->
<div slot="header" class="card-title">货物信息</div>
<el-table id='table' v-loading="loading" border :data="orderData.orderItemVOList" :summary-method="getSummaries" show-summary>
<el-table-column label="序号" align="center" prop="id" type="index" width="60">
<template slot-scope="scope">
<span>{{scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="品名" align="center">
<template slot-scope="scope">
<el-row>{{scope.row.prodTitleZh}}</el-row>
<el-row>{{scope.row.prodTitleEn}}</el-row>
</template>
</el-table-column>
<el-table-column label="装柜货物属性" align="center" width="600">
<template slot-scope="scope">
<el-row>
<span>规格:{{scope.row.boxGauge}}</span>
</el-row>
<el-row>
<span>品牌:
<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="scope.row.brandType" />
</span>
<span style="margin-left: 10px;">箱数:{{scope.row.warehouseInInfoVO ? scope.row.warehouseInInfoVO.cartonsNum : 0 }}</span>
<span style="margin-left: 10px;">体积:{{scope.row.warehouseInInfoVO ? scope.row.warehouseInInfoVO.volume : 0 }}</span>
<span style="margin-left: 10px;">重量:{{scope.row.warehouseInInfoVO ? scope.row.warehouseInInfoVO.weight : 0 }}kg</span>
</el-row>
</template>
</el-table-column>
<el-table-column label="最后操作时间" align="center">
<template slot-scope="scope">
<span>{{parseTime(scope.row.updateTime)}}</span>
</template>
</el-table-column>
<el-table-column label="状态" align="center">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="scope.row.status" />
</template>
</el-table-column>
</el-table>
</el-card>
<el-card class="card" v-if="splitData.length>0">
<!-- 列表 -->
<div slot="header" class="card-title">拆单信息</div>
<div v-for="(item, index) in splitData" :key="index">
<div class="btn-header">
<div>
<p class="card-info">
<span class="card-title">
{{item.orderNo}}
</span>
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="item.transportId" />
<span>发往:{{importCityName(item.dstWarehouseId)}}</span>
</p>
</div>
<div>
<el-button v-if="index==0" disabled type="primary" @click="addShop(index)">放入</el-button>
<el-button v-if="index!=0" type="primary" @click="addShop(index)">放入</el-button>
<el-button type="primary" plain @click="deleteSplit(item.id)">删除</el-button>
</div>
</div>
<el-table border :data="item.orderSplitItemBackVOList">
<el-table-column label="序号" align="center" prop="id" type="index">
<template slot-scope="scope">
<span>{{scope.$index + 1}}</span>
</template>
</el-table-column>
<el-table-column label="品名" align="center">
<template slot-scope="scope">
<el-row>{{scope.row.prodTitleZh}}</el-row>
<el-row>{{scope.row.prodTitleEn}}</el-row>
</template>
</el-table-column>
<el-table-column label="品牌" align="center">
<template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_IS_BRAND" :value="scope.row.brandType" />
</template>
</el-table-column>
<el-table-column label="体积" align="center">
<template slot-scope="scope">
<span>{{scope.row.volume}}</span>
</template>
</el-table-column>
<el-table-column label="重量" align="center">
<template slot-scope="scope">
<span>{{scope.row.weight}}</span>
</template>
</el-table-column>
<el-table-column label="箱数" align="center">
<template slot-scope="scope">
<span>{{scope.row.num}}</span>
</template>
</el-table-column>
<el-table-column label="计划装柜" align="center">
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button v-if="index==0" disabled size="mini" type="text" icon="el-icon-delete" @click="removeShop(scope.row.id)">移出</el-button>
<el-button v-else size="mini" type="text" icon="el-icon-delete" @click="removeShop(scope.row.id)">移出</el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-card>
<work-flow xmlkey="split_order" v-model="selectedUsers"></work-flow>
<div slot="footer" class="card footer_btn" v-if="orderData.status!=99">
<el-button v-if="orderData.status!=19" type="primary" @click="submitForm">提交申请</el-button>
<el-button v-if="orderData.status!=19" plain type="primary" @click="$emit('closeDialog')">取消</el-button>
<el-button v-if="orderData.status==19" type="primary" disabled>审核中</el-button>
<el-button v-if="orderData.status==19" plain type="primary" @click="cancelSplit">取消审核</el-button>
<el-button v-if="orderData.status==19" plain type="primary" @click="$emit('closeDialog')">返回</el-button>
</div>
<!-- 对话框(添加 / 修改) -->
<el-dialog title="新建拆单" :visible.sync="open" width="400px" append-to-body>
<el-form ref="formSplit" :model="form" :rules="rules" label-width="80px">
<el-row>
<el-form-item label="运输方式">
<dict-selector :type="DICT_TYPE.ECW_TRANSPORT_TYPE" v-model="form.transportId" formatter="number" />
</el-form-item>
</el-row>
<el-row>
<el-form-item label="目的仓库:">
<el-select v-model="form.destWarehouseId" placeholder="请选择目的仓库">
<el-option v-for="item in importCityList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="出货渠道" v-if="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass == 'channel'">
<el-select v-model="form.channelId" placeholder="请选择出货渠道">
<el-option :disabled="getDictData(DICT_TYPE.ECW_TRANSPORT_TYPE, form.transportId).cssClass != 'channel'" v-for="item in channelData" :key="item.channelId" :label="item.nameZh" :value="item.channelId" />
</el-select>
</el-form-item>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="haddleAdd">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
<!-- 对话框(添加 / 修改) -->
<el-dialog title="放入品名" :visible.sync="shopOpen" width="400px" append-to-body>
<el-form ref="shopForm" :model="shopForm" :rules="shopRules" label-width="80px">
<el-row>
<el-form-item label="中文品名:">
<el-select v-model="shopForm.prodTitleZh" placeholder="请选择中文品名" @change="changeProdTitleZh">
<el-option v-for="item in orderData.orderItemVOList" :label="item.prodTitleZh" :value="item.prodTitleZh" :key="item.prodTitleZh"></el-option>
</el-select>
</el-form-item>
</el-row>
<el-row>
<el-form-item label="英文品名:">
<el-select v-model="shopForm.prodTitleEn" placeholder="请选择英文品名" @change="changeProdTitleEn">
<el-option v-for="item in orderData.orderItemVOList" :label="item.prodTitleEn" :value="item.prodTitleEn" :key="item.prodTitleEn"></el-option>
</el-select>
</el-form-item>
<el-form-item label="剩余箱数:">
{{shopForm.sum||0}}
</el-form-item>
<el-form-item label="放入箱数:">
<el-input-number v-model="shopForm.num" controls-position="right" :min="1" :max="shopForm.sum"></el-input-number>
</el-form-item>
<el-form-item label="备注信息:">
<el-input v-model="shopForm.remarks"></el-input>
</el-form-item>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="shopAdd">确 定</el-button>
<el-button @click="shopCancel">取 消</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { getDictData, getDictDatas } from "@/utils/dict";
import {
getSplitList,
splitApply,
createSplit,
cancelApply,
createSplitItem,
deleteSplitItem,
deleteSplit,
} from "@/api/ecw/orderHandle";
import { getTradeCityList } from "@/api/ecw/region";
import { getChannelList } from "@/api/ecw/channel";
import WorkFlow from "@/components/WorkFlow";
import { getOrder } from "@/api/ecw/order";
export default {
name: "splitOrder",
components: {
WorkFlow,
},
props: {
currRow: Object,
},
data() {
return {
checked: false,
orderData: {},
splitData: [],
splitIndex: 0,
channelData: [],
tradeCityList: [],
multipleSelection: [],
loading: false,
open: false,
form: {},
selectedUsers: [],
shopOpen: false,
shopForm: {},
// 表单校验
rules: {
transportId: [
{ required: true, message: "请选择运输方式", trigger: "change" },
],
warehouseIds: [
{ required: true, message: "请选择目的仓库", trigger: "change" },
],
channelId: [
{ required: true, message: "请选择出货渠道", trigger: "change" },
],
},
// 表单校验
shopRules: {
prodTitleZh: [
{ required: true, message: "请选择中文品名", trigger: "change" },
],
prodTitleEn: [
{ required: true, message: "请选择英文品名", trigger: "change" },
],
},
queryParams: {
orderId: 96,
lang: 0,
},
query: {
page: 1,
rows: 20,
},
splitItemIndex: 0,
};
},
created() {
this.getChannel();
getTradeCityList().then((res) => (this.tradeCityList = res.data));
this.queryParams.orderId = this.currRow.orderId;
this.getList();
this.getOrder();
},
watch: {
//监听table这个对象
tableData: {
// 立即监听
immediate: true,
handler() {
this.$nextTick(() => {
const tds = document.querySelectorAll(
"#table .el-table__footer-wrapper tr>td"
);
// colSpan合并列
tds[1].colSpan = 5;
tds[1].style.textAlign = "left";
tds[2].style.display = "none";
tds[3].style.display = "none";
tds[4].style.display = "none";
});
},
},
},
computed: {
getDictData() {
return (type, value) => getDictData(type, value) || {};
},
getDictDatas() {
return getDictDatas;
},
importCityList() {
return this.tradeCityList.filter((item) => item.type == 1);
},
},
methods: {
getOrder() {
this.loading = true;
getOrder(this.queryParams.orderId).then((response) => {
this.orderData = response.data;
this.query.destWarehouseId =
response.data.logisticsInfoDto.startWarehouseId;
this.loading = false;
});
},
/** 查询列表 */
getList() {
this.loading = true;
// 执行查询
getSplitList(this.queryParams).then((response) => {
this.splitData = response.data;
this.loading = false;
});
},
getChannel() {
getChannelList().then((res) => (this.channelData = res.data));
},
changeDest() {
this.query.warehouseIds = this.form.destWarehouseId;
},
arraySpanMethod({ row, column, rowIndex, columnIndex }) {
if (rowIndex == this.orderData.orderItemVOList.length) {
if (columnIndex === 1) {
return [2, 3];
} else if (columnIndex > 1) {
return [0, 0];
}
}
},
getSummaries() {
const sums = [];
sums[0] = "小计";
if (
!this.orderData ||
!this.orderData.orderItemVOList ||
this.orderData.length == 0
) {
return sums;
}
var orderSum = 0;
var orderV = 0;
var orderW = 0;
var leviteSum = 0;
var leviteV = 0;
var leviteW = 0;
this.orderData.orderItemVOList.forEach((column, index) => {
orderSum += column.num ?? 0;
orderV += column.volume ?? 0;
orderW += column.weight ?? 0;
leviteSum += column.warehouseInInfoVO?.cartonsNum ?? 0;
leviteV += column.warehouseInInfoVO?.volume ?? 0;
leviteW += column.warehouseInInfoVO?.weight ?? 0;
});
sums[1] =
"下单统计:" +
orderSum +
"" +
orderV +
"" +
orderW +
" kg " +
" 入仓统计:" +
leviteSum +
"" +
leviteV +
"" +
leviteW +
" kg";
return sums;
},
importCityName(id) {
var arr = this.tradeCityList.filter((item) => item.id == id);
return arr.length > 0 ? arr[0].titleZh : "";
},
submitForm() {
var params = {
orderId: this.queryParams.orderId,
copyUserId: this.selectedUsers,
};
splitApply(params).then((res) => {
this.$modal.msgSuccess("申请成功");
that.getList();
});
},
addShop(index) {
this.splitItemIndex = index;
this.shopOpen = true;
},
addSplit() {
this.open = true;
},
changeProdTitleZh() {
var list = [];
list = this.orderData.orderItemVOList.filter(
(item) => item.prodTitleZh == this.shopForm.prodTitleZh
);
this.shopForm.sum = list[0].num;
this.shopForm.orderItemId = list[0].orderItemId;
this.shopForm.prodTitleEn = list[0].prodTitleEn;
},
changeProdTitleEn() {
var list = [];
list = this.orderData.orderItemVOList.filter(
(item) => item.prodTitleEn == this.shopForm.prodTitleEn
);
this.shopForm.sum = list[0].num;
this.shopForm.prodTitleZh = list[0].prodTitleZh;
},
haddleAdd() {
let that = this;
if (!that.form.transportId) {
that.$message.error("请选择运输方式");
}
if (!that.form.destWarehouseId) {
that.$message.error("请选择目的仓库");
}
// if(!this.form.channelId){
// this.$modal.msgError("请选择出货渠道");
// }
var params = {
dstWarehouseId: that.form.destWarehouseId,
parentOrderId: that.orderData.orderId,
parentOrderNo: that.orderData.orderNo,
transportId: that.form.transportId,
};
createSplit(params).then((res) => {
that.getList();
});
that.open = false;
},
cancel() {
this.open = false;
this.form = {};
},
shopAdd() {
this.$refs["shopForm"].validate((valid) => {
if (!valid) {
return;
}
});
var params = {
num: this.shopForm.num,
orderItemId: this.shopForm.orderItemId,
orderSplitId: this.splitData[this.splitItemIndex].id,
remarks: this.shopForm.remarks,
};
createSplitItem(params).then((res) => {
this.$message.success("放入成功");
this.getList();
this.shopForm = {};
});
this.shopOpen = false;
},
removeShop(id) {
let that = this;
that.$confirm("是否移除货物吗?").then(function () {
deleteSplitItem(id).then((res) => {
that.$message.success("移除成功");
that.getList();
});
});
},
cancelSplit() {
let that = this;
that.$confirm("是否取消审核吗?").then(function () {
cancelApply({ orderId: that.queryParams.orderId }).then((res) => {
that.$message.success("取消成功");
that.getList();
});
});
},
shopCancel() {
this.shopOpen = false;
this.shopForm = {};
},
/** 删除按钮操作 */
deleteSplit(id) {
let that = this;
that.$confirm("是否确认删除新拆的订单吗?").then(function () {
deleteSplit(id).then((res) => {
that.$message.success("删除成功");
that.getList();
});
});
},
},
};
</script>
<style>
.card-title {
font-size: 18px;
font-weight: bold;
margin-top: 10px;
}
.card-info {
font-size: 16px;
}
.card {
margin-top: 20px;
}
.btn-header {
width: 90%;
display: flex;
align-items: center;
justify-content: space-between;
margin: 20px 0;
}
.red {
color: #ff3430;
font-size: 15px;
}
.footer_btn {
padding-bottom: 60px;
}
</style>
...@@ -79,8 +79,8 @@ ...@@ -79,8 +79,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="text" size="small" @click="moveOut(scope.row)" v-if="!isUnderReview">移出</el-button> <el-button type="text" size="small" @click="moveOut(scope.row)" v-if="!isUnderReview && scope.row.installNum === 0">移出</el-button>
<!-- <el-button type="text" size="small" disabled>拆单</el-button> --> <el-button type="text" size="small" v-if="isShowSplitOrder(scope.row)" @click="handlerSplitOrder(scope.row, 'splitOrder','拆单')">拆单</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -162,7 +162,7 @@ ...@@ -162,7 +162,7 @@
</el-row> </el-row>
</template> </template>
<!-- 批量装柜纠错(订单号) --> <!-- 批量装柜纠错(订单号) -->
<template v-if=" dialogConfig.type === 'correctionOrder' && dialogConfig.dialogVisible"> <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 type="textarea" :rows="3" v-model="orderObj.orderNo" placeholder="请输入,多个以逗号分隔" clearable /> <el-input type="textarea" :rows="3" v-model="orderObj.orderNo" placeholder="请输入,多个以逗号分隔" clearable />
...@@ -174,7 +174,7 @@ ...@@ -174,7 +174,7 @@
</el-row> </el-row>
</template> </template>
<!-- 装柜批量输入 --> <!-- 装柜批量输入 -->
<template v-if=" dialogConfig.type === 'batchInput' && dialogConfig.dialogVisible"> <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 />
...@@ -185,6 +185,8 @@ ...@@ -185,6 +185,8 @@
<el-button @click="closeDialog">取消</el-button> <el-button @click="closeDialog">取消</el-button>
</el-row> </el-row>
</template> </template>
<!-- 拆单 -->
<splitOrder v-if="dialogConfig.type === 'splitOrder' && dialogConfig.dialogVisible" :currRow="currRow" @closeDialog="closeDialog" />
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
...@@ -205,6 +207,7 @@ import { ...@@ -205,6 +207,7 @@ import {
approvalCreate, approvalCreate,
} from "@/api/ecw/boxSea"; } from "@/api/ecw/boxSea";
import { getTotlContent, serviceMsg } from "../../utils"; import { getTotlContent, serviceMsg } from "../../utils";
import splitOrder from "./splitOrder.vue";
/** /**
* 开始装柜 * 开始装柜
...@@ -214,6 +217,7 @@ export default { ...@@ -214,6 +217,7 @@ export default {
inheritAttrs: false, inheritAttrs: false,
components: { components: {
supplementOrder, supplementOrder,
splitOrder,
}, },
props: { props: {
shipmentObj: Object, shipmentObj: Object,
...@@ -259,6 +263,8 @@ export default { ...@@ -259,6 +263,8 @@ export default {
qrCode: [{ required: true, message: "必填", trigger: "change" }], qrCode: [{ required: true, message: "必填", trigger: "change" }],
orderNo: [{ required: true, message: "必填", trigger: "change" }], orderNo: [{ required: true, message: "必填", trigger: "change" }],
}, },
// 当前行
currRow: {},
}; };
}, },
created() { created() {
...@@ -289,6 +295,11 @@ export default { ...@@ -289,6 +295,11 @@ export default {
handlerClick(type, title) { handlerClick(type, title) {
this.shwoDialog({ type, title }); this.shwoDialog({ type, title });
}, },
/* 拆单 */
handlerSplitOrder(row, type, title) {
this.currRow = row;
this.shwoDialog({ type, title });
},
/** 表格订单号点击 */ /** 表格订单号点击 */
orderClick(row) { orderClick(row) {
orderTagList({ orderId: row.orderId }).then((res) => { orderTagList({ orderId: row.orderId }).then((res) => {
...@@ -340,6 +351,9 @@ export default { ...@@ -340,6 +351,9 @@ export default {
this.$set(this.dialogConfig, "fullscreen", false); this.$set(this.dialogConfig, "fullscreen", false);
this.modifyCabinetObj = {}; this.modifyCabinetObj = {};
break; break;
case "splitOrder":
this.$set(this.dialogConfig, "fullscreen", true);
break;
} }
this.$set(this.dialogConfig, "dialogVisible", true); this.$set(this.dialogConfig, "dialogVisible", true);
}, },
...@@ -465,6 +479,13 @@ export default { ...@@ -465,6 +479,13 @@ export default {
serviceMsg(res, this); serviceMsg(res, this);
}); });
}, },
/* 是否显示拆单 */
isShowSplitOrder(row) {
if (row.num > row.installNum) {
return true;
}
return false;
},
}, },
watch: { watch: {
listData(val) { listData(val) {
......
...@@ -277,26 +277,12 @@ ...@@ -277,26 +277,12 @@
<el-row class="process-area" v-show="isAudit"> <el-row class="process-area" v-show="isAudit">
<div class="process"> <div class="process">
<div>审批流程</div> <div>审批流程</div>
<div>流程图</div> <work-flow xmlkey="shipment_preassemble" v-model="selectedUsers"></work-flow>
</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> <div>
<el-button type="primary" :disabled=true>审核中</el-button> <el-button type="primary" :disabled=true>审核中</el-button>
<el-button type="primary" @click="canclAudit">取消审核</el-button> <el-button plain type="primary" @click="canclAudit">取消审核</el-button>
<el-button type="primary" @click="closeDialog">返回</el-button> <el-button plain type="primary" @click="closeDialog">返回</el-button>
</div> </div>
</el-row> </el-row>
</div> </div>
...@@ -317,6 +303,7 @@ import { ...@@ -317,6 +303,7 @@ import {
import userSelect from "./common/userSelect.vue"; import userSelect from "./common/userSelect.vue";
import { formatDate, getTotlContent, serviceMsg } from "../utils"; import { formatDate, getTotlContent, serviceMsg } from "../utils";
import dayjs from "dayjs"; import dayjs from "dayjs";
import WorkFlow from "@/components/WorkFlow";
/** /**
* 预装 * 预装
...@@ -324,7 +311,7 @@ import dayjs from "dayjs"; ...@@ -324,7 +311,7 @@ import dayjs from "dayjs";
export default { export default {
name: "preinstall", name: "preinstall",
inheritAttrs: false, inheritAttrs: false,
components: { userSelect }, components: { userSelect, WorkFlow },
data() { data() {
return { return {
// 状态 // 状态
...@@ -364,10 +351,8 @@ export default { ...@@ -364,10 +351,8 @@ export default {
}, },
// 出货信息 // 出货信息
shipmentObj: this.$attrs.shipmentObj, shipmentObj: this.$attrs.shipmentObj,
// 抄送人
copyUser: undefined,
// 抄送人数组 // 抄送人数组
copyUsers: [], selectedUsers: [],
}; };
}, },
computed: { computed: {
...@@ -594,10 +579,6 @@ export default { ...@@ -594,10 +579,6 @@ export default {
: rucangtime[1], : rucangtime[1],
}; };
}, },
/* 删除抄送人 */
removeCopyUser(user) {
this.copyUser = this.copyUser.filter((id) => id !== user.id);
},
/* 关闭弹框 */ /* 关闭弹框 */
closeDialog() { closeDialog() {
this.$emit("closeDialog"); this.$emit("closeDialog");
...@@ -617,17 +598,6 @@ export default { ...@@ -617,17 +598,6 @@ export default {
}); });
}, },
}, },
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> </script>
...@@ -730,26 +700,6 @@ export default { ...@@ -730,26 +700,6 @@ export default {
font-weight: bolder; font-weight: bolder;
font-size: 16px; 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;
}
}
}
} }
} }
} }
......
...@@ -74,7 +74,6 @@ export default { ...@@ -74,7 +74,6 @@ export default {
seaBaseData: Array, seaBaseData: Array,
}, },
data() { data() {
console.log(this.$store.state.user);
return { return {
// 弹窗配置 // 弹窗配置
dialogConfig: { dialogConfig: {
...@@ -177,8 +176,17 @@ export default { ...@@ -177,8 +176,17 @@ export default {
let nodeIndex = 0; let nodeIndex = 0;
for (let j = 0; j < nodes.length; j++) { for (let j = 0; j < nodes.length; j++) {
const node = nodes[j]; const node = nodes[j];
const { keyName, voName, status } = node; const { keyName, voName, status, type } = node;
if (!keyName) continue;
if (!keyName && type === "agent") {
if (val[voName]) {
// 已完成agent节点
node.currStatus = "end";
++nodeIndex;
}
continue;
}
const { start, wait, end } = status; const { start, wait, end } = status;
if (start.includes(val[keyName])) { if (start.includes(val[keyName])) {
...@@ -199,7 +207,7 @@ export default { ...@@ -199,7 +207,7 @@ export default {
++nodeIndex; ++nodeIndex;
} }
} }
// 如果相等标识步骤已完成 // 如果相等标识步骤已完成
if (nodeIndex === nodes.length) { if (nodeIndex === nodes.length) {
// 加1表示为已完成步骤后一步 // 加1表示为已完成步骤后一步
this.currIndex = i + 1; this.currIndex = i + 1;
......
...@@ -162,6 +162,11 @@ ...@@ -162,6 +162,11 @@
<el-input v-model="form.remarks" placeholder="请输入备注"/> <el-input v-model="form.remarks" placeholder="请输入备注"/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="是否显示提单价格" prop="remarks">
<el-switch v-model="form.isShowTidanPrice"></el-switch>
</el-form-item>
</el-col>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="到仓确认" prop="arrivalConfirm"> <el-form-item label="到仓确认" prop="arrivalConfirm">
<el-switch v-model="form.arrivalConfirm" :active-value="0" :inactive-value="1" /> <el-switch v-model="form.arrivalConfirm" :active-value="0" :inactive-value="1" />
...@@ -493,9 +498,6 @@ export default { ...@@ -493,9 +498,6 @@ export default {
if (!valid) { if (!valid) {
return; return;
} }
this.form.customerContacts.forEach(e => {
e.userid = e.userid.join(',')
})
// 修改的提交 // 修改的提交
if (this.form.id != null) { if (this.form.id != null) {
this.form.customerContacts.forEach(e => { this.form.customerContacts.forEach(e => {
...@@ -556,7 +558,8 @@ export default { ...@@ -556,7 +558,8 @@ export default {
remarks: undefined, remarks: undefined,
arrivalConfirm: undefined, arrivalConfirm: undefined,
weightUnit: undefined, weightUnit: undefined,
createTime: undefined createTime: undefined,
isShowTidanPrice:true,
}; };
this.resetForm("form"); this.resetForm("form");
}, },
......
...@@ -75,11 +75,11 @@ ...@@ -75,11 +75,11 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-descriptions style="margin-top: 20px" :column="4" border> <el-descriptions style="margin-top: 20px" :column="4" border>
<el-descriptions-item label="集运仓库">{{ warehouseDetails.warehouseOutName }}</el-descriptions-item> <el-descriptions-item label="集运仓库">{{ warehouseDetails && warehouseDetails.warehouseOutName ? warehouseDetails.warehouseOutName : '' }}</el-descriptions-item>
<el-descriptions-item label="储位"> <el-descriptions-item label="储位">
<div v-for="item in storageSpaceList" style="display: flex;"><div>{{item.warehouseName}}</div><div>{{item.regionName}} 区</div></div> <div v-for="item in storageSpaceList" style="display: flex;"><div>{{item.warehouseName ? item.warehouseName : ''}}</div><div>{{item.warehouseName ? item.regionName :''}} 区</div></div>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="调拨目标仓">{{ warehouseDetails.warehouseInName }}</el-descriptions-item> <el-descriptions-item label="调拨目标仓">{{ warehouseDetails && warehouseDetails.warehouseInName ? warehouseDetails.warehouseInName : '' }}</el-descriptions-item>
<el-descriptions-item label="物流公司"> <el-descriptions-item label="物流公司">
<el-select v-model="params.logisticsCompany" > <el-select v-model="params.logisticsCompany" >
<el-option v-for="(item,index) in expressList " :key="index" :value="item.id" :label="item.companyZh"></el-option> <el-option v-for="(item,index) in expressList " :key="index" :value="item.id" :label="item.companyZh"></el-option>
...@@ -208,7 +208,7 @@ export default { ...@@ -208,7 +208,7 @@ export default {
}) })
} }
}) })
this.params.phone = this.warehouseDetails.phone; this.params.phone = this.warehouseDetails.phone || '';
this.params.logisticsNo = this.warehouseDetails.logisticsNo; this.params.logisticsNo = this.warehouseDetails.logisticsNo;
this.params.id = this.warehouseDetails.id; this.params.id = this.warehouseDetails.id;
this.params.deliveryDate = this.warehouseDetails.deliveryDate this.params.deliveryDate = this.warehouseDetails.deliveryDate
......
...@@ -88,7 +88,7 @@ ...@@ -88,7 +88,7 @@
<el-input v-else v-model.number="tableData[$index].weight" placeholder=""></el-input> <el-input v-else v-model.number="tableData[$index].weight" placeholder=""></el-input>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="数量"> <el-table-column label="数量" width="130px">
<template v-slot="{r,c,$index}"> <template v-slot="{r,c,$index}">
<span v-if="tableData[$index].id">{{ tableData[$index].quantityAll }}</span> <span v-if="tableData[$index].id">{{ tableData[$index].quantityAll }}</span>
<el-input v-else v-model.number="tableData[$index].quantityAll" placeholder=""> <el-input v-else v-model.number="tableData[$index].quantityAll" placeholder="">
...@@ -105,6 +105,13 @@ ...@@ -105,6 +105,13 @@
</el-table> </el-table>
</el-card> </el-card>
<div v-if="edit">
<h2>审批流程</h2>
<work-flow xmlkey="free_apply" v-model="selectedUsers" />
<!-- <div>选择的用户:{{selectedUsers}}</div>-->
</div>
<span slot="footer"> <span slot="footer">
<el-button @click="opened = false">关 闭</el-button> <el-button @click="opened = false">关 闭</el-button>
<el-button type="primary" @click="handleSubmit()">提 交</el-button> <el-button type="primary" @click="handleSubmit()">提 交</el-button>
...@@ -116,15 +123,17 @@ ...@@ -116,15 +123,17 @@
<script> <script>
import dictSelector from "@/components/DictSelector" import dictSelector from "@/components/DictSelector"
import {DICT_TYPE, getDictDataLabel} from "@/utils/dict" import {DICT_TYPE, getDictDataLabel} from "@/utils/dict"
import warehousing from "@/views/ecw/order/warehousing" import { orderWarehouseIn, orderWarehouseInUpdateApply } from '@/api/ecw/order'
import {orderWarehouseIn} from "@/api/ecw/order"
import {getProductBrankPage} from "@/api/ecw/productBrank" import {getProductBrankPage} from "@/api/ecw/productBrank"
import WorkFlow from "@/components/WorkFlow"
import elSelect from '@/components/render/slots/el-select'
export default { export default {
name: 'editDialog', name: 'editDialog',
components: { components: {
dictSelector dictSelector,
WorkFlow
}, },
props: { props: {
...@@ -132,6 +141,11 @@ export default { ...@@ -132,6 +141,11 @@ export default {
type: Boolean, type: Boolean,
default: false default: false
}, },
// 入仓修改
edit: {
type: Boolean,
default: false
},
warehousing: { warehousing: {
type: Object, type: Object,
default: () => { default: () => {
...@@ -183,7 +197,9 @@ export default { ...@@ -183,7 +197,9 @@ export default {
"prodType": 0, "prodType": 0,
"type": 0 "type": 0
}, },
// orderItem: {} // orderItem: {},
selectedUsers: undefined
}; };
}, },
...@@ -218,12 +234,33 @@ export default { ...@@ -218,12 +234,33 @@ export default {
} }
}, },
handleSubmit() { handleSubmit() {
const orderWarehouseInItemDoList = this.form.orderWarehouseInItemDoList.map(e => { const orderWarehouseInItemDoList = [
...this.warehousing.orderWarehouseInBackItemDoList,
...this.form.orderWarehouseInItemDoList.map(e => {
return { return {
...e, ...e,
boxGauge: e.boxGauge1 + '*' + e.boxGauge2 + '*' + e.boxGauge3 boxGauge: e.boxGauge1 + '*' + e.boxGauge2 + '*' + e.boxGauge3
} }
}) })
]
if (this.edit)
return orderWarehouseInUpdateApply({
...this.form,
brandType: this.form.brand ? 1 : 0,
orderId: this.warehousing.orderId,
orderItemId: this.warehousing.orderItemId,
orderNo: this.warehousing.orderNo,
"orderWarehouseInUpdateItemDoList": orderWarehouseInItemDoList,
copyUserId: this.selectedUsers
}).then(r => {
if (r.data){
this.$message.success('入仓修改发起成功')
this.handleClose()
}else {
this.$message.success('入仓修改发起失败')
}
})
else
return orderWarehouseIn({ return orderWarehouseIn({
...this.form, ...this.form,
brandType: this.form.brand ? 1 : 0, brandType: this.form.brand ? 1 : 0,
......
...@@ -63,10 +63,13 @@ ...@@ -63,10 +63,13 @@
prop="address" prop="address"
label="操作"> label="操作">
<template v-slot="{ row, column, $index }"> <template v-slot="{ row, column, $index }">
<el-button v-if="order.status === 5" size="mini" type="text" @click="handleWarehousing($index)">修改</el-button>
<template v-else>
<el-button v-if="orderItemList[$index] && orderItemList[$index].orderWarehouseInBackItemDoList && orderItemList[$index].orderWarehouseInBackItemDoList.length > 0" size="mini" type="text" @click="handleWarehousing($index)">追加</el-button> <el-button v-if="orderItemList[$index] && orderItemList[$index].orderWarehouseInBackItemDoList && orderItemList[$index].orderWarehouseInBackItemDoList.length > 0" size="mini" type="text" @click="handleWarehousing($index)">追加</el-button>
<el-button v-else size="mini" type="text" @click="handleWarehousing($index)">入仓</el-button> <el-button v-else size="mini" type="text" @click="handleWarehousing($index)">入仓</el-button>
<el-button size="mini" type="text" @click="handleWarehousingReturn(row)">退仓</el-button> <el-button size="mini" type="text" @click="handleWarehousingReturn(row)">退仓</el-button>
<el-button v-if="order.status === 5" size="mini" type="text" @click="handleWarehousing($index)">修改</el-button> </template>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -86,7 +89,16 @@ ...@@ -86,7 +89,16 @@
</el-input> </el-input>
</el-form-item> </el-form-item>
<div style="text-align: center;margin-top: 15px"> <el-card style="margin-top: 15px;">
<div slot="header" class="clearfix">
<span style="font-size: 18px">入仓影像</span>
</div>
<div>
<image-and-video-upload :fileSize="50" :isShowTip="true" v-model="form.urls" ></image-and-video-upload>
</div>
</el-card>
<div style="text-align: center;margin-top: 15px" v-if="order.status !== 5">
<el-button @click="escapeBol = true;" type="primary">转异</el-button> <el-button @click="escapeBol = true;" type="primary">转异</el-button>
<el-button type="primary" @click="finishVisible = true">完成入仓</el-button> <el-button type="primary" @click="finishVisible = true">完成入仓</el-button>
</div> </div>
...@@ -94,7 +106,7 @@ ...@@ -94,7 +106,7 @@
<warehouse-area-dialog ref="area" :visible.sync="areaVisible" v-model="form.orderLocationCreateReqVOList" :order-id="orderId"></warehouse-area-dialog> <warehouse-area-dialog ref="area" :visible.sync="areaVisible" v-model="form.orderLocationCreateReqVOList" :order-id="orderId"></warehouse-area-dialog>
<edit-dialog :visible.sync="warehousingVisible" :warehousing="warehousing"></edit-dialog> <edit-dialog :visible.sync="warehousingVisible" :warehousing="warehousing" :edit="order.status === 5"></edit-dialog>
<!-- 完成入仓 --> <!-- 完成入仓 -->
<el-dialog <el-dialog
...@@ -127,6 +139,20 @@ ...@@ -127,6 +139,20 @@
<el-button @click="escapeBol = false">取消</el-button> <el-button @click="escapeBol = false">取消</el-button>
</span> </span>
</el-dialog> </el-dialog>
<!-- <el-dialog-->
<!-- title="转异常单"-->
<!-- :visible.sync="dialogVisible"-->
<!-- width="30%"-->
<!-- :before-close="handleClose(done)"-->
<!-- >-->
<!-- <span>这是一段信息</span>-->
<!-- <span slot="footer" class="dialog-footer">-->
<!-- <el-button type="primary" @click="dialogVisible = false">确认并完成入仓</el-button>-->
<!-- <el-button @click="dialogVisible = false">取 消</el-button>-->
<!-- </span>-->
<!-- </el-dialog>-->
<print-tag v-if="isShowPrintTag" :order-id="orderId" @close="isShowPrintTag = false"></print-tag> <print-tag v-if="isShowPrintTag" :order-id="orderId" @close="isShowPrintTag = false"></print-tag>
<print-warehouse-receipt v-if="isShowPrint" :order-id="orderId" @close="isShowPrint = false" /> <print-warehouse-receipt v-if="isShowPrint" :order-id="orderId" @close="isShowPrint = false" />
...@@ -150,6 +176,7 @@ import PrintTag from "@/views/ecw/order/components/PrintTag" ...@@ -150,6 +176,7 @@ import PrintTag from "@/views/ecw/order/components/PrintTag"
import PrintWarehouseReceipt from "@/views/ecw/order/components/PrintWarehouseReceipt" import PrintWarehouseReceipt from "@/views/ecw/order/components/PrintWarehouseReceipt"
import imageUpload from "@/components/ImageUpload"; import imageUpload from "@/components/ImageUpload";
import {parseTime} from "@/utils/ruoyi" import {parseTime} from "@/utils/ruoyi"
import ImageAndVideoUpload from '@/components/ImageAndVideoUpload'
export default { export default {
name: "Warehousing", name: "Warehousing",
...@@ -159,7 +186,8 @@ export default { ...@@ -159,7 +186,8 @@ export default {
editDialog, editDialog,
PrintTag, PrintTag,
PrintWarehouseReceipt, PrintWarehouseReceipt,
imageUpload imageUpload,
ImageAndVideoUpload,
}, },
mounted() { mounted() {
...@@ -186,6 +214,7 @@ export default { ...@@ -186,6 +214,7 @@ export default {
exceptionUrls:[], exceptionUrls:[],
descZh:'', descZh:'',
manualExceptionType:'', manualExceptionType:'',
urls: []
}, },
currencyList:[], currencyList:[],
order: {}, order: {},
...@@ -204,7 +233,8 @@ export default { ...@@ -204,7 +233,8 @@ export default {
let p = { let p = {
orderSpecialNeedReceivableReqVoList: this.form.orderSpecialNeedReceivableReqVoList, orderSpecialNeedReceivableReqVoList: this.form.orderSpecialNeedReceivableReqVoList,
"orderLocationCreateReqVOList": this.form.orderLocationCreateReqVOList, "orderLocationCreateReqVOList": this.form.orderLocationCreateReqVOList,
"orderId": this.order.orderId "orderId": this.order.orderId,
urls: this.form.urls
} }
if(this.escapeBol){ if(this.escapeBol){
p.exceptionUrls = this.form.exceptionUrls.split(','); p.exceptionUrls = this.form.exceptionUrls.split(',');
......
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