Commit 05f6e30f authored by huhaiqing's avatar huhaiqing

出货详情功能开发

parent fe877479
......@@ -355,14 +355,14 @@ export function abnormalCreate(data) {
* 获得已预装部分列表
*
* @export
* @param {*} params
* @param {*} data
* @return {*}
*/
export function secGoodsList(params) {
export function secGoodsList(data) {
return request({
url: "/ecw/box-preload-goods/secGoodsList",
method: "get",
params,
method: "post",
data,
});
}
......@@ -370,14 +370,14 @@ export function secGoodsList(params) {
* 获得预装分页
*
* @export
* @param {*} params
* @param {*} data
* @return {*}
*/
export function preloadPage(params) {
export function preloadPage(data) {
return request({
url: "/ecw/box-preload-goods/preloadPage",
method: "get",
params,
method: "post",
data,
});
}
......@@ -396,6 +396,37 @@ export function createSection(data) {
});
}
/**
* 查询出货单下的所有部分列表
*
* @export
* @param {*} data
* @return {*}
*/
export function getSectionList(params) {
return request({
url: "/ecw/box-preload-section/list",
method: "get",
params,
});
}
/**
* 装柜订单明细
*
* @export
* @param {*} data
* @return {*}
*/
export function boxGoodsDetail(data) {
return request({
url: "/ecw/box-preload-goods/boxGoodsDetail",
method: "post",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
data: jsonToFormData(data),
});
}
/**
* 删除预装部分
*
......
......@@ -387,13 +387,13 @@ export const constantRoutes = [
hidden: true,
redirect: 'noredirect',
children: [
/* {
path: 'query/:boxId(\\d+)',
{
path: 'query/:shipmentId(\\d+)',
component: (resolve) => import('@/views/ecw/box/query'),
props: true,
name: 'boxQuery',
meta: {title: '出货详情', icon: '', activeMenu: '/shipment/box'}
}, */
name: 'shippingDetail',
meta: {title: '出货详情', icon: '', activeMenu: '/shipment/boxDetail'}
},
{
path: 'shippingSea/:shipmentId(\\d+)',
component: (resolve) => import('@/views/ecw/box/shippingSea/shippingSea'),
......
......@@ -20,7 +20,7 @@
</el-select>
</el-form-item>
<el-row class="two-element">
<el-row class="two-element-formItem">
<el-form-item label="金额">
<el-input-number v-model="costObj.price" controls-position="right" :min="1"></el-input-number>
</el-form-item>
......@@ -36,7 +36,7 @@
</el-form-item>
</el-form>
<div slot="footer" class="operate-button">
<div class="operate-button">
<el-button type="primary" @click="submit">确定</el-button>
<el-button @click="$emit('closeDialog')">取消</el-button>
</div>
......@@ -84,25 +84,3 @@ export default {
},
};
</script>
<style lang="scss">
// 海运操作统一弹窗样式
.app-costForm {
// 页面内元素弹窗form控件宽度设置
.el-form-item__content {
> div:not(.el-input-number) {
width: 100%;
}
}
.operate-button {
text-align: center;
}
.two-element {
display: flex;
> :last-child {
width: 100%;
margin-left: 10px;
}
}
}
</style>
<template>
<div class="app-container">
<div class="app-container shipping-sea">
<!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
......@@ -45,8 +45,8 @@
:key="dict.value" :label="dict.label" :value="dict.value"/>
</el-select>
</el-form-item>
<el-form-item label="运输方式" prop="transportType">
<el-select v-model="queryParams.transportType" placeholder="请选择运输方式" clearable size="small">
<el-option v-for="dict in transportTypes"
......@@ -54,7 +54,7 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">重置</el-button>
......@@ -79,7 +79,11 @@
<!-- 列表 -->
<el-table v-loading="loading" :data="list">
<el-table-column label="自编号" align="center" prop="selfNo"/>
<el-table-column label="自编号" align="center" prop="selfNo">
<template slot-scope="scope">
<el-button type="text" @click="handleCommand(scope.row, 'detail')">{{ scope.row.selfNo }}</el-button>
</template>
</el-table-column>
<el-table-column label="柜号" align="center" prop="cubNo"/>
<el-table-column label="柜型" align="center" prop="cabinetId">
<template slot-scope="scope">
......@@ -100,15 +104,15 @@
<dict-tag :type="DICT_TYPE.BOX_SHIPMENT_STATUS" :value="scope.row.boxStatus"/>
</template>
</el-table-column>
<el-table-column label="日期" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<span>{{ new Date(scope.row.createTime).format('yyyy-MM-dd') }}</span>
</template>
</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" width="200px">
<template slot-scope="scope">
<el-dropdown trigger="click" @command="(command)=>handleCommand(scope.row, command)">
<el-dropdown trigger="click" @command="(command)=>handleCommand(scope.row, command)" style="marginRight:10px;">
<el-button type="primary">
操作<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
......@@ -120,6 +124,20 @@
<el-dropdown-item command="delete">删除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-dropdown trigger="click">
<el-button type="primary">
下载<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="">预装单</el-dropdown-item>
<el-dropdown-item command="">已装单</el-dropdown-item>
<el-dropdown-item command="">应收汇总表</el-dropdown-item>
<el-dropdown-item command="">agent list</el-dropdown-item>
<el-dropdown-item command="">son cap</el-dropdown-item>
<el-dropdown-item command="">提货单</el-dropdown-item>
<el-dropdown-item command="">提单Copy</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
......@@ -128,7 +146,7 @@
@pagination="getList"/>
<!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body>
<el-dialog :title="title" :visible.sync="open" width="600px" append-to-body class="shippingSea-dialog">
<template v-if="dialogType === 'edit' || dialogType === 'add'">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
......@@ -155,9 +173,9 @@
<el-option v-for="item in importWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<div class="operate-button">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
......@@ -165,6 +183,9 @@
<template v-if="dialogType === 'cost'">
<costForm v-if="open" @closeDialog="closeDialog" :currRow="currRow"/>
</template>
<template v-if="dialogType === 'error'">
<regError v-if="open" @closeDialog="closeDialog" :shipmentObj="currRow"/>
</template>
</el-dialog>
</div>
</template>
......@@ -173,13 +194,15 @@
import {createbox, updatebox, deletebox, getbox, getboxPage, exportboxExcel} from "@/api/ecw/box";
import {getCabinetPage} from "@/api/ecw/cabinet";
import { getWarehouseList } from "@/api/ecw/warehouse"
import { getDictDatas, DICT_TYPE } from '@/utils/dict';
import { DICT_TYPE } from '@/utils/dict';
import costForm from './costForm.vue'
import regError from './regError.vue'
export default {
name: "box",
components: {
costForm
costForm,
regError
},
data() {
return {
......@@ -266,7 +289,7 @@
created() {
this.transportTypes = this.transportTypes.filter(item => item.value == '1' || item.value == '2');
getWarehouseList().then(res => this.warehouseList = res.data);
getCabinetPage(null).then(response => {
......@@ -275,7 +298,6 @@
this.getList();
},
methods: {
/** 查询列表 */
getList() {
this.loading = true;
......@@ -390,13 +412,6 @@
closeDialog() {
this.open = false;
},
/* 费用登记 */
createCost(row) {
this.title = '费用登记'
this.dialogType = 'cost';
this.open = true;
this.currRow = row;
},
/** 查看按钮操作 */
handleCommand(row, command) {
switch (command) {
......@@ -413,10 +428,53 @@
break;
case 'cost':
this.createCost(row);
this.title = '费用登记'
this.dialogType = 'cost';
this.open = true;
this.currRow = row;
break;
case 'error':
this.title = '异常登记'
this.dialogType = 'error';
this.open = true;
this.currRow = row;
break;
case 'detail':
this.$router.push('/boxSea/query/' + row.id)
break;
}
},
}
};
</script>
<style lang="scss">
// 海运操作统一弹窗样式
.shippingSea-dialog {
// 页面内元素弹窗form控件宽度设置
.el-form-item__content {
> div:not(.el-input-number) {
width: 100%;
}
}
.operate-button {
text-align: center;
}
.two-element-formItem {
display: flex;
> :last-child {
width: 100%;
margin-left: 10px;
}
}
.two-element {
.el-form-item__content {
display: flex;
> :last-child {
margin-left: 10px;
}
}
}
}
</style>
<template>
<div>
<el-row type="flex" style="margin-top: 15px; margin-bottom: 15px" justify="center">
<el-col :xs="24" :sm="24" :md="24" :lg="20" :xl="16">
<el-col :xs="24" :sm="24" :md="24" :lg="20" :xl="19">
<div style="display: flex; justify-content: space-between;align-items: flex-end;">
<h2>出货详情</h2>
<div>
......@@ -14,15 +14,33 @@
</div>
<el-card style="margin-top: 15px">
<el-descriptions :column="4" border>
<el-descriptions-item label="自编号"></el-descriptions-item>
<el-descriptions-item label="运输方式"></el-descriptions-item>
<el-descriptions-item label="出货渠道"></el-descriptions-item>
<!-- <el-descriptions-item label="柜型"></el-descriptions-item> -->
<el-descriptions-item label="状态"></el-descriptions-item>
<el-descriptions-item label="总计"></el-descriptions-item>
<el-descriptions-item label="始发地"></el-descriptions-item>
<el-descriptions-item label="目的地"></el-descriptions-item>
<el-descriptions-item label="SO.NO"></el-descriptions-item>
<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="出货渠道" v-if="shipmentObj.transportType !== '2'">
{{getShipChannelName(shipmentObj.shippingChannelId)}}
</el-descriptions-item>
<el-descriptions-item label="柜型" v-if="shipmentObj.transportType === '2'">
{{getCabinetLabel(shipmentObj.cabinetId)}}
</el-descriptions-item>
<el-descriptions-item label="状态">
{{getBoxStatus(shipmentObj)}}
</el-descriptions-item>
<el-descriptions-item label="总计">
{{getBoxSum(shipmentObj.boxStatistics)}}
</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-item label="SO NO">
{{shipmentObj.bookSeaInfo ? shipmentObj.bookSeaInfo.sono : '' }}
</el-descriptions-item>
</el-descriptions>
</el-card>
......@@ -30,11 +48,12 @@
<el-tab-pane label="明细">
<div class="detail-pane">
<p>当前部分:</p>
<el-select v-model="value" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
<el-select placeholder="请选择" v-model="sectionId" @change="sectionChange">
<el-option v-for="item in sectionList" :key="item.id" :label="item.title" :value="item.id"></el-option>
</el-select>
<p class="box-weight">9箱子xxx</p>
<p class="box-weight">
{{getSectionInfo}}
</p>
<p class="document-status">单证状态:我司全代</p>
</div>
<el-table :data="[]" style="width: 100%">
......@@ -86,123 +105,138 @@
</template>
<script>
import { getCustomer, getCustomerSelect } from "@/api/ecw/customer";
import { DICT_TYPE, getDictDataLabel } from "@/utils/dict";
import { getProductTypeList } from "@/api/ecw/productType";
import { getNodeList } from "@/api/ecw/node";
import CustomerFollow from "@/components/CustomerFollow";
import { parseTime } from "@/utils/ruoyi";
import CustomerComplaint from "@/views/ecw/customerComplaint";
import { listServiceUser } from "@/api/system/user";
import { getCustomerContactsListByCustomer } from "@/api/ecw/customerContacts";
import { getbox } from "@/api/ecw/box";
import { getChannelList } from "@/api/ecw/channel";
import { getCabinetPage } from "@/api/ecw/cabinet";
import { getWarehouseList } from "@/api/ecw/warehouse";
import {
getSeaStatus,
getStatusName,
getTotlContent,
} from "./shippingSea/utils";
import { getSectionList, boxGoodsDetail } from "@/api/ecw/boxSea";
export default {
name: "boxQuery",
name: "boxDetail",
props: {
customerId: String,
},
components: {
CustomerFollow,
CustomerComplaint,
shipmentId: String,
},
components: {},
created() {
getNodeList().then((r) => {
this.nodeList = r.data;
});
getCustomer(this.id).then((response) => {
this.customer = { ...this.customer, ...response.data };
getCustomerContactsListByCustomer({ customerId: this.id }).then((r) => {
this.customerContacts = r.data;
});
});
getProductTypeList().then((r) => {
this.productTypeList = r.data;
// 查询出货信息
getbox(this.shipmentId).then((res) => {
const { data } = res;
this.shipmentObj = data ?? {};
});
getCustomerSelect().then((r) => {
this.customerSelect = r.data;
// 查询渠道
getChannelList().then((res) => (this.channelList = res.data));
// 查询柜型
getCabinetPage(null).then(
(response) => (this.cabinetList = response.data.list)
);
// 仓库
getWarehouseList().then((r) => {
this.warehouseList = r.data;
});
listServiceUser().then((r) => {
this.serviceUserList = r.data;
// 部分
getSectionList({ shipmentId: this.shipmentId }).then((res) => {
this.sectionList = res.data.map((item, index) => {
return {
...item,
title: `第${index + 1}部分`,
};
});
});
// 装柜明细
this.getBoxGoodsDetail(0);
},
data() {
return {
DICT_TYPE,
getDictDataLabel,
parseTime,
nodeList: [],
productTypeList: [],
customerSelect: [],
serviceUserList: [],
customerContacts: [],
customer: {
id: undefined,
number: undefined,
name: undefined,
level: undefined,
country: undefined,
type: undefined,
agentId: undefined,
company: undefined,
address: undefined,
productType: undefined,
productId: undefined,
pickupPoint: undefined,
memberId: undefined,
birthday: undefined,
balance: undefined,
source: undefined,
picture: undefined,
customerService: undefined,
customerLines: [],
promoter: undefined,
status: undefined,
founder: undefined,
department: undefined,
invoiceTitle: undefined,
licenseNumber: undefined,
bank: undefined,
bankNumber: undefined,
project: undefined,
billingAddress: undefined,
billingTell: undefined,
taxRate: undefined,
remarks: undefined,
arrivalConfirm: undefined,
weightUnit: undefined,
createTime: undefined,
// 出货对象
shipmentObj: {},
// 渠道
channelList: [],
// 柜型
cabinetList: [],
// 仓库
warehouseList: [],
// 部分list
sectionList: [],
// 部分订单商品
sectionObj: {
secStatistics: {},
sectionOrderList: [],
totalStatistics: {},
},
sectionId: "",
};
},
methods: {
sectionChange(val) {
console.log(val)
this.getBoxGoodsDetail(this.sectionId)
},
getBoxGoodsDetail(secId) {
boxGoodsDetail({ shipmentId: this.shipmentId, secId }).then((res) => {
this.sectionObj = res.data;
});
},
},
computed: {
productType() {
const productType = this.productTypeList.find(
(p) => p.id === parseInt(this.customer.productType)
);
return productType ? productType.titleZh : "";
/* 渠道 */
getShipChannelName() {
return (shippingChannelId) => {
for (const channelItem of this.channelList) {
if (channelItem.channelId == shippingChannelId) {
return channelItem.nameZh;
}
return "/";
}
};
},
/* 获取柜型 */
getCabinetLabel() {
return (cabinetId) => {
for (const cabinetItem of this.cabinetList) {
if (cabinetItem.id == cabinetId) {
return cabinetItem.name;
}
return "/";
}
};
},
pickupPoint() {
const pickupPoint = this.nodeList.find(
(p) => p.id === parseInt(this.customer.pickupPoint)
);
return pickupPoint ? pickupPoint.titleZh : "";
/* 状态 */
getBoxStatus() {
return (shippingVO) => {
return getStatusName(getSeaStatus(shippingVO));
};
},
promoter() {
return (
this.customerSelect.find((e) => e.id === this.customer.promoter)
?.name || ""
);
/* 总计 */
getBoxSum() {
return (boxStatistics) => {
if (boxStatistics) {
return `${boxStatistics.num ?? 0} ${boxStatistics.volume ?? 0}m3 ${
boxStatistics.weight ?? 0
}kg`;
}
return;
};
},
customerService() {
return (
this.serviceUserList.find((e) => e.id === this.customer.customerService)
?.nickname || ""
);
/* 获取仓库 */
getCityName() {
return (id) => {
let arr = this.warehouseList.filter((item) => item.id == id);
return arr.length > 0 ? arr[0].titleZh : "无";
};
},
id() {
return this.customerId ? parseInt(this.customerId) : undefined;
// 部分信息
getSectionInfo() {
const { totalStatistics, secStatistics } = this.sectionObj;
if (!this.sectionId) {
return getTotlContent(totalStatistics);
} else {
return getTotlContent(secStatistics);
}
},
},
};
......
......@@ -18,6 +18,7 @@
<el-date-picker type="date" placeholder="请选择日期" v-model="errorObj.abnStartTime" value-format="yyyy-MM-dd"></el-date-picker>
<el-date-picker type="date" placeholder="请选择日期" v-model="errorObj.abnEndTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item>
<el-form-item label="是否更新订单状态">
<el-radio-group v-model="errorObj.orderStatus">
<el-radio v-for="item in status" :key="item.value" :label="item.value">{{item.label}}</el-radio>
......@@ -65,7 +66,7 @@ export default {
},
created() {
const { currNode } = this.$attrs;
this.errorObj = { opStep: currNode.dataKey };
this.errorObj = { opStep: currNode?.dataKey ?? undefined };
},
methods: {
/** 提交 */
......
......@@ -73,7 +73,7 @@
<section class="table-goodList">
<div>合计:{{calcSum(row.goodsList)}}</div>
<div v-for="(item, index) in row.goodsList" :key="index" class="goodList-div">
{{item.volume}}{{item.weight}}kg
{{getTotlContent(item,['volume','weight'])}}
</div>
</section>
</template>
......@@ -90,7 +90,11 @@
<script>
import { approvalDetail } from "@/api/ecw/box";
import { getSeaStatus, getStatusName } from "./shippingSea/utils";
import {
getSeaStatus,
getStatusName,
getTotlContent,
} from "./shippingSea/utils";
import { getCabinetPage } from "@/api/ecw/cabinet";
import { getChannelList } from "@/api/ecw/channel";
......@@ -123,6 +127,7 @@ export default {
getChannelList().then((res) => (this.channelList = res.data));
},
methods: {
getTotlContent,
/* 获取详情 */
getApprovalDetail(processId) {
approvalDetail({ approvalId: processId }).then((res) => {
......@@ -144,7 +149,11 @@ export default {
},
/* 打开订单列表 */
showOrder() {
this.$set(this.dialogConfig, "title", `${this.boxBackVO.selfNo} 订单列表`);
this.$set(
this.dialogConfig,
"title",
`${this.boxBackVO.selfNo} 订单列表`
);
this.$set(this.dialogConfig, "visible", true);
},
/* 合计 */
......@@ -190,9 +199,7 @@ export default {
/* 体积重量 */
getVolumeWeight() {
return (total) => {
return `${total?.num ?? 0} ${total?.volume ?? 0}m³ ${
total?.weight ?? 0
}kg`;
return this.getTotlContent(total);
};
},
/* 是否显示卸柜箱数 */
......
......@@ -30,7 +30,7 @@
</template>
<script>
import regError from "./regError";
import regError from "../../regError";
import dayjs from "dayjs";
import { arrivalCreate, serviceMsg } from "@/api/ecw/boxSea";
import { formatDateStr } from "../utils";
......
......@@ -11,9 +11,7 @@
</div>
<div>
<template v-if="item.secStatistics">
<p>{{item.secStatistics.num}}</p>
<p>{{item.secStatistics.volume}}</p>
<p>{{item.secStatistics.weight}}Kg</p>
{{getTotlContent(item.secStatistics)}}
</template>
</div>
</el-row>
......@@ -54,29 +52,29 @@
<dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="item.productRecord" />
</p>
<p>其他:<span>{{item.num}}</span><span>{{item.volume}}</span><span>{{item.weight}}Kg</span></p>
<p>其他:{{getTotlContent(item)}}</p>
</div>
</section>
</template>
</el-table-column>
<el-table-column label="计划箱数" align="center" prop="num">
<template slot-scope="scope">
{{ scope.row.num }}
{{getTotlContent(scope.row,['num'])}}
</template>
</el-table-column>
<el-table-column label="实装箱数" align="center" prop="installNum">
<template slot-scope="scope">
{{ scope.row.installNum }}
{{ scope.row.installNum }}
</template>
</el-table-column>
<el-table-column label="体积" align="center" prop="volume">
<template slot-scope="scope">
{{ scope.row.volume }}
{{getTotlContent(scope.row,['volume'])}}
</template>
</el-table-column>
<el-table-column label="重量" align="center" prop="weight">
<template slot-scope="scope">
{{ scope.row.weight }} Kg
{{getTotlContent(scope.row,['weight'])}}
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
......@@ -97,14 +95,15 @@
<el-col :span="6" class="totle-info">
<div class="count-info">
<p>总计:
<!-- <span>{{sumData.count.num}}箱</span><span>{{sumData.count.volume}}m³</span><span>{{sumData.count.weight}}Kg</span> -->111
无返回
<!-- <span>{{sumData.count.num}}箱</span><span>{{sumData.count.volume}}m³</span><span>{{sumData.count.weight}}Kg</span> -->
</p>
</div>
<div>
<p>容量:</p>
<p>111</p>
<p>无返回</p>
</div>
<div>已装0</div>
<div>已装 无返回 </div>
</el-col>
</el-row>
......@@ -204,6 +203,7 @@ import {
boxUpdate,
approvalCreate,
} from "@/api/ecw/boxSea";
import { getTotlContent } from "../../utils";
/**
* 开始装柜
......@@ -268,6 +268,7 @@ export default {
});
},
methods: {
getTotlContent,
/* 装柜部分列表 */
getLoadSecGoodsList() {
loadSecGoodsList({ shipmentId: this.shipmentObj.id }).then((res) => {
......@@ -275,7 +276,7 @@ export default {
this.listData = data.map((item, index) => {
return {
...item,
title: `第 ${++index} 部分`,
title: `第${++index}部分`,
};
});
if (this.listData.length) {
......
......@@ -28,9 +28,7 @@
</el-collapse-transition>
<div class="part-secGoog">
<template>
<p>{{item.secStatistics ? item.secStatistics.num : 0}}</p>
<p>{{item.secStatistics ? item.secStatistics.volume : 0}}</p>
<p>{{item.secStatistics ? item.secStatistics.weight : 0}}Kg</p>
{{getTotlContent(item.secStatistics)}}
</template>
</div>
</el-row>
......@@ -95,12 +93,12 @@
<el-table-column label="箱数" align="center" prop="num" width="120" />
<el-table-column label="体积" align="center" prop="volume" width="120">
<template slot-scope="scope">
<p v-if="scope.row.volume">{{scope.row.volume}}</p>
<p v-if="scope.row.volume">{{getTotlContent(scope.row,['volume'])}}</p>
</template>
</el-table-column>
<el-table-column label="重量" align="center" prop="weight" width="120">
<template slot-scope="scope">
<p v-if="scope.row.weight">{{scope.row.weight}}kg</p>
<p v-if="scope.row.weight">{{getTotlContent(scope.row,['weight'])}}</p>
</template>
</el-table-column>
<el-table-column label="预装柜" align="center" prop="" width="120">
......@@ -151,7 +149,7 @@ import {
createGoods,
remove,
} from "@/api/ecw/boxSea";
import { formatDate } from "../../utils";
import { formatDate, getTotlContent } from "../../utils";
/**
* 补单
*/
......@@ -197,7 +195,7 @@ export default {
}
return {
...item,
title: `第 ${++index} 部分`,
title: `第${++index}部分`,
};
});
......@@ -324,6 +322,7 @@ export default {
.catch((_) => {});
},
formatDate,
getTotlContent,
},
computed: {
/** 目的地 */
......
......@@ -26,7 +26,7 @@
</template>
<script>
import regError from "./regError";
import regError from "../../regError";
import dayjs from "dayjs";
import { clearanceCreate, serviceMsg } from "@/api/ecw/boxSea";
import { formatDateStr } from "../utils";
......
......@@ -30,7 +30,7 @@
</template>
<script>
import regError from "./regError";
import regError from "../../regError";
import { shippingCreate, serviceMsg } from "@/api/ecw/boxSea";
import dayjs from "dayjs";
import { formatDateStr } from "../utils";
......
......@@ -11,7 +11,7 @@
</el-select>
</el-form-item>
<el-form-item label="目的地" prop="destWarehouseIdList">
<el-select v-model="queryParams.destWarehouseIdList" placeholder="请选择目的地" multiple>
<el-select v-model="queryParams.destWarehouseIdList" placeholder="请选择目的地" multiple clearable>
<el-option v-for="item in importWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
......@@ -108,11 +108,7 @@
<el-row class="preinstall-title">
<div class="pre-part-info">
<p>{{index+1}}部分</p>
<p>
<span>{{part.secStatistics ? part.secStatistics.num : 0}}</span>
<span>{{part.secStatistics ? part.secStatistics.volume : 0}}</span>
<span>{{part.secStatistics ? part.secStatistics.weight : 0}}kg</span>
</p>
<p>{{getTotlContent(part.secStatistics)}}</p>
</div>
<div class="table-button">
<el-button type="danger" size="small" @click="deletePart(part)">删除部分</el-button>
......@@ -131,8 +127,8 @@
<el-table-column label="箱数" align="center" prop="num" />
<el-table-column label="体积/重量/重货比" align="center" width="140" prop="volumeWeight">
<template slot-scope="scope">
<p v-if="scope.row.volume">{{scope.row.volume}}</p>
<p v-if="scope.row.weight">{{scope.row.weight}}kg</p>
<p v-if="scope.row.volume">{{getTotlContent(scope.row,['volume'])}}</p>
<p v-if="scope.row.weight">{{getTotlContent(scope.row,['weight'])}}</p>
</template>
</el-table-column>
<el-table-column label="报关方式" align="center" prop="customsType" width="120">
......@@ -169,15 +165,15 @@
<div class="preinstall-title preinstalled">
<div class="red-label">
<p>筛选后待预装数量:</p>
<p>{{unloadStatistics.num}}箱</p>
<p>{{getTotlContent(unloadStatistics,['num'])}}</p>
</div>
<div class="red-label">
<p>方数:</p>
<p>{{unloadStatistics.volume}}m³</p>
<p>{{getTotlContent(unloadStatistics,['volume'])}}</p>
</div>
<div class="red-label">
<p>重量:</p>
<p>{{unloadStatistics.weight}}kg</p>
<p>{{getTotlContent(unloadStatistics,['weight'])}}</p>
</div>
</div>
</el-row>
......@@ -225,8 +221,8 @@
<el-table-column label="箱数" align="center" prop="num" />
<el-table-column label="体积/重量" align="center" prop="volumeWeight">
<template slot-scope="scope">
<p v-if="scope.row.volume">{{scope.row.volume}}</p>
<p v-if="scope.row.weight">{{scope.row.weight}}kg</p>
<p v-if="scope.row.volume">{{getTotlContent(scope.row,['volume'])}}</p>
<p v-if="scope.row.weight">{{getTotlContent(scope.row,['weight'])}}</p>
</template>
</el-table-column>
<el-table-column label="报关方式" align="center" prop="">
......@@ -284,7 +280,8 @@ import {
approvalCreate,
} from "@/api/ecw/boxSea";
import userSelect from "./common/userSelect.vue";
import { formatDate } from "../utils";
import { formatDate, getTotlContent } from "../utils";
import dayjs from "dayjs";
/**
* 预装
......@@ -354,6 +351,7 @@ export default {
},
methods: {
formatDate,
getTotlContent,
/* 获取城市 */
importCityName(id) {
var arr = this.$attrs.warehouseList.filter((item) => item.id == id);
......@@ -370,7 +368,6 @@ export default {
let params = this.getParams();
// 已预装单号
params.orderNo = params.preOrderNo;
delete params.preOrderNo;
params.shipmentId = this.shipmentObj.id;
secGoodsList(params).then((res) => {
this.preList = res.data;
......@@ -384,7 +381,6 @@ export default {
let params = this.getParams();
// 订单号
params.orderNo = params.toBePreOrderNo;
delete params.toBePreOrderNo;
preloadPage({ ...params, ...this.pageParam }).then((res) => {
const { data } = res;
this.toBePreList = data.dataList?.list ?? [];
......@@ -438,7 +434,10 @@ export default {
if (column.property === "volumeWeight") {
const volume = this.calcSum("volume", data);
const weight = this.calcSum("weight", data);
sums[index] = `${volume ?? 0}m³ ${weight ?? 0}kg`;
sums[index] = getTotlContent({ volume, weight }, [
"volume",
"weight",
]);
}
});
......@@ -540,11 +539,14 @@ export default {
},
getParams() {
const { rucangtime = [] } = this.queryParams;
delete this.queryParams.rucangtime;
return {
...this.queryParams,
rucangTimeStart: rucangtime[0],
rucangTimeEnd: rucangtime[1],
rucangTimeStart: rucangtime[0]
? dayjs(rucangtime[0]).format("YYYY-MM-DD 00:00:00")
: rucangtime[0],
rucangTimeEnd: rucangtime[1]
? dayjs(rucangtime[1]).format("YYYY-MM-DD 23:59:59")
: rucangtime[1],
};
},
},
......
......@@ -859,11 +859,24 @@ function formatDateStr(obj, keys, format = "YYYY-MM-DD") {
return obj;
}
/**
* 格式化日期
*
* @param {*} date
* @param {string} [format="YYYY-MM-DD"]
* @return {*}
*/
function formatDate(date, format = "YYYY-MM-DD") {
if (!date) return date;
return dayjs(date).format(format);
}
/**
* 获取海运流程状态
*
* @param {*} val
* @return {*}
*/
function getSeaStatus(val) {
let currNodeStatus = 11,
isBreak = false,
......@@ -896,6 +909,29 @@ function getSeaStatus(val) {
return currNodeStatus;
}
/**
* 组装统计信息文字
*
* @param {*} total
* @param {string} [keys=["num", "volume", "weight"]]
* @return {*}
*/
function getTotlContent(total, keys = ["num", "volume", "weight"]) {
let content = [];
for (const key of keys) {
if (key === "num") {
content.push(`${total?.num ?? 0}`);
}
if (key === "volume") {
content.push(`${total?.volume ?? 0}m³`);
}
if (key === "weight") {
content.push(`${total?.weight ?? 0}kg`);
}
}
return content.join(" ");
}
export const fileTypes = [
"doc",
"xls",
......@@ -917,4 +953,5 @@ export {
formatDateStr,
formatNumberString,
formatDate,
getTotlContent,
};
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