Commit 049a33e4 authored by huhaiqing's avatar huhaiqing

海运操作理货界面开发

parent a7215a91
...@@ -740,6 +740,72 @@ export function extraCostList(params) { ...@@ -740,6 +740,72 @@ export function extraCostList(params) {
/***************************** 报关费用 end **********************************/ /***************************** 报关费用 end **********************************/
/***************************** 理货 start **********************************/
/**
* 理货列表
*
* @export
* @param {*} data
* @return {*}
*/
export function getTallyList(data) {
return request({
url: "/shipment/box/tallyList",
method: "post",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
data: jsonToFormData(data),
});
}
/**
* 理货移出
*
* @export
* @param {*} data
* @return {*}
*/
export function tallyRemove(data) {
return request({
url: "/ecw/box-preload-goods/remove",
method: "post",
data,
});
}
/**
* 理货
*
* @export
* @param {*} data
* @return {*}
*/
export function tallyLocationUpdate(data) {
return request({
url: "/shipment/box/batchOrderLocationUpdate",
method: "post",
data,
});
}
/**
* 理货提交
*
* @export
* @param {*} data
* @return {*}
*/
export function tallyCommit(data) {
return request({
url: "/shipment/box/tallyCommit",
method: "post",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
data: jsonToFormData(data),
});
}
/***************************** 理货 end **********************************/
function jsonToFormData(params) { function jsonToFormData(params) {
const formData = new FormData(); const formData = new FormData();
for (const [key, value] of Object.entries(params)) { for (const [key, value] of Object.entries(params)) {
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
:visible.sync="opened" :visible.sync="opened"
width="600px" width="600px"
:before-close="handleClose()" :before-close="handleClose()"
v-bind="$attrs"
> >
<el-tabs v-model="activeName" type="card" @tab-click="activeWarehouse = {}"> <el-tabs v-model="activeName" type="card" @tab-click="activeWarehouse = {}">
<el-tab-pane :label="item.name" :name="'' + index" v-for="(item, index) in area" :key="index"> <el-tab-pane :label="item.name" :name="'' + index" v-for="(item, index) in area" :key="index">
......
...@@ -4,12 +4,8 @@ ...@@ -4,12 +4,8 @@
<el-row class="content-area"> <el-row class="content-area">
<!-- 左侧 --> <!-- 左侧 -->
<el-col :span="6" <el-col :span="6" class="left-area">
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>
</div> </div>
...@@ -22,58 +18,38 @@ ...@@ -22,58 +18,38 @@
</el-col> </el-col>
<!-- 右侧 --> <!-- 右侧 -->
<el-col :span="18" <el-col :span="18" class="right-area">
class="right-area">
<!-- 操作 --> <!-- 操作 -->
<el-row class="table-title"> <el-row class="table-title">
<div>当前装柜:{{tableData.title}}</div> <div>当前装柜:{{tableData.title}}</div>
<div> <div>
<template v-if="!isUnderReview"> <template v-if="!isUnderReview">
<el-input v-model="qrCode" <el-input v-model="qrCode" placeholder="请输入二维码/条码编号" clearable></el-input>
placeholder="请输入二维码/条码编号" <el-button type="primary" @click="handlerBatchCreate('single')">确定</el-button>
clearable></el-input> <el-button type="primary" @click="handlerClick('batchInput','批量输入')">批量输入</el-button>
<el-button type="primary" <el-button type="primary" @click="handlerClick('correction','装柜纠错')">装柜纠错</el-button>
@click="handlerBatchCreate('single')">确定</el-button> <el-button type="primary" @click="handlerClick('correctionOrder','批量装柜纠错')">批量装柜纠错</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('correctionOrder','批量装柜纠错')">批量装柜纠错</el-button>
</template> </template>
</div> </div>
</el-row> </el-row>
<!-- 表格 --> <!-- 表格 -->
<el-row class="table-content"> <el-row class="table-content">
<el-table :data="tableData.sectionOrderList" <el-table :data="tableData.sectionOrderList" border>
border> <el-table-column label="序号" type="index" align="center" width="50" />
<el-table-column label="序号" <el-table-column label="订单号" align="center" prop="orderNo">
type="index"
align="center"
width="50" />
<el-table-column label="订单号"
align="center"
prop="orderNo">
<template slot-scope="scope"> <template slot-scope="scope">
<a href="javascript:void(0);" <a href="javascript:void(0);" class="order-href" @click="orderClick(scope.row)">{{ scope.row.orderNo }}</a>
class="order-href"
@click="orderClick(scope.row)">{{ scope.row.orderNo }}</a>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="货物信息" <el-table-column label="货物信息" align="center" prop="goodsList">
align="center"
prop="goodsList">
<template slot-scope="scope"> <template slot-scope="scope">
<section class="table-goodList"> <section class="table-goodList">
<div v-for="(item, index) in scope.row.goodsList" <div v-for="(item, index) in scope.row.goodsList" :key="index" class="goodList-div">
:key="index"
class="goodList-div">
<p>品名:{{item.prodTitleZh}}</p> <p>品名:{{item.prodTitleZh}}</p>
<p>品牌:【 <p>品牌:【
<dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" <dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="item.productRecord" />
:value="item.productRecord" />
</p> </p>
<p>其他:{{getTotlContent(item)}}</p> <p>其他:{{getTotlContent(item)}}</p>
...@@ -81,42 +57,29 @@ ...@@ -81,42 +57,29 @@
</section> </section>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="计划箱数" <el-table-column label="计划箱数" align="center" prop="num">
align="center"
prop="num">
<template slot-scope="scope"> <template slot-scope="scope">
{{getTotlContent(scope.row,['num'])}} {{getTotlContent(scope.row,['num'])}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="实装箱数" <el-table-column label="实装箱数" align="center" prop="installNum">
align="center"
prop="installNum">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.installNum }} {{ scope.row.installNum }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="体积" <el-table-column label="体积" align="center" prop="volume">
align="center"
prop="volume">
<template slot-scope="scope"> <template slot-scope="scope">
{{getTotlContent(scope.row,['volume'])}} {{getTotlContent(scope.row,['volume'])}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="重量" <el-table-column label="重量" align="center" prop="weight">
align="center"
prop="weight">
<template slot-scope="scope"> <template slot-scope="scope">
{{getTotlContent(scope.row,['weight'])}} {{getTotlContent(scope.row,['weight'])}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
align="center"
class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" <el-button type="text" size="small" @click="moveOut(scope.row)" v-if="!isUnderReview && scope.row.installNum === 0">移出</el-button>
size="small"
@click="moveOut(scope.row)"
v-if="!isUnderReview && scope.row.installNum === 0">移出</el-button>
<!-- <el-button type="text" size="small" v-if="isShowSplitOrder(scope.row)" @click="handlerSplitOrder(scope.row, 'splitOrder','拆单')">拆单</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>
...@@ -129,8 +92,7 @@ ...@@ -129,8 +92,7 @@
<!-- 统计 --> <!-- 统计 -->
<el-row> <el-row>
<el-col :span="6" <el-col :span="6" class="totle-info">
class="totle-info">
<div class="count-info"> <div class="count-info">
<p>总计:{{getSumData}}</p> <p>总计:{{getSumData}}</p>
</div> </div>
...@@ -144,150 +106,84 @@ ...@@ -144,150 +106,84 @@
<!-- 操作 --> <!-- 操作 -->
<el-row class="button-area"> <el-row class="button-area">
<el-button type="primary" <el-button type="primary" @click="handlerClick('supplementOrder','补单')" v-if="!isUnderReview">补单</el-button>
@click="handlerClick('supplementOrder','补单')" <el-button type="primary" v-if="!isUnderReview" @click="applyCloseCabinet">申请封柜</el-button>
v-if="!isUnderReview">补单</el-button> <el-button type="primary" @click="handlerClick('modifyCabinet','修改柜信息')" v-if="!isUnderReview">修改柜信息</el-button>
<el-button type="primary" <el-button type="primary" v-if="isUnderReview">封柜审核中</el-button>
v-if="!isUnderReview"
@click="applyCloseCabinet">申请封柜</el-button>
<el-button type="primary"
@click="handlerClick('modifyCabinet','修改柜信息')"
v-if="!isUnderReview">修改柜信息</el-button>
<el-button type="primary"
v-if="isUnderReview">封柜审核中</el-button>
</el-row> </el-row>
<!-- 对话框 --> <!-- 对话框 -->
<el-dialog custom-class="shipping-dialog" <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>
: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="orderList" <el-table :data="orderList" height="500px" border>
height="500px" <el-table-column label="已装" align="center" prop="loadTag" />
border> <el-table-column label="未装" align="center" prop="unloadTag" />
<el-table-column label="已装"
align="center"
prop="loadTag" />
<el-table-column label="未装"
align="center"
prop="unloadTag" />
</el-table> </el-table>
</template> </template>
<!-- 补单 --> <!-- 补单 -->
<supplementOrder v-if="dialogConfig.type === 'supplementOrder' && dialogConfig.dialogVisible" <supplementOrder v-if="dialogConfig.type === 'supplementOrder' && dialogConfig.dialogVisible" v-bind="$attrs" :shipmentObj="shipmentObj" @supplementFinish="supplementFinish" />
v-bind="$attrs"
:shipmentObj="shipmentObj"
@supplementFinish="supplementFinish" />
<!-- 修改柜信息 --> <!-- 修改柜信息 -->
<template v-if="dialogConfig.type === 'modifyCabinet' && dialogConfig.dialogVisible"> <template v-if="dialogConfig.type === 'modifyCabinet' && dialogConfig.dialogVisible">
<el-form ref="modifyForm" <el-form ref="modifyForm" :rules="rules" :model="modifyCabinetObj" label-width="80px">
:rules="rules" <el-form-item label="起运仓库" prop="startWarehouseId">
:model="modifyCabinetObj" <el-select v-model="modifyCabinetObj.startWarehouseId" placeholder="请选择仓库" filterable>
label-width="80px"> <el-option v-for="warehouse in $attrs.warehouseList" :key="warehouse.id" :label="warehouse.titleZh" :value="warehouse.id"></el-option>
<el-form-item label="起运仓库"
prop="startWarehouseId">
<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="预计时间">{{preinstallDate}}</el-form-item> <el-form-item label="预计时间">{{preinstallDate}}</el-form-item>
<el-form-item label="选择柜型" <el-form-item label="选择柜型" prop="cabinetId">
prop="cabinetId"> <el-select v-model="modifyCabinetObj.cabinetId" placeholder="请选择柜型">
<el-select v-model="modifyCabinetObj.cabinetId" <el-option v-for="item in cabinetList" :label="item.name" :value="item.id" :key="item.id"></el-option>
placeholder="请选择柜型">
<el-option v-for="item in cabinetList"
:label="item.name"
:value="item.id"
: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.cubNo" <el-input v-model="modifyCabinetObj.cubNo" placeholder="请输入柜号" clearable />
placeholder="请输入柜号"
clearable />
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row class="operate-button"> <el-row class="operate-button">
<el-button type="primary" <el-button type="primary" @click="onSubmit('modifyForm')">下一步</el-button>
@click="onSubmit('modifyForm')">下一步</el-button>
<el-button @click="closeDialog">取消</el-button> <el-button @click="closeDialog">取消</el-button>
</el-row> </el-row>
</template> </template>
<!-- 装柜纠错 --> <!-- 装柜纠错 -->
<template v-if="dialogConfig.type === 'correction' && dialogConfig.dialogVisible"> <template v-if="dialogConfig.type === 'correction' && dialogConfig.dialogVisible">
<el-form ref="correctionForm" <el-form ref="correctionForm" :rules="rules" :model="correctionObj" label-position="top">
:rules="rules" <el-form-item label="装柜纠错(二维码/条形码编号)" prop="qrCode">
:model="correctionObj" <el-input v-model="correctionObj.qrCode" placeholder="请输入二维码/条形码编号" clearable />
label-position="top">
<el-form-item label="装柜纠错(二维码/条形码编号)"
prop="qrCode">
<el-input v-model="correctionObj.qrCode"
placeholder="请输入二维码/条形码编号"
clearable />
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row class="operate-button"> <el-row class="operate-button">
<el-button type="primary" <el-button type="primary" @click="onSubmit('correctionForm')">提交</el-button>
@click="onSubmit('correctionForm')">提交</el-button>
<el-button @click="closeDialog">取消</el-button> <el-button @click="closeDialog">取消</el-button>
</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" <el-form ref="orderForm" :rules="rules" :model="orderObj" label-position="top">
:rules="rules" <el-form-item label="装柜纠错(订单号)" prop="orderNo">
:model="orderObj" <el-input type="textarea" :rows="3" v-model="orderObj.orderNo" placeholder="请输入,多个以逗号分隔" clearable />
label-position="top">
<el-form-item label="装柜纠错(订单号)"
prop="orderNo">
<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">
<el-button type="primary" <el-button type="primary" @click="onSubmit('orderForm')">提交</el-button>
@click="onSubmit('orderForm')">提交</el-button>
<el-button @click="closeDialog">取消</el-button> <el-button @click="closeDialog">取消</el-button>
</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" <el-form ref="batchForm" :rules="rules" :model="batchObj" label-position="top">
:rules="rules" <el-form-item label="" prop="qrCode">
:model="batchObj" <el-input type="textarea" :rows="3" v-model="batchObj.qrCode" placeholder="请输入,多个以逗号分隔" clearable />
label-position="top">
<el-form-item label=""
prop="qrCode">
<el-input type="textarea"
:rows="3"
v-model="batchObj.qrCode"
placeholder="请输入,多个以逗号分隔"
clearable />
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row class="operate-button"> <el-row class="operate-button">
<el-button type="primary" <el-button type="primary" @click="onSubmit('batchForm')">提交</el-button>
@click="onSubmit('batchForm')">提交</el-button>
<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" <splitOrder v-if="dialogConfig.type === 'splitOrder' && dialogConfig.dialogVisible" :currRow="currRow" @closeDialog="closeDialog" />
:currRow="currRow"
@closeDialog="closeDialog" />
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
......
...@@ -315,7 +315,7 @@ export default { ...@@ -315,7 +315,7 @@ export default {
orderId: item.orderId, orderId: item.orderId,
}; };
if (type === "all") { if (type === "all") {
params.orderItemIdList = item.orderItemList.map( params.orderItemIdList = item.boxOrderItemList.map(
(data) => data.orderItemId (data) => data.orderItemId
); );
} else { } else {
......
<template> <template>
<div class="preinstall"> <div class="preinstall">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form :model="queryParams" <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="90px">
ref="queryForm" <el-form-item label="入仓时间" prop="rucangtime">
size="small" <el-date-picker v-model="queryParams.rucangtime" style="width: 240px" value-format="yyyy-MM-dd" type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" />
:inline="true"
v-show="showSearch"
label-width="90px">
<el-form-item label="入仓时间"
prop="rucangtime">
<el-date-picker v-model="queryParams.rucangtime"
style="width: 240px"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="-"
start-placeholder="开始日期"
end-placeholder="结束日期" />
</el-form-item> </el-form-item>
<el-form-item label="始发地" <el-form-item label="始发地" prop="startWarehouseId">
prop="startWarehouseId"> <el-select v-model="queryParams.startWarehouseId" placeholder="请选择始发地" clearable size="small">
<el-select v-model="queryParams.startWarehouseId" <el-option v-for="item in exportWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
placeholder="请选择始发地"
clearable
size="small">
<el-option v-for="item in exportWarehouseList"
: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="目的地" <el-form-item label="目的地" prop="destWarehouseIdList">
prop="destWarehouseIdList"> <el-select v-model="queryParams.destWarehouseIdList" placeholder="请选择目的地" multiple clearable>
<el-select v-model="queryParams.destWarehouseIdList" <el-option v-for="item in importWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
placeholder="请选择目的地"
multiple
clearable>
<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="状态" <el-form-item label="状态" prop="orderStatus">
prop="orderStatus"> <el-select v-model="queryParams.orderStatus" placeholder="请选择状态" clearable size="small">
<el-select v-model="queryParams.orderStatus" <el-option v-for="item in stateOps" :label="item.label" :value="item.value" :key="item.value"></el-option>
placeholder="请选择状态"
clearable
size="small">
<el-option v-for="item in stateOps"
:label="item.label"
:value="item.value"
:key="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="备案" <el-form-item label="备案" prop="productRecord">
prop="productRecord"> <el-select v-model="queryParams.productRecord" placeholder="请选择备案" clearable size="small">
<el-select v-model="queryParams.productRecord" <el-option v-for="item in filingOps" :label="item.label" :value="item.value" :key="item.value"></el-option>
placeholder="请选择备案"
clearable
size="small">
<el-option v-for="item in filingOps"
:label="item.label"
:value="item.value"
:key="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="报关方式" <el-form-item label="报关方式" prop="customsType">
prop="customsType"> <el-select v-model="queryParams.customsType" placeholder="请选择报关方式" clearable size="small">
<el-select v-model="queryParams.customsType" <el-option v-for="item in declarationMethodOps" :label="item.label" :value="item.value" :key="item.value"></el-option>
placeholder="请选择报关方式"
clearable
size="small">
<el-option v-for="item in declarationMethodOps"
:label="item.label"
:value="item.value"
:key="item.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="订单号" <el-form-item label="订单号" prop="toBePreOrderNo">
prop="toBePreOrderNo"> <el-input v-model="queryParams.toBePreOrderNo" placeholder="请输入订单号码" clearable />
<el-input v-model="queryParams.toBePreOrderNo"
placeholder="请输入订单号码"
clearable />
</el-form-item> </el-form-item>
<el-form-item label="已预装单号" <el-form-item label="已预装单号" prop="preOrderNo">
prop="preOrderNo"> <el-input v-model="queryParams.preOrderNo" placeholder="请输入已预装单号" clearable />
<el-input v-model="queryParams.preOrderNo"
placeholder="请输入已预装单号"
clearable />
</el-form-item> </el-form-item>
<el-form-item label="品名" <el-form-item label="品名" prop="itemName">
prop="itemName"> <el-input v-model="queryParams.itemName" placeholder="请输入品名" clearable />
<el-input v-model="queryParams.itemName"
placeholder="请输入品名"
clearable />
</el-form-item> </el-form-item>
<el-form-item label="重货比" <el-form-item label="重货比" prop="weightRatioMax">
prop="weightRatioMax"> <el-input v-model="queryParams.weightRatioMax" placeholder="请输入 大" clearable />
<el-input v-model="queryParams.weightRatioMax"
placeholder="请输入 大"
clearable />
</el-form-item> </el-form-item>
<el-form-item label="" <el-form-item label="" prop="weightRatioMin">
prop="weightRatioMin"> <el-input v-model="queryParams.weightRatioMin" placeholder="请输入 小" clearable />
<el-input v-model="queryParams.weightRatioMin"
placeholder="请输入 小"
clearable />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" <el-button type="primary" icon="el-icon-search" @click="handleQuery('pre')">搜索已预装订单</el-button>
icon="el-icon-search" <el-button type="primary" icon="el-icon-search" @click="handleQuery('toBePre')">搜索待预装订单</el-button>
@click="handleQuery('pre')">搜索已预装订单</el-button> <el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
<el-button type="primary"
icon="el-icon-search"
@click="handleQuery('toBePre')">搜索待预装订单</el-button>
<el-button icon="el-icon-refresh"
@click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<!-- 操作工具栏 --> <!-- 操作工具栏 -->
<el-row :gutter="10"> <el-row :gutter="10">
<right-toolbar :showSearch.sync="showSearch" <right-toolbar :showSearch.sync="showSearch" @queryTable="handleQuery('toBePre')"></right-toolbar>
@queryTable="handleQuery('toBePre')"></right-toolbar>
</el-row> </el-row>
<!-- 表格 --> <!-- 表格 -->
<el-card style="margin-top: 15px" <el-card style="margin-top: 15px" class="preinstall-card">
class="preinstall-card">
<el-row class="preinstall-title"> <el-row class="preinstall-title">
<div> <div>
<p>自编号:</p> <p>自编号:</p>
...@@ -169,118 +100,60 @@ ...@@ -169,118 +100,60 @@
<p>{{preList.remainWeight}}kg</p> <p>{{preList.remainWeight}}kg</p>
</div> </div>
<div class="table-button"> <div class="table-button">
<el-button type="success" <el-button type="success" size="small" @click="addPart">增加</el-button>
size="small"
@click="addPart">增加</el-button>
</div> </div>
</el-row> </el-row>
<el-scrollbar style="height:calc(100% - 43px)"> <el-scrollbar style="height:calc(100% - 43px)">
<el-row v-for="(part, index) in preList.sectionGoodList" <el-row v-for="(part, index) in preList.sectionGoodList" :key="index" class="pre-part">
:key="index"
class="pre-part">
<el-row class="preinstall-title"> <el-row class="preinstall-title">
<div class="pre-part-info"> <div class="pre-part-info">
<p>{{index+1}}部分</p> <p>{{index+1}}部分</p>
<p>{{getTotlContent(part.secStatistics)}}</p> <p>{{getTotlContent(part.secStatistics)}}</p>
</div> </div>
<div class="table-button"> <div class="table-button">
<el-button type="danger" <el-button type="danger" size="small" @click="deletePart(part)">删除部分</el-button>
size="small" <el-button type="danger" size="small" @click="deleteOrder('selected', part)">删除订单</el-button>
@click="deletePart(part)">删除部分</el-button> <el-button type="primary" size="small" @click="foldTable(index, part)">{{part.fold ? '展开' : '收起'}}</el-button>
<el-button type="danger"
size="small"
@click="deleteOrder('selected', part)">删除订单</el-button>
<el-button type="primary"
size="small"
@click="foldTable(index, part)">{{part.fold ? '展开' : '收起'}}</el-button>
</div> </div>
</el-row> </el-row>
<el-collapse-transition> <el-collapse-transition>
<div v-show="!part.fold"> <div v-show="!part.fold">
<el-table v-loading="preLoading" <el-table v-loading="preLoading" border :data="part.sectionGoodsList" @select="(selection)=>checkboxSelect(selection, part)" @select-all="(selection)=>checkboxSelect(selection, part)">
border <el-table-column type="selection" align="center" width="55" fixed="left" />
:data="part.sectionGoodsList" <el-table-column label="订单号" align="center" prop="orderNo" width="120" />
@select="(selection)=>checkboxSelect(selection, part)" <el-table-column label="目的地" align="center" prop="destWarehouseName" width="120" />
@select-all="(selection)=>checkboxSelect(selection, part)"> <el-table-column label="入仓时间" align="center" prop="rucangTime" width="120">
<el-table-column type="selection"
align="center"
width="55"
fixed="left" />
<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="rucangTime"
width="120">
<template slot-scope="scope"> <template slot-scope="scope">
{{formatDate(scope.row.rucangTime)}} {{formatDate(scope.row.rucangTime)}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="品名" <el-table-column label="品名" align="center" prop="prodTitleZh" width="120" />
align="center" <el-table-column label="箱数" align="center" prop="num" />
prop="prodTitleZh" <el-table-column label="体积/重量/重货比" align="center" width="140" prop="volumeWeight">
width="120" />
<el-table-column label="箱数"
align="center"
prop="num" />
<el-table-column label="体积/重量/重货比"
align="center"
width="140"
prop="volumeWeight">
<template slot-scope="scope"> <template slot-scope="scope">
<p v-if="scope.row.volume">{{getTotlContent(scope.row,['volume'])}}</p> <p v-if="scope.row.volume">{{getTotlContent(scope.row,['volume'])}}</p>
<p v-if="scope.row.weight">{{getTotlContent(scope.row,['weight'])}}</p> <p v-if="scope.row.weight">{{getTotlContent(scope.row,['weight'])}}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="报关方式" <el-table-column label="报关方式" align="center" prop="customsType" width="120">
align="center"
prop="customsType"
width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" <dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="scope.row.customsType" />
:value="scope.row.customsType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备案" <el-table-column label="备案" align="center" prop="productRecord" width="100">
align="center"
prop="productRecord"
width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_BRAND_TYPE" <dict-tag :type="DICT_TYPE.BOX_SHIPPING_BRAND_TYPE" :value="scope.row.productRecord" />
:value="scope.row.productRecord" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" <el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width" fixed="right">
align="center"
width="160"
class-name="small-padding fixed-width"
fixed="right">
<template slot-scope="scope"> <template slot-scope="scope">
<el-dropdown trigger="click" <el-dropdown trigger="click" @command="(command)=>handleGoods('singele',scope.row,command)">
@command="(command)=>handleGoods('singele',scope.row,command)"> <el-button type="primary" size="small" icon="el-icon-edit-outline" circle></el-button>
<el-button type="primary"
size="small"
icon="el-icon-edit-outline"
circle></el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="bPart" <el-dropdown-item :command="bPart" v-for="(bPart, index) in preList.sectionGoodList" :key="bPart.id" v-show="bPart.id !== part.id">{{index+1}}部分</el-dropdown-item>
v-for="(bPart, index) in preList.sectionGoodList"
:key="bPart.id"
v-show="bPart.id !== part.id">{{index+1}}部分</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<el-button type="danger" <el-button type="danger" size="small" icon="el-icon-minus" circle style="margin-left:10px;" @click="deleteOrder('row',scope.row)"></el-button>
size="small"
icon="el-icon-minus"
circle
style="margin-left:10px;"
@click="deleteOrder('row',scope.row)"></el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -308,16 +181,9 @@ ...@@ -308,16 +181,9 @@
</div> </div>
</div> </div>
</el-row> </el-row>
<el-pagination background <el-pagination background layout="prev, pager, next" :page-size="pageParam.pageSize" :total="total" @current-change="pageChange" v-show="total > 0"></el-pagination>
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-scrollbar style="height:calc(100% - 75px)">
<el-row v-for="(item, index) in toBePreList" <el-row v-for="(item, index) in toBePreList" :key="index" class="tobePre-row">
:key="index"
class="tobePre-row">
<el-row class="preinstall-title order-title"> <el-row class="preinstall-title order-title">
<div> <div>
<p>{{item.orderNo}}</p> <p>{{item.orderNo}}</p>
...@@ -328,8 +194,7 @@ ...@@ -328,8 +194,7 @@
</div> </div>
<div> <div>
<p> <p>
<dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" <dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="item.customsType" />
:value="item.customsType" />
</p> </p>
</div> </div>
<div> <div>
...@@ -341,69 +206,40 @@ ...@@ -341,69 +206,40 @@
<p>{{item.weightRatio}}</p> <p>{{item.weightRatio}}</p>
</div> </div>
<div class="table-button"> <div class="table-button">
<el-dropdown trigger="click" <el-dropdown trigger="click" @command="(command)=>handleGoods('all',item,command)">
@command="(command)=>handleGoods('all',item,command)"> <el-button type="success" size="small">预装全部</el-button>
<el-button type="success"
size="small">预装全部</el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="part" <el-dropdown-item :command="part" v-for="(part, index) in preList.sectionGoodList" :key="part.id">第{{index+1}}部分</el-dropdown-item>
v-for="(part, index) in preList.sectionGoodList"
:key="part.id">第{{index+1}}部分</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
</div> </div>
</el-row> </el-row>
<el-table v-loading="toBePreLoading" <el-table v-loading="toBePreLoading" :data="item.boxOrderItemList" border show-summary :summary-method="getSummaries">
:data="item.boxOrderItemList" <el-table-column type="index" align="center" label="序号" width="50" />
border <el-table-column label="品名" align="center" prop="prodTitleZh" />
show-summary <el-table-column label="备案" align="center" prop="brandType">
:summary-method="getSummaries">
<el-table-column type="index"
align="center"
label="序号"
width="50" />
<el-table-column label="品名"
align="center"
prop="prodTitleZh" />
<el-table-column label="备案"
align="center"
prop="brandType">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.BOX_SHIPPING_BRAND_TYPE" <dict-tag :type="DICT_TYPE.BOX_SHIPPING_BRAND_TYPE" :value="scope.row.brandType" />
:value="scope.row.brandType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="箱数" <el-table-column label="箱数" align="center" prop="num" />
align="center" <el-table-column label="体积/重量" align="center" prop="volumeWeight">
prop="num" />
<el-table-column label="体积/重量"
align="center"
prop="volumeWeight">
<template slot-scope="scope"> <template slot-scope="scope">
<p v-if="scope.row.volume">{{getTotlContent(scope.row,['volume'])}}</p> <p v-if="scope.row.volume">{{getTotlContent(scope.row,['volume'])}}</p>
<p v-if="scope.row.weight">{{getTotlContent(scope.row,['weight'])}}</p> <p v-if="scope.row.weight">{{getTotlContent(scope.row,['weight'])}}</p>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="报关方式" <el-table-column label="报关方式" align="center" prop="">
align="center" <dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="item.customsType" />
prop="">
<dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE"
:value="item.customsType" />
</el-table-column> </el-table-column>
<el-table-column label="包装类型" <el-table-column label="包装类型" align="center" prop="">
align="center"
prop="">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_PACKAGE_TYPE" <dict-tag :type="DICT_TYPE.ECW_PACKAGE_TYPE" :value="scope.row.unit" />
:value="scope.row.unit" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="材质" <el-table-column label="材质" align="center" prop="material">
align="center"
prop="material">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" <dict-tag :type="DICT_TYPE.ECW_PRODUCT_MATERIAL" :value="scope.row.material" />
:value="scope.row.material" />
</template> </template>
</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">
...@@ -424,47 +260,29 @@ ...@@ -424,47 +260,29 @@
</el-card> </el-card>
<!-- 操作员 --> <!-- 操作员 -->
<el-row style="margin-top: 15px" <el-row style="margin-top: 15px" v-show="!isAudit">
v-show="!isAudit">
<el-row> <el-row>
<el-form ref="operatorForm" <el-form ref="operatorForm" :model="operatorData" size="small" :inline="true" label-width="120px" :rules="rules">
:model="operatorData" <el-form-item label="目的地操作员" prop="noticeUser">
size="small" <userSelect v-model="operatorData.noticeUser" placeholder="请选择目的地操作员" :allUsers="this.$attrs.allUsers" size="small" />
:inline="true"
label-width="120px"
:rules="rules">
<el-form-item label="目的地操作员"
prop="noticeUser">
<userSelect v-model="operatorData.noticeUser"
placeholder="请选择目的地操作员"
:allUsers="this.$attrs.allUsers"
size="small" />
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-row> </el-row>
<el-row> <el-row>
<el-button type="primary" <el-button type="primary" @click="onSubmit">提交申请</el-button>
@click="onSubmit">提交申请</el-button>
</el-row> </el-row>
</el-row> </el-row>
<!-- 审核流程 --> <!-- 审核流程 -->
<el-row class="process-area" <el-row class="process-area" v-show="isAudit">
v-show="isAudit">
<div class="process"> <div class="process">
<div>审批流程</div> <div>审批流程</div>
<work-flow xmlkey="shipment_preassemble" <work-flow xmlkey="shipment_preassemble" v-model="selectedUsers"></work-flow>
v-model="selectedUsers"></work-flow>
</div> </div>
<div> <div>
<el-button type="primary" <el-button type="primary" :disabled=true>审核中</el-button>
:disabled=true>审核中</el-button> <el-button plain type="primary" @click="canclAudit">取消审核</el-button>
<el-button plain <el-button plain type="primary" @click="closeDialog">返回</el-button>
type="primary"
@click="canclAudit">取消审核</el-button>
<el-button plain
type="primary"
@click="closeDialog">返回</el-button>
</div> </div>
</el-row> </el-row>
</div> </div>
...@@ -686,7 +504,7 @@ export default { ...@@ -686,7 +504,7 @@ export default {
/* 折叠 */ /* 折叠 */
foldTable(index, part) { foldTable(index, part) {
part.fold = !part.fold; part.fold = !part.fold;
this.$set(this.preList, index, part); this.$set(this.preList.sectionGoodList, index, part);
}, },
/* 增加部分 */ /* 增加部分 */
addPart() { addPart() {
......
<template>
<div class="shipping-batchTally">
<el-row v-if="$attrs.type === 'batchTally'">
<el-button type="text" size="small" @click="()=>openStorage('all')">批量修改储位</el-button>
</el-row>
<el-scrollbar viewClass="tally-list">
<el-row class="tally-detail" v-for="(item, index) in storageList" :key="item.id">
<div class="status-number">{{++index}}</div>
<div class="detail-info">
<div>入仓单号:{{item.orderNo}}</div>
<div>入仓统计:{{getTotlContent(item)}}</div>
<div class="detail-modify">
<el-tooltip effect="dark" :content="item.positionNo" placement="top">
<div>储位:{{item.positionNo}}</div>
</el-tooltip>
<el-button type="text" size="small" @click="()=>openStorage('single', item)">修改</el-button>
</div>
</div>
</el-row>
</el-scrollbar>
<el-row class="operate-button">
<el-button size="small" type="primary" @click="tallyModify">确定</el-button>
<el-button size="small" @click="$emit('closeDialog')">关闭</el-button>
</el-row>
<warehouse-area-dialog ref="area" :visible.sync="visible" v-model="storageSpaces" :order-id="orderId" :modal-append-to-body=false append-to-body v-if="visible" />
</div>
</template>
<script>
import { getTotlContent, serviceMsg } from "../../utils";
import WarehouseAreaDialog from "@/components/WarehouseAreaDialog";
import { deepClone } from "@/utils";
import { tallyLocationUpdate } from "@/api/ecw/boxSea";
export default {
name: "batchTally",
inheritAttrs: false,
components: { WarehouseAreaDialog },
props: {
tallyRows: Array,
},
data() {
return {
visible: false,
// 储位
storageSpaces: [],
// 订单ID
orderId: -1,
// 仓位数据
storageList: deepClone(this.tallyRows),
};
},
methods: {
getTotlContent,
// 打开储位
openStorage(type, item) {
if (type === "all") {
this.orderId = -1;
} else {
this.orderId = item.orderId;
}
this.visible = true;
},
// 修改储位
tallyModify() {
// 查找数据中存在storageList的订单
let orderLocationList = [];
this.storageList.forEach((item) => {
const { storageList } = item;
if (storageList && storageList.length) {
storageList.forEach((sItem) => {
orderLocationList.push({
...sItem,
orderId: item.orderId,
});
});
}
});
if (orderLocationList.length === 0) {
this.$message.error("没有需要修改储位的订单");
return;
}
tallyLocationUpdate({
shipmentId: this.$attrs.shipmentObj.id,
orderLocationList,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.$emit("closeDialog", "query");
});
});
},
},
watch: {
storageSpaces(val) {
let newList = [];
const { selected = [] } = this.$refs.area;
// 批量修改储位
if (this.orderId === -1) {
newList = this.storageList.map((item) => {
item.positionNo = selected.join(",");
item.storageList = val;
return item;
});
} else {
newList = this.storageList.map((item) => {
if (item.orderId === this.orderId) {
item.positionNo = selected.join(",");
item.storageList = val;
}
return item;
});
}
this.storageList = newList;
},
},
};
</script>
<style lang="scss">
.shipping-batchTally {
.el-scrollbar__wrap {
max-height: 500px;
.tally-list {
.tally-detail {
display: flex;
padding: 10px 0px;
border-bottom: 1px solid rgb(223, 230, 236);
.status-number {
width: 26px;
height: 26px;
border: 1px solid #ccc;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin-right: 20px;
}
.detail-info {
> div {
height: 30px;
line-height: 30px;
}
.detail-modify {
display: flex;
align-items: center;
> :first-child {
width: 150px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-right: 10px;
}
}
}
}
> .tally-detail:last-child {
border-bottom: none;
}
}
}
}
</style>
<template>
<div class="shipping-tally">
<el-row type="flex" style="margin-top: 15px; margin-bottom: 15px" justify="center">
<el-col :xs="24" :sm="24" :md="24" :lg="20" :xl="22">
<el-card>
<el-descriptions :column="4" border>
<el-descriptions-item label="自编号">
{{shipmentObj.selfNo}}
</el-descriptions-item>
<el-descriptions-item label="运输方式">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="shipmentObj.transportType" />
</el-descriptions-item>
<el-descriptions-item label="始发地">
{{getCityName(shipmentObj.startWarehouseId)}}
</el-descriptions-item>
<el-descriptions-item label="目的地">
{{getCityName(shipmentObj.destWarehouseId)}}
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-row style="margin-top: 15px">
<el-row>
<el-button size="small" type="primary" @click="()=>tallyClick('batch')">批量理货</el-button>
<el-button size="small" type="primary" @click="()=>removeClick('batch')">批量移出</el-button>
</el-row>
<el-row style="margin-top: 5px">
<el-table border :data="tallyList" @select="checkboxSelect" @select-all="checkboxSelect" max-height="600px">
<el-table-column type="selection" align="center" width="55" fixed="left" />
<el-table-column type="index" align="center" label="序号" width="50" />
<el-table-column label="订单号" align="center" prop="orderNo" />
<el-table-column label="商品信息" width="250px" align="center" prop="prodTitleZh">
</el-table-column>
<el-table-column label="备案" align="center" prop="productRecord">
<template v-slot="{row}">
<dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="row.productRecord" />
</template>
</el-table-column>
<el-table-column label="箱数" align="center" prop="num" />
<el-table-column label="纸箱尺寸" align="center" prop="boxGauge">
</el-table-column>
<el-table-column label="体积" align="center" prop="volume">
</el-table-column>
<el-table-column label="重量" align="center" prop="weight">
</el-table-column>
<el-table-column label="数量(个)" align="center" prop="quantity"></el-table-column>
<el-table-column label="储位" align="center" prop="positionNo" width="250px"></el-table-column>
<el-table-column label="状态" align="center" prop="tallyStatus">
<template slot-scope="scope">
{{scope.row.tallyStatus === 1 ? '已理货' : '未理货'}}
</template>
</el-table-column>
<el-table-column label="理货时间" align="center" prop="tallyTime">
<template slot-scope="scope">
{{formatDate(scope.row.tallyTime,'YYYY-MM-DD HH:mm:ss')}}
</template>
</el-table-column>
<el-table-column label="操作" align="center" width="160" class-name="small-padding fixed-width" fixed="right">
<template slot-scope="scope">
<el-button type="text" size="small" @click="tallyClick('single',scope.row)">理货</el-button>
<el-button type="text" size="small" @click="removeClick('single',scope.row)">移出</el-button>
</template>
</el-table-column>
</el-table>
</el-row>
</el-row>
<el-row style="margin-top: 15px" class="operate-button">
<el-button size="small" type="primary" @click="tallyFinish">完成理货</el-button>
<el-button size="small" @click="cancel">取消</el-button>
</el-row>
</el-col>
</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>
<batchTally v-if="dialogConfig.dialogVisible" v-bind="$attrs" @closeDialog="closeDialog" :type="dialogConfig.type" :tallyRows="tallyRows" :shipmentObj="shipmentObj" />
</el-dialog>
</div>
</template>
<script>
import batchTally from "./batchTally.vue";
import { getTallyList, tallyRemove, tallyCommit } from "@/api/ecw/boxSea";
import { formatDate, serviceMsg } from "../../utils";
export default {
name: "tally",
inheritAttrs: false,
components: {
batchTally,
},
props: {
shipmentObj: Object,
},
data() {
return {
tallyList: [],
// 理货数据
tallyRows: [],
// 勾选行
selectedRows: [],
// 弹窗配置
dialogConfig: {
title: "",
dialogVisible: false,
width: "30%",
type: "",
fullscreen: false,
},
};
},
created() {
this.getList();
},
methods: {
// 格式化日期
formatDate,
// 查询理货列表
getList() {
getTallyList({ shipmentId: this.shipmentObj.id }).then((res) => {
let list = [];
res.data.forEach((item) => {
item.orderItemList.forEach((oItem) => {
list.push({
...oItem,
positionNo: item.positionNo,
tallyStatus: item.tallyStatus,
tallyTime: item.tallyTime,
});
});
});
this.tallyList = list;
});
},
// 选中
checkboxSelect(selection) {
this.selectedRows = selection;
},
// 理货点击
tallyClick(type, data) {
if (type === "batch") {
if (this.selectedRows.length === 0) {
this.$message.error("请选择需要理货的订单");
return;
}
this.tallyRows = this.selectedRows;
this.showDialog("batchTally");
} else {
this.tallyRows = [data];
this.showDialog("singleTally");
}
},
// 移出点击
removeClick(type, data) {
let orderNos = [],
orderIds = [];
if (type === "batch") {
if (this.selectedRows.length === 0) {
this.$message.error("请选择需要移出的订单");
return;
}
orderNos = this.selectedRows.map((item) => item.orderNo);
orderIds = this.selectedRows.map((item) => item.orderId);
} else {
orderNos = [data.orderNo];
orderIds = [data.orderId];
}
let msgTitle = `您确定要将 ${orderNos.join("")} 移出 ${
this.shipmentObj.selfNo
} 吗?`;
this.$confirm(msgTitle, "提示", {
type: "warning",
})
.then((_) => {
tallyRemove({
orderIdLIst: orderIds,
shipmentId: this.shipmentObj.id,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.getList();
});
});
})
.catch((_) => {});
},
// 关闭弹窗
closeDialog(type) {
this.$set(this.dialogConfig, "dialogVisible", false);
if (type === "query") {
this.getList();
}
},
// 打开弹窗
showDialog(type) {
switch (type) {
case "batchTally":
this.$set(this.dialogConfig, "title", "批量理货");
this.$set(this.dialogConfig, "width", "500px");
break;
case "singleTally":
this.$set(this.dialogConfig, "title", "理货确认");
this.$set(this.dialogConfig, "width", "500px");
break;
}
this.$set(this.dialogConfig, "type", type);
this.$set(this.dialogConfig, "dialogVisible", true);
},
/** 取消 */
cancel(type) {
this.$emit("closeDialog", type);
},
// 理货完成
tallyFinish() {
tallyCommit({ shipmentId: this.shipmentObj.id }).then((res) => {
serviceMsg(res, this).then(() => {
this.$emit("closeDialog", "submit");
});
});
},
},
computed: {
/* 获取仓库 */
getCityName() {
return (id) => {
let arr = this.$attrs.warehouseList.filter((item) => item.id == id);
return arr.length > 0 ? arr[0].titleZh : "";
};
},
},
};
</script>
<style lang="scss" scoped>
</style>
...@@ -5,29 +5,19 @@ ...@@ -5,29 +5,19 @@
<el-row class="number-area"> <el-row class="number-area">
<p class="label-font">自编号:</p> <p class="label-font">自编号:</p>
<p class="label-font">{{selfNo}}</p> <p class="label-font">{{selfNo}}</p>
<el-input v-model="labelNo" <el-input v-model="labelNo" placeholder="请输入标签号"></el-input>
placeholder="请输入标签号"></el-input>
<div> <div>
<el-button type="primary" <el-button type="primary" @click="modifyBatchUnload">批量输入</el-button>
@click="modifyBatchUnload">批量输入</el-button> <el-button type="primary" @click="modifyAllUnload">一键卸柜</el-button>
<el-button type="primary"
@click="modifyAllUnload">一键卸柜</el-button>
</div> </div>
</el-row> </el-row>
<!-- 当前部分 --> <!-- 当前部分 -->
<el-row class="number-area"> <el-row class="number-area">
<p class="label-font">当前部分:</p> <p class="label-font">当前部分:</p>
<el-select placeholder="请选择" <el-select placeholder="请选择" v-model="sectionId" @change="sectionChange">
v-model="sectionId" <el-option key="0" label="全部" value="0"></el-option>
@change="sectionChange"> <el-option v-for="item in sectionList" :key="item.id" :label="item.title" :value="item.id"></el-option>
<el-option key="0"
label="全部"
value="0"></el-option>
<el-option v-for="item in sectionList"
:key="item.id"
:label="item.title"
:value="item.id"></el-option>
</el-select> </el-select>
<p> <p>
{{getSectionInfo}} {{getSectionInfo}}
...@@ -36,58 +26,32 @@ ...@@ -36,58 +26,32 @@
<!-- 表格 --> <!-- 表格 -->
<el-row class="table-area"> <el-row class="table-area">
<el-table v-loading="loading" <el-table v-loading="loading" :data="pageData.sectionOrderList" border>
:data="pageData.sectionOrderList" <el-table-column label="序号" type="index" align="center" width="50" />
border> <el-table-column label="订单号" align="center" prop="orderNo">
<el-table-column label="序号"
type="index"
align="center"
width="50" />
<el-table-column label="订单号"
align="center"
prop="orderNo">
<template slot-scope="scope"> <template slot-scope="scope">
<a href="javascript:void(0);" <a href="javascript:void(0);" class="order-href">{{ scope.row.orderNo }}</a>
class="order-href">{{ scope.row.orderNo }}</a>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="商品信息" <el-table-column label="商品信息" align="center" prop="goodsList">
align="center"
prop="goodsList">
<template slot-scope="scope"> <template slot-scope="scope">
<section class="table-goodList"> <section class="table-goodList">
<div v-for="(item, index) in scope.row.goodsList" <div v-for="(item, index) in scope.row.goodsList" :key="index" class="goodList-div">
:key="index"
class="goodList-div">
<p>{{index+1}}{{item.prodTitleZh}}</p> <p>{{index+1}}{{item.prodTitleZh}}</p>
</div> </div>
</section> </section>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="实装箱数" <el-table-column label="实装箱数" align="center" prop="installNum" />
align="center" <el-table-column label="卸柜箱数" align="center" prop="unloadNum" />
prop="installNum" /> <el-table-column label="清关状态" align="center" prop="">
<el-table-column label="卸柜箱数"
align="center"
prop="unloadNum" />
<el-table-column label="清关状态"
align="center"
prop="">
<template slot-scope="scope">{{clearStatus(scope.row)}}</template> <template slot-scope="scope">{{clearStatus(scope.row)}}</template>
</el-table-column> </el-table-column>
<el-table-column label="体积" <el-table-column label="体积" align="center" prop="volume" />
align="center" <el-table-column label="重量" align="center" prop="weight" />
prop="volume" /> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column label="重量"
align="center"
prop="weight" />
<el-table-column label="操作"
align="center"
class-name="small-padding fixed-width">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="danger" <el-button type="danger" size="small" @click="openError(scope.row)">异常</el-button>
size="small"
@click="openError(scope.row)">异常</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -110,21 +74,12 @@ ...@@ -110,21 +74,12 @@
</el-row> </el-row>
<el-row> <el-row>
<el-button type="success" <el-button type="success" @click="onSubmit">卸柜完成</el-button>
@click="onSubmit">卸柜完成</el-button>
</el-row> </el-row>
<!-- 对话框 --> <!-- 对话框 -->
<el-dialog custom-class="shipping-dialog" <el-dialog custom-class="shipping-dialog" title="异常" :visible.sync="dialogVisible" width="600px" :modal-append-to-body=false append-to-body>
title="异常" <unloadingError v-if="dialogVisible" @closeDialog="closeDialog" v-bind="$attrs" :currRow="currRow" />
:visible.sync="dialogVisible"
width="600px"
:modal-append-to-body=false
append-to-body>
<unloadingError v-if="dialogVisible"
@closeDialog="closeDialog"
v-bind="$attrs"
:currRow="currRow" />
</el-dialog> </el-dialog>
</div> </div>
</template> </template>
...@@ -188,6 +143,7 @@ export default { ...@@ -188,6 +143,7 @@ export default {
}); });
}, },
methods: { methods: {
getTotlContent,
/* 获取卸柜数据 */ /* 获取卸柜数据 */
getLoadGoodsList() { getLoadGoodsList() {
this.loading = true; this.loading = true;
...@@ -247,9 +203,9 @@ export default { ...@@ -247,9 +203,9 @@ export default {
this.$emit("closeStart"); this.$emit("closeStart");
}, },
/* 关闭弹窗 */ /* 关闭弹窗 */
closeDialog() { closeDialog(type) {
this.dialogVisible = false; this.dialogVisible = false;
this.getLoadGoodsList(); if (type === "query") this.getLoadGoodsList();
}, },
/* 打开异常 */ /* 打开异常 */
openError(row) { openError(row) {
......
...@@ -62,7 +62,7 @@ export default { ...@@ -62,7 +62,7 @@ export default {
shipmentId: this.$attrs.shipmentObj.id, shipmentId: this.$attrs.shipmentObj.id,
}).then((res) => { }).then((res) => {
serviceMsg(res, this).then((res) => { serviceMsg(res, this).then((res) => {
this.$emit("closeDialog"); this.$emit("closeDialog", "query");
}); });
}); });
} }
......
...@@ -42,7 +42,8 @@ import arrivalWidget from "./nodePage/arrival.vue"; ...@@ -42,7 +42,8 @@ import arrivalWidget from "./nodePage/arrival.vue";
import cusClearanceWidget from "./nodePage/cusClearance.vue"; import cusClearanceWidget from "./nodePage/cusClearance.vue";
import unloadingWidget from "./nodePage/unloading/index.vue"; import unloadingWidget from "./nodePage/unloading/index.vue";
import settlementWidget from "./nodePage/settlement.vue"; import settlementWidget from "./nodePage/settlement.vue";
import ReviewWidget from "./nodePage/review.vue"; import reviewWidget from "./nodePage/review.vue";
import tallyWidget from "./nodePage/tally/index.vue";
/** /**
* 海运流程图 * 海运流程图
...@@ -67,7 +68,8 @@ export default { ...@@ -67,7 +68,8 @@ export default {
cusClearanceWidget, cusClearanceWidget,
unloadingWidget, unloadingWidget,
settlementWidget, settlementWidget,
ReviewWidget, reviewWidget,
tallyWidget,
}, },
props: { props: {
shipmentObj: Object, shipmentObj: Object,
...@@ -137,12 +139,16 @@ export default { ...@@ -137,12 +139,16 @@ export default {
case "agent": case "agent":
this.$set(this.dialogConfig, "title", "代理商设置"); this.$set(this.dialogConfig, "title", "代理商设置");
break; break;
// 理货
case "tally":
this.$set(this.dialogConfig, "fullscreen", true);
break;
// 预装 // 预装
case "preinstall": case "preinstall":
// 预装反审 // 预装反审
const preStatus = this.shipmentObj[node.keyName]; const preStatus = this.shipmentObj[node.keyName];
if ([24, 25].includes(preStatus)) { if ([24, 25].includes(preStatus)) {
this.currentComponent = `ReviewWidget`; this.currentComponent = `reviewWidget`;
this.$set(this.dialogConfig, "width", "700px"); this.$set(this.dialogConfig, "width", "700px");
this.$set(this.dialogConfig, "title", "预装反审"); this.$set(this.dialogConfig, "title", "预装反审");
} else { } else {
...@@ -154,7 +160,7 @@ export default { ...@@ -154,7 +160,7 @@ export default {
// 卸柜反审 // 卸柜反审
const unStatus = this.shipmentObj[node.keyName]; const unStatus = this.shipmentObj[node.keyName];
if ([184, 185].includes(unStatus)) { if ([184, 185].includes(unStatus)) {
this.currentComponent = `ReviewWidget`; this.currentComponent = `reviewWidget`;
this.$set(this.dialogConfig, "width", "700px"); this.$set(this.dialogConfig, "width", "700px");
this.$set(this.dialogConfig, "title", "卸柜反审"); this.$set(this.dialogConfig, "title", "卸柜反审");
} }
...@@ -223,7 +229,7 @@ export default { ...@@ -223,7 +229,7 @@ export default {
.shipping-chart { .shipping-chart {
display: flex; display: flex;
padding: 10px 10px; padding: 10px 10px;
min-width: 1320px; min-width: max-content;
.chart-nodes { .chart-nodes {
display: flex; display: flex;
......
<template> <template>
<div class="app-seaStepDetail"> <div class="app-seaStepDetail">
<el-scrollbar :vertical="true" viewClass="shipping-step"> <el-scrollbar :vertical="true" viewClass="shipping-step">
<!-- <div class="shipping-step"> -->
<template v-for="(step, index) in flatSeaStep"> <template v-for="(step, index) in flatSeaStep">
<div :key="index" v-if="shipmentObj[step.voName] && columnsMapping[step.voName]" class="step-table"> <div :key="index" v-if="shipmentObj[step.voName] && columnsMapping[step.voName]" class="step-table">
<div class="step-title">{{step.title}}</div> <div class="step-title">{{step.title}}</div>
...@@ -11,7 +10,6 @@ ...@@ -11,7 +10,6 @@
</div> </div>
</div> </div>
</template> </template>
<!-- </div> -->
</el-scrollbar> </el-scrollbar>
</div> </div>
</template> </template>
......
...@@ -139,6 +139,7 @@ export default { ...@@ -139,6 +139,7 @@ export default {
} }
} }
.operate-button { .operate-button {
padding-top: 10px;
text-align: center; text-align: center;
} }
.two-element { .two-element {
......
...@@ -17,6 +17,9 @@ function getStatusName(statu) { ...@@ -17,6 +17,9 @@ function getStatusName(statu) {
statusName.set(24, "预装审核失败"); statusName.set(24, "预装审核失败");
statusName.set(25, "预装审核成功"); statusName.set(25, "预装审核成功");
statusName.set(2111, "未理货");
statusName.set(2112, "已理货");
statusName.set(31, "未派车"); statusName.set(31, "未派车");
statusName.set(32, "已派车"); statusName.set(32, "已派车");
...@@ -99,7 +102,7 @@ function seaBaseData() { ...@@ -99,7 +102,7 @@ function seaBaseData() {
], ],
[ [
{ {
title: "预装", title: "排单",
imgSrc: { imgSrc: {
start: require("@/assets/images/shipping/yz-start.png"), start: require("@/assets/images/shipping/yz-start.png"),
wait: require("@/assets/images/shipping/yz-wait.png"), wait: require("@/assets/images/shipping/yz-wait.png"),
...@@ -118,6 +121,39 @@ function seaBaseData() { ...@@ -118,6 +121,39 @@ function seaBaseData() {
end: [25], end: [25],
}, },
}, },
{
title: "AGENT",
imgSrc: {
start: require("@/assets/images/shipping/agent-start.png"),
wait: require("@/assets/images/shipping/agent-wait.png"),
end: require("@/assets/images/shipping/agent-end.png"),
},
type: "agent",
voName: "agentInfo",
currStatus: "start",
},
],
[
{
title: "理货",
imgSrc: {
start: require("@/assets/images/shipping/lh-start.png"),
wait: require("@/assets/images/shipping/lh-wait.png"),
end: require("@/assets/images/shipping/lh-end.png"),
},
type: "tally",
dataKey: "16", // 字典数据键值
/**
* 理货状态:2111、未理货;2112、已理货
*/
voName: "tyTime",
keyName: "tyStatus",
status: {
start: [2111],
wait: [],
end: [2112],
},
},
{ {
title: "拖车", title: "拖车",
imgSrc: { imgSrc: {
...@@ -138,17 +174,6 @@ function seaBaseData() { ...@@ -138,17 +174,6 @@ function seaBaseData() {
end: [32], end: [32],
}, },
}, },
{
title: "AGENT",
imgSrc: {
start: require("@/assets/images/shipping/agent-start.png"),
wait: require("@/assets/images/shipping/agent-wait.png"),
end: require("@/assets/images/shipping/agent-end.png"),
},
type: "agent",
voName: "agentInfo",
currStatus: "start",
},
], ],
[ [
{ {
......
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