Commit 8013b41e authored by 我在何方's avatar 我在何方
parents 1739a835 63653e01
...@@ -17,3 +17,39 @@ export default { ...@@ -17,3 +17,39 @@ export default {
} }
} }
</script> </script>
<style lang="scss">
.page-title{
font-size:16px;
margin:20px 0;
display:flex;
align-items:center;
&:before{
content: '';
width:5px;
height: 15px;
background:#666;
margin-right:10px;
}
}
.ml-10{
margin-left: 10px;
}
.mr-10{
margin-right: 10px;
}
.mb-10{
margin-bottom: 10px;
}
.mt-10{
margin-top: 10px;
}
.w-100{
width: 100px;
}
.w-150{
width: 150px;
}
.w-200{
width: 200px;
}
</style>
...@@ -55,6 +55,14 @@ export function exportboxExcel(query) { ...@@ -55,6 +55,14 @@ export function exportboxExcel(query) {
// 创建费用登记 // 创建费用登记
export function createCost(data) { export function createCost(data) {
if (data.id) {
return request({
url: "/ecw/box-cost/update",
method: "put",
data,
});
}
return request({ return request({
url: '/ecw/box-cost/create', url: '/ecw/box-cost/create',
method: 'post', method: 'post',
...@@ -62,6 +70,14 @@ export function createCost(data) { ...@@ -62,6 +70,14 @@ export function createCost(data) {
}) })
} }
// 删除费用登记
export function deleteCost(id) {
return request({
url: `/ecw/box-cost/delete?id=${id}`,
method: "delete",
})
}
// 审核详情 // 审核详情
export function approvalDetail(data) { export function approvalDetail(data) {
return request({ return request({
...@@ -72,6 +88,39 @@ export function approvalDetail(data) { ...@@ -72,6 +88,39 @@ export function approvalDetail(data) {
}) })
} }
// 出货操作日志列表
export function getLogList(params) {
return request({
url: '/ecw/box-op-log/list',
method: 'get',
params
})
}
// 获得费用登记列表
export function getCostList(params) {
return request({
url: '/ecw/box-cost/list',
method: 'get',
params
})
}
// 获得出货异常记录列表
export function getAbnormalList(params) {
return request({
url: '/ecw/box-abnormal/list',
method: 'get',
params
})
}
/**
* formData数据
*
* @param {*} params
* @return {*}
*/
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)) {
......
...@@ -334,6 +334,21 @@ export function approvalCreate(data) { ...@@ -334,6 +334,21 @@ export function approvalCreate(data) {
}); });
} }
/**
* 取消审核
*
* @export
* @param {*} data
* @return {*}
*/
export function approvalCancel(data) {
return request({
url: `/ecw/box-approval/cancel`,
method: "delete",
data,
});
}
/** /**
* 异常登记 * 异常登记
* *
...@@ -355,29 +370,29 @@ export function abnormalCreate(data) { ...@@ -355,29 +370,29 @@ export function abnormalCreate(data) {
* 获得已预装部分列表 * 获得已预装部分列表
* *
* @export * @export
* @param {*} params * @param {*} data
* @return {*} * @return {*}
*/ */
export function secGoodsList(params) { export function secGoodsList(data) {
return request({ return request({
url: "/ecw/box-preload-goods/secGoodsList", url: "/ecw/box-preload-goods/secGoodsList",
method: "get", method: "post",
params, data,
}); });
} }
/** /**
* 获得订单预装分页 * 获得预装分页
* *
* @export * @export
* @param {*} params * @param {*} data
* @return {*} * @return {*}
*/ */
export function preloadPage(params) { export function preloadPage(data) {
return request({ return request({
url: "/ecw/order/preloadPage", url: "/ecw/box-preload-goods/preloadPage",
method: "get", method: "post",
params, data,
}); });
} }
...@@ -396,6 +411,37 @@ export function createSection(data) { ...@@ -396,6 +411,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),
});
}
/** /**
* 删除预装部分 * 删除预装部分
* *
...@@ -474,6 +520,21 @@ export function orderTagList(data) { ...@@ -474,6 +520,21 @@ export function orderTagList(data) {
}); });
} }
/**
* 单个装柜
*
* @export
* @param {*} data
* @return {*}
*/
export function singleCreate(data) {
return request({
url: "/ecw/box-load-info/singleCreate",
method: "post",
data,
});
}
/** /**
* 批量装柜 * 批量装柜
* *
...@@ -489,6 +550,21 @@ export function batchCreate(data) { ...@@ -489,6 +550,21 @@ export function batchCreate(data) {
}); });
} }
/**
* 单个删除已装柜标签
*
* @export
* @param {*} data
* @return {*}
*/
export function singleDelete(data) {
return request({
url: "/ecw/box-load-info/singleDelete",
method: "post",
data,
});
}
/** /**
* 批量删除已装柜标签 * 批量删除已装柜标签
* *
...@@ -664,27 +740,6 @@ export function extraCostList(params) { ...@@ -664,27 +740,6 @@ export function extraCostList(params) {
/***************************** 报关费用 end **********************************/ /***************************** 报关费用 end **********************************/
/**
* 服务提示消息回调
*
* @export
* @param {*} result
* @param {*} _vue
* @return {*}
*/
export function serviceMsg(result, _vue) {
return new Promise((resolve, reject) => {
const { code, msg } = result;
if (code === 0) {
_vue.$message.success("操作成功");
resolve();
} else {
_vue.$message.error(msg);
reject();
}
});
}
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)) {
......
...@@ -9,6 +9,15 @@ export function createDeptTarget(data) { ...@@ -9,6 +9,15 @@ export function createDeptTarget(data) {
}) })
} }
// 我的业绩
export function myAchievementByPage(data) {
return request({
url: '/sale/dept-target/myAchievementByPage',
method: 'post',
data: data
})
}
// 更新部门业绩目标设置 // 更新部门业绩目标设置
export function updateDeptTarget(data) { export function updateDeptTarget(data) {
return request({ return request({
...@@ -50,6 +59,15 @@ export function getDeptTargetPage(query) { ...@@ -50,6 +59,15 @@ export function getDeptTargetPage(query) {
}) })
} }
// 获得个人目标进度分页
export function getPersonTargetPage(query) {
return request({
url: '/sale/dept-target/personal/page',
method: 'get',
params: query
})
}
// 导出部门业绩目标设置 Excel // 导出部门业绩目标设置 Excel
export function exportDeptTargetExcel(query) { export function exportDeptTargetExcel(query) {
return request({ return request({
......
import request from '@/utils/request'
// 创建收款单
export function createReceipt(data) {
return request({
url: '/ecw/receipt/create',
method: 'post',
data: data
})
}
// 获取应收款列表
export function getReceivableList(query) {
return request({
url: '/ecw/receivable/page',
method: 'get',
params: query
})
}
// 根据获取应收款列表
// export function getReceivableListByIds(query) {
// return request({
// url: '/ecw/receivable/list',
// method: 'get',
// params: query
// })
// }
// 更新应付款
export function updatePayable(data) {
return request({
url: '/ecw/payable/update',
method: 'put',
data: data
})
}
// 删除应付款
export function deletePayable(id) {
return request({
url: '/ecw/payable/delete?id=' + id,
method: 'delete'
})
}
// 获取应付款列表
export function getPayableList(query) {
return request({
url: '/ecw/payable/page',
method: 'get',
params: query
})
}
// 获取应付款详情
export function getPayableInfoByIds(query) {
return request({
url: '/ecw/payable/get',
method: 'get',
params: query
})
}
// 创建付款单
export function createPayment(data) {
return request({
url: '/ecw/payment/create',
method: 'post',
data: data
})
}
// 获取付款单列表
export function getPaymentList(query) {
return request({
url: '/ecw/payment/page',
method: 'get',
params: query
})
}
// 获取付款单详情
export function getPaymentInfoByIds(query) {
return request({
url: '/ecw/payment/get',
method: 'get',
params: query
})
}
// 获得付款单付款明细
export function getPaymentItem(query) {
return request({
url: '/ecw/payment/getPaymentItem',
method: 'get',
params: query
})
}
// 更新付款单
export function updatePayment(data) {
return request({
url: '/ecw/payment/update',
method: 'put',
data: data
})
}
// 删除付款单
export function deletePayment(id) {
return request({
url: '/ecw/payment/delete?id=' + id,
method: 'delete'
})
}
// 审核付款单
export function paymentVerify(query) {
return request({
url: '/ecw/payment/verify',
method: 'post',
data: query
})
}
// 核销付款单
export function paymentVerification(id) {
return request({
url: '/ecw/payment/verification/' + id,
method: 'GET'
})
}
// 反核销付款单
export function paymentVerificationCancel(id) {
return request({
url: '/ecw/payment/verificationCancel/' + id,
method: 'GET'
})
}
// 反审核付款单
export function paymentVerifyCancel(id) {
return request({
url: '/ecw/payment/verifyCancel/' + id,
method: 'GET'
})
}
...@@ -249,15 +249,6 @@ export function feeApplicationGet(params){ ...@@ -249,15 +249,6 @@ export function feeApplicationGet(params){
}) })
} }
// 获得控货分页
export function getCargoControlOrderPage(params){
return request({
url:'ecw/order-cargo-control/cargo/control/order',
method:'get',
params
})
}
//获得调仓明细 //获得调仓明细
export function orderWarehouseInGetAdjustInfo(params){ export function orderWarehouseInGetAdjustInfo(params){
return request({ return request({
...@@ -288,6 +279,13 @@ export function getCargoControlOrderPage(params){ ...@@ -288,6 +279,13 @@ export function getCargoControlOrderPage(params){
params params
}) })
} }
export function getAdjustInfo(params){
return request({
url:'/order/order-warehouse-in/get-adjust-info',
method:'get',
params,
})
}
export function warehouseAdjustArrived(data){ export function warehouseAdjustArrived(data){
return request({ return request({
url:'/order/order-warehouse-in/warehouse-adjust-arrived', url:'/order/order-warehouse-in/warehouse-adjust-arrived',
...@@ -302,3 +300,12 @@ export function listByOrderId(params){ ...@@ -302,3 +300,12 @@ export function listByOrderId(params){
params, params,
}) })
} }
// 获取快递单号
export function getOrderCourierNumber(params){
return request({
url:'/ecw/order/courier/number',
method:'get',
params,
})
}
import request from '@/utils/request'
// 获得控货分页
export function getCargoControlOrderPage(params){
return request({
url:'ecw/order-cargo-control/cargo/control/order',
method:'get',
params
})
}
// 发送手机验证码
export function sendSmsCode(data){
return request({
url: '/ecw/order-cargo-control/send-sms-code',
method: 'post',
data
})
}
// 创建订单控货人信息
export function create(data){
return request({
url: '/ecw/order-cargo-control/create',
method: 'post',
data
})
}
\ No newline at end of file
...@@ -125,5 +125,13 @@ export function deptList(data) { ...@@ -125,5 +125,13 @@ export function deptList(data) {
}) })
} }
/** 修改其他服务 */
export function serviceConfig(data) {
return request({
url: '/ecw/warehouse/serviceConfig',
method: 'post',
data: data
})
}
import request from '@/utils/request'
// 创建须知
export function createNeedKnow(data) {
return request({
url: '/system/need-know/create',
method: 'post',
data: data
})
}
// 更新须知
export function updateNeedKnow(data) {
return request({
url: '/system/need-know/update',
method: 'put',
data: data
})
}
// 删除须知
export function deleteNeedKnow(id) {
return request({
url: '/system/need-know/delete?id=' + id,
method: 'delete'
})
}
// 获得须知
export function getNeedKnow(id) {
return request({
url: '/system/need-know/get?id=' + id,
method: 'get'
})
}
// 获得须知分页
export function getNeedKnowPage(query) {
return request({
url: '/system/need-know/page',
method: 'get',
params: query
})
}
// 导出须知 Excel
export function exportNeedKnowExcel(query) {
return request({
url: '/system/need-know/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
...@@ -49,7 +49,7 @@ a, ...@@ -49,7 +49,7 @@ a,
a:focus, a:focus,
a:hover { a:hover {
cursor: pointer; cursor: pointer;
color: inherit; // color: inherit;
text-decoration: none; text-decoration: none;
} }
......
<template> <template>
<el-select <div>
v-model="index" <el-select
filterable v-model="index"
clearable filterable
remote clearable
reserve-keyword remote
placeholder="请输入关键词" reserve-keyword
:remote-method="remoteMethod" placeholder="请输入关键词"
:loading="loading"> :remote-method="remoteMethod"
<el-option :loading="loading">
v-for="(item, index) in list" <el-option
:key="item.id" v-for="(item, index) in list"
:label="`${item.contactsName}`" :key="item.id"
:value="index"> :label="`${item.contactsName}`"
</el-option> :value="index">
</el-select> </el-option>
</el-select>
<el-button v-if="quickable" type="text" @click="showQuickCreate=true" class="ml-10">快速新建</el-button>
<quick-create v-if="showQuickCreate" @success="onQuickCreateSuccess" @close="showQuickCreate=false"></quick-create>
</div>
</template> </template>
<script> <script>
import {getCustomerContactsSelect, getCustomerContacts} from '@/api/ecw/customerContacts' import {getCustomerContactsSelect, getCustomerContacts} from '@/api/ecw/customerContacts'
import QuickCreate from '@/views/ecw/customer/components/quickCreate'
export default { export default {
components:{QuickCreate},
props:{ props:{
value: [String, Number] value: [String, Number],
quickable: {
type: Boolean,
default: true
}
}, },
data(){ data(){
return { return {
index: null, index: null,
list:[], list:[],
loading: false, loading: false,
size: 20 size: 20,
showQuickCreate: false
} }
}, },
watch:{ watch:{
...@@ -67,6 +79,16 @@ export default { ...@@ -67,6 +79,16 @@ export default {
getCustomerContactsSelect(params) getCustomerContactsSelect(params)
.then(res => this.list = res.data) .then(res => this.list = res.data)
.finally(() => this.loading = false) .finally(() => this.loading = false)
},
onQuickCreateSuccess(id){
this.showQuickCreate = false
getCustomerContactsSelect({ids: id}).then(res => {
if(!res.data || !res.data.length){
return this.$message.error('联系人信息获取失败')
}
this.list.unshift(res.data[0])
this.index = 0
})
} }
} }
} }
......
...@@ -3,42 +3,50 @@ ...@@ -3,42 +3,50 @@
<el-descriptions border v-if="order.orderId"> <el-descriptions border v-if="order.orderId">
<el-descriptions-item label="唛头">{{ order.marks }}</el-descriptions-item> <el-descriptions-item label="唛头">{{ order.marks }}</el-descriptions-item>
<el-descriptions-item label="已到箱数">{{ order.sumNum }}</el-descriptions-item> <el-descriptions-item label="已到箱数">{{ order.sumNum }}</el-descriptions-item>
<el-descriptions-item label="订单状态"><dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="order.status" /></el-descriptions-item> <el-descriptions-item label="订单状态"><dict-tag :type="DICT_TYPE.ORDER_STATUS" :value="order.status" :class="{red: order.status === 1, green: order.status === 5 || order.status === 2}" /></el-descriptions-item>
<el-descriptions-item label="送货时间">todo</el-descriptions-item> <el-descriptions-item label="送货时间">{{ order.consigneeVO && order.consigneeVO.deliveryDate || '' }}</el-descriptions-item>
<el-descriptions-item label="运输方式"> <el-descriptions-item label="运输方式">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.logisticsInfoDto.transportId"></dict-tag> <dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="order.logisticsInfoDto.transportId"></dict-tag>
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="始发地">{{ order.logisticsInfoDto.startWarehouseId }}</el-descriptions-item> <el-descriptions-item label="始发地">{{ order.logisticsInfoDto.startAddressZh || '' }}</el-descriptions-item>
<el-descriptions-item label="目的地">{{ order.logisticsInfoDto.destWarehouseId }}</el-descriptions-item> <el-descriptions-item label="目的地">{{ order.logisticsInfoDto.destTitleZh || '' }}</el-descriptions-item>
<el-descriptions-item label="发货人姓名">{{ order.consignorVO && order.consignorVO.name}}</el-descriptions-item> <el-descriptions-item label="发货人姓名">{{ order.consignorVO && order.consignorVO.name || ''}}</el-descriptions-item>
<el-descriptions-item label="发货人公司">{{ order.consignorVO && order.consignorVO.company || '' }}</el-descriptions-item> <el-descriptions-item label="发货人公司">{{ order.consignorVO && order.consignorVO.company || '' }}</el-descriptions-item>
<el-descriptions-item label="发货人电话">{{ order.consignorVO && order.consignorVO.phone }}</el-descriptions-item> <el-descriptions-item label="发货人电话">{{ order.consignorVO && order.consignorVO.phone || '' }}</el-descriptions-item>
<el-descriptions-item label="收货人姓名">{{ order.consigneeVO && order.consigneeVO.name}}</el-descriptions-item> <el-descriptions-item label="收货人姓名">{{ order.consigneeVO && order.consigneeVO.name || ''}}</el-descriptions-item>
<el-descriptions-item label="收货人公司">{{ order.consigneeVO && order.consigneeVO.company }}</el-descriptions-item> <el-descriptions-item label="收货人公司">{{ order.consigneeVO && order.consigneeVO.company || '' }}</el-descriptions-item>
<el-descriptions-item label="收货人电话">{{ order.consigneeVO && order.consigneeVO.phone }}</el-descriptions-item> <el-descriptions-item label="收货人电话">{{ order.consigneeVO && order.consigneeVO.phone || '' }}</el-descriptions-item>
<el-descriptions-item label="入仓类型">{{ order.warehouseType }}</el-descriptions-item> <el-descriptions-item label="入仓类型">{{ getDictDataLabel(DICT_TYPE.ECW_WAREHOUSING_TYPE, order.warehouseType) }}</el-descriptions-item>
<el-descriptions-item label="订单号">{{ order.orderNo }}</el-descriptions-item> <el-descriptions-item label="订单号">{{ order.orderNo }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
</div> </div>
</template> </template>
<script> <script>
import {DICT_TYPE} from "@/utils/dict" import {DICT_TYPE, getDictDataLabel} from "@/utils/dict"
export default { export default {
name: "orderBaseInfo", name: "orderBaseInfo",
props: { props: {
order: Object order: Object
}, },
data () { data () {
return { return {
DICT_TYPE DICT_TYPE,
getDictDataLabel
} }
} }
} }
</script> </script>
<style scoped> <style scoped lang="scss">
@import "src/assets/styles/element-variables";
.red{
color: $--color-danger;
}
.green{
color: $--color-success;
}
</style> </style>
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
placeholder="请输入商品关键词" placeholder="请输入商品关键词"
:disabled="disabled" :disabled="disabled"
:remote-method="remoteMethod" :remote-method="remoteMethod"
@focus="remoteMethod()"
:loading="loading"> :loading="loading">
<el-option <el-option
v-for="(item, index) in list" v-for="(item, index) in list"
...@@ -72,7 +73,9 @@ export default { ...@@ -72,7 +73,9 @@ export default {
} }
}, },
remoteMethod(keyword){ remoteMethod(keyword){
let params = {} let params = {
pageSize: keyword ? 100000 : 10
}
if(this.productType){ if(this.productType){
params.typeId = this.productType params.typeId = this.productType
} }
......
<template>
<el-select
v-model="index"
filterable
clearable
remote
reserve-keyword
placeholder="请选择"
:loading="loading">
<el-option
v-for="(item, index) in list"
:key="item.id"
:label="`${item.nickname}`"
:value="index">
</el-option>
</el-select>
</template>
<script>
import {getCustomerContactsSelect, getCustomerContacts} from '@/api/ecw/customerContacts'
import {listSimpleUsers} from '@/api/system/user'
export default {
props:{
value: [String, Number]
},
data(){
return {
index: null,
list:[],
loading: false,
size: 20
}
},
watch:{
index(val){
this.$emit('input', val !== null ? this.list[val].id : null)
this.$emit('change', val !== null ? this.list[val]: null)
},
value(val){
// this.init()
}
},
created(){
listSimpleUsers().then(res => {
this.list = res.data
})
// this.init()
},
methods:{
/* init(){
console.log('初始化联系人选择', this.value)
if(!this.value) return
let index = this.list.findIndex(item => item.customerContactsId == this.value)
if(index < 0){
getCustomerContactsSelect({ids: this.value}).then(res => {
if(!res.data || !res.data.length){
return this.$message.error('联系人信息获取失败')
}
this.list.unshift(res.data[0])
this.index = 0
})
}
}, */
/* remoteMethod(keyword){
let params = {
size: this.size
}
params.searchKey = keyword
this.loading = true
getCustomerContactsSelect(params)
.then(res => this.list = res.data)
.finally(() => this.loading = false)
} */
}
}
</script>
\ No newline at end of file
...@@ -106,7 +106,7 @@ export default { ...@@ -106,7 +106,7 @@ export default {
warehouse.selected = true warehouse.selected = true
// 区域被选,清空该区域下的位置 // 区域被选,清空该区域下的位置
warehouse.positionList.forEach(g => { if(warehouse.positionList) warehouse.positionList.forEach(g => {
g.children.forEach(k => { g.children.forEach(k => {
k.selected = false k.selected = false
}) })
...@@ -154,7 +154,7 @@ export default { ...@@ -154,7 +154,7 @@ export default {
e.children.forEach(f => { e.children.forEach(f => {
// 区域 // 区域
f.selected = false f.selected = false
f.positionList.forEach(g => { if(f.positionList) f.positionList.forEach(g => {
// 位置 // 位置
g.children.forEach(k => { g.children.forEach(k => {
// 子位置 // 子位置
...@@ -177,7 +177,7 @@ export default { ...@@ -177,7 +177,7 @@ export default {
e.children.forEach(f => { e.children.forEach(f => {
// 区域 // 区域
if (f.selected) result.push(f.code) if (f.selected) result.push(f.code)
f.positionList.forEach(g => { else if(f.positionList) f.positionList.forEach(g => {
// 位置 // 位置
if (g.selected) result.push(k.code) if (g.selected) result.push(k.code)
g.children.forEach(k => { g.children.forEach(k => {
...@@ -202,7 +202,7 @@ export default { ...@@ -202,7 +202,7 @@ export default {
wareId: f.pid, wareId: f.pid,
areaId: f.id areaId: f.id
}) })
else f.positionList.forEach(g => { else if(f.positionList) f.positionList.forEach(g => {
// 位置 // 位置
if (g.selected) result.push({ if (g.selected) result.push({
orderId: this.orderId, orderId: this.orderId,
......
...@@ -308,30 +308,6 @@ export const constantRoutes = [ ...@@ -308,30 +308,6 @@ export const constantRoutes = [
noCache:true, noCache:true,
} }
}, },
{
path: 'batch-single-application',
component:(resolve)=> require(['@/views/ecw/order/batchSingleApplication'],resolve),
name: 'batchSingleApplication',
props: route => ({orderList:route.query.list}),
meta: {
title: '批量调仓申请',
icon:'',
activeMenu: '/order/batchSingleApplication',
noCache:true
}
},
{
path: 'fee-application/:orderId',
component:(resolve)=> require(['@/views/ecw/order/feeApplication'],resolve),
name: 'feeApplication',
props: true,
meta: {
title: '费用申请',
icon:'',
activeMenu: '/order/feeApplication'
}
},
{ {
path: 'mutex-order/:orderId', path: 'mutex-order/:orderId',
component:()=> import('@/views/ecw/order/mutexOrder'), component:()=> import('@/views/ecw/order/mutexOrder'),
...@@ -387,13 +363,13 @@ export const constantRoutes = [ ...@@ -387,13 +363,13 @@ export const constantRoutes = [
hidden: true, hidden: true,
redirect: 'noredirect', redirect: 'noredirect',
children: [ children: [
/* { {
path: 'query/:boxId(\\d+)', path: 'query/:shipmentId(\\d+)',
component: (resolve) => import('@/views/ecw/box/query'), component: (resolve) => import('@/views/ecw/box/query'),
props: true, props: true,
name: 'boxQuery', name: 'shippingDetail',
meta: {title: '出货详情', icon: '', activeMenu: '/shipment/box'} meta: {title: '出货详情', icon: '', activeMenu: '/shipment/boxDetail'}
}, */ },
{ {
path: 'shippingSea/:shipmentId(\\d+)', path: 'shippingSea/:shipmentId(\\d+)',
component: (resolve) => import('@/views/ecw/box/shippingSea/shippingSea'), component: (resolve) => import('@/views/ecw/box/shippingSea/shippingSea'),
......
...@@ -103,6 +103,8 @@ export const DICT_TYPE = { ...@@ -103,6 +103,8 @@ export const DICT_TYPE = {
ECW_BEGINTIME_TYPE_ENDTIME: 'begintime_type_endtime', // 时间筛选字段(订单) ECW_BEGINTIME_TYPE_ENDTIME: 'begintime_type_endtime', // 时间筛选字段(订单)
ECW_CUSTOM_DRAWEE: 'custom_drawee', // 自定义付款人费用类型 ECW_CUSTOM_DRAWEE: 'custom_drawee', // 自定义付款人费用类型
ECW_IS_DRAFT: 'is_draft', // 草稿发布状态 ECW_IS_DRAFT: 'is_draft', // 草稿发布状态
ECW_PAYMENT_STATE: 'payment_state',//付款单状态
ECW_PRICE_TYPE: 'price_type',
//--------ecw--------- //--------ecw---------
CUSTOMER_STATUS: 'customer_status', CUSTOMER_STATUS: 'customer_status',
CUSTOMER_SOURCE: 'customer_source', CUSTOMER_SOURCE: 'customer_source',
...@@ -162,8 +164,10 @@ export const DICT_TYPE = { ...@@ -162,8 +164,10 @@ export const DICT_TYPE = {
ORDER_COD_EXCEPTION_RESULT:'order_cod_exception_result',//代收货款异常处理结果 ORDER_COD_EXCEPTION_RESULT:'order_cod_exception_result',//代收货款异常处理结果
ORDER_OTHER_EXCEPTION_RESULT:'order_other_exception_result',//其它异常处理结果 ORDER_OTHER_EXCEPTION_RESULT:'order_other_exception_result',//其它异常处理结果
ORDER_BULKY_CARGO_EXCEPTION_RESULT:'order_bulky_cargo_exception_result',//泡货异常处理结果 ORDER_BULKY_CARGO_EXCEPTION_RESULT:'order_bulky_cargo_exception_result',//泡货异常处理结果
PAYMENT_TYPE:'payment_type',//收款类型 NEED_KNOW_TYPE:'need_know_type',//需知类型
NEED_KNOW_STATUS:'need_know_status',//需知状态
MANUAL_EXCEPTION_TYPE:'manual_exception_type',
ECASH_INIT:'ecash_init', //e-cash ECASH_INIT:'ecash_init', //e-cash
FEE_TYPE:'receivable_fee_type', FEE_TYPE:'receivable_fee_type',
...@@ -182,6 +186,7 @@ export const DICT_TYPE = { ...@@ -182,6 +186,7 @@ export const DICT_TYPE = {
BOX_SHIPPING_PRICE_UNIT: 'shipping_price_unit', // 金额单位 BOX_SHIPPING_PRICE_UNIT: 'shipping_price_unit', // 金额单位
BOX_SHIPPING_TICKET_EXCEPTION: 'shipping_ticket_exception', // 票异常 BOX_SHIPPING_TICKET_EXCEPTION: 'shipping_ticket_exception', // 票异常
BOX_SHIPPING_PROCESS: 'shipping_process', // 海运出货流程 BOX_SHIPPING_PROCESS: 'shipping_process', // 海运出货流程
BOX_SHIPPING_BRAND_TYPE: 'shipping_brand_type', // 出货品牌类型
} }
/** /**
......
...@@ -48,20 +48,8 @@ ...@@ -48,20 +48,8 @@
</div> </div>
</el-col> </el-col>
<div v-if="this.processInstance.processDefinition && this.processInstance.processDefinition.formType === 20"> <div v-if="this.processInstance.processDefinition && this.processInstance.processDefinition.formType === 20">
<component v-if="businessKeyToComponent" :is="businessKeyToComponent.component" v-bind="businessKeyToComponent" />
<!-- <span>{{this.processInstance.processDefinition.formCustomViewPath}}</span>-->
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='special-discount'"><!--特价审核-->
<special-discount :id="this.processInstance.businessKey" readonly="true"></special-discount>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='free_apply'"><!--费用审核-->
<warehouseDetails :processId="this.processInstance.businessKey" :type="2" ></warehouseDetails>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='retired_warehouse'"><!--退仓申请-->
<warehouseDetails :processId="this.processInstance.businessKey" :type="3" ></warehouseDetails>
</div>
<div v-if="this.processInstance.processDefinition.formCustomViewPath=='warehouse_transfer'"><!--调仓申请-->
<warehouseDetails :processId="this.processInstance.businessKey" :type="1" ></warehouseDetails>
</div>
<div v-else> <div v-else>
<router-link :to="this.processInstance.processDefinition.formCustomViewPath + '?id=' <router-link :to="this.processInstance.processDefinition.formCustomViewPath + '?id='
+ this.processInstance.businessKey"> + this.processInstance.businessKey">
...@@ -147,6 +135,7 @@ import specialDiscount from "@/views/ecw/offer/specialDiscount" ...@@ -147,6 +135,7 @@ import specialDiscount from "@/views/ecw/offer/specialDiscount"
import warehouseDetails from "@/views/ecw/order/components/warehouseDetails"; import warehouseDetails from "@/views/ecw/order/components/warehouseDetails";
import shippingDetail from '@/views/ecw/box/shippingDetail' import shippingDetail from '@/views/ecw/box/shippingDetail'
// 流程实例的详情页,可用于审批 // 流程实例的详情页,可用于审批
export default { export default {
name: "ProcessInstanceDetail", name: "ProcessInstanceDetail",
...@@ -159,6 +148,98 @@ export default { ...@@ -159,6 +148,98 @@ export default {
computed:{ computed:{
matterNum(){ matterNum(){
return this.$store.state.user.matterNum return this.$store.state.user.matterNum
},
businessKeyToComponent(){
if(!this.processInstance.processDefinition || !this.processInstance.processDefinition.formCustomViewPath){
return false
}
const map = {
"special-discount": {
component: 'special-discount',
id: this.processInstance.businessKey,
readonly: true
},
free_apply: {
component: "warehouseDetails",
processId: this.processInstance.businessKey,
type: 2
},
retired_warehouse: {
component: "warehouseDetails",
processId: this.processInstance.businessKey,
type: 3
},
warehouse_transfer: {
component: "warehouseDetails",
processId: this.processInstance.businessKey,
type: 1
},
container_modify: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
},
trailer_modify: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
},
ship_modify: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
},
customs_declare_modify: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
},
arrival_modify: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
},
customs_clearance_modify: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
},
customs_exit_part: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
},
customs_exit_all: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
},
start_port_modify: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
},
book_space_modify: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
},
sorting_apply_no: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
},
sorting_apply: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
},
unload_container_no: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
},
unload_container: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
},
close_container: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
},
shipment_preassemble: {
component: "shippingDetail",
processId: this.processInstance.businessKey,
}
}
return map[this.processInstance.processDefinition.formCustomViewPath]
} }
}, },
data() { data() {
......
<template> <template>
<div class="app-costForm"> <div class="app-costForm shippingSea-dialog">
<el-form ref="costForm" :model="costObj" label-width="80px"> <el-form ref="costForm" :model="costObj" label-width="80px">
<el-form-item label="操作步骤"> <el-form-item label="操作步骤">
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-row class="two-element"> <el-row class="two-element-formItem">
<el-form-item label="金额"> <el-form-item label="金额">
<el-input-number v-model="costObj.price" controls-position="right" :min="1"></el-input-number> <el-input-number v-model="costObj.price" controls-position="right" :min="1"></el-input-number>
</el-form-item> </el-form-item>
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
<div slot="footer" class="operate-button"> <div class="operate-button">
<el-button type="primary" @click="submit">确定</el-button> <el-button type="primary" @click="submit">确定</el-button>
<el-button @click="$emit('closeDialog')">取消</el-button> <el-button @click="$emit('closeDialog')">取消</el-button>
</div> </div>
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
<script> <script>
import { getSupplierPage } from "@/api/ecw/supplier"; import { getSupplierPage } from "@/api/ecw/supplier";
import { createCost } from "@/api/ecw/box"; import { createCost } from "@/api/ecw/box";
import { serviceMsg } from "@/api/ecw/boxSea"; import { serviceMsg } from "./shippingSea/utils";
export default { export default {
name: "costForm", name: "costForm",
...@@ -65,17 +65,19 @@ export default { ...@@ -65,17 +65,19 @@ export default {
const { data } = res; const { data } = res;
this.allSupplier = data.list; this.allSupplier = data.list;
}); });
const { costDetail } = this.$attrs;
this.costObj = { ...costDetail };
}, },
methods: { methods: {
submit() { submit() {
this.$refs["costForm"].validate((valid) => { this.$refs["costForm"].validate((valid) => {
if (valid) { if (valid) {
createCost({ createCost({
shipmentId: this.$attrs.currRow.id, shipmentId: this.$attrs.shipmentObj.id,
...this.costObj, ...this.costObj,
}).then((res) => { }).then((res) => {
serviceMsg(res, this).then(() => { serviceMsg(res, this).then(() => {
this.$emit("closeDialog"); this.$emit("closeDialog", "cost");
}); });
}); });
} }
...@@ -87,7 +89,7 @@ export default { ...@@ -87,7 +89,7 @@ export default {
<style lang="scss"> <style lang="scss">
// 海运操作统一弹窗样式 // 海运操作统一弹窗样式
.app-costForm { .shippingSea-dialog {
// 页面内元素弹窗form控件宽度设置 // 页面内元素弹窗form控件宽度设置
.el-form-item__content { .el-form-item__content {
> div:not(.el-input-number) { > div:not(.el-input-number) {
...@@ -97,12 +99,20 @@ export default { ...@@ -97,12 +99,20 @@ export default {
.operate-button { .operate-button {
text-align: center; text-align: center;
} }
.two-element { .two-element-formItem {
display: flex; display: flex;
> :last-child { > :last-child {
width: 100%; width: 100%;
margin-left: 10px; margin-left: 10px;
} }
} }
.two-element {
.el-form-item__content {
display: flex;
> :last-child {
margin-left: 10px;
}
}
}
} }
</style> </style>
<template>
<div class="shippingSea-dialog">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="运输方式" prop="transportType">
<el-radio-group v-model="form.transportType">
<el-radio v-for="dict in transportTypes" :key="dict.value" :label="dict.value">{{dict.label}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="柜型" prop="cabinetId">
<el-select v-model="form.cabinetId" placeholder="请选择柜型">
<el-option v-for="item in cabinetList" :label="item.name" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="始发地" prop="startWarehouseId">
<el-select v-model="form.startWarehouseId" placeholder="请选择始发地">
<el-option v-for="item in exportWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="目的地" prop="destWarehouseId">
<el-select v-model="form.destWarehouseId" placeholder="请选择目的地">
<el-option v-for="item in importWarehouseList" :label="item.titleZh" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<div class="operate-button">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-form>
</div>
</template>
<script>
import { createbox, updatebox } from "@/api/ecw/box";
export default {
name: "editForm",
inheritAttrs: false,
props: {
transportTypes: Array,
warehouseList: Array,
cabinetList: Array,
shipmentObj: Object,
},
created() {
this.form = { ...this.shipmentObj };
},
data() {
return {
// 表单参数
form: {},
// 表单校验
rules: {
transportType: [
{ required: true, message: "运输方式不能为空", trigger: "blur" },
],
cabinetId: [
{ required: true, message: "柜型不能为空", trigger: "blur" },
],
startWarehouseId: [
{ required: true, message: "始发地不能为空", trigger: "blur" },
],
destWarehouseId: [
{ required: true, message: "目的地不能为空", trigger: "blur" },
],
},
};
},
methods: {
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate((valid) => {
if (!valid) {
return;
}
// 修改的提交
if (this.form.id != null) {
updatebox(this.form).then((response) => {
this.$modal.msgSuccess("修改成功");
this.$emit("closeDialog", "edit");
});
return;
}
// 添加的提交
createbox(this.form).then((response) => {
this.$modal.msgSuccess("新增成功");
this.$emit("closeDialog", "add");
});
});
},
/** 取消按钮 */
cancel() {
this.$emit("closeDialog");
},
},
computed: {
exportWarehouseList() {
return this.warehouseList.filter(
(item) => item.tradeType == "2" || item.type == "3"
);
},
importWarehouseList() {
return this.warehouseList.filter(
(item) => item.tradeType == "1" || item.type == "3"
);
},
},
};
</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>
This diff is collapsed.
This diff is collapsed.
<template> <template>
<div> <div class="shippingSea-dialog">
<el-form ref="errorForm" :model="errorObj" label-width="140px"> <el-form ref="errorForm" :model="errorObj" label-width="140px">
<el-form-item label="操作步骤"> <el-form-item label="操作步骤">
<el-select v-model="errorObj.opStep" placeholder="请选择操作步骤"> <el-select v-model="errorObj.opStep" placeholder="请选择操作步骤">
...@@ -18,6 +18,7 @@ ...@@ -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.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-date-picker type="date" placeholder="请选择日期" v-model="errorObj.abnEndTime" value-format="yyyy-MM-dd"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="是否更新订单状态"> <el-form-item label="是否更新订单状态">
<el-radio-group v-model="errorObj.orderStatus"> <el-radio-group v-model="errorObj.orderStatus">
<el-radio v-for="item in status" :key="item.value" :label="item.value">{{item.label}}</el-radio> <el-radio v-for="item in status" :key="item.value" :label="item.value">{{item.label}}</el-radio>
...@@ -39,7 +40,8 @@ ...@@ -39,7 +40,8 @@
</template> </template>
<script> <script>
import { abnormalCreate, serviceMsg } from "@/api/ecw/boxSea"; import { abnormalCreate } from "@/api/ecw/boxSea";
import { serviceMsg } from "./shippingSea/utils";
/** /**
* 异常登记 * 异常登记
*/ */
...@@ -65,7 +67,7 @@ export default { ...@@ -65,7 +67,7 @@ export default {
}, },
created() { created() {
const { currNode } = this.$attrs; const { currNode } = this.$attrs;
this.errorObj = { opStep: currNode.dataKey }; this.errorObj = { opStep: currNode?.dataKey ?? undefined };
}, },
methods: { methods: {
/** 提交 */ /** 提交 */
...@@ -77,7 +79,7 @@ export default { ...@@ -77,7 +79,7 @@ export default {
shipmentId: this.$attrs.shipmentObj.id, shipmentId: this.$attrs.shipmentObj.id,
}).then((res) => { }).then((res) => {
serviceMsg(res, this).then(() => { serviceMsg(res, this).then(() => {
this.$emit("closeDialog"); this.$emit("closeDialog", "error");
}); });
}); });
} }
...@@ -87,5 +89,32 @@ export default { ...@@ -87,5 +89,32 @@ export default {
}; };
</script> </script>
<style lang="scss" scoped> <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> </style>
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
<el-row style="marginTop:15px"> <el-row style="marginTop:15px">
<el-table :data="loadDetail.sectionOrderList" border> <el-table :data="loadDetail.sectionOrderList" border>
<el-table-column prop="" label="部分" align="center"></el-table-column> <el-table-column prop="sectionName" label="部分" align="center"></el-table-column>
<el-table-column prop="orderNo" label="订单号" align="center"> <el-table-column prop="orderNo" label="订单号" align="center">
<template v-slot="{row}"> <template v-slot="{row}">
<el-button type="text" @click="jumpOrderDetail(row)">{{row.orderNo}}</el-button> <el-button type="text" @click="jumpOrderDetail(row)">{{row.orderNo}}</el-button>
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
<section class="table-goodList"> <section class="table-goodList">
<div>合计:{{calcSum(row.goodsList)}}</div> <div>合计:{{calcSum(row.goodsList)}}</div>
<div v-for="(item, index) in row.goodsList" :key="index" class="goodList-div"> <div v-for="(item, index) in row.goodsList" :key="index" class="goodList-div">
{{item.volume}}{{item.weight}}kg {{getTotlContent(item,['volume','weight'])}}
</div> </div>
</section> </section>
</template> </template>
...@@ -90,7 +90,11 @@ ...@@ -90,7 +90,11 @@
<script> <script>
import { approvalDetail } from "@/api/ecw/box"; 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 { getCabinetPage } from "@/api/ecw/cabinet";
import { getChannelList } from "@/api/ecw/channel"; import { getChannelList } from "@/api/ecw/channel";
...@@ -123,6 +127,7 @@ export default { ...@@ -123,6 +127,7 @@ export default {
getChannelList().then((res) => (this.channelList = res.data)); getChannelList().then((res) => (this.channelList = res.data));
}, },
methods: { methods: {
getTotlContent,
/* 获取详情 */ /* 获取详情 */
getApprovalDetail(processId) { getApprovalDetail(processId) {
approvalDetail({ approvalId: processId }).then((res) => { approvalDetail({ approvalId: processId }).then((res) => {
...@@ -144,7 +149,11 @@ export default { ...@@ -144,7 +149,11 @@ export default {
}, },
/* 打开订单列表 */ /* 打开订单列表 */
showOrder() { showOrder() {
this.$set(this.dialogConfig, "title", `${this.boxBackVO.selfNo} 订单列表`); this.$set(
this.dialogConfig,
"title",
`${this.boxBackVO.selfNo} 订单列表`
);
this.$set(this.dialogConfig, "visible", true); this.$set(this.dialogConfig, "visible", true);
}, },
/* 合计 */ /* 合计 */
...@@ -177,7 +186,6 @@ export default { ...@@ -177,7 +186,6 @@ export default {
if (channelItem.channelId == shippingChannelId) { if (channelItem.channelId == shippingChannelId) {
return channelItem.nameZh; return channelItem.nameZh;
} }
return "/";
} }
}; };
}, },
...@@ -190,15 +198,13 @@ export default { ...@@ -190,15 +198,13 @@ export default {
/* 体积重量 */ /* 体积重量 */
getVolumeWeight() { getVolumeWeight() {
return (total) => { return (total) => {
return `${total?.num ?? 0} ${total?.volume ?? 0}m³ ${ return this.getTotlContent(total);
total?.weight ?? 0
}kg`;
}; };
}, },
/* 是否显示卸柜箱数 */ /* 是否显示卸柜箱数 */
isShowColumn() { isShowColumn() {
return (shippingVO) => { return (shippingVO) => {
return getSeaStatus(shippingVO) >= 142 ? true : false; return getSeaStatus(shippingVO) >= 182 ? true : false;
}; };
}, },
}, },
......
...@@ -13,9 +13,9 @@ ...@@ -13,9 +13,9 @@
</template> </template>
<script> <script>
import { agentSet, serviceMsg } from "@/api/ecw/boxSea"; import { agentSet } from "@/api/ecw/boxSea";
import supplierSelect from "./common/supplierSelect.vue"; import supplierSelect from "./common/supplierSelect.vue";
import { formatStringNumber } from "../utils"; import { formatStringNumber, serviceMsg } from "../utils";
/** /**
* agent * agent
*/ */
......
...@@ -30,10 +30,10 @@ ...@@ -30,10 +30,10 @@
</template> </template>
<script> <script>
import regError from "./regError"; import regError from "../../regError";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { arrivalCreate, serviceMsg } from "@/api/ecw/boxSea"; import { arrivalCreate } from "@/api/ecw/boxSea";
import { formatDateStr } from "../utils"; import { formatDateStr, serviceMsg } from "../utils";
/** /**
* 到港 * 到港
......
...@@ -35,9 +35,9 @@ ...@@ -35,9 +35,9 @@
</template> </template>
<script> <script>
import { bargeCreate, serviceMsg } from "@/api/ecw/boxSea"; import { bargeCreate } from "@/api/ecw/boxSea";
import userSelect from "./common/userSelect.vue"; import userSelect from "./common/userSelect.vue";
import { constantDict, formatDateStr, formatNumberString } from "../utils"; import { constantDict, formatDateStr, formatNumberString, serviceMsg } from "../utils";
/** /**
* 驳船 * 驳船
......
...@@ -14,9 +14,9 @@ ...@@ -14,9 +14,9 @@
</template> </template>
<script> <script>
import { ladingCopyCreate, serviceMsg } from "@/api/ecw/boxSea"; import { ladingCopyCreate } from "@/api/ecw/boxSea";
import FileUpload from "@/components/FileUpload"; import FileUpload from "@/components/FileUpload";
import { fileTypes } from "../utils"; import { fileTypes, serviceMsg } from "../utils";
/** /**
* 提单copy * 提单copy
......
...@@ -85,11 +85,11 @@ ...@@ -85,11 +85,11 @@
</template> </template>
<script> <script>
import { booking, serviceMsg } from "@/api/ecw/boxSea"; import { booking } from "@/api/ecw/boxSea";
import supplierSelect from "./common/supplierSelect.vue"; import supplierSelect from "./common/supplierSelect.vue";
import dockSelect from "./common/dockSelect.vue"; import dockSelect from "./common/dockSelect.vue";
import userSelect from "./common/userSelect.vue"; import userSelect from "./common/userSelect.vue";
import { formatStringNumber, formatDateStr } from "../utils"; import { formatStringNumber, formatDateStr, serviceMsg } from "../utils";
/** /**
* 订舱 * 订舱
*/ */
......
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
<script> <script>
import startPacking from "./startPacking.vue"; import startPacking from "./startPacking.vue";
import { cabinetCreate, serviceMsg } from "@/api/ecw/boxSea"; import { cabinetCreate } from "@/api/ecw/boxSea";
import { formatDateStr } from "../../utils"; import { formatDateStr, serviceMsg } from "../../utils";
import ImageUpload from "@/components/ImageUpload"; import ImageUpload from "@/components/ImageUpload";
/** /**
......
...@@ -11,9 +11,7 @@ ...@@ -11,9 +11,7 @@
</div> </div>
<div> <div>
<template v-if="item.secStatistics"> <template v-if="item.secStatistics">
<p>{{item.secStatistics.num}}</p> {{getTotlContent(item.secStatistics)}}
<p>{{item.secStatistics.volume}}</p>
<p>{{item.secStatistics.weight}}Kg</p>
</template> </template>
</div> </div>
</el-row> </el-row>
...@@ -54,29 +52,29 @@ ...@@ -54,29 +52,29 @@
<dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="item.productRecord" /> <dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="item.productRecord" />
</p> </p>
<p>其他:<span>{{item.num}}</span><span>{{item.volume}}</span><span>{{item.weight}}Kg</span></p> <p>其他:{{getTotlContent(item)}}</p>
</div> </div>
</section> </section>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="计划箱数" align="center" prop="num"> <el-table-column label="计划箱数" align="center" prop="num">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.num }} {{getTotlContent(scope.row,['num'])}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="实装箱数" align="center" prop="installNum"> <el-table-column label="实装箱数" 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="体积" align="center" prop="volume"> <el-table-column label="体积" align="center" prop="volume">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.volume }} {{getTotlContent(scope.row,['volume'])}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="重量" align="center" prop="weight"> <el-table-column label="重量" align="center" prop="weight">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.weight }} Kg {{getTotlContent(scope.row,['weight'])}}
</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">
...@@ -97,14 +95,15 @@ ...@@ -97,14 +95,15 @@
<el-col :span="6" class="totle-info"> <el-col :span="6" class="totle-info">
<div class="count-info"> <div class="count-info">
<p>总计: <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> </p>
</div> </div>
<div> <div>
<p>容量:</p> <p>容量:</p>
<p>111</p> <p>无返回</p>
</div> </div>
<div>已装0</div> <div>已装 无返回 </div>
</el-col> </el-col>
</el-row> </el-row>
...@@ -197,13 +196,15 @@ import { getCabinetPage } from "@/api/ecw/cabinet"; ...@@ -197,13 +196,15 @@ import { getCabinetPage } from "@/api/ecw/cabinet";
import { import {
loadSecGoodsList, loadSecGoodsList,
orderTagList, orderTagList,
singleCreate,
batchCreate, batchCreate,
singleDelete,
batchDelete, batchDelete,
remove, remove,
serviceMsg,
boxUpdate, boxUpdate,
approvalCreate, approvalCreate,
} from "@/api/ecw/boxSea"; } from "@/api/ecw/boxSea";
import { getTotlContent, serviceMsg } from "../../utils";
/** /**
* 开始装柜 * 开始装柜
...@@ -268,6 +269,7 @@ export default { ...@@ -268,6 +269,7 @@ export default {
}); });
}, },
methods: { methods: {
getTotlContent,
/* 装柜部分列表 */ /* 装柜部分列表 */
getLoadSecGoodsList() { getLoadSecGoodsList() {
loadSecGoodsList({ shipmentId: this.shipmentObj.id }).then((res) => { loadSecGoodsList({ shipmentId: this.shipmentObj.id }).then((res) => {
...@@ -275,7 +277,7 @@ export default { ...@@ -275,7 +277,7 @@ export default {
this.listData = data.map((item, index) => { this.listData = data.map((item, index) => {
return { return {
...item, ...item,
title: `第 ${++index} 部分`, title: `第${++index}部分`,
}; };
}); });
if (this.listData.length) { if (this.listData.length) {
...@@ -353,12 +355,18 @@ export default { ...@@ -353,12 +355,18 @@ export default {
this.handlerBatchCreate("batch"); this.handlerBatchCreate("batch");
} }
if (formName === "correctionForm") { if (formName === "correctionForm") {
this.handlerBatchDelete({ this.handlerBatchDelete(
orderNumCode: this.correctionObj.qrCode, {
}); orderNumCode: this.correctionObj.qrCode,
},
"single"
);
} }
if (formName === "orderForm") { if (formName === "orderForm") {
this.handlerBatchDelete({ orderNo: this.orderObj.orderNo }); this.handlerBatchDelete(
{ orderNo: this.orderObj.orderNo },
"batch"
);
} }
if (formName === "modifyForm") { if (formName === "modifyForm") {
this.modifyBoxUpdate(); this.modifyBoxUpdate();
...@@ -382,28 +390,41 @@ export default { ...@@ -382,28 +390,41 @@ export default {
return; return;
} }
params.orderNumCode = this.qrCode; params.orderNumCode = this.qrCode;
singleCreate(params).then((res) => {
serviceMsg(res, this).then(() => {
this.getLoadSecGoodsList();
});
});
} else { } else {
params.orderNo = this.batchObj.qrCode; params.orderNo = this.batchObj.qrCode;
} batchCreate(params).then((res) => {
serviceMsg(res, this).then(() => {
batchCreate(params).then((res) => { this.getLoadSecGoodsList();
serviceMsg(res, this).then(() => { });
this.getLoadSecGoodsList();
}); });
}); }
}, },
/* 删除已装柜 */ /* 删除已装柜 */
handlerBatchDelete(params) { handlerBatchDelete(params, type) {
params = { params = {
shipmentId: this.shipmentObj.id, shipmentId: this.shipmentObj.id,
secId: this.tableData.id, secId: this.tableData.id,
...params, ...params,
}; };
batchDelete(params).then((res) => {
serviceMsg(res, this).then(() => { if (type === "single") {
this.getLoadSecGoodsList(); singleDelete(params).then((res) => {
serviceMsg(res, this).then(() => {
this.getLoadSecGoodsList();
});
}); });
}); } else {
batchDelete(params).then((res) => {
serviceMsg(res, this).then(() => {
this.getLoadSecGoodsList();
});
});
}
}, },
/* 移出 */ /* 移出 */
moveOut(row) { moveOut(row) {
......
...@@ -28,9 +28,7 @@ ...@@ -28,9 +28,7 @@
</el-collapse-transition> </el-collapse-transition>
<div class="part-secGoog"> <div class="part-secGoog">
<template> <template>
<p>{{item.secStatistics ? item.secStatistics.num : 0}}</p> {{getTotlContent(item.secStatistics)}}
<p>{{item.secStatistics ? item.secStatistics.volume : 0}}</p>
<p>{{item.secStatistics ? item.secStatistics.weight : 0}}Kg</p>
</template> </template>
</div> </div>
</el-row> </el-row>
...@@ -43,7 +41,7 @@ ...@@ -43,7 +41,7 @@
<el-row class="right-title"> <el-row class="right-title">
<div>货物筛选</div> <div>货物筛选</div>
<div>当前装柜:{{partData.title}}</div> <div>当前装柜:{{partData.title}}</div>
<div>可预装方数:无返回m³,重量:无返回Kg</div> <div>可预装方数:{{unloadStatistics.volume}}m³,重量:{{unloadStatistics.weight}}Kg</div>
</el-row> </el-row>
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
...@@ -76,7 +74,7 @@ ...@@ -76,7 +74,7 @@
<div> <div>
<dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="item.customsType" /> <dict-tag :type="DICT_TYPE.ECW_CUSTOMS_TYPE" :value="item.customsType" />
</div> </div>
<div>入仓时间:{{item.rucangtime}}</div> <div>入仓时间:{{formatDate(item.rucangTime)}}</div>
<div> <div>
<el-button type="text" @click="handleGoods('all', item)">[全部预装]</el-button> <el-button type="text" @click="handleGoods('all', item)">[全部预装]</el-button>
<el-button type="text" @click="foldTable(index, item)">[{{item.fold ? '展开' : '收起'}}]</el-button> <el-button type="text" @click="foldTable(index, item)">[{{item.fold ? '展开' : '收起'}}]</el-button>
...@@ -84,26 +82,28 @@ ...@@ -84,26 +82,28 @@
</el-row> </el-row>
<el-collapse-transition> <el-collapse-transition>
<div v-show="!item.fold"> <div v-show="!item.fold">
<el-table v-loading="loading" :data="item.orderItemList" border> <el-table v-loading="loading" :data="item.boxOrderItemList" border>
<el-table-column label="序号" type="index" align="center" width="50" /> <el-table-column label="序号" type="index" align="center" width="50" />
<el-table-column label="品名" align="center" prop="prodTitleZh" min-width="500" /> <el-table-column label="品名" align="center" prop="prodTitleZh" min-width="500" />
<el-table-column label="品牌" align="center" prop="brandType" width="120"> <el-table-column label="品牌" align="center" prop="brandType" width="120">
<template slot-scope="scope"> <template slot-scope="scope">
<dict-tag :type="DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE" :value="scope.row.brandType" /> <dict-tag :type="DICT_TYPE.BOX_SHIPPING_BRAND_TYPE" :value="scope.row.brandType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="箱数" align="center" prop="num" width="120" /> <el-table-column label="箱数" align="center" prop="num" width="120" />
<el-table-column label="体积" align="center" prop="volume" width="120"> <el-table-column label="体积" align="center" prop="volume" width="120">
<template slot-scope="scope"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="重量" align="center" prop="weight" width="120"> <el-table-column label="重量" align="center" prop="weight" width="120">
<template slot-scope="scope"> <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> </template>
</el-table-column> </el-table-column>
<el-table-column label="预装柜" align="center" prop="weight" width="120" /> <el-table-column label="预装柜" align="center" prop="" width="120">
无返回
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="handleGoods('singele',scope.row)">预装</el-button> <el-button type="text" size="small" @click="handleGoods('singele',scope.row)">预装</el-button>
...@@ -125,11 +125,11 @@ ...@@ -125,11 +125,11 @@
<el-col :span="6" class="totle-info"> <el-col :span="6" class="totle-info">
<div> <div>
<p>总计:</p> <p>总计:</p>
<p>111</p> <p>无返回</p>
</div> </div>
<div> <div>
<p>容量:</p> <p>容量:</p>
<p>111</p> <p>无返回</p>
</div> </div>
</el-col> </el-col>
</el-row> </el-row>
...@@ -145,10 +145,10 @@ import { ...@@ -145,10 +145,10 @@ import {
preloadPage, preloadPage,
createSection, createSection,
deleteSection, deleteSection,
serviceMsg,
createGoods, createGoods,
remove, remove,
} from "@/api/ecw/boxSea"; } from "@/api/ecw/boxSea";
import { formatDate, getTotlContent, serviceMsg } from "../../utils";
/** /**
* 补单 * 补单
*/ */
...@@ -174,6 +174,7 @@ export default { ...@@ -174,6 +174,7 @@ export default {
toBePreList: [], toBePreList: [],
total: 0, total: 0,
loading: false, loading: false,
unloadStatistics: {},
}; };
}, },
created() { created() {
...@@ -193,7 +194,7 @@ export default { ...@@ -193,7 +194,7 @@ export default {
} }
return { return {
...item, ...item,
title: `第 ${++index} 部分`, title: `第${++index}部分`,
}; };
}); });
...@@ -211,8 +212,10 @@ export default { ...@@ -211,8 +212,10 @@ export default {
...this.queryParams, ...this.queryParams,
}; };
preloadPage({ ...params, ...this.pageParam }).then((res) => { preloadPage({ ...params, ...this.pageParam }).then((res) => {
this.toBePreList = res.data.list; const { data } = res;
this.total = res.data.total; this.toBePreList = data.dataList?.list ?? [];
this.total = data.dataList?.total ?? 0;
this.unloadStatistics = data.unloadStatistics ?? {};
this.loading = false; this.loading = false;
}); });
}, },
...@@ -317,6 +320,8 @@ export default { ...@@ -317,6 +320,8 @@ export default {
}) })
.catch((_) => {}); .catch((_) => {});
}, },
formatDate,
getTotlContent,
}, },
computed: { computed: {
/** 目的地 */ /** 目的地 */
......
...@@ -65,12 +65,13 @@ ...@@ -65,12 +65,13 @@
</template> </template>
<script> <script>
import { clearanceDocCreate, serviceMsg } from "@/api/ecw/boxSea"; import { clearanceDocCreate } from "@/api/ecw/boxSea";
import { import {
constantDict, constantDict,
formatDateStr, formatDateStr,
formatNumberString, formatNumberString,
fileTypes, fileTypes,
serviceMsg,
} from "../utils"; } from "../utils";
import FileUpload from "@/components/FileUpload"; import FileUpload from "@/components/FileUpload";
......
<template> <template>
<el-select filterable :value="value" @change="change" v-bind="$attrs"> <el-select filterable :value="value" @change="change" v-bind="$attrs" clearable>
<el-option v-for="dock in getDock" :key="dock.id" :label="dock.titleZh" :value="dock.id"></el-option> <el-option v-for="dock in getDock" :key="dock.id" :label="dock.titleZh" :value="dock.id"></el-option>
</el-select> </el-select>
</template> </template>
......
<template> <template>
<el-select filterable :value="value" @change="change" v-bind="$attrs"> <el-select filterable :value="value" @change="change" v-bind="$attrs" clearable>
<el-option v-for="supplier in getSuppliers" :key="supplier.id" :label="supplier.companyZh" :value="supplier.id"></el-option> <el-option v-for="supplier in getSuppliers" :key="supplier.id" :label="supplier.companyZh" :value="supplier.id"></el-option>
</el-select> </el-select>
</template> </template>
......
<template> <template>
<el-select filterable :value="value" @change="change" v-bind="$attrs"> <el-select filterable :value="value" @change="change" v-bind="$attrs" clearable>
<el-option v-for="user in getUser" :key="user.id" :value="user.id" :label="user.nickname"></el-option> <el-option v-for="user in getUser" :key="user.id" :value="user.id" :label="user.nickname"></el-option>
</el-select> </el-select>
</template> </template>
...@@ -12,7 +12,7 @@ export default { ...@@ -12,7 +12,7 @@ export default {
name: "userSelect", name: "userSelect",
inheritAttrs: false, inheritAttrs: false,
props: { props: {
value: Number, value: Number | Array,
allUsers: Array, allUsers: Array,
}, },
model: { model: {
......
...@@ -26,10 +26,10 @@ ...@@ -26,10 +26,10 @@
</template> </template>
<script> <script>
import regError from "./regError"; import regError from "../../regError";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { clearanceCreate, serviceMsg } from "@/api/ecw/boxSea"; import { clearanceCreate } from "@/api/ecw/boxSea";
import { formatDateStr } from "../utils"; import { formatDateStr, serviceMsg } from "../utils";
/** /**
* 清关 * 清关
......
<template> <template>
<div> <div>
<el-form ref="cusDeclarationForm" :rules="rules" :model="cusDeclarationObj" label-width="120px"> <el-form ref="cusDeclarationForm" :rules="rules" :model="cusDeclarationObj" label-width="120px">
<el-form-item label="单证要求">我司全代 <el-button type="primary" style="margin-left:10px;" @click="downloadVGM">VGM声明</el-button> <el-form-item label="单证要求">无返回 <el-button type="primary" style="margin-left:10px;" @click="downloadVGM">VGM声明</el-button>
</el-form-item> </el-form-item>
<el-form-item label="柜重" prop="dcBoxWgt"> <el-form-item label="柜重" prop="dcBoxWgt">
<el-input v-model="cusDeclarationObj.dcBoxWgt" placeholder="请输入柜重" clearable /> <el-input v-model="cusDeclarationObj.dcBoxWgt" placeholder="请输入柜重" clearable />
...@@ -131,14 +131,13 @@ ...@@ -131,14 +131,13 @@
import supplierSelect from "./common/supplierSelect.vue"; import supplierSelect from "./common/supplierSelect.vue";
import { import {
customsCreate, customsCreate,
serviceMsg,
extraCostList, extraCostList,
extraCostOrder, extraCostOrder,
extraCostCreate, extraCostCreate,
extraCostUpdate, extraCostUpdate,
approvalCreate, approvalCreate,
} from "@/api/ecw/boxSea"; } from "@/api/ecw/boxSea";
import { formatNumberString, formatDateStr } from "../utils"; import { formatNumberString, formatDateStr, serviceMsg } from "../utils";
import ImageUpload from "@/components/ImageUpload"; import ImageUpload from "@/components/ImageUpload";
/** /**
......
...@@ -30,10 +30,10 @@ ...@@ -30,10 +30,10 @@
</template> </template>
<script> <script>
import regError from "./regError"; import regError from "../../regError";
import { shippingCreate, serviceMsg } from "@/api/ecw/boxSea"; import { shippingCreate } from "@/api/ecw/boxSea";
import dayjs from "dayjs"; import dayjs from "dayjs";
import { formatDateStr } from "../utils"; import { formatDateStr, serviceMsg } from "../utils";
/** /**
* 起运 * 起运
......
...@@ -13,7 +13,8 @@ ...@@ -13,7 +13,8 @@
</template> </template>
<script> <script>
import { approvalCreate, serviceMsg } from "@/api/ecw/boxSea"; import { approvalCreate } from "@/api/ecw/boxSea";
import { serviceMsg } from "../utils";
/** /**
* 反审 * 反审
......
...@@ -18,8 +18,8 @@ ...@@ -18,8 +18,8 @@
</template> </template>
<script> <script>
import { settlementCreate, serviceMsg } from "@/api/ecw/boxSea"; import { settlementCreate } from "@/api/ecw/boxSea";
import { formatDateStr } from "../utils"; import { formatDateStr, serviceMsg } from "../utils";
/** /**
* 结算 * 结算
*/ */
......
...@@ -20,8 +20,13 @@ ...@@ -20,8 +20,13 @@
</template> </template>
<script> <script>
import { shipConfigure, serviceMsg } from "@/api/ecw/boxSea"; import { shipConfigure } from "@/api/ecw/boxSea";
import { formatNumberString, formatDateStr, constantDict } from "../utils"; import {
formatNumberString,
formatDateStr,
constantDict,
serviceMsg,
} from "../utils";
/** /**
* 配船 * 配船
*/ */
......
...@@ -77,8 +77,8 @@ import dockSelect from "./common/dockSelect.vue"; ...@@ -77,8 +77,8 @@ import dockSelect from "./common/dockSelect.vue";
import userSelect from "./common/userSelect.vue"; import userSelect from "./common/userSelect.vue";
import { getUnitList } from "@/api/ecw/unit"; import { getUnitList } from "@/api/ecw/unit";
import { getCabinetPage } from "@/api/ecw/cabinet"; import { getCabinetPage } from "@/api/ecw/cabinet";
import { billCreate, serviceMsg } from "@/api/ecw/boxSea"; import { billCreate } from "@/api/ecw/boxSea";
import { formatNumberString, constantDict } from "../utils"; import { formatNumberString, constantDict, serviceMsg } from "../utils";
/** /**
* 提单补料 * 提单补料
......
...@@ -37,12 +37,13 @@ ...@@ -37,12 +37,13 @@
</template> </template>
<script> <script>
import { trailer, serviceMsg } from "@/api/ecw/boxSea"; import { trailer } from "@/api/ecw/boxSea";
import supplierSelect from "./common/supplierSelect.vue"; import supplierSelect from "./common/supplierSelect.vue";
import { import {
formatStringNumber, formatStringNumber,
formatDateStr, formatDateStr,
formatNumberString, formatNumberString,
serviceMsg,
} from "../utils"; } from "../utils";
/** /**
* 拖车 * 拖车
......
...@@ -28,8 +28,8 @@ ...@@ -28,8 +28,8 @@
<script> <script>
import startUnloading from "./startUnloading.vue"; import startUnloading from "./startUnloading.vue";
import { unloadCreate, serviceMsg } from "@/api/ecw/boxSea"; import { unloadCreate } from "@/api/ecw/boxSea";
import { formatDateStr } from "../../utils"; import { formatDateStr, serviceMsg } from "../../utils";
import dockSelect from "../common/dockSelect.vue"; import dockSelect from "../common/dockSelect.vue";
/** /**
...@@ -61,7 +61,7 @@ export default { ...@@ -61,7 +61,7 @@ export default {
if (operateType === 2) { if (operateType === 2) {
const { keyName } = this.$attrs.currNode; const { keyName } = this.$attrs.currNode;
const ulStatus = this.$attrs.shipmentObj[keyName]; const ulStatus = this.$attrs.shipmentObj[keyName];
if (ulStatus !== 145) { if (ulStatus !== 185) {
this.$message.error("请先通过卸柜审批"); this.$message.error("请先通过卸柜审批");
return; return;
} }
...@@ -95,7 +95,7 @@ export default { ...@@ -95,7 +95,7 @@ export default {
isStartUnloading() { isStartUnloading() {
const { currNode, shipmentObj } = this.$attrs; const { currNode, shipmentObj } = this.$attrs;
const status = shipmentObj[currNode.keyName]; const status = shipmentObj[currNode.keyName];
return status === 146 ? true : false; return status === 186 ? true : false;
}, },
}, },
}; };
......
...@@ -15,12 +15,12 @@ ...@@ -15,12 +15,12 @@
<!-- 当前部分 --> <!-- 当前部分 -->
<el-row class="number-area"> <el-row class="number-area">
<p class="label-font">当前部分:</p> <p class="label-font">当前部分:</p>
<el-select v-model="currPart" placeholder="请选择当前部分"> <el-select placeholder="请选择" v-model="sectionId" @change="sectionChange">
<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>
<span>13箱</span> {{getSectionInfo}}
<span>10.83m3</span>
<span>210kg</span>
</p> </p>
</el-row> </el-row>
...@@ -62,15 +62,16 @@ ...@@ -62,15 +62,16 @@
<div class="label-font"> <div class="label-font">
<p> <p>
<span>总计:</span> <span>总计:</span>
<span>{{pageData.totalStatistics ? pageData.totalStatistics.num : 0}}箱</span> <span>无返回</span>
<!-- <span>{{pageData.totalStatistics ? pageData.totalStatistics.num : 0}}箱</span>
<span>{{pageData.totalStatistics ? pageData.totalStatistics.volume : 0}}m3</span> <span>{{pageData.totalStatistics ? pageData.totalStatistics.volume : 0}}m3</span>
<span>{{pageData.totalStatistics ? pageData.totalStatistics.weight : 0}}kg</span> <span>{{pageData.totalStatistics ? pageData.totalStatistics.weight : 0}}kg</span> -->
</p> </p>
</div> </div>
<div class="label-font"> <div class="label-font">
<p> <p>
<span>已卸:</span> <span>已卸:</span>
<span>0</span> <span>无返回</span>
</p> </p>
</div> </div>
</el-row> </el-row>
...@@ -93,8 +94,10 @@ import { ...@@ -93,8 +94,10 @@ import {
batchUnload, batchUnload,
allUnload, allUnload,
approvalCreate, approvalCreate,
serviceMsg, getSectionList,
} from "@/api/ecw/boxSea"; } from "@/api/ecw/boxSea";
import { serviceMsg, getTotlContent } from "../../utils";
/** /**
* 开始卸柜 * 开始卸柜
*/ */
...@@ -118,18 +121,36 @@ export default { ...@@ -118,18 +121,36 @@ export default {
selfNo: this.$attrs.shipmentObj.selfNo, selfNo: this.$attrs.shipmentObj.selfNo,
// 当前行 // 当前行
currRow: {}, currRow: {},
// 部分
sectionList: [],
// 已选部分
sectionId: "0",
// 部分订单商品
sectionObj: {
secStatistics: {},
sectionOrderList: [],
totalStatistics: {},
},
}; };
}, },
created() { created() {
this.getLoadGoodsList(); this.getLoadGoodsList();
// 部分
getSectionList({ shipmentId: this.$attrs.shipmentObj.id }).then((res) => {
this.sectionList = res.data.map((item, index) => {
return {
...item,
title: `第${index + 1}部分`,
};
});
});
}, },
methods: { methods: {
/* 获取卸柜数据 */ /* 获取卸柜数据 */
getLoadGoodsList(params) { getLoadGoodsList() {
this.loading = true; this.loading = true;
params = { let params = {
secId: 0, secId: this.sectionId,
...params,
shipmentId: this.$attrs.shipmentObj.id, shipmentId: this.$attrs.shipmentObj.id,
}; };
loadGoodsList(params).then((res) => { loadGoodsList(params).then((res) => {
...@@ -206,6 +227,21 @@ export default { ...@@ -206,6 +227,21 @@ export default {
return "未清关"; return "未清关";
} }
}, },
// 部分切换
sectionChange() {
this.getLoadGoodsList();
},
},
computed: {
// 部分信息
getSectionInfo() {
const { totalStatistics, secStatistics } = this.pageData;
if (!this.sectionId) {
return getTotlContent(totalStatistics);
} else {
return getTotlContent(secStatistics);
}
},
}, },
}; };
</script> </script>
......
...@@ -27,7 +27,8 @@ ...@@ -27,7 +27,8 @@
</template> </template>
<script> <script>
import { createError, serviceMsg } from "@/api/ecw/boxSea"; import { createError } from "@/api/ecw/boxSea";
import { serviceMsg } from "../../utils";
/** /**
* 卸柜异常 * 卸柜异常
*/ */
......
...@@ -5,13 +5,10 @@ ...@@ -5,13 +5,10 @@
<div v-for="(nodes,index) in seaBaseData" :key="index" class="chart-nodes"> <div v-for="(nodes,index) in seaBaseData" :key="index" class="chart-nodes">
<div class="node-area"> <div class="node-area">
<div v-for="node in nodes" :key="node.title" @click="nodeClick(index, node)" class="node-div"> <div v-for="node in nodes" :key="node.title" @click="nodeClick(index, node)" class="node-div">
<template v-if="!node.unNode"> <div v-show="isShowAgent(node.type)">
<img :src="getImgSrc(node)" alt=""> <img :src="getImgSrc(node)" alt="">
<p>{{node.title}}</p> <p>{{node.title}}</p>
</template> </div>
<template v-else-if="node.unNode">
<el-button type="primary" @click="nodeClick(index, node)" style="width:100px;">{{node.title}}</el-button>
</template>
</div> </div>
</div> </div>
<div class="arrow-area" v-if="index !== (seaBaseData.length-1)"> <div class="arrow-area" v-if="index !== (seaBaseData.length-1)">
...@@ -77,6 +74,7 @@ export default { ...@@ -77,6 +74,7 @@ export default {
seaBaseData: Array, seaBaseData: Array,
}, },
data() { data() {
console.log(this.$store.state.user);
return { return {
// 弹窗配置 // 弹窗配置
dialogConfig: { dialogConfig: {
...@@ -94,6 +92,20 @@ export default { ...@@ -94,6 +92,20 @@ export default {
}; };
}, },
created() {}, created() {},
computed: {
isShowAgent() {
return (type) => {
if (type === "agent") {
const { preInstallInfo } = this.shipmentObj;
const user = this.$store.state.user;
if (preInstallInfo && preInstallInfo.noticeUser === user.id)
return true;
return false;
}
return true;
};
},
},
methods: { methods: {
/** 关闭弹窗 */ /** 关闭弹窗 */
closeDialog(type) { closeDialog(type) {
...@@ -130,7 +142,7 @@ export default { ...@@ -130,7 +142,7 @@ export default {
case "preinstall": case "preinstall":
// 预装反审 // 预装反审
const preStatus = this.shipmentObj[node.keyName]; const preStatus = this.shipmentObj[node.keyName];
if ([23, 24].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", "预装反审");
...@@ -142,7 +154,7 @@ export default { ...@@ -142,7 +154,7 @@ export default {
case "unloading": case "unloading":
// 卸柜反审 // 卸柜反审
const unStatus = this.shipmentObj[node.keyName]; const unStatus = this.shipmentObj[node.keyName];
if ([144, 145].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", "卸柜反审");
......
...@@ -12,9 +12,10 @@ function getStatusName(statu) { ...@@ -12,9 +12,10 @@ function getStatusName(statu) {
statusName.set(12, "已订舱"); statusName.set(12, "已订舱");
statusName.set(21, "未预装"); statusName.set(21, "未预装");
statusName.set(22, "预装审核中"); statusName.set(22, "预装中");
statusName.set(23, "预装审核失败"); statusName.set(23, "预装审核中");
statusName.set(24, "预装审核成功"); statusName.set(24, "预装审核失败");
statusName.set(25, "预装审核成功");
statusName.set(31, "未派车"); statusName.set(31, "未派车");
statusName.set(32, "已派车"); statusName.set(32, "已派车");
...@@ -54,16 +55,16 @@ function getStatusName(statu) { ...@@ -54,16 +55,16 @@ function getStatusName(statu) {
statusName.set(131, "未清关"); statusName.set(131, "未清关");
statusName.set(132, "已清关"); statusName.set(132, "已清关");
statusName.set(141, "未卸柜"); statusName.set(181, "未卸柜");
statusName.set(142, "卸柜中"); statusName.set(182, "卸柜中");
statusName.set(143, "卸柜审核中"); statusName.set(183, "卸柜审核中");
statusName.set(144, "卸柜审核失败"); statusName.set(184, "卸柜审核失败");
statusName.set(145, "卸柜审核成功"); statusName.set(185, "卸柜审核成功");
statusName.set(146, "已卸柜"); statusName.set(186, "已卸柜");
statusName.set(151, "未结算"); statusName.set(191, "未结算");
statusName.set(152, "结算中"); statusName.set(192, "结算中");
statusName.set(153, "已结算"); statusName.set(193, "已结算");
return statusName.get(statu); return statusName.get(statu);
} }
...@@ -107,14 +108,14 @@ function seaBaseData() { ...@@ -107,14 +108,14 @@ function seaBaseData() {
type: "preinstall", type: "preinstall",
dataKey: "2", // 字典数据键值 dataKey: "2", // 字典数据键值
/** /**
* 预装状态:21、未预装;22、预装审核中;23、预装审核失败;24、预装审核成功 * 预装状态:21、未预装;22、预装中;23、预装审核中;24、预装审核失败;25、预装审核成功
*/ */
voName: "preInstallInfo", voName: "preInstallInfo",
keyName: "prStatus", keyName: "prStatus",
status: { status: {
start: [21], start: [21],
wait: [22, 23], wait: [22, 23, 24],
end: [24], end: [25],
}, },
}, },
{ {
...@@ -374,14 +375,14 @@ function seaBaseData() { ...@@ -374,14 +375,14 @@ function seaBaseData() {
type: "unloading", type: "unloading",
dataKey: "14", // 字典数据键值 dataKey: "14", // 字典数据键值
/** /**
* 卸柜状态:141、未卸柜;142、卸柜中;143、卸柜审核中;144、卸柜审核失败;145、卸柜审核成功;146、已卸柜 * 卸柜状态:181、未卸柜;182、卸柜中;183、卸柜审核中;184、卸柜审核失败;185、卸柜审核成功;186、已卸柜
*/ */
voName: "cabinetUnloadInfo", voName: "cabinetUnloadInfo",
keyName: "ulStatus", keyName: "ulStatus",
status: { status: {
start: [141], start: [181],
wait: [142, 143, 144, 145], wait: [182, 183, 184, 185],
end: [146], end: [186],
}, },
}, },
], ],
...@@ -396,14 +397,14 @@ function seaBaseData() { ...@@ -396,14 +397,14 @@ function seaBaseData() {
type: "settlement", type: "settlement",
dataKey: "15", // 字典数据键值 dataKey: "15", // 字典数据键值
/** /**
* 结算状态:151、未结算;152、结算中;153、已结算 * 结算状态:191、未结算;192、结算中;193、已结算
*/ */
voName: "settlementInfo", voName: "settlementInfo",
keyName: "slStatus", keyName: "slStatus",
status: { status: {
start: [151], start: [191],
wait: [152], wait: [192],
end: [153], end: [193],
}, },
}, },
], ],
...@@ -623,7 +624,7 @@ function getColmnMapping() { ...@@ -623,7 +624,7 @@ function getColmnMapping() {
key: "remarks", key: "remarks",
}, },
{ {
title: "数量", title: "数量(个)",
key: "packageNum", key: "packageNum",
}, },
{ {
...@@ -859,6 +860,24 @@ function formatDateStr(obj, keys, format = "YYYY-MM-DD") { ...@@ -859,6 +860,24 @@ function formatDateStr(obj, keys, format = "YYYY-MM-DD") {
return obj; 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) { function getSeaStatus(val) {
let currNodeStatus = 11, let currNodeStatus = 11,
isBreak = false, isBreak = false,
...@@ -891,6 +910,29 @@ function getSeaStatus(val) { ...@@ -891,6 +910,29 @@ function getSeaStatus(val) {
return currNodeStatus; 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 = [ export const fileTypes = [
"doc", "doc",
"xls", "xls",
...@@ -902,6 +944,27 @@ export const fileTypes = [ ...@@ -902,6 +944,27 @@ export const fileTypes = [
"jpeg", "jpeg",
]; ];
/**
* 服务提示消息回调
*
* @export
* @param {*} result
* @param {*} _vue
* @return {*}
*/
function serviceMsg(result, _vue) {
return new Promise((resolve, reject) => {
const { code, msg } = result;
if (code === 0) {
_vue.$message.success("操作成功");
resolve();
} else {
_vue.$message.error(msg);
reject();
}
});
}
export { export {
getStatusName, getStatusName,
getColmnMapping, getColmnMapping,
...@@ -911,4 +974,7 @@ export { ...@@ -911,4 +974,7 @@ export {
formatStringNumber, formatStringNumber,
formatDateStr, formatDateStr,
formatNumberString, formatNumberString,
formatDate,
getTotlContent,
serviceMsg,
}; };
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form ref="form" :model="form" :rules="rules" label-width="100px"> <el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-card shadow="never"> <el-card shadow="never">
<div slot="header" class="clearfix"> <div slot="header" class="clearfix">
<span>渠道信息</span> <span>渠道信息</span>
...@@ -42,6 +42,14 @@ ...@@ -42,6 +42,14 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item label="简码" prop="code">
<el-input
v-model="form.code"
placeholder="请输入简码"
/>
</el-form-item>
</el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="归属仓库" prop="warehouseIds"> <el-form-item label="归属仓库" prop="warehouseIds">
<!-- <el-select v-model="form.wareHouseIds"> <!-- <el-select v-model="form.wareHouseIds">
...@@ -86,7 +94,7 @@ ...@@ -86,7 +94,7 @@
</el-form-item> </el-form-item>
</el-col> --> </el-col> -->
</el-row> </el-row>
<el-form-item label="备注-中文" prop="remarksZh"> <el-form-item label="备注-中文" prop="remarksZh">
<el-input <el-input
v-model="form.remarksZh" v-model="form.remarksZh"
...@@ -105,22 +113,22 @@ ...@@ -105,22 +113,22 @@
</el-radio-group> </el-radio-group>
</el-form-item> --> </el-form-item> -->
</el-card> </el-card>
<el-card shadow="never"> <!-- <el-card shadow="never">-->
<div slot="header" class="clearfix"> <!-- <div slot="header" class="clearfix">-->
<span>渠道收费规则</span> <!-- <span>渠道收费规则</span>-->
</div> <!-- </div>-->
<!-- -->
<el-form-item label="清关单价" prop="customsClearUnit"> <!-- <el-form-item label="清关单价" prop="customsClearUnit">-->
<el-input v-model="form.customsClearUnit" placeholder="请输入清关单价"> <!-- <el-input v-model="form.customsClearUnit" placeholder="请输入清关单价">-->
<span slot="append">$</span> <!-- <span slot="append">$</span>-->
</el-input> <!-- </el-input>-->
</el-form-item> <!-- </el-form-item>-->
<el-form-item label="每0.5KG单价" prop="weightUnitPrice"> <!-- <el-form-item label="每0.5KG单价" prop="weightUnitPrice">-->
<el-input v-model="form.weightUnitPrice" placeholder="此字段名暂缺" > <!-- <el-input v-model="form.weightUnitPrice" placeholder="此字段名暂缺" >-->
<span slot="append">$</span> <!-- <span slot="append">$</span>-->
</el-input> <!-- </el-input>-->
</el-form-item> <!-- </el-form-item>-->
</el-card> <!-- </el-card>-->
</el-form> </el-form>
<div> <div>
<el-button type="primary" @click="submitForm">确 定</el-button> <el-button type="primary" @click="submitForm">确 定</el-button>
...@@ -222,4 +230,4 @@ export default { ...@@ -222,4 +230,4 @@ export default {
.el-card{ .el-card{
margin-bottom: 20px; margin-bottom: 20px;
} }
</style> </style>
\ No newline at end of file
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
<!-- <el-table-column label="名称-英文" align="center" prop="nameEn" /> --> <!-- <el-table-column label="名称-英文" align="center" prop="nameEn" /> -->
<el-table-column label="内部名称" align="center" prop="internalNameZh" /> <el-table-column label="内部名称" align="center" prop="internalNameZh" />
<!-- <el-table-column label="内部名称-英文" align="center" prop="internalNameEn" /> <!-- <el-table-column label="内部名称-英文" align="center" prop="internalNameEn" />
<el-table-column label="类型编码" align="center" prop="typeNumber" /> <el-table-column label="类型编码" align="center" prop="typeNumber" />-->
<!-- <el-table-column label="仓库id字符串" align="center" prop="warehouseIds" /> --> <!-- <el-table-column label="仓库id字符串" align="center" prop="warehouseIds" /> -->
<el-table-column label="仓库名" align="center" prop="warehouseNameList" width="180"> <el-table-column label="仓库名" align="center" prop="warehouseNameList" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -88,6 +88,7 @@ ...@@ -88,6 +88,7 @@
</el-scrollbar> </el-scrollbar>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="简码" align="center" prop="code" />
<el-table-column label="排序" align="center" prop="sort" /> <el-table-column label="排序" align="center" prop="sort" />
<el-table-column label="快递公司" align="center" prop="companyName" /> <el-table-column label="快递公司" align="center" prop="companyName" />
<el-table-column label="预计时间(天)" align="center" prop="etaTime" /> <el-table-column label="预计时间(天)" align="center" prop="etaTime" />
...@@ -202,6 +203,7 @@ export default { ...@@ -202,6 +203,7 @@ export default {
internalNameZh: undefined, internalNameZh: undefined,
internalNameEn: undefined, internalNameEn: undefined,
typeNumber: undefined, typeNumber: undefined,
code: undefined,
warehouseIds: undefined, warehouseIds: undefined,
sort: undefined, sort: undefined,
expressId: undefined, expressId: undefined,
......
<template>
<el-dialog :visible.sync="show" title="快速新建客户" :close-on-click-modal="false" class="quick-create-customer">
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="客户类别" prop="type">
<dict-selector :type="DICT_TYPE.CUSTOMER_TYPE" form-type="checkbox" multiple v-model="form.type"></dict-selector>
</el-form-item>
<el-form-item label="客户名称" prop="name">
<el-input v-model="form.name" placeholder="请输入客户名称" />
</el-form-item>
<el-form-item label="联系人" prop="customerContacts.0.name">
<el-input v-model="form.customerContacts[0].name" placeholder="请输入联系人" />
</el-form-item>
<el-form-item label="手机号" prop="customerContacts.0.phoneNew">
<el-select v-model="form.customerContacts[0].areaCode" placeholder="请选择区号" filterable class="w-200">
<el-option v-for="(item, index) in countryList"
:key="index" :label="item.nameShort + item.nameZh + '(' + item.tel + ')'" :value="item.tel" />
</el-select>
<el-input v-model="form.customerContacts[0].phoneNew" placeholder="请输入联系方式" class="w-150 ml-10"/>
</el-form-item>
<el-form-item label="客户来源" prop="source">
<el-select v-model="form.source" placeholder="请选择客户来源">
<el-option v-for="dict in getDictDatas(DICT_TYPE.CUSTOMER_SOURCE)"
:key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
</el-select>
</el-form-item>
<el-form-item label="创建时间" prop="createTime">
<el-date-picker
v-model="form.createTime"
type="datetime"
value-format="timestamp"
placeholder="选择创建时间">
</el-date-picker>
</el-form-item>
<el-form-item label="客户经理" prop="customerService">
<el-select v-model="form.customerService" placeholder="请选择客户经理">
<el-option v-for="item in serviceUserList"
:key="item.id" :label="item.nickname" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="备注" prop="remarks">
<el-input v-model="form.remarks" placeholder="请输入备注"/>
</el-form-item>
</el-form>
<div style="text-align: right">
<el-button type="primary" @click="submitForm">确 定</el-button>
<el-button @click="cancel">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import {createCustomer} from '@/api/ecw/customer'
import {listServiceUser} from "@/api/system/user"
import { getCountryListAll } from '@/api/ecw/country'
export default {
name: "quickCreateCustomer",
props:{
default: Object
},
created() {
if(this.default){
this.$set(this, 'form', Object.assign({}, this.default, this.form))
}
listServiceUser().then(r => {
this.serviceUserList = r.data
})
getCountryListAll().then(r => {
this.countryList = r.data
})
},
data(){
return {
show: true,
// 表单参数
form: {
customerContacts:[{}]
},
// 表单校验
rules: {
name: [{ required: true, message: "客户名称不能为空", trigger: "blur" }],
'customerContacts.0.phoneNew': [{ required: true, message: "手机号不能为空", trigger: "blur" }],
type: [{ required: true, message: "客户类别不能为空", trigger: "blur" }],
createTime: [{ required: true, message: "创建时间不能为空", trigger: "blur" }],
source: [{ required: true, message: "客户来源不能为空", trigger: "blur" }],
customerService: [{ required: true, message: "跟进客服不能为空", trigger: "blur" }],
status: [{ required: true, message: "客户状态不能为空", trigger: "blur" }],
founder: [{ required: true, message: "创建人不能为空", trigger: "blur" }],
},
serviceUserList: [],
countryList: [],
}
},
watch:{
show(){
if(!this.show){
this.$emit('close')
}
}
},
methods: {
open(){
this.show = true
},
/** 取消按钮 */
cancel() {
this.show = false
},
/** 提交按钮 */
submitForm() {
this.$refs["form"].validate(valid => {
if (!valid) {
return;
}
// 添加的提交
createCustomer(this.form).then(res => {
this.$modal.msgSuccess("新增成功");
this.$emit('success', res.data)
// this.getList();
});
});
},
}
}
</script>
<style scoped lang="scss">
.quick-create-customer .el-form-item{
margin-bottom: 22px;
}
</style>
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -154,7 +154,7 @@ ...@@ -154,7 +154,7 @@
<dict-selector v-model="row.unit" :type="DICT_TYPE.ECW_PACKAGE_TYPE" defaultable @input="calculationPrice" /> <dict-selector v-model="row.unit" :type="DICT_TYPE.ECW_PACKAGE_TYPE" defaultable @input="calculationPrice" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="数量"> <el-table-column label="数量(个)">
<template slot-scope="{row}"> <template slot-scope="{row}">
<el-input v-model.number="row.quantity" @input="calculationPrice" /> <el-input v-model.number="row.quantity" @input="calculationPrice" />
</template> </template>
...@@ -216,12 +216,19 @@ ...@@ -216,12 +216,19 @@
</el-table-column> --> </el-table-column> -->
<el-table-column label="运费" width="200px"> <el-table-column label="运费" width="200px">
<template slot-scope="{row}"> <template slot-scope="{row}">
<template v-if="row.fee"> <template v-if="row.fee && row.fee.charging == 1">
<template v-if="!row.fee.freight">未报价</template>
<template v-else>
全包价:{{row.fee.freight}} {{currentcyMap[row.fee.freightCurrency]}} / {{unitMap[row.fee.freightVolume]}}
</template>
</template>
<template v-else-if="!row.fee.freight && !row.fee.clearanceFee">未报价</template>
<template v-else-if="row.fee">
<div> <div>
运费:{{row.fee.seaFreight}} {{currentMap[row.fee.seaFreightCurrency]}} / {{unitMap[row.fee.seaFreightVolume]}} 运费:{{row.fee.freight}} {{currentcyMap[row.fee.freightCurrency]}} / {{unitMap[row.fee.freightVolume]}}
</div> </div>
<div> <div>
清关费:{{row.fee.clearanceFreight}} {{currentMap[row.fee.clearanceFreightCurrency]}} / {{unitMap[row.fee.clearanceFreightVolume]}} 清关费:{{row.fee.clearanceFee}} {{currentcyMap[row.fee.clearanceFeeCurrency]}} / {{unitMap[row.fee.clearanceFeeVolume]}}
</div> </div>
</template> </template>
</template> </template>
......
...@@ -33,14 +33,16 @@ ...@@ -33,14 +33,16 @@
</div> </div>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="入仓时间" prop="rucangTime"></el-table-column> <el-table-column label="入仓时间" prop="rucangTime">
<template v-slot="{row}">
{{parseTime(row.rucangTime)}}
</template>
</el-table-column>
<el-table-column label="状态"> <el-table-column label="状态">
<template v-slot:default="scope"> <template v-slot:default="scope">
<dict-tag :value="scope.row.status" :type="DICT_TYPE.ORDER_STATUS"></dict-tag> <dict-tag :value="scope.row.status" :type="DICT_TYPE.ORDER_STATUS"></dict-tag>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作人"></el-table-column>
<el-table-column label="操作时间"></el-table-column>
<el-table-column label="操作"> <el-table-column label="操作">
<template v-slot:default="scope"> <template v-slot:default="scope">
<el-button type="text" size="mini" @click="joinAssociation(scope.row.orderId)">加入关联</el-button> <el-button type="text" size="mini" @click="joinAssociation(scope.row.orderId)">加入关联</el-button>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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