Commit febe6038 authored by huyf's avatar huyf

Merge remote-tracking branch 'origin/dev' into dev

# Conflicts:
#	src/utils/request.js
parents aa9e45d2 a4eeea5b
...@@ -6,7 +6,7 @@ VUE_APP_TITLE = 捷道管理系统-测试站 ...@@ -6,7 +6,7 @@ VUE_APP_TITLE = 捷道管理系统-测试站
# 捷道管理系统/开发环境 # 捷道管理系统/开发环境
VUE_APP_BASE_API = 'https://api.jd.jdshangmen.com' VUE_APP_BASE_API = 'https://api.sit.jdshangmen.com'
# 路由懒加载 # 路由懒加载
VUE_CLI_BABEL_TRANSPILE_MODULES = true VUE_CLI_BABEL_TRANSPILE_MODULES = true
......
{ {
"ExpandedNodes": [ "ExpandedNodes": [
"", "",
"\\src" "\\src",
"\\src\\views",
"\\src\\views\\ecw",
"\\src\\views\\ecw\\order"
], ],
"SelectedNode": "\\src\\main.js",
"PreviewInSolutionExplorer": false "PreviewInSolutionExplorer": false
} }
\ No newline at end of file
No preview for this file type
...@@ -46,11 +46,23 @@ export default { ...@@ -46,11 +46,23 @@ export default {
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
.items-center{
align-items: center;
}
.flex-between{
display: flex;
justify-content: space-between;
}
.empty-placeholder{ .empty-placeholder{
padding: 50px; padding: 50px;
text-align: center; text-align: center;
} }
$sizes: 0, 10,20,30,50,100,150,200,300,500,800,1000; /*给el-input-number一个紧凑的样式*/
.el-input-number.is-controls-right.tight .el-input__inner{
padding-right: 30px;
padding-left: 5px;
}
$sizes: 0, 10,20,30,50,75,100,150,200,300,500,800,1000;
@for $i from 1 through length($sizes){ @for $i from 1 through length($sizes){
$item: nth($sizes, $i); $item: nth($sizes, $i);
.ml-#{$item}{ .ml-#{$item}{
......
...@@ -49,6 +49,7 @@ export function exportboxExcel(query) { ...@@ -49,6 +49,7 @@ export function exportboxExcel(query) {
url: "/shipment/box/export-excel", url: "/shipment/box/export-excel",
method: "get", method: "get",
params: query, params: query,
timeout: 5 * 60000,
responseType: "blob", responseType: "blob",
}); });
} }
...@@ -257,6 +258,7 @@ export function downloadAgentListFiles(params) { ...@@ -257,6 +258,7 @@ export function downloadAgentListFiles(params) {
return request({ return request({
url: "/ecw/box-preload-goods/downloadAgentListFiles", url: "/ecw/box-preload-goods/downloadAgentListFiles",
method: "get", method: "get",
timeout: 3*60*1000,
params, params,
}); });
} }
...@@ -266,6 +268,7 @@ export function downloadSoncapFiles(params) { ...@@ -266,6 +268,7 @@ export function downloadSoncapFiles(params) {
return request({ return request({
url: "/ecw/box-preload-goods/downloadSoncapFiles", url: "/ecw/box-preload-goods/downloadSoncapFiles",
method: "get", method: "get",
timeout: 3*60*1000,
params, params,
}); });
} }
...@@ -275,6 +278,7 @@ export function downloadCustomFiles(params) { ...@@ -275,6 +278,7 @@ export function downloadCustomFiles(params) {
return request({ return request({
url: "/ecw/box-preload-goods/downloadCustomFiles", url: "/ecw/box-preload-goods/downloadCustomFiles",
method: "get", method: "get",
timeout: 3*60*1000,
params, params,
}); });
} }
...@@ -284,6 +288,7 @@ export function downloadLoadGoodsList(params) { ...@@ -284,6 +288,7 @@ export function downloadLoadGoodsList(params) {
return request({ return request({
url: "/ecw/box-preload-goods/downloadLoadGoodsList", url: "/ecw/box-preload-goods/downloadLoadGoodsList",
responseType: "blob", responseType: "blob",
timeout: 3*60*1000,
method: "get", method: "get",
params, params,
}); });
...@@ -294,6 +299,7 @@ export function downloadPreloadGoodsList(params) { ...@@ -294,6 +299,7 @@ export function downloadPreloadGoodsList(params) {
return request({ return request({
url: "/ecw/box-preload-goods/downloadPreloadGoodsList", url: "/ecw/box-preload-goods/downloadPreloadGoodsList",
responseType: "blob", responseType: "blob",
timeout: 3*60*1000,
method: "get", method: "get",
params, params,
}); });
...@@ -304,6 +310,7 @@ export function downloadReceivableList(params) { ...@@ -304,6 +310,7 @@ export function downloadReceivableList(params) {
return request({ return request({
url: "/ecw/box-preload-goods/downloadReceivableList", url: "/ecw/box-preload-goods/downloadReceivableList",
responseType: "blob", responseType: "blob",
timeout: 3*60*1000,
method: "get", method: "get",
params, params,
}); });
...@@ -314,6 +321,7 @@ export function downloadLadingCopy(params) { ...@@ -314,6 +321,7 @@ export function downloadLadingCopy(params) {
return request({ return request({
url: "/ecw/box-lading-copy/downloadLadingCopy", url: "/ecw/box-lading-copy/downloadLadingCopy",
method: "get", method: "get",
timeout: 3*60*1000,
params, params,
}); });
} }
...@@ -334,4 +342,4 @@ export function updateUrl(data) { ...@@ -334,4 +342,4 @@ export function updateUrl(data) {
method: "put", method: "put",
data, data,
}); });
} }
\ No newline at end of file
import request from "@/utils/request";
// 创建出货
export function createbox(data) {
return request({
url: "/shipment/box/createAir",
method: "post",
data: data,
});
}
// 更新出货
export function updatebox(data) {
return request({
url: "/shipment/box/update",
method: "put",
data: data,
});
}
/**
* 订舱
*
* @export
* @param {*} data
* @return {*}
*/
export function booking(data) {
if (data.id) {
return request({
url: "/shipment/box-book-air/update",
method: "put",
data,
});
}
return request({
url: "/shipment/box-book-air/create",
method: "post",
data,
});
}
/**
* 获得待预装分页
*
* @export
* @param {*} data
* @return {*}
*/
export function preloadPage(data) {
return request({
url: "/ecw/box-preload-goods/preloadPageAir",
method: "post",
data,
});
}
/**
* 预装
*
* @export
* @param {*} data
* @return {*}
*/
export function createGoods(data) {
return request({
url: "/ecw/box-preload-goods/createAir",
method: "post",
data,
});
}
/***************************** 合包 start **********************************/
/**
* 获得获得合包箱分页
*
* @export
* @param {*} data
* @return {*}
*/
export function getMergePkgList(params) {
return request({
url: "/ecw/box-merge-pkg/page",
method: "get",
params,
});
}
/**
* 创建合包箱
*
* @export
* @param {*} data
* @return {*}
*/
export function createMergePkg(data) {
return request({
url: "/ecw/box-merge-pkg/create",
method: "post",
data,
});
}
/**
* 更新合包箱
*
* @export
* @param {*} data
* @return {*}
*/
export function updateMergePkg(data) {
return request({
url: "/ecw/box-merge-pkg/update",
method: "put",
data,
});
}
/**
* 删除合包箱
*
* @export
* @param {*} data
* @return {*}
*/
export function deleteMergePkg(id) {
return request({
url: `/ecw/box-merge-pkg/delete?id=`+id,
method: "delete",
});
}
/**
* 获得未装箱列表分页
*
* @export
* @param {*} data
* @return {*}
*/
export function getUnPkgPage(params) {
return request({
url: "/ecw/box-merge-pkg/getUnPkgPage",
method: "get",
params,
});
}
/**
* 获得已装箱列表分页
*
* @export
* @param {*} data
* @return {*}
*/
export function getPkgPageByPkgId(params) {
return request({
url: "/ecw/box-merge-pkg/getPkgPageByPkgId",
method: "get",
params,
});
}
/**
* 创建合包订单
*
* @export
* @param {*} data
* @return {*}
*/
export function createPkgOrder(data) {
return request({
url: "/ecw/box-pkg-order/create",
method: "post",
data,
});
}
/**
* 批量创建合包订单
*
* @export
* @param {*} data
* @return {*}
*/
export function createBatchPkgOrder(data) {
return request({
url: "/ecw/box-pkg-order/createBatch",
method: "post",
data,
});
}
/**
* 移出合包订单
*
* @export
* @param {*} data
* @return {*}
*/
export function deleteRelate(pkgId, orderId) {
return request({
url: `/ecw/box-pkg-order/deleteRelate`,
method: "delete",
headers:{
'Content-type': 'application/x-www-form-urlencoded'
},
data: 'pkgId='+pkgId+'&orderId='+orderId
});
}
/**
* 批量移出合包订单
*
* @export
* @param {*} data
* @return {*}
*/
export function deleteBatchRelate(data) {
return request({
url: `/ecw/box-pkg-order/deleteBatchRelate`,
method: "post",
data: data
});
}
/**
* 获得封箱数据
*
* @export
* @param {*} data
* @return {*}
*/
export function getMergePkgInfoById(id) {
return request({
url: "/ecw/box-merge-pkg/getMergePkgInfoById?id="+id,
method: "get"
});
}
/**
* 获得封箱标签数据
*
* @export
* @param {*} data
* @return {*}
*/
export function getMergeTagById(id) {
return request({
url: "/ecw/box-merge-pkg/getMergeTagById?id="+id,
method: "get"
});
}
/**
* 完成合包
*
* @export
* @param {*} data
* @return {*}
*/
export function finishMergePkg(shipmentId) {
return request({
url: "/ecw/box-merge-pkg/finishMergePkg?shipmentId="+shipmentId,
method: "get"
});
}
/***************************** 合包 end **********************************/
/***************************** 起运 start *******************************/
export function takeoffCreate(data) {
if (data.id) {
return request({
url: "/ecw/box-air-fly/update",
method: "put",
data,
});
}
return request({
url: "/ecw/box-air-fly/create",
method: "post",
data,
});
}
/***************************** 起运 end *******************************/
...@@ -143,6 +143,18 @@ export function billCreate(data) { ...@@ -143,6 +143,18 @@ export function billCreate(data) {
}); });
} }
/**
* 获得提单补料pdf
*/
export function getBoxLadingBillPdf(params) {
return request({
url: "/ecw/box-lading-bill/getBoxLadingBillPdf",
method: "get",
responseType: 'arraybuffer',
params,
});
}
/** /**
* 驳船 * 驳船
* *
...@@ -319,6 +331,50 @@ export function settlementCreate(data) { ...@@ -319,6 +331,50 @@ export function settlementCreate(data) {
}); });
} }
/**
* 空运出货
*
* @export
* @param {*} data
* @return {*}
*/
export function airShipmentCreate(data) {
if (data.id) {
return request({
url: "/ecw/box-air-shipment/update",
method: "put",
data,
});
}
return request({
url: "/ecw/box-air-shipment/create",
method: "post",
data,
});
}
/**
* 空运出仓
*
* @export
* @param {*} data
* @return {*}
*/
export function airCheckoutCreate(data) {
if (data.id) {
return request({
url: "/ecw/box-air-checkout/update",
method: "put",
data,
});
}
return request({
url: "/ecw/box-air-checkout/create",
method: "post",
data,
});
}
/** /**
* 出货审核 * 出货审核
* *
...@@ -494,10 +550,11 @@ export function boxGoodsDetail(data) { ...@@ -494,10 +550,11 @@ export function boxGoodsDetail(data) {
* @param {*} id * @param {*} id
* @return {*} * @return {*}
*/ */
export function deleteSection(id) { export function deleteSection(params) {
return request({ return request({
url: "/ecw/box-preload-goods/deleteSection?id=" + id, url: "/ecw/box-preload-goods/deleteSection",
method: "delete", method: "delete",
params
}); });
} }
...@@ -508,10 +565,11 @@ export function deleteSection(id) { ...@@ -508,10 +565,11 @@ export function deleteSection(id) {
* @param {*} id * @param {*} id
* @return {*} * @return {*}
*/ */
export function deleteGoods(id) { export function deleteGoods(params) {
return request({ return request({
url: "/ecw/box-preload-goods/delete?ids=" + id.join(","), url: "/ecw/box-preload-goods/delete",
method: "delete", method: "delete",
params
}); });
} }
...@@ -524,12 +582,27 @@ export function deleteGoods(id) { ...@@ -524,12 +582,27 @@ export function deleteGoods(id) {
*/ */
export function createGoods(data) { export function createGoods(data) {
return request({ return request({
url: "/ecw/box-preload-goods/create", url: "/ecw/box-preload-goods/v2/create",
method: "post", method: "post",
data, data,
}); });
} }
/**
* 获得订单所有关联列表
*
* @export
* @param {*} params
* @return {*}
*/
export function getAllRelateOrderList(params) {
return request({
url: "/order/guanlian/getAllRelateOrderList",
method: "get",
params,
});
}
/** /**
* 预装关联订单 * 预装关联订单
* *
......
import request from '@/utils/request' import request from '@/utils/request'
import query from "@/views/ecw/customer/query"; import query from "@/views/ecw/customer/query";
import * as url from "url"; import * as url from "url";
import {methods} from "vue2-ace-editor";
// 创建客户 // 创建客户
export function createCustomer(data) { export function createCustomer(data) {
...@@ -26,7 +27,14 @@ export function updateCustomer(data) { ...@@ -26,7 +27,14 @@ export function updateCustomer(data) {
data: data data: data
}) })
} }
// 新建潜在客户
export function createPotential(data){
return request({
url:'/ecw/customer/create-potential',
method:'post',
data
})
}
// 删除客户 // 删除客户
export function deleteCustomer(id) { export function deleteCustomer(id) {
return request({ return request({
...@@ -48,7 +56,9 @@ export function getCustomerPage(query) { ...@@ -48,7 +56,9 @@ export function getCustomerPage(query) {
return request({ return request({
url: '/ecw/customer/page', url: '/ecw/customer/page',
method: 'get', method: 'get',
params: query params: query,
timeout: 60000
}) })
} }
/** /**
...@@ -70,6 +80,14 @@ export function getCustomerSelect(query) { ...@@ -70,6 +80,14 @@ export function getCustomerSelect(query) {
params: query params: query
}) })
} }
// 潜在客户
export function getPotential(query){
return request({
url:'/ecw/customer/get-potential',
method:'get',
params:query
})
}
// 根据客户id集合获得客户详情列表 // 根据客户id集合获得客户详情列表
export function getCustomerList(query) { export function getCustomerList(query) {
...@@ -173,7 +191,20 @@ export function handOverCustomer(data) { ...@@ -173,7 +191,20 @@ export function handOverCustomer(data) {
data: data, data: data,
}) })
} }
export function handoverApproval(data) {
return request({
url: '/ecw/customer/handover/approval',
method: 'post',
data: data,
})
}
export function handoverApprovalDetails(params){
return request({
url:'/ecw/customer/handover/approval',
method:'get',
params
})
}
// 公海池客户 // 公海池客户
export function getPublicList(query) { export function getPublicList(query) {
return request({ return request({
...@@ -379,3 +410,27 @@ export function changeCustomerAir(data){ ...@@ -379,3 +410,27 @@ export function changeCustomerAir(data){
}) })
} }
// 设置整柜
export function setChangeCustomerFcl(data){
return request({
url:'/ecw/customer/change-customer-fcl',
method:'put',
data
})
}
//获得客户日志
export function getCustomerOperatelogPage(params){
return request({
url:'/customer/operate-log/page',
method:'get',
params
})
}
// 获得客户日志详情
export function getCustomerOperatelog(params){
return request({
url:'customer/operate-log/get',
method:'get',
params
})
}
...@@ -71,9 +71,13 @@ export function exportCustomerContactsExcel(query) { ...@@ -71,9 +71,13 @@ export function exportCustomerContactsExcel(query) {
// 根据客户ID获得联系人列表 // 根据客户ID获得联系人列表
export function getCustomerContactsListByCustomer(query) { export function getCustomerContactsListByCustomer(query) {
return request({ if(query.customerId){
url: '/ecw/customer-contacts/list-by-customer', return request({
method: 'get', url: '/ecw/customer-contacts/list-by-customer',
params: query method: 'get',
}) params: query
})
}else {
return Promise.resolve()
}
} }
...@@ -9,7 +9,7 @@ export function createDeptTarget(data) { ...@@ -9,7 +9,7 @@ export function createDeptTarget(data) {
}) })
} }
// 我的业绩 // 我的部门业绩
export function myDeptAchievementByPage(data) { export function myDeptAchievementByPage(data) {
return request({ return request({
url: '/sale/dept-target/myDeptAchievementByPage', url: '/sale/dept-target/myDeptAchievementByPage',
...@@ -17,7 +17,7 @@ export function myDeptAchievementByPage(data) { ...@@ -17,7 +17,7 @@ export function myDeptAchievementByPage(data) {
data: data data: data
}) })
} }
// 我的部门业绩 // 我的业绩
export function myAchievementByPage(data) { export function myAchievementByPage(data) {
return request({ return request({
url: '/sale/dept-target/myAchievementByPage', url: '/sale/dept-target/myAchievementByPage',
...@@ -26,6 +26,15 @@ export function myAchievementByPage(data) { ...@@ -26,6 +26,15 @@ export function myAchievementByPage(data) {
}) })
} }
// 全部业绩
export function allAchievementByPage(data) {
return request({
url: '/sale/dept-target/allAchievementByPage',
method: 'post',
data: data
})
}
// 更新部门业绩目标设置 // 更新部门业绩目标设置
export function updateDeptTarget(data) { export function updateDeptTarget(data) {
return request({ return request({
...@@ -67,6 +76,15 @@ export function getDeptTargetPage(query) { ...@@ -67,6 +76,15 @@ export function getDeptTargetPage(query) {
}) })
} }
// 获得我的部门及以下业绩目标设置分页
export function getMyDeptTargetPage(query) {
return request({
url: '/sale/dept-target/deptStatistics/page',
method: 'get',
params: query
})
}
// 获得个人目标进度分页 // 获得个人目标进度分页
export function getPersonTargetPage(query) { export function getPersonTargetPage(query) {
return request({ return request({
...@@ -85,3 +103,23 @@ export function exportDeptTargetExcel(query) { ...@@ -85,3 +103,23 @@ export function exportDeptTargetExcel(query) {
responseType: 'blob' responseType: 'blob'
}) })
} }
// 导出部门业绩目标设置 Excel
export function exportDetailExcel(query) {
return request({
url: '/sale/dept-target/exportDetailExcel',
method: 'get',
params: query,
responseType: 'blob'
})
}
// 导出部门业绩目标设置 Excel
export function exportStatisticsExcel(query) {
return request({
url: '/sale/dept-target/exportStatisticsExcel',
method: 'get',
params: query,
responseType: 'blob'
})
}
...@@ -273,6 +273,14 @@ export function getPayableInfoByIds(query) { ...@@ -273,6 +273,14 @@ export function getPayableInfoByIds(query) {
params: query params: query
}) })
} }
//获取佣金应付款详情
export function getCommissionPayable(params){
return request({
url:'/ecw/commission-payable/get',
method:"get",
params
})
}
// 创建付款单 // 创建付款单
export function createPayment(data) { export function createPayment(data) {
...@@ -282,6 +290,14 @@ export function createPayment(data) { ...@@ -282,6 +290,14 @@ export function createPayment(data) {
data: data data: data
}) })
} }
// 创建佣金订单
export function commissionPayment(data){
return request({
url:'/ecw/commission-payment/create',
method:'post',
data
})
}
// 获取付款单列表 // 获取付款单列表
export function getPaymentList(query) { export function getPaymentList(query) {
...@@ -300,6 +316,22 @@ export function getPaymentInfoByIds(query) { ...@@ -300,6 +316,22 @@ export function getPaymentInfoByIds(query) {
params: query params: query
}) })
} }
// 获得佣金付款单
export function getCommissionPayment(params){
return request({
url:'/ecw/commission-payment/get',
method:'get',
params
})
}
// 获得佣金付款单列表
export function getCommissionPayableList(params){
return request({
url:'/ecw/commission-payable/list',
method:'get',
params
})
}
// 获得付款单付款明细 // 获得付款单付款明细
export function getPaymentItem(query) { export function getPaymentItem(query) {
...@@ -310,6 +342,7 @@ export function getPaymentItem(query) { ...@@ -310,6 +342,7 @@ export function getPaymentItem(query) {
}) })
} }
// 更新付款单 // 更新付款单
export function updatePayment(data) { export function updatePayment(data) {
return request({ return request({
...@@ -318,6 +351,14 @@ export function updatePayment(data) { ...@@ -318,6 +351,14 @@ export function updatePayment(data) {
data: data data: data
}) })
} }
// 更新佣金付款单
export function commissionPaymentUpdate(data){
return request({
url:'/ecw/commission-payment/update',
method:'put',
data
})
}
// 删除付款单 // 删除付款单
export function deletePayment(id) { export function deletePayment(id) {
...@@ -337,25 +378,278 @@ export function paymentVerify(query) { ...@@ -337,25 +378,278 @@ export function paymentVerify(query) {
} }
// 核销付款单 // 核销付款单
export function paymentVerification(id) { export function paymentVerification(data) {
return request({ return request({
url: '/ecw/payment/verification/' + id, url: '/ecw/payment/verification',
method: 'GET' method: 'post',
data
}) })
} }
// 反核销付款单 // 反核销付款单
export function paymentVerificationCancel(id) { export function paymentVerificationCancel(data) {
return request({ return request({
url: '/ecw/payment/verificationCancel/' + id, url: '/ecw/payment/verificationCancel',
method: 'GET' method: 'post',
data
})
}
// 取消付款单反核销
export function paymentCancelFinancePaymentWriteOffNo(data){
return request({
url:'ecw/payment/cancelFinancePaymentWriteOffNo',
method:'post',
data
}) })
} }
// 反审核付款单 // 反审核付款单
export function paymentVerifyCancel(id) { export function paymentVerifyCancel(data) {
return request({
url: '/ecw/payment/verifyCancel',
method: 'post',
data
})
}
//获取佣金应付款
export function payablePage(params){
return request({
url:'/ecw/commission-payable/page',
method:'get',
params
})
}
//获取佣金付款单
export function commissionPaymentPage(params){
return request({ return request({
url: '/ecw/payment/verifyCancel/' + id, url:'/ecw/commission-payment/page',
method:'get',
params
})
}
// 根据流程主键获取付款单流程审核信息
export function getPaymentApprove(id) {
return request({
url: '/ecw/payment/getPaymentApprove?id='+id,
method: 'GET'
})
}
// 根据流程主键获取收款单流程审核信息
export function getReceiptApprove(id) {
return request({
url: '/ecw/receipt/getReceiptApprove?id='+id,
method: 'GET' method: 'GET'
}) })
} }
// 收款单核销
export function financeReceiptWriteOff(query) {
return request({
url: '/ecw/receipt/financeReceiptWriteOff',
method: 'POST',
data: query
})
}
// 收款单银行明细核销
export function financeReceiptItemWriteOff(query) {
return request({
url: '/ecw/receipt-item/financeReceiptItemWriteOff',
method: 'POST',
data: query
})
}
// 收款单银行明细核销反审核
export function financeReceiptItemWriteOffNo(query) {
return request({
url: '/ecw/receipt-item/financeReceiptItemWriteOffNo',
method: 'POST',
data: query
})
}
// 收款单反审核
export function financeApproveNo(query) {
return request({
url: '/ecw/receipt/financeApproveNo',
method: 'POST',
data: query
})
}
// 收款单反核销
export function financeReceiptWriteOffNo(query) {
return request({
url: '/ecw/receipt/financeReceiptWriteOffNo',
method: 'POST',
data: query
})
}
// 收款单取消审核
export function cancelFinanceReceiptApproval(query) {
return request({
url: '/ecw/receipt/cancelFinanceReceiptApproval',
method: 'POST',
data: query
})
}
// 取消收款单反审核
export function cancelFinanceReceiptApprovalNo(query) {
return request({
url: '/ecw/receipt/cancelFinanceReceiptApprovalNo',
method: 'POST',
data: query
})
}
// 取消收款单全部核销审核
export function cancelFinanceReceiptWriteOff(query) {
return request({
url: '/ecw/receipt/cancelFinanceReceiptWriteOff',
method: 'POST',
data: query
})
}
// 取消收款单反核销
export function cancelFinanceReceiptWriteOffNo(query) {
return request({
url: '/ecw/receipt/cancelFinanceReceiptWriteOffNo',
method: 'POST',
data: query
})
}
// 取消收款明细核销
export function cancelFinanceReceiptItemWriteOff(query) {
return request({
url: '/ecw/receipt-item/cancelFinanceReceiptItemWriteOff',
method: 'POST',
data: query
})
}
// 取消收款明细反核销
export function cancelFinanceReceiptItemWriteOffNo(query) {
return request({
url: '/ecw/receipt-item/cancelFinanceReceiptItemWriteOffNo',
method: 'POST',
data: query
})
}
// 取消审核
export function cancelFinancePaymentApproval(data){
return request({
url:'/ecw/payment/cancelFinancePaymentApproval',
method:'post',
data
})
}
// 取消付款单反审核
export function cancelFinancePaymentApprovalNo(data){
return request({
url:'/ecw/payment/cancelFinancePaymentApprovalNo',
method:'post',
data
})
}
// 取消付款单核销
export function cancelFinancePaymentWriteOff(data){
return request({
url:'/ecw/payment/cancelFinancePaymentWriteOff',
method:'post',
data
})
}
// 取消付款单反核销
export function cancelFinancePaymentWriteOffNo(data){
return request({
url:'/ecw/payment/cancelFinancePaymentWriteOffNo',
method:'post',
data
})
}
//删除佣金付款单
export function commissionPaymentDelete(params){
return request({
url:'/ecw/commission-payment/delete',
method:'delete',
params
})
}
//反审核佣金付款单
export function commissionPaymentVerifyCancel(data){
return request({
url:'/ecw/commission-payment/verifyCancel',
method:'post',
data
})
}
// 佣金付款单核销
export function commissionPaymentVerification(data){
return request({
url:'/ecw/commission-payment/verification',
method:'post',
data
})
}
//付款单反核销申请
export function commissionPaymentVerificationCancel(data){
return request({
url:'/ecw/commission-payment/verificationCancel',
method:'post',
data
})
}
// 取消付款单反审核
export function commissionPaymentCancelFinancePaymentApprovalNo(data){
return request({
url:'/ecw/commission-payment/cancelFinancePaymentApprovalNo',
method:'post',
data
})
}
// 取消付款单核销
export function commissionPaymentCancelFinancePaymentWriteOff(data){
return request({
url:'/ecw/commission-payment/cancelFinancePaymentWriteOff',
method:'post',
data
})
}
// 取消付款单反核销
export function commissionPaymentCancelFinancePaymentWriteOffNo(data){
return request({
url:'/ecw/commission-payment/cancelFinancePaymentWriteOffNo',
method:'post',
data,
})
}
//取消付款单审核
export function commissionPaymentCancelFinancePaymentApproval(data){
return request({
url:'/ecw/commission-payment/cancelFinancePaymentApproval',
method:'post',
data
})
}
//根据流程主键获取付款单流程审核信息
export function commissionPaymentGetPaymentApprove(params){
return request({
url:'/ecw/commission-payment/getPaymentApprove',
method:'get',
params
})
}
...@@ -25,7 +25,8 @@ export function getCustomerPage(query) { ...@@ -25,7 +25,8 @@ export function getCustomerPage(query) {
return request({ return request({
url: '/ecw/indirect-customer/page', url: '/ecw/indirect-customer/page',
method: 'get', method: 'get',
params: query params: query,
timeout: 30000
}) })
} }
...@@ -53,4 +54,4 @@ export function deleteIndirectCustomer(id) { ...@@ -53,4 +54,4 @@ export function deleteIndirectCustomer(id) {
url: '/ecw/indirect-customer/delete?id=' + id, url: '/ecw/indirect-customer/delete?id=' + id,
method: 'delete' method: 'delete'
}) })
} }
\ No newline at end of file
import request from '@/utils/request'
// 创建提单托运人
export function createLadingShipper(data) {
return request({
url: '/ecw/lading-shipper/create',
method: 'post',
data: data
})
}
// 更新提单托运人
export function updateLadingShipper(data) {
return request({
url: '/ecw/lading-shipper/update',
method: 'put',
data: data
})
}
// 删除提单托运人
export function deleteLadingShipper(id) {
return request({
url: '/ecw/lading-shipper/delete?id=' + id,
method: 'delete'
})
}
// 获得提单托运人
export function getLadingShipper(id) {
return request({
url: '/ecw/lading-shipper/get?id=' + id,
method: 'get'
})
}
// 获得提单托运人分页
export function getLadingShipperPage(query) {
return request({
url: '/ecw/lading-shipper/page',
method: 'get',
params: query
})
}
// 导出提单托运人 Excel
export function exportLadingShipperExcel(query) {
return request({
url: '/ecw/lading-shipper/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
...@@ -133,3 +133,13 @@ export function offerDeptPage(params) { ...@@ -133,3 +133,13 @@ export function offerDeptPage(params) {
params params
}) })
} }
// 导出部分报价单 exportDeptOfferExcel
export function exportDeptOfferExcel(query) {
return request({
url: '/ecw/offer/dept/export-excel',
method: 'get',
params: query,
responseType: 'blob'
})
}
\ No newline at end of file
import request from '@/utils/request' import request from '@/utils/request'
import {param} from "@/utils";
// 创建订单 // 创建订单
export function createOrder(data) { export function createOrder(data) {
...@@ -53,6 +52,15 @@ export function getOrderPage(query) { ...@@ -53,6 +52,15 @@ export function getOrderPage(query) {
}) })
} }
// 获得订单列表
export function getOrderList(query) {
return request({
url: '/ecw/order/list',
method: 'get',
params: query
})
}
// 导出订单 Excel // 导出订单 Excel
export function exportOrderExcel(query) { export function exportOrderExcel(query) {
return request({ return request({
...@@ -68,6 +76,7 @@ export function printTag(id) { ...@@ -68,6 +76,7 @@ export function printTag(id) {
return request({ return request({
url: '/order/print/orderTagPrint?orderId=' + id, url: '/order/print/orderTagPrint?orderId=' + id,
method: 'get', method: 'get',
timeout: 3 * 60000
}) })
} }
...@@ -166,7 +175,7 @@ export function orderWarehouseIn(data){ ...@@ -166,7 +175,7 @@ export function orderWarehouseIn(data){
// 入仓修改 // 入仓修改
export function orderWarehouseInUpdateApply(data){ export function orderWarehouseInUpdateApply(data){
return request({ return request({
url: '/order/order-warehouse-in/update-apply', url: '/order/order-warehouse-in/update-or-updateApply',
method: 'put', method: 'put',
data data
}) })
...@@ -212,6 +221,15 @@ export function saveOrUpdateOrderLocation(data){ ...@@ -212,6 +221,15 @@ export function saveOrUpdateOrderLocation(data){
}) })
} }
// 入仓修改储位
export function updateWarehouseInLocation(data){
return request({
url: '/order/location/update-warehouse-in-location',
method: 'put',
data
})
}
// 获取入仓修改审批单详情-审批使用 // 获取入仓修改审批单详情-审批使用
export function getWarehouseUpdateApprovalInfo(id) { export function getWarehouseUpdateApprovalInfo(id) {
return request({ return request({
...@@ -328,6 +346,7 @@ export function feeApplicationGet(params){ ...@@ -328,6 +346,7 @@ export function feeApplicationGet(params){
params params
}) })
} }
// 调仓-明细-后台使用
export function getAdjustInfo(params){ export function getAdjustInfo(params){
return request({ return request({
url:'/order/order-warehouse-in/get-adjust-info', url:'/order/order-warehouse-in/get-adjust-info',
...@@ -547,6 +566,7 @@ export function orderExportSearch(params){ ...@@ -547,6 +566,7 @@ export function orderExportSearch(params){
return request({ return request({
url: '/ecw/order/export/search', url: '/ecw/order/export/search',
method: 'GET', method: 'GET',
timeout: 5 * 60000,
responseType: 'arraybuffer', responseType: 'arraybuffer',
params params
}) })
...@@ -558,6 +578,7 @@ export function orderExportMySearch(params){ ...@@ -558,6 +578,7 @@ export function orderExportMySearch(params){
url: '/ecw/order/export/my/search', url: '/ecw/order/export/my/search',
responseType: 'arraybuffer', responseType: 'arraybuffer',
method: 'GET', method: 'GET',
timeout: 5 * 60000,
params params
}) })
} }
...@@ -568,6 +589,7 @@ export function orderExportDeptSearch(params){ ...@@ -568,6 +589,7 @@ export function orderExportDeptSearch(params){
url: '/ecw/order/export/dept/search', url: '/ecw/order/export/dept/search',
method: 'GET', method: 'GET',
responseType: 'arraybuffer', responseType: 'arraybuffer',
timeout: 5 * 60000,
params params
}) })
} }
...@@ -578,6 +600,7 @@ export function exportAbnormal(params){ ...@@ -578,6 +600,7 @@ export function exportAbnormal(params){
url: '/ecw/order/export/export-exception', url: '/ecw/order/export/export-exception',
method: 'get', method: 'get',
params: params, params: params,
timeout: 5 * 60000,
responseType: 'blob' responseType: 'blob'
}) })
} }
...@@ -589,6 +612,7 @@ export function exportHeavyOrder(params){ ...@@ -589,6 +612,7 @@ export function exportHeavyOrder(params){
url: '/ecw/order/export/export-heavyOrder', url: '/ecw/order/export/export-heavyOrder',
method: 'get', method: 'get',
params: params, params: params,
timeout: 5 * 60000,
responseType: 'blob' responseType: 'blob'
}) })
} }
...@@ -599,6 +623,7 @@ export function exportReturnOrder(params){ ...@@ -599,6 +623,7 @@ export function exportReturnOrder(params){
url: '/ecw/order/export/export-returnOrder', url: '/ecw/order/export/export-returnOrder',
method: 'get', method: 'get',
params: params, params: params,
timeout: 5 * 60000,
responseType: 'blob' responseType: 'blob'
}) })
} }
...@@ -609,6 +634,7 @@ export function exportSaleRepay(params){ ...@@ -609,6 +634,7 @@ export function exportSaleRepay(params){
url: '/ecw/order/export/export-saleRepay', url: '/ecw/order/export/export-saleRepay',
method: 'get', method: 'get',
params: params, params: params,
timeout: 5 * 60000,
responseType: 'blob' responseType: 'blob'
}) })
} }
...@@ -620,6 +646,7 @@ export function exportCustomsDatas(params){ ...@@ -620,6 +646,7 @@ export function exportCustomsDatas(params){
url: '/ecw/order/export/export-customDatas', url: '/ecw/order/export/export-customDatas',
method: 'get', method: 'get',
params: params, params: params,
timeout: 5 * 60000,
responseType: 'blob' responseType: 'blob'
}) })
} }
...@@ -631,6 +658,7 @@ export function exportShippingDatas(params){ ...@@ -631,6 +658,7 @@ export function exportShippingDatas(params){
url: '/ecw/order/export/export-shipDatas', url: '/ecw/order/export/export-shipDatas',
method: 'get', method: 'get',
params: params, params: params,
timeout: 5 * 60000,
responseType: 'blob' responseType: 'blob'
}) })
} }
...@@ -642,6 +670,7 @@ export function exportShipFee(params){ ...@@ -642,6 +670,7 @@ export function exportShipFee(params){
url: '/ecw/order/export/export-shipFee', url: '/ecw/order/export/export-shipFee',
method: 'get', method: 'get',
params: params, params: params,
timeout: 5 * 60000,
responseType: 'blob' responseType: 'blob'
}) })
} }
...@@ -653,6 +682,171 @@ export function exportUnload(params){ ...@@ -653,6 +682,171 @@ export function exportUnload(params){
url: '/ecw/order/export/export-excel', url: '/ecw/order/export/export-excel',
method: 'get', method: 'get',
params: params, params: params,
timeout: 5 * 60000,
responseType: 'blob' responseType: 'blob'
}) })
} }
// 操作日志分页
export function operateLogPage(params){
return request({
url: '/ecw/order-operate-log/page',
method: 'get',
params: params,
timeout: 5 * 60000
})
}
// 获取操作日志详情
export function getOperateLogDetail(id){
return request({
url: '/ecw/order-operate-log/get',
params: {id},
method: 'get',
})
}
// 取消拆单申请
export function splitCancelApply(data){
return request({
url: '/order/split/cancel-apply',
method: 'put',
data
})
}
// 撤销拆单
export function orderSplitRevoke(data){
return request({
url: '/order/split/revoke',
method: 'put',
data
})
}
/*根据订单ID获取撤销拆单详情*/
export function splitRevoke(orderId){
return request({
url: '/order/split/revoke/' + orderId,
method: 'get'
})
}
/*根据审批ID获取撤销拆单详情*/
export function splitRevokeApply(approvalId){
return request({
url: '/order/split/revoke/apply/' + approvalId,
method: 'get'
})
}
/*取消撤销拆单*/
export function cancelSplitRevoke(data){
return request({
url: '/order/split/cancel/revoke',
method: 'put',
data
})
}
/*修改拆单项*/
export function splitItemUpdate(data){
return request({
url: '/order/split-item/update',
method: 'post',
data
})
}
// 可出订单列表
export function canShipmentPage(params){
return request({
url: '/air/order/can/shipment/page',
method: 'get',
params
})
}
// 待出订单列表
export function waitingShipmentPage(params){
return request({
url: '/air/order/waiting/shipment/page',
method: 'get',
params
})
}
// 备货订单列表
export function canReadyStockShipmentPage(params){
return request({
url: '/air/order/can-ready-stock/shipment/page',
method: 'get',
params
})
}
// 确认订单可出
export function setCanShipment(orderId){
return request({
url: '/air/order/can/shipment/' + orderId,
method: 'put',
})
}
// 批量可出
export function batchCanShipment(orderIdList){
return request({
url: '/air/order/can/shipment/',
method: 'put',
data: {orderIdList}
})
}
// 导出备货订单
export function exportReadyStock(params){
return request({
url: '/ecw/order/export/ready-stock/search',
method: 'get',
params,
responseType: 'blob'
})
}
// 无需打包
export function noNeedPack(orderItemId){
return request({
url: '/order/order-warehouse-in/no-need-to-pack',
method: 'get',
params: {orderItemId}
})
}
// 完成打包
export function finishPacked(data){
return request({
url: '/order/order-warehouse-in/finish-packed',
method: 'post',
data
})
}
// 完成备货
export function finishStock(data){
return request({
url: '/order/order-warehouse-in/finish-stocked',
method: 'put',
data
})
}
// 批量转异
export function batchException(data){
return request({
url: '/air/order/manual-exception/batch',
method: 'put',
data
})
}
// 打包记录列表
export function orderItemPackLogPage(params){
return request({
url: '/order/item-pack-log/page',
method: 'get',
params
})
}
\ No newline at end of file
...@@ -107,7 +107,35 @@ export function exportExcel(params) { ...@@ -107,7 +107,35 @@ export function exportExcel(params) {
return request({ return request({
url: '/ecw/order-exception/export-excel', url: '/ecw/order-exception/export-excel',
method: 'get', method: 'get',
timeout: 3*60*1000,
params, params,
// timeout: 3*60*1000,
responseType: 'arraybuffer' responseType: 'arraybuffer'
}) })
}
// 根据订ID获取订单异常结果
export function getOrderExcptionResult(query) {
return request({
url: '/ecw/order-exception-result/page',
method: 'get',
params: query
})
}
// 根据订单ID,异常ID获取价格
export function getOrderExceptionChannelPriceList(data) {
return request({
url: '/order/exception-channel-price/getOrderExceptionChannelPriceList',
method: 'post',
data: data
})
}
// 根据工作流中传的业务ID,获取不可出渠道异常详细信息
export function getExceptionDetailByBusinessId(query) {
return request({
url: '/ecw/order-exception/getExceptionDetailByBusinessId',
method: 'get',
params: query
})
} }
\ No newline at end of file
...@@ -59,7 +59,6 @@ export function deleteSplit(id) { ...@@ -59,7 +59,6 @@ export function deleteSplit(id) {
}) })
} }
//取消申请拆单 //取消申请拆单
export function cancelApply(data) { export function cancelApply(data) {
return request({ return request({
url: '/order/split/cancel-apply', url: '/order/split/cancel-apply',
...@@ -137,3 +136,12 @@ export function quantitycheck(query) { ...@@ -137,3 +136,12 @@ export function quantitycheck(query) {
params: query params: query
}) })
} }
// 重置拆单
export function deleteAllSplit(orderId) {
return request({
url: '/order/split/delete/all',
method: 'delete',
params: {orderId}
})
}
...@@ -9,6 +9,15 @@ export function createProduct(data) { ...@@ -9,6 +9,15 @@ export function createProduct(data) {
}) })
} }
// 创建产品
export function addProduct(data) {
return request({
url: '/ecw/product/add',
method: 'post',
data: data
})
}
// 更新产品 // 更新产品
export function updateProduct(data) { export function updateProduct(data) {
return request({ return request({
...@@ -78,4 +87,12 @@ export function calculationPrice(data){ ...@@ -78,4 +87,12 @@ export function calculationPrice(data){
method: 'post', method: 'post',
data: data data: data
}) })
} }
\ No newline at end of file //新增商品可用优惠信息列表
export function product_coupon_newProd(params){
return request({
url:'/product/coupon/newProd/list',
method:'get',
params
})
}
...@@ -106,4 +106,13 @@ export function getProductPriceGetPrice(query) { ...@@ -106,4 +106,13 @@ export function getProductPriceGetPrice(query) {
method: 'get', method: 'get',
params: query params: query
}) })
} }
\ No newline at end of file
// 更新单询
export function updateOrderInquiry(data) {
return request({
url: '/ecw/product-price/updateOrderInquiry',
method: 'put',
data: data
})
}
...@@ -26,6 +26,15 @@ export function deleteSupplier(id) { ...@@ -26,6 +26,15 @@ export function deleteSupplier(id) {
}) })
} }
// 获得供应商列表
export function getSupplierList(query) {
return request({
url: '/ecw/supplier/list',
method: 'get',
params: query
})
}
// 获得供应商 // 获得供应商
export function getSupplier(id) { export function getSupplier(id) {
return request({ return request({
...@@ -52,3 +61,30 @@ export function exportSupplierExcel(query) { ...@@ -52,3 +61,30 @@ export function exportSupplierExcel(query) {
responseType: 'blob' responseType: 'blob'
}) })
} }
// 创建清关文件号码
export function createFileNo(data) {
return request({
url: '/ecw/clearance-file-no/create',
method: 'post',
data: data
})
}
// 更新供应商
export function updateFileNo(data) {
return request({
url: '/ecw/clearance-file-no/update',
method: 'put',
data: data
})
}
// 获得清关文件号码
export function getFileNoPage(query) {
return request({
url: '/ecw/clearance-file-no/page',
method: 'get',
params: query
})
}
\ No newline at end of file
...@@ -134,4 +134,10 @@ export function serviceConfig(data) { ...@@ -134,4 +134,10 @@ export function serviceConfig(data) {
}) })
} }
// 数量是否必填
export function quantityRequired(lineId) {
return request({
url: '/ecw/warehouse/quantity/required/' + lineId,
method: 'get'
})
}
...@@ -5,7 +5,9 @@ export function getApiAccessLogPage(query) { ...@@ -5,7 +5,9 @@ export function getApiAccessLogPage(query) {
return request({ return request({
url: '/infra/api-access-log/page', url: '/infra/api-access-log/page',
method: 'get', method: 'get',
timeout: 1000*60*3,
params: query params: query
}) })
} }
......
...@@ -13,6 +13,7 @@ export function getApiErrorLogPage(query) { ...@@ -13,6 +13,7 @@ export function getApiErrorLogPage(query) {
return request({ return request({
url: '/infra/api-error-log/page', url: '/infra/api-error-log/page',
method: 'get', method: 'get',
timeout: 1000*60*3,
params: query params: query
}) })
} }
......
...@@ -9,6 +9,15 @@ export function listDept(query) { ...@@ -9,6 +9,15 @@ export function listDept(query) {
}) })
} }
// 查询当前登陆人的所属部门列表
export function myListDept(query) {
return request({
url: '/system/dept/myListDept',
method: 'get',
params: query
})
}
// 查询部门列表(排除节点) // 查询部门列表(排除节点)
export function listDeptExcludeChild(deptId) { export function listDeptExcludeChild(deptId) {
return request({ return request({
......
...@@ -5,6 +5,7 @@ export function listOperateLog(query) { ...@@ -5,6 +5,7 @@ export function listOperateLog(query) {
return request({ return request({
url: '/system/operate-log/page', url: '/system/operate-log/page',
method: 'get', method: 'get',
timeout: 5*60000,
params: query params: query
}) })
} }
...@@ -15,6 +16,7 @@ export function exportOperateLog(query) { ...@@ -15,6 +16,7 @@ export function exportOperateLog(query) {
url: '/system/operate-log/export', url: '/system/operate-log/export',
method: 'get', method: 'get',
params: query, params: query,
timeout: 5*60000,
responseType: 'blob' responseType: 'blob'
}) })
} }
...@@ -21,7 +21,7 @@ export default { ...@@ -21,7 +21,7 @@ export default {
this.$emit('input', this.valueSync.replace('+', '')) this.$emit('input', this.valueSync.replace('+', ''))
}, },
value(){ value(){
if(this.value)this.valueSync = this.value this.valueSync = this.value
} }
}, },
created(){ created(){
...@@ -39,4 +39,4 @@ export default { ...@@ -39,4 +39,4 @@ export default {
} }
} }
</script> </script>
\ No newline at end of file
...@@ -13,6 +13,11 @@ ...@@ -13,6 +13,11 @@
<div class="value">{{item.contactsName}}</div> <div class="value">{{item.contactsName}}</div>
<el-tag v-if="item.isInOpenSea" type="danger" effect="dark">{{$t('')}}</el-tag> <el-tag v-if="item.isInOpenSea" type="danger" effect="dark">{{$t('')}}</el-tag>
</div> </div>
<!-- v1.7新增 -->
<div class="line">
<div class="label">{{$t('姓名(英文)')}}</div>
<div class="value">{{item.contactsNameEn}}</div>
</div>
<div class="line"> <div class="line">
<div class="label">{{$t('电话')}}</div> <div class="label">{{$t('电话')}}</div>
<div class="value">+{{item.areaCode}} {{item.phoneNew}}</div> <div class="value">+{{item.areaCode}} {{item.phoneNew}}</div>
...@@ -25,6 +30,11 @@ ...@@ -25,6 +30,11 @@
<div class="label">{{$t('公司')}}</div> <div class="label">{{$t('公司')}}</div>
<div class="value">{{item.company}}</div> <div class="value">{{item.company}}</div>
</div> </div>
<!-- v1.7新增 -->
<div class="line">
<div class="label">{{$t('公司(英文)')}}</div>
<div class="value">{{item.companyEn}}</div>
</div>
</div> </div>
</div> </div>
</div> </div>
...@@ -91,7 +101,7 @@ export default { ...@@ -91,7 +101,7 @@ export default {
padding: 5px; padding: 5px;
border-radius: 10px; border-radius: 10px;
border: 5px solid transparent; border: 5px solid transparent;
background: linear-gradient(white,white) padding-box,repeating-linear-gradient(-45deg, red 0, red 12.5%, transparent 0, transparent 25%, #58a 0, #58a 37.5%, transparent 0, transparent 50%) 0/5em 5em; background: linear-gradient(white,white) padding-box,repeating-linear-gradient(-45deg, red 0, red 12.5%, transparent 0, transparent 25%, #58a 0, #58a 37.5%, transparent 0, transparent 50%) 0/5em 5em;
.item-box{ .item-box{
/* background: #fbfaf5; */ /* background: #fbfaf5; */
padding: 20px; padding: 20px;
......
...@@ -141,6 +141,10 @@ export default { ...@@ -141,6 +141,10 @@ export default {
*/ */
id: Number, id: Number,
customerId: Number, customerId: Number,
customerQuery:{
type:Boolean,
default:false
}
}, },
data() { data() {
return { return {
...@@ -171,7 +175,7 @@ export default { ...@@ -171,7 +175,7 @@ export default {
this.customerFollow.form.bizId = this.id this.customerFollow.form.bizId = this.id
}) })
listServiceUser().then(r => { listServiceUser().then(r => {
console.log( r.data,'r.data跟进业务') // console.log( r.data,'r.data跟进业务')
this.serviceUserList = r.data this.serviceUserList = r.data
}) })
this.getCustomerFollowList() this.getCustomerFollowList()
...@@ -237,7 +241,7 @@ export default { ...@@ -237,7 +241,7 @@ export default {
this.$refs.dictMethod.changeValue(this.customerFollow.form.followMethod); this.$refs.dictMethod.changeValue(this.customerFollow.form.followMethod);
}, },
getCustomerFollowList() { getCustomerFollowList() {
if(this.$route.name === 'customerQuery'){ if(this.customerQuery){
getCustomerFollowPage({customerId: this.customerId,pageNo:this.pageNo,pageSize:this.pageSize}).then(r => { getCustomerFollowPage({customerId: this.customerId,pageNo:this.pageNo,pageSize:this.pageSize}).then(r => {
this.customerFollowList = r.data.list; this.customerFollowList = r.data.list;
this.total = r.data.total; this.total = r.data.total;
......
...@@ -52,6 +52,8 @@ export default { ...@@ -52,6 +52,8 @@ export default {
this.list.unshift(res.data) this.list.unshift(res.data)
this.index = 0 this.index = 0
}) })
}else{
this.index = index
} }
}, },
remoteMethod(keyword){ remoteMethod(keyword){
...@@ -61,6 +63,9 @@ export default { ...@@ -61,6 +63,9 @@ export default {
getCustomerSelect(params) getCustomerSelect(params)
.then(res => this.list = res.data.list) .then(res => this.list = res.data.list)
.finally(() => this.loading = false) .finally(() => this.loading = false)
},
reset(){
this.index=null
} }
} }
} }
......
...@@ -57,8 +57,11 @@ export default { ...@@ -57,8 +57,11 @@ export default {
} }
}, },
computed:{ computed:{
dicts(){
return this.getList(this.type)
},
dictList(){ dictList(){
return this.getList(this.type).filter(this.filter) return this.dicts.filter(this.filter)
}, },
formattedList(){ formattedList(){
let arr = [] let arr = []
...@@ -104,7 +107,7 @@ export default { ...@@ -104,7 +107,7 @@ export default {
}, },
setValueSync(){ setValueSync(){
if(this.value === null || this.value === undefined || this.value === ''){ if(this.value === null || this.value === undefined || this.value === ''){
return this.valueSync = this.multiple ? [] : this.value return this.valueSync = this.multiple ? [] : this.value
} }
if(this.multiple){ if(this.multiple){
let value = this.value || [] let value = this.value || []
......
...@@ -5,10 +5,11 @@ ...@@ -5,10 +5,11 @@
<el-image @click="dialogImageUrl = item.url; dialogVisible = true; " style="height: 148px; width:148px;" fit="fit" :src="item.url"> <el-image @click="dialogImageUrl = item.url; dialogVisible = true; " style="height: 148px; width:148px;" fit="fit" :src="item.url">
<video controls width="148px" height="148px" slot="error" :src="item.url" ></video> <video controls width="148px" height="148px" slot="error" :src="item.url" ></video>
</el-image> </el-image>
<div @click="handleRemove(index)" class="el-icon-error" style="font-size: 25px;cursor: pointer;position: absolute;right: -10px; top: -10px" ></div> <div v-if="!readonly" @click="handleRemove(index)" class="el-icon-error" style="font-size: 25px;cursor: pointer;position: absolute;right: -10px; top: -10px" ></div>
</div> </div>
<div> <div>
<el-upload <el-upload
v-if="!readonly"
multiple multiple
:action="uploadImgUrl" :action="uploadImgUrl"
list-type="picture-card" list-type="picture-card"
...@@ -23,7 +24,7 @@ ...@@ -23,7 +24,7 @@
<i class="el-icon-plus"></i> <i class="el-icon-plus"></i>
</el-upload> </el-upload>
<!-- 上传提示 --> <!-- 上传提示 -->
<div class="el-upload__tip" slot="tip" v-if="showTip"> <div class="el-upload__tip" slot="tip" v-if="showTip && !readonly">
{{ $t('请上传') }} {{ $t('请上传') }}
<template v-if="fileSize">{{ $t('大小不超过') }}<b style="color: #f56c6c">{{ fileSize }}MB</b> </template> <br> <template v-if="fileSize">{{ $t('大小不超过') }}<b style="color: #f56c6c">{{ fileSize }}MB</b> </template> <br>
<template v-if="fileType">{{ $t('格式为') }}<b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>{{ $t('的文件') }}</div> <template v-if="fileType">{{ $t('格式为') }}<b style="color: #f56c6c">{{ fileType.join("/") }}</b> </template>{{ $t('的文件') }}</div>
...@@ -63,6 +64,10 @@ export default { ...@@ -63,6 +64,10 @@ export default {
isShowTip: { isShowTip: {
type: Boolean, type: Boolean,
default: true default: true
},
readonly: {
type: Boolean,
default: false
} }
}, },
data() { data() {
......
...@@ -14,8 +14,12 @@ ...@@ -14,8 +14,12 @@
<el-option <el-option
v-for="(item, index) in list" v-for="(item, index) in list"
:key="item.id" :key="item.id"
:label="item['title' + lang]" :label="item['title' + lang] + (item.auditStatus === 2 ? '' : `(${lang === 'Zh' ? '待确定' : 'To be determined'})`)"
:value="index"> :value="index">
<span style="float: left">{{ item['title' + lang] }}</span>
<span style="float: right; color: #c76e6e; font-size: 13px">
{{ item.auditStatus === 2 ? '' : (lang === 'Zh' ? '待确定' : 'To be determined') }}
</span>
</el-option> </el-option>
</el-select> </el-select>
</template> </template>
...@@ -30,6 +34,16 @@ export default { ...@@ -30,6 +34,16 @@ export default {
lang: { lang: {
type: String, type: String,
default: 'Zh' default: 'Zh'
},
// 是否显示待确认商品,不传默认不显示
determined: {
type: Boolean,
default: false
},
// 是否显示已有商品,不传默认
status: {
type: [String, Number],
default: null
} }
}, },
data(){ data(){
...@@ -49,6 +63,10 @@ export default { ...@@ -49,6 +63,10 @@ export default {
value(val){ value(val){
// console.log('初始化内容', val) // console.log('初始化内容', val)
this.init() this.init()
},
// 类型变了,清空内容
productType(){
this.list = []
} }
}, },
created(){ created(){
...@@ -59,13 +77,15 @@ export default { ...@@ -59,13 +77,15 @@ export default {
init(){ init(){
if(!this.value){ if(!this.value){
this.index = null this.index = null
return return
} }
let index = this.list.findIndex(item => item.id == this.value) let index = this.list.findIndex(item => item.id == this.value)
if(index < 0){ if(index < 0){
getProduct(this.value).then(res => { getProduct(this.value).then(res => {
this.list.unshift(res.data) this.list.unshift(res.data)
this.index = 0 this.$nextTick(() => {
this.index = 0
})
}) })
}else this.index = index }else this.index = index
}, },
...@@ -80,7 +100,9 @@ export default { ...@@ -80,7 +100,9 @@ export default {
}, },
remoteMethod(keyword){ remoteMethod(keyword){
let params = { let params = {
pageSize: keyword ? 100000 : 10 pageSize: keyword ? 100000 : 10,
filter: !this.determined,
status:this.status
} }
if(this.productType){ if(this.productType){
params.typeId = this.productType params.typeId = this.productType
...@@ -93,4 +115,4 @@ export default { ...@@ -93,4 +115,4 @@ export default {
} }
} }
} }
</script> </script>
\ No newline at end of file
...@@ -32,14 +32,14 @@ ...@@ -32,14 +32,14 @@
:key="dict.value" :label="dict.label" :value="parseInt(dict.value)" /> :key="dict.value" :label="dict.label" :value="parseInt(dict.value)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('创建时间')" prop="createTime"> <!-- <el-form-item :label="$t('创建时间')" prop="createTime">
<el-date-picker <el-date-picker
v-model="form.createTime" v-model="form.createTime"
type="datetime" type="datetime"
value-format="timestamp" value-format="timestamp"
:placeholder="$t('选择创建时间')"> :placeholder="$t('选择创建时间')">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item> -->
<el-form-item :label="$t('客户经理')" prop="customerService"> <el-form-item :label="$t('客户经理')" prop="customerService">
<el-select v-model="form.customerService" :placeholder="$t('请选择客户经理')"> <el-select v-model="form.customerService" :placeholder="$t('请选择客户经理')">
<el-option v-for="item in serviceUserList" <el-option v-for="item in serviceUserList"
......
...@@ -2,8 +2,8 @@ ...@@ -2,8 +2,8 @@
<div> <div>
<div class="filters mb-10"> <div class="filters mb-10">
{{$t('运输方式')}} {{$t('运输方式')}}
<dict-selector :type='DICT_TYPE.ECW_TRANSPORT_TYPE' v-model="transportType" :placeholder="$t('请选择运输方式')" style="width:150px" /> <dict-selector :type='DICT_TYPE.ECW_TRANSPORT_TYPE' v-model="transportType" :placeholder="$t('请选择运输方式')" :filter="transportFilter" style="width:150px" />
{{$t('始发地')}} {{$t('始发地')}}
<el-select :placeholder="$t('请选择始发地')" v-model="exportCity" clearable> <el-select :placeholder="$t('请选择始发地')" v-model="exportCity" clearable>
<el-option v-for="item in exportCityList" :key="item.id" :label="item.titleZh" :value="item.id" /> <el-option v-for="item in exportCityList" :key="item.id" :label="item.titleZh" :value="item.id" />
...@@ -14,10 +14,13 @@ ...@@ -14,10 +14,13 @@
<el-option v-for="item in importCityList" :key="item.id" :label="item.titleZh" :value="item.id" /> <el-option v-for="item in importCityList" :key="item.id" :label="item.titleZh" :value="item.id" />
</el-select> </el-select>
{{$t('出货渠道')}}: <template v-if="type == 'air'">
<el-select :placeholder="$t('请选择目渠道')" v-model="channelId" clearable> {{$t('出货渠道')}}:
<el-select :placeholder="$t('请选择目渠道')" v-model="channelId" clearable>
<el-option v-for="item in channelList" :key="item.channelId" :label="item.nameZh" :value="item.channelId" /> <el-option v-for="item in channelList" :key="item.channelId" :label="item.nameZh" :value="item.channelId" />
</el-select> </el-select>
</template>
</div> </div>
<div class="mb-10"> <div class="mb-10">
<el-radio-group v-model="checkAll"> <el-radio-group v-model="checkAll">
...@@ -45,11 +48,16 @@ ...@@ -45,11 +48,16 @@
{{$l(row, 'destTitle')}} {{$l(row, 'destTitle')}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('渠道')" prop="startTitleZh"> <el-table-column :label="$t('渠道')" prop="startTitleZh" v-if="type == 'air'">
<template slot-scope="{row}"> <template slot-scope="{row}">
{{$l(row.channel, 'name')}} {{$l(row.channel, 'name')}}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column v-if="showAttr" :label="$t('商品特性')" prop="startTitleZh">
<template slot-scope="{row}">
{{ getAttrNames(row.attrId) }}
</template>
</el-table-column>
<el-table-column :label="$t('操作')" prop=""> <el-table-column :label="$t('操作')" prop="">
<template slot="header"> <template slot="header">
<el-checkbox @change="toggleGroupChecker(index, $event)" v-model="groupChecker[item.value]"></el-checkbox> <el-checkbox @change="toggleGroupChecker(index, $event)" v-model="groupChecker[item.value]"></el-checkbox>
...@@ -69,12 +77,17 @@ ...@@ -69,12 +77,17 @@
import {getChannelList} from '@/api/ecw/channel' import {getChannelList} from '@/api/ecw/channel'
import {getTradeCityList} from '@/api/ecw/region' import {getTradeCityList} from '@/api/ecw/region'
import {openedRouterList} from '@/api/ecw/warehouse' import {openedRouterList} from '@/api/ecw/warehouse'
import {getProductAttrList} from "@/api/ecw/productAttr";
import Template from "@/views/cms/template";
export default { export default {
props:{ components: {Template},
value: { props:{
type: Array value: {
}, type: Array
option: Object },
option: Object,
// 类型,sea海运,air空运
type: String
}, },
data(){ data(){
return { return {
...@@ -90,7 +103,7 @@ export default { ...@@ -90,7 +103,7 @@ export default {
hideMap: {}, // 折叠状态 hideMap: {}, // 折叠状态
checkAll: null, checkAll: null,
groupChecker: {}, // 分组全选状态 groupChecker: {}, // 分组全选状态
attrList:[], // 商品特性
} }
}, },
computed:{ computed:{
...@@ -114,12 +127,14 @@ export default { ...@@ -114,12 +127,14 @@ export default {
}) })
return ids return ids
}, },
// 根据选择的渠道筛选
availChannelList(){ availChannelList(){
return this.channelList.filter(item => !this.channelId || this.channelId == item.channelId) return this.channelList.filter(item => !this.channelId || this.channelId == item.channelId)
}, },
filteredRouterList(){ filteredRouterList(){
let transportTypeList = [] let transportTypeList = []
this.transportTypeDicts this.transportTypeDicts
.filter(this.transportFilter)
.filter(transport => !this.channelId || transport.cssClass == 'channel') .filter(transport => !this.channelId || transport.cssClass == 'channel')
.forEach(item => { .forEach(item => {
if(this.transportType === null || this.transportType == '' || this.transportType == item.value){ if(this.transportType === null || this.transportType == '' || this.transportType == item.value){
...@@ -151,6 +166,25 @@ export default { ...@@ -151,6 +166,25 @@ export default {
} }
}) })
return transportTypeList return transportTypeList
},
// 是否显示商品特性(渠道)
showAttr(){
return this.type == 'air'
},
// 显示产品特性
getAttrName(){
return (id) => {
let item = this.attrList.find(item => item.id == id)
if(!item) return ''
return this.$l(item, 'attrName')
}
},
// 显示多个商品特性
getAttrNames(){
return (ids) => {
if(!ids) return ''
return ids.split(',').filter( item => !!item).map(id => this.getAttrName(id)).join(',')
}
} }
}, },
watch:{ watch:{
...@@ -188,7 +222,7 @@ export default { ...@@ -188,7 +222,7 @@ export default {
if(option){ if(option){
this.changeOption() this.changeOption()
} }
} }
}, },
created(){ created(){
...@@ -200,7 +234,7 @@ export default { ...@@ -200,7 +234,7 @@ export default {
// 路线需要过滤失效的进出口城市,所以在程序加载后再加载路线 // 路线需要过滤失效的进出口城市,所以在程序加载后再加载路线
this.getOpenedRouterList() this.getOpenedRouterList()
}) })
if(this.value && this.value.length){ if(this.value && this.value.length){
this.selectedRoutes = this.value this.selectedRoutes = this.value
} }
...@@ -208,9 +242,19 @@ export default { ...@@ -208,9 +242,19 @@ export default {
if(this.option){ if(this.option){
this.changeOption() this.changeOption()
} }
// 如果显示特性,则需要查询特数据备用
if(this.showAttr){
this.getAttrList()
}
}, },
methods:{ methods:{
getAttrList(){
getProductAttrList().then(res => {
this.attrList = res.data
})
},
changeOption(){ changeOption(){
if(!this.option) return if(!this.option) return
this.importCity = +this.option.importCity || null this.importCity = +this.option.importCity || null
...@@ -258,22 +302,13 @@ export default { ...@@ -258,22 +302,13 @@ export default {
if(index > -1){ if(index > -1){
this.selectedRoutes.splice(index, 1) this.selectedRoutes.splice(index, 1)
} }
} }
}, },
getSelectedIndex(router){ getSelectedIndex(router){
return this.selectedRoutes.findIndex(item => { return this.selectedRoutes.findIndex(item => {
return item.lineId == router.id && item.channelId == router.channel.channelId return item.lineId == router.id && item.channelId == router.channel.channelId
}) })
/* let index = null
this.selectedRoutes.forEach((item, i)=>{
if(item.lineId == router.id && item.shippingChannelId == router.channel.channelId){
index = i
// break
}
})
return index */
}, },
SpanMethod({ row, column, rowIndex, columnIndex }){ SpanMethod({ row, column, rowIndex, columnIndex }){
if (columnIndex < 2 ) { if (columnIndex < 2 ) {
...@@ -290,7 +325,11 @@ export default { ...@@ -290,7 +325,11 @@ export default {
// 折叠,展开 // 折叠,展开
toggleHide(value){ toggleHide(value){
this.$set(this.hideMap, value, !this.hideMap[value]) this.$set(this.hideMap, value, !this.hideMap[value])
} },
// 运输方式筛选
transportFilter(item){
return (this.type == 'sea' ? ['1','2'] : ['3', '4']).indexOf(item.value) > -1
},
} }
} }
</script> </script>
...@@ -298,4 +337,4 @@ export default { ...@@ -298,4 +337,4 @@ export default {
.mb-10{ .mb-10{
margin-bottom: 10px margin-bottom: 10px
} }
</style> </style>
\ No newline at end of file
<template>
<el-select
v-model="valueSync"
multiple
filterable
clearable
remote
reserve-keyword
:disabled="disabled"
placeholder="请输入关键词"
@focus="remoteMethod('')"
:remote-method="remoteMethod"
:loading="loading">
<el-option
v-for="(item) in list"
:key="item.id"
:label="$l(item, 'company') + '('+item.companyCode+')'"
:value="item.id">
</el-option>
</el-select>
</template>
<script>
import {getSupplierList, getSupplierPage} from '@/api/ecw/supplier'
export default {
props:{
companyType: [String, Number],
value: [Array],
disabled: {
type: Boolean,
default: false
}
},
data(){
return {
valueSync: [],
list:[],
loading: false
}
},
computed:{
},
watch:{
valueSync(val){
this.$emit('input', val)
},
value(val){
this.valueSync = this.value
this.init(val)
}
},
created(){
this.valueSync = this.value
this.init(this.value)
},
methods:{
init(val){
if(val === null || val == undefined || val == '') return
let params = {
ids: val.toString()
}
getSupplierList(params).then(res => {
this.list = res.data
})
},
remoteMethod(keyword){
let params = {
pageSize: 500,
companyType: this.companyType
}
params.keyword = keyword
this.loading = true
getSupplierPage(params)
.then(res => this.list = res.data.list)
.finally(() => this.loading = false)
}
}
}
</script>
\ No newline at end of file
...@@ -17,11 +17,15 @@ ...@@ -17,11 +17,15 @@
</template> </template>
<script> <script>
import {getCustomerContactsSelect, getCustomerContacts} from '@/api/ecw/customerContacts' import {getCustomerContactsSelect, getCustomerContacts} from '@/api/ecw/customerContacts'
import {listSimpleUsers} from '@/api/system/user' import {listServiceUser, listSimpleUsers} from '@/api/system/user'
export default { export default {
props:{ props:{
value: [String, Number], value: [String, Number],
clearable: Boolean clearable: Boolean,
manage:{
type:Boolean,
default:false
}
}, },
data(){ data(){
return { return {
...@@ -44,9 +48,18 @@ export default { ...@@ -44,9 +48,18 @@ export default {
} }
}, },
created(){ created(){
if(this.manage){
// 客户经理
listServiceUser().then(r=>{
this.list = r.data;
})
}else {
// 全部客户
listSimpleUsers().then(res => { listSimpleUsers().then(res => {
this.list = res.data this.list = res.data
}) })
}
// this.init() // this.init()
}, },
methods:{ methods:{
...@@ -81,4 +94,4 @@ export default { ...@@ -81,4 +94,4 @@ export default {
} */ } */
} }
} }
</script> </script>
\ No newline at end of file
This diff is collapsed.
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
</div> </div>
<el-form label-position="left" label-width="100px"> <el-form label-position="left" label-width="100px">
<el-form-item :label="$t('抄送')"> <el-form-item :label="$t('抄送')">
<el-select v-model="valueSync" multiple :placeholder="$t('请选择抄送人')" style="width:100%" filterable > <el-select v-model="valueSync" multiple :placeholder="$t('请选择抄送人')" style="width:100%" filterable :disabled="disabled" >
<el-option <el-option
v-for="item in users" v-for="item in users"
:key="item.id" :key="item.id"
...@@ -45,7 +45,8 @@ export default { ...@@ -45,7 +45,8 @@ export default {
taskData: { // 任务实例的数据。传递时,可展示 UserTask 审核相关的信息 taskData: { // 任务实例的数据。传递时,可展示 UserTask 审核相关的信息
type: Array, type: Array,
default: () => [], default: () => [],
} },
disabled: Boolean
}, },
data(){ data(){
return { return {
...@@ -87,4 +88,4 @@ export default { ...@@ -87,4 +88,4 @@ export default {
.workflow ::v-deep .my-process-designer{ .workflow ::v-deep .my-process-designer{
height: auto; height: auto;
} }
</style> </style>
\ No newline at end of file
This diff is collapsed.
...@@ -161,7 +161,7 @@ ...@@ -161,7 +161,7 @@
"目的仓": "目的仓", "目的仓": "目的仓",
"目的地": "目的地", "目的地": "目的地",
"确定": "确定", "确定": "确定",
"确订打印": "确订打印", "确定打印": "确定打印",
"确认添加": "确认添加", "确认添加": "确认添加",
"税率": "税率", "税率": "税率",
"箱数": "箱数", "箱数": "箱数",
......
...@@ -94,10 +94,14 @@ export default { ...@@ -94,10 +94,14 @@ export default {
} }
}, },
created() { created() {
// 未避免频繁内存溢出,减少请求记录感染,开发的时候不轮询消息
if(process.env.NODE_ENV != 'development'){
setInterval(() => {
this.updateMessage()
}, 10000)
}
this.updateMessage() this.updateMessage()
setInterval(() => {
this.updateMessage()
}, 10000)
}, },
components: { components: {
Breadcrumb, Breadcrumb,
...@@ -158,7 +162,7 @@ export default { ...@@ -158,7 +162,7 @@ export default {
saveLocale(value) saveLocale(value)
}, */ }, */
async logout() { async logout() {
this.$modal.confirm('确定注销并退出系统吗?', '提示').then(() => { this.$modal.confirm(this.$t('确定注销并退出系统吗?'), this.$t('提示')).then(() => {
this.$store.dispatch('LogOut').then(() => { this.$store.dispatch('LogOut').then(() => {
location.href = '/'; location.href = '/';
}) })
......
import { Message, MessageBox, Notification, Loading } from 'element-ui' import { Message, MessageBox, Notification, Loading } from 'element-ui'
import i18n from "@/i18n";
let loadingInstance; let loadingInstance;
export default { export default {
// 消息提示 // 消息提示
msg(content) { msg(content) {
...@@ -21,19 +20,19 @@ export default { ...@@ -21,19 +20,19 @@ export default {
}, },
// 弹出提示 // 弹出提示
alert(content) { alert(content) {
MessageBox.alert(content, "系统提示") MessageBox.alert(content, i18n.t("系统提示"))
}, },
// 错误提示 // 错误提示
alertError(content) { alertError(content) {
MessageBox.alert(content, "系统提示", { type: 'error' }) MessageBox.alert(content, i18n.t("系统提示"), { type: 'error' })
}, },
// 成功提示 // 成功提示
alertSuccess(content) { alertSuccess(content) {
MessageBox.alert(content, "系统提示", { type: 'success' }) MessageBox.alert(content, i18n.t("系统提示"), { type: 'success' })
}, },
// 警告提示 // 警告提示
alertWarning(content) { alertWarning(content) {
MessageBox.alert(content, "系统提示", { type: 'warning' }) MessageBox.alert(content, i18n.t("系统提示"), { type: 'warning' })
}, },
// 通知提示 // 通知提示
notify(content) { notify(content) {
...@@ -52,18 +51,19 @@ export default { ...@@ -52,18 +51,19 @@ export default {
Notification.warning(content) Notification.warning(content)
}, },
// 确认窗体 // 确认窗体
confirm(content) { confirm(content) {
return MessageBox.confirm(content, "系统提示", { return MessageBox.confirm(content, i18n.t("系统提示"), {
confirmButtonText: '确定', confirmButtonText: i18n.t('确定'),
cancelButtonText: '取消', cancelButtonText: i18n.t('取消'),
type: "warning", type: "warning",
}) })
}, },
// 提交内容 // 提交内容
prompt(content) { prompt(content) {
return MessageBox.prompt(content, "系统提示", { return MessageBox.prompt(content, i18n.t("系统提示"), {
confirmButtonText: '确定', confirmButtonText: i18n.t('确定'),
cancelButtonText: '取消', cancelButtonText: i18n.t('取消'),
type: "warning", type: "warning",
}) })
}, },
......
...@@ -157,8 +157,8 @@ export const constantRoutes = [ ...@@ -157,8 +157,8 @@ export const constantRoutes = [
}, { }, {
path: 'process-instance/detail', path: 'process-instance/detail',
component: (resolve) => require(['@/views/bpm/processInstance/detail'], resolve), component: (resolve) => require(['@/views/bpm/processInstance/detail'], resolve),
name: '流程详情', name: 'Flow details',
meta: {title: '流程详情', activeMenu: '/bpm/task/my'} meta: {title: '流程详情',titleEn:'Flow details', activeMenu: '/bpm/task/my'}
} }
] ]
}, },
...@@ -171,13 +171,13 @@ export const constantRoutes = [ ...@@ -171,13 +171,13 @@ export const constantRoutes = [
path: 'empAchievement', path: 'empAchievement',
component: (resolve) => require(['@/views/ecw/deptTarget/empAchievement'], resolve), component: (resolve) => require(['@/views/ecw/deptTarget/empAchievement'], resolve),
name: '员工业绩', name: '员工业绩',
meta: {title: '员工业绩', activeMenu: '/deptTarget/index'} meta: {title: '员工业绩',titleEn: 'Emp Achievement', activeMenu: '/deptTarget/index'}
}, },
{ {
path: 'myDeptAchievement', path: 'myDeptAchievement',
component: (resolve) => require(['@/views/ecw/deptTarget/myDeptAchievement'], resolve), component: (resolve) => require(['@/views/ecw/deptTarget/myDeptAchievement'], resolve),
name: '我的部门业绩', name: '我的部门业绩',
meta: {title: '我的部门业绩', activeMenu: '/deptTarget/myDeptAchievement'} meta: {title: '我的部门业绩',titleEn: 'My dept Achievement', activeMenu: '/deptTarget/myDeptAchievement'}
} }
] ]
}, },
...@@ -466,6 +466,28 @@ export const constantRoutes = [ ...@@ -466,6 +466,28 @@ export const constantRoutes = [
} }
] ]
}, },
{
path: '/boxAir',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [
{
path: 'query/:shipmentId(\\d+)',
component: (resolve) => import('@/views/ecw/box/queryAir'),
props: true,
name: 'shippingDetail',
meta: {titleZh: '出货详情', titleEn: "Shipping Details", icon: '', activeMenu: '/shipment/boxDetail'}
},
{
path: 'shippingAir/:shipmentId(\\d+)',
component: (resolve) => import('@/views/ecw/box/shippingAir/shippingAir'),
props: true,
name: 'shippingAir',
meta: {titleZh: '空运出货操作', titleEn: "Ocean shipment operation", icon: '', activeMenu: '/shipment/boxAir'}
}
]
},
] ]
// 防止连续点击多次路由报错 // 防止连续点击多次路由报错
......
...@@ -70,6 +70,7 @@ export const DICT_TYPE = { ...@@ -70,6 +70,7 @@ export const DICT_TYPE = {
ECW_DATA_SOURCE: 'data_source', // 数据来源 ECW_DATA_SOURCE: 'data_source', // 数据来源
ECW_REGION_TYPE: 'region_trade_type', // 区域类型 ECW_REGION_TYPE: 'region_trade_type', // 区域类型
ECW_TRANSPORT_TYPE: 'transport_type', //货运方式 ECW_TRANSPORT_TYPE: 'transport_type', //货运方式
ECW_KYC_DATA: 'member_control_reuest', //会员控单方式
ECW_CHARGE_TYPE: 'warehouse_charge_type', //仓储收费方式 ECW_CHARGE_TYPE: 'warehouse_charge_type', //仓储收费方式
ECW_SHELF_TYPE: 'shelf_type', //货架类型 ECW_SHELF_TYPE: 'shelf_type', //货架类型
ECW_PRODUCT_MATERIAL: 'product_material', //商品材质 ECW_PRODUCT_MATERIAL: 'product_material', //商品材质
...@@ -118,6 +119,9 @@ export const DICT_TYPE = { ...@@ -118,6 +119,9 @@ export const DICT_TYPE = {
ECW_CUSTOMER_RESOURCE_TYPE: 'customer_resource_type', // 客户资源类型 ECW_CUSTOMER_RESOURCE_TYPE: 'customer_resource_type', // 客户资源类型
ECW_CUSTOMER_TRANSPORT_TYPE: 'customer_transport_type', // 客户出货渠道(跟运输方式相同,但是显示全部) ECW_CUSTOMER_TRANSPORT_TYPE: 'customer_transport_type', // 客户出货渠道(跟运输方式相同,但是显示全部)
ECW_ORDER_APPROVAL_TYPE: 'order_approval_type', // 订单相关审批类型 ECW_ORDER_APPROVAL_TYPE: 'order_approval_type', // 订单相关审批类型
ECW_FEE_SOURCE: 'fee_source', // 费用来源
STOCK_UP_EXCEPTION_TYPE: 'stock_up_exception_type', // 备货异常类型,
ORDER_ITEM_PACK_STATUS: 'order_item_pack_status', // 空运备货打包状态
//--------ecw--------- //--------ecw---------
CUSTOMER_STATUS: 'customer_status', CUSTOMER_STATUS: 'customer_status',
CUSTOMER_SOURCE: 'customer_source', CUSTOMER_SOURCE: 'customer_source',
...@@ -151,6 +155,7 @@ export const DICT_TYPE = { ...@@ -151,6 +155,7 @@ export const DICT_TYPE = {
CUSTOMER_CREDIT_RULE_TYPE: 'customer_credit_rule_type', CUSTOMER_CREDIT_RULE_TYPE: 'customer_credit_rule_type',
CUSTOMER_LEVEL_RULE_TYPE: 'customer_level_rule_type', CUSTOMER_LEVEL_RULE_TYPE: 'customer_level_rule_type',
CUSTOMER_ESOURCE_TYPE:'customer_resource_type',//客户资源类型 CUSTOMER_ESOURCE_TYPE:'customer_resource_type',//客户资源类型
CUSTOMER_OPERATE_TYPE:'customer_operate_type',
// order // order
ORDER_TYPE: 'order_type', // 订单类型 ORDER_TYPE: 'order_type', // 订单类型
PRODUCT_RECORD_ATTRIBUTE: 'product_record_attribute', //产品备案属性 PRODUCT_RECORD_ATTRIBUTE: 'product_record_attribute', //产品备案属性
...@@ -178,6 +183,8 @@ export const DICT_TYPE = { ...@@ -178,6 +183,8 @@ 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',//泡货异常处理结果
ORDER_QUERY_PROD_FIELD: 'order_query_prod_field',//订单查询产品字段
ORDER_QUERY_NO_FIELD: 'order_query_no_field',//订单查询非产品字段
NEED_KNOW_TYPE:'need_know_type',//需知类型 NEED_KNOW_TYPE:'need_know_type',//需知类型
NEED_KNOW_STATUS:'need_know_status',//需知状态 NEED_KNOW_STATUS:'need_know_status',//需知状态
MANUAL_EXCEPTION_TYPE:'manual_exception_type', MANUAL_EXCEPTION_TYPE:'manual_exception_type',
...@@ -185,6 +192,8 @@ export const DICT_TYPE = { ...@@ -185,6 +192,8 @@ export const DICT_TYPE = {
WAREHOUSING_SPECIFICATION_TYPE: 'warehousing_specification_type', WAREHOUSING_SPECIFICATION_TYPE: 'warehousing_specification_type',
ECW_AUTH_TYPE:'auth_type',//品牌授权 ECW_AUTH_TYPE:'auth_type',//品牌授权
NEED_ORDER_INQUIRY: 'need_order_inquiry', // 是否需要単询
ECASH_INIT:'ecash_init', //e-cash ECASH_INIT:'ecash_init', //e-cash
FEE_TYPE:'receivable_fee_type', FEE_TYPE:'receivable_fee_type',
// PAY_TYPE:'payment_type', // PAY_TYPE:'payment_type',
...@@ -193,6 +202,8 @@ export const DICT_TYPE = { ...@@ -193,6 +202,8 @@ export const DICT_TYPE = {
ORDER_SPECIAL_NEEDS:'order_special_needs', // 订单特殊需求 ORDER_SPECIAL_NEEDS:'order_special_needs', // 订单特殊需求
ORDER_ABNORMAL_STATE:'order_abnormal_state', ORDER_ABNORMAL_STATE:'order_abnormal_state',
TARGET_TYPE:'target_type',//部门业绩目标类型 TARGET_TYPE:'target_type',//部门业绩目标类型
CEBE_UNIT:'cube_unit',//目标单位
RECEIPT_ITEM_STATE:'receipt_item_state',//收款单明细状态
// ========== 出货模块 ========== // ========== 出货模块 ==========
BOX_SHIPPING_TRAILER_STATUS: 'shipping_trailer_status', // 拖车状态 BOX_SHIPPING_TRAILER_STATUS: 'shipping_trailer_status', // 拖车状态
BOX_SHIPPING_CUSTOMS_TYPE: 'shipping_customs_type', // 报关方式 BOX_SHIPPING_CUSTOMS_TYPE: 'shipping_customs_type', // 报关方式
...@@ -214,7 +225,9 @@ export const DICT_TYPE = { ...@@ -214,7 +225,9 @@ export const DICT_TYPE = {
BOX_SHIPPING_ERROR_TYPE: "shipping_error_type",// 起运异常状态 BOX_SHIPPING_ERROR_TYPE: "shipping_error_type",// 起运异常状态
BOX_ARRIVAL_ERROR_TYPE: "arrival_error_type",// 到港异常状态 BOX_ARRIVAL_ERROR_TYPE: "arrival_error_type",// 到港异常状态
APP_TYPE:"app_type", //系统类型 APP_TYPE:"app_type", //系统类型
AIR_SHIPMENT_PROCESS:'air_shipment_process'
} }
/** /**
......
...@@ -10,6 +10,7 @@ export function checkPermi(value) { ...@@ -10,6 +10,7 @@ export function checkPermi(value) {
const permissions = store.getters && store.getters.permissions const permissions = store.getters && store.getters.permissions
const permissionDatas = value const permissionDatas = value
const all_permission = "*:*:*"; const all_permission = "*:*:*";
console.log(permissionDatas)
const hasPermission = permissions.some(permission => { const hasPermission = permissions.some(permission => {
return all_permission === permission || permissionDatas.includes(permission) return all_permission === permission || permissionDatas.includes(permission)
......
...@@ -16,7 +16,7 @@ const service = axios.create({ ...@@ -16,7 +16,7 @@ const service = axios.create({
// axios中请求配置有baseURL选项,表示请求URL公共部分 // axios中请求配置有baseURL选项,表示请求URL公共部分
baseURL: (localStorage.VUE_APP_BASE_API || process.env.VUE_APP_BASE_API) + '/admin-api/', // 此处的 /admin-api/ 地址,原因是后端的基础路径为 /admin-api/ baseURL: (localStorage.VUE_APP_BASE_API || process.env.VUE_APP_BASE_API) + '/admin-api/', // 此处的 /admin-api/ 地址,原因是后端的基础路径为 /admin-api/
// 超时 // 超时
timeout: 100000 timeout: 1000 * 30
}) })
// request拦截器 // request拦截器
service.interceptors.request.use(config => { service.interceptors.request.use(config => {
...@@ -87,6 +87,7 @@ service.interceptors.response.use(res => { ...@@ -87,6 +87,7 @@ service.interceptors.response.use(res => {
return Promise.reject('无效的会话,或者会话已过期,请重新登录。') return Promise.reject('无效的会话,或者会话已过期,请重新登录。')
} else if (code === 500) { } else if (code === 500) {
Message({ Message({
dangerouslyUseHTMLString: true,
message: msg, message: msg,
type: 'error' type: 'error'
}) })
...@@ -106,6 +107,12 @@ service.interceptors.response.use(res => { ...@@ -106,6 +107,12 @@ service.interceptors.response.use(res => {
} else if (code === 555) { } else if (code === 555) {
// 额外情况 // 额外情况
return Promise.reject(res.data) return Promise.reject(res.data)
} else if (code === 566) {
// 额外情况
return Promise.reject(res.data)
} else if (code === 666) {
// 额外情况
return Promise.reject(res.data)
} else if (code !== 200) { } else if (code !== 200) {
Notification.error({ Notification.error({
title: msg title: msg
......
...@@ -281,6 +281,11 @@ export default { ...@@ -281,6 +281,11 @@ export default {
component: "BoxSplitDetail", component: "BoxSplitDetail",
id: this.processInstance.businessKey, id: this.processInstance.businessKey,
}, },
// 退场拆单,跟出货装柜拆单一样
exit_split: {
component: "BoxSplitDetail",
id: this.processInstance.businessKey,
},
merge_detail: { merge_detail: {
component: "MergeDetail", component: "MergeDetail",
id: this.processInstance.businessKey, id: this.processInstance.businessKey,
...@@ -339,6 +344,77 @@ export default { ...@@ -339,6 +344,77 @@ export default {
id: this.processInstance.businessKey, id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath path: this.processInstance.processDefinition?.formCustomViewPath
}, },
//付款单审核-所有审核流程详情组件
finance_payment_approve:{
component: () => import('@/views/ecw/financial/components/PaymentApproval'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
//收款单审核
finance_receipt_approve:{
component: () => import('@/views/ecw/financial/components/CollectionApproval'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
//收款单核销
finance_receipt_write_off:{
component: () => import('@/views/ecw/financial/components/CollectionWriteoff'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
//收款单反核销审核
finance_receipt_write_off_no:{
component: () => import('@/views/ecw/financial/components/CollectionApproval'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
//收款单核销反审核
finance_receipt_approve_no:{
component: () => import('@/views/ecw/financial/components/CollectionApproval'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
//收款单银行实收明细核销
finance_receipt_item_write_off:{
component: () => import('@/views/ecw/financial/components/CollectionBankDetail'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
//收款单银行实收反核销
finance_receipt_item_write_off_no:{
component: () => import('@/views/ecw/financial/components/CollectionBankDetail'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
//佣金付款单审核详情-关于佣金付款单所有审核详情
commissionPaymentDetails:{
component: ()=>import('@/views/ecw/financial/components/commissionPaymentDetails.vue'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
/*撤销拆单*/
split_revoke:{
component: () => import("@/views/ecw/order/components/SplitRevokeDetail"),
id: this.processInstance.businessKey
},
// 不可出渠道异常审核
not_shiping_channel:{
component: () => import('@/views/ecw/order/components/NotShipingChannel'),
id: this.processInstance.businessKey,
path: this.processInstance.processDefinition?.formCustomViewPath
},
// 出货批量加价审核
box_batch_markup:{
component: () => import('@/views/ecw/box/components/batchMakeUpDetail.vue'),
processId: this.processInstance.businessKey,
type: this.processInstance.processDefinition?.formCustomViewPath
},
// 可获移交详情
customer_handover_details:{
component: () => import('@/views/ecw/customer/components/customer-handover-details.vue'),
processId: this.processInstance.businessKey,
type: this.processInstance.processDefinition?.formCustomViewPath
}
} }
console.log('formCustomViewPath', this.processInstance.processDefinition.formCustomViewPath.trim()) console.log('formCustomViewPath', this.processInstance.processDefinition.formCustomViewPath.trim())
return map[this.processInstance.processDefinition.formCustomViewPath.trim()] return map[this.processInstance.processDefinition.formCustomViewPath.trim()]
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
<div class="app-container"> <div class="app-container">
<!-- 搜索工作栏 --> <!-- 搜索工作栏 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item :label="$t('流程编号')" prop="processId"> <el-form-item :label="$t('流程编号')" prop="instanceId">
<el-input v-model="queryParams.instanceId" :placeholder="$t('请输入流程编号')" clearable/> <el-input v-model="queryParams.instanceId" :placeholder="$t('请输入流程编号')" clearable/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('流程名称')" prop="processName"> <el-form-item :label="$t('流程名称')" prop="processName">
<el-input v-model="queryParams.processName" :placeholder="$t('请输入任务名称')" clearable/> <el-input v-model="queryParams.processName" :placeholder="$t('请输入任务名称')" clearable/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('流程分类')" prop="processName"> <el-form-item :label="$t('流程分类')" prop="categoryId">
<el-select v-model="queryParams.categoryId" :placeholder="$t('请选择流程分类')" clearable> <el-select v-model="queryParams.categoryId" :placeholder="$t('请选择流程分类')" clearable>
<el-option v-for="dict in this.getDictDatas(DICT_TYPE.BPM_MODEL_CATEGORY)" <el-option v-for="dict in this.getDictDatas(DICT_TYPE.BPM_MODEL_CATEGORY)"
:key="dict.value" :label="$l(dict, 'label')" :value="dict.value"/> :key="dict.value" :label="$l(dict, 'label')" :value="dict.value"/>
......
<template> <template>
<iframe src="https://chat.groupage.cn/" class="iframe"></iframe> <iframe :src="url" class="iframe"></iframe>
</template> </template>
<style> <style>
.iframe{ .iframe{
...@@ -8,3 +8,24 @@ ...@@ -8,3 +8,24 @@
border: none; border: none;
} }
</style> </style>
<script>
import {getUserProfile} from "@/api/system/user";
export default {
data() {
return {
username: ''
}
},
computed:{
url(){
return 'https://chatgpt.groupage.cn/#/' + this.username
}
},
created() {
getUserProfile().then(res => {
this.username = res.data.username
})
}
}
</script>
This diff is collapsed.
<template>
<div class="app-approvalShipping">
<h1>{{$t('申请信息')}}{{$t('出货信息')}}</h1>
<el-descriptions :column="6" border>
<el-descriptions-item :label="$t('自编号')">{{boxBackVO.selfNo}}</el-descriptions-item>
<el-descriptions-item :label="$t('运输方式')">
<dict-tag :type="DICT_TYPE.ECW_TRANSPORT_TYPE" :value="boxBackVO.transportType" />
</el-descriptions-item>
<el-descriptions-item :label="$t('出货渠道')">
{{getShipChannelName(boxBackVO.shippingChannelId)}}
</el-descriptions-item>
<el-descriptions-item :label="$t('柜型')">
{{cabinetLabel}}
</el-descriptions-item>
<el-descriptions-item :label="$t('体积/重量')">
{{getVolumeWeight(loadDetail.totalStatistics)}}
</el-descriptions-item>
<el-descriptions-item :label="$t('货柜状态')">
{{boxBackVO.shipmentStatusText}}
</el-descriptions-item>
</el-descriptions>
<div v-if="approvalInfo.applyReason">
<h1>{{$t('申请原因')}}</h1>
<div>
{{approvalInfo.applyReason}}
</div>
</div>
<el-table :data="loadDetail.sectionOrderList" border class="mt-10">
<el-table-column prop="orderNo" :label="$t('订单号')" align="center">
<template v-slot="{row}">
<el-button type="text" @click="jumpOrderDetail(row)">{{row.orderNo}}</el-button>
</template>
</el-table-column>
<el-table-column :label="$t('货物信息')" align="center" width="500px">
<template v-slot="{row}">
<section>
<div v-for="(item, index) in row.goodsList" :key="index">
<div>{{index+1}}{{$l(item, 'prodTitle')}}</div>
</div>
</section>
</template>
</el-table-column>
<el-table-column :label="$t('收费箱数')" align="center" prop="num"></el-table-column>
<el-table-column :label="$t('收费体积')" align="center" prop="chargeVolume"></el-table-column>
<el-table-column :label="$t('收费重量')" align="center" prop="chargeWeight"></el-table-column>
<el-table-column :label="$t('加价金额')" align="center">
<template slot-scope="{row}" v-if="details">
<div>
{{$t('运费')}}{{details.freightFee || 0}}{{ currencyMap[details.freightCurrencyId]}}/{{unitMap[details.freightUnitId]}}
</div>
<div>
{{$t('清关费')}}{{details.clearanceFee || 0}}{{ currencyMap[details.clearanceCurrencyId]}}/{{unitMap[details.clearanceUnitId]}}
</div>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import { approvalDetail } from "@/api/ecw/box";
import { getSeaStatus, getTotlContent } from "../shippingSea/utils";
import { getCabinetPage } from "@/api/ecw/cabinet";
import { getChannelList } from "@/api/ecw/channel";
import Decimal from "decimal.js";
import Template from "@/views/cms/template/index.vue";
import {getUnitList} from "@/api/ecw/unit";
import {getCurrencyList} from "@/api/ecw/currency";
/**
* 批量加价审核详情
*/
export default {
name: "BatchMakeUpDetail",
components: {Template},
props: {
processId: {
type: [Number, String],
},
type: String,
},
data() {
return {
unitList:[],
currencyList:[],
approvalInfo: {},
boxBackVO: {},
loadDetail: {},
// 柜型
cabinetLabel: "",
//渠道
channelList: [],
// 弹出配置
dialogConfig: {
title: "",
visible: false,
},
srcStrs: [],
};
},
created() {
getUnitList().then(res => this.unitList = res.data)
getCurrencyList().then(res => this.currencyList = res.data)
getChannelList().then((res) => (this.channelList = res.data));
},
methods: {
getTotlContent,
/* 获取详情 */
getApprovalDetail(processId) {
approvalDetail({ approvalId: processId }).then((res) => {
this.approvalInfo = res.data.approvalInfo;
this.boxBackVO = res.data.boxBackVO;
this.loadDetail = res.data.loadDetail;
});
},
/* 获取柜型 */
getCabinetLabel(cabinetId) {
getCabinetPage(null).then((response) => {
const cabinetList = response.data.list;
for (const cabinetItem of cabinetList) {
if (cabinetItem.id == cabinetId) {
this.cabinetLabel = cabinetItem.name;
break;
}
}
});
},
/* 合计 */
calcSum(goodsList) {
let sum = 0;
goodsList.forEach((element) => {
sum = Decimal.add(sum, element.num).toNumber();
});
return sum;
},
/* 跳转订单详情 */
jumpOrderDetail(row) {
this.$router.push("/order/detail?orderId=" + row.orderId);
},
},
watch: {
processId: {
immediate: true,
handler(val) {
this.getApprovalDetail(val);
},
},
boxBackVO(val) {
// 柜型
this.getCabinetLabel(val.cabinetId);
},
},
computed: {
/* 渠道 */
getShipChannelName() {
return (shippingChannelId) => {
for (const channelItem of this.channelList) {
if (channelItem.channelId == shippingChannelId) {
return this.$l(channelItem, "name");
}
}
};
},
/* 体积重量 */
getVolumeWeight() {
return (total) => {
return this.getTotlContent(total);
};
},
/* 是否显示卸柜箱数 */
isShowColumn() {
return (shippingVO) => {
return getSeaStatus(shippingVO) >= 182 ? true : false;
};
},
details(){
if(!this.approvalInfo) return null
return JSON.parse(this.approvalInfo?.details)
},
currencyMap(){
let map = {}
this.currencyList.forEach(item => {
map[item.id] = this.$l(item, 'title')
})
return map
},
unitMap(){
let map = {}
this.unitList.forEach(item => {
map[item.id] = this.$l(item, 'title')
})
return map
},
},
};
</script>
<style lang="scss" scoped>
.el-image {
border-radius: 5px;
background-color: #ebeef5;
box-shadow: 0 0 5px 1px #ccc;
::v-deep .el-image__inner {
transition: all 0.3s;
cursor: pointer;
&:hover {
transform: scale(1.2);
}
}
::v-deep .image-slot {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
height: 100%;
color: #909399;
font-size: 30px;
}
}
</style>
<template>
<div class="shippingSea-dialog">
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item :label="$t('运输方式')" prop="transportType">
<el-radio-group v-model="form.transportType">
<el-radio v-for="dict in transportTypes" :key="dict.value" :label="dict.value">{{$l(dict, 'label')}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="$t('出货渠道')" prop="shippingChannelId">
<el-select v-model="form.shippingChannelId" :placeholder="$t('请选择出货渠道')">
<el-option v-for="item in channelList" :label="$l(item, 'name')" :value="item.channelId" :key="item.channelId"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('始发地')" prop="startWarehouseId">
<el-select v-model="form.startWarehouseId" :placeholder="$t('请选择始发地')">
<el-option v-for="item in exportWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('目的地')" prop="destWarehouseId">
<el-select v-model="form.destWarehouseId" :placeholder="$t('请选择目的地')">
<el-option v-for="item in importWarehouseList" :label="$l(item, 'title')" :value="item.id" :key="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="$t('目的港清关')" prop="destinationClearance">
<el-radio-group v-model="form.destinationClearanceSelect" @input="destinationClearanceSelect">
<el-radio :label="1">{{$t('我司')}}</el-radio>
<el-radio :label="3">{{$t('客户')}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form.destinationClearanceSelect==1" prop="destinationClearance" :rules="[
{ required: true, message: this.$t('清关方式不能为空'), trigger: 'blur' }
]">
<el-radio-group v-model="form.destinationClearance">
<el-radio :label="1">{{$t('我司清关')}}</el-radio>
<el-radio :label="2">{{$t('合作方清关')}}</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item :label="$t('发货方式')" prop="deliveryType">
<el-radio-group v-model="form.deliveryType">
<el-radio :label="1">{{$t('多票')}}</el-radio>
<el-radio :label="2">{{$t('单票')}}</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm">{{$t('确定')}}</el-button>
<el-button @click="cancel">{{$t('取消')}}</el-button>
</div>
</div>
</template>
<script>
import { createbox, updatebox } from "@/api/ecw/boxAir";
import { getChannelList } from '@/api/ecw/channel'
export default {
name: "editAirForm",
inheritAttrs: false,
props: {
transportTypes: Array,
warehouseList: Array,
cabinetList: Array,
shipmentObj: Object,
},
created() {
this.form = { ...this.shipmentObj };
if(this.form.destinationClearance && this.form.destinationClearance != 3){
this.form.destinationClearanceSelect = 1
}
this.getChannelList()
},
data() {
return {
// 表单参数
form: {},
channelList: [],
// 表单校验
rules: {
shippingChannelId: [
{ required: true, message: this.$t('出货渠道不能为空'), trigger: 'blur' }
],
startWarehouseId: [
{ required: true, message: this.$t('始发地不能为空'), trigger: 'blur' }
],
destWarehouseId: [
{ required: true, message: this.$t('目的地不能为空'), trigger: 'blur' }
]
}
};
},
methods: {
getChannelList() {
getChannelList().then((res) => (this.channelList = res.data))
},
destinationClearanceSelect(val) {
this.$set(this.form,'destinationClearance',val)
},
/** 提交按钮 */
submitForm() {
this.$refs['form'].validate((valid) => {
if (!valid) {
return
}
// 修改的提交
if (this.form.id != null) {
updatebox(this.form).then((response) => {
this.$modal.msgSuccess(this.$t('修改成功'))
this.$emit("closeDialog", "edit");
})
return
}
// 添加的提交
createbox(this.form).then((response) => {
this.$modal.msgSuccess(this.$t('新增成功'))
this.$emit("closeDialog", "edit");
})
})
},
/** 取消按钮 */
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.
...@@ -158,7 +158,7 @@ ...@@ -158,7 +158,7 @@
<el-form-item :label="$t('自单代报订单方数')"> <el-form-item :label="$t('自单代报订单方数')">
{{form.orderReportNumber}} m³ {{form.orderReportNumber}} m³
</el-form-item> </el-form-item>
<el-form-item :label="$t('已装柜数')"> <el-form-item :label="$t('已装柜数')">
{{form.loadingNumber}} m³ {{form.loadingNumber}} m³
</el-form-item> </el-form-item>
...@@ -338,10 +338,11 @@ export default { ...@@ -338,10 +338,11 @@ export default {
//在仓 = 已入仓-已封柜 //在仓 = 已入仓-已封柜
//this.$set(this.form, 'warehousingNumber', Decimal(this.form.warehousedNumber).minus(this.form.loadingNumber)) //this.$set(this.form, 'warehousingNumber', Decimal(this.form.warehousedNumber).minus(this.form.loadingNumber))
//}, //},
/* 2023-05-06 微信群@郑屹反馈确认,由接口计算,前端无需处理
'form.loadingNumber'(){ 'form.loadingNumber'(){
//在仓 = 已入仓-已封柜 //在仓 = 已入仓-已封柜
this.$set(this.form, 'warehousingNumber', Decimal(this.form.warehousedNumber).minus(this.form.loadingNumber)) this.$set(this.form, 'warehousingNumber', Decimal(this.form.warehousedNumber).minus(this.form.loadingNumber))
} }*/
}, },
methods: { methods: {
getVolume(){ getVolume(){
...@@ -354,10 +355,13 @@ export default { ...@@ -354,10 +355,13 @@ export default {
} }
let data = { let data = {
transportId: this.form.transportType, transportId: this.form.transportType,
channelId: this.form.shippingChannelId,
departureId: this.form.startWarehouseId, departureId: this.form.startWarehouseId,
objectiveId: this.form.destWarehouseId objectiveId: this.form.destWarehouseId
} }
// 空运才需要渠道
if(data.transportId == 4){
data.channelId = this.form.shippingChannelId
}
// 获得已封柜方数 // 获得已封柜方数
getBoxedVolume(data).then(res => { getBoxedVolume(data).then(res => {
this.$set(this.form, 'loadingNumber', res.data || 0) this.$set(this.form, 'loadingNumber', res.data || 0)
......
...@@ -56,6 +56,14 @@ ...@@ -56,6 +56,14 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item :label="$t('提单制作')" prop="ladingBillStatus">
<el-select v-model="queryParams.ladingBillStatus" :placeholder="$t('请选择提单制作状态')" clearable size="small">
<el-option v-for="(item,index) in ladingBillStatusData" :key="index" :label="item" :value="index">
</el-option>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button> <el-button type="primary" icon="el-icon-search" @click="handleQuery">{{$t('搜索')}}</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button> <el-button icon="el-icon-refresh" @click="resetQuery">{{$t('重置')}}</el-button>
...@@ -107,6 +115,13 @@ ...@@ -107,6 +115,13 @@
<el-table-column :label="$t('状态')" align="center" prop="shipmentStatusText" /> <el-table-column :label="$t('状态')" align="center" prop="shipmentStatusText" />
<el-table-column :label="$t('提单状态')" align="center" prop="ladingBillStatus" width="180">
<template slot-scope="scope">
<span>{{ ladingBillStatusData[scope.row.ladingBillStatus] }}</span>
</template>
</el-table-column>
<el-table-column :label="$t('日期')" align="center" prop="createTime" width="180"> <el-table-column :label="$t('日期')" align="center" prop="createTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ new Date(scope.row.createTime).format('yyyy-MM-dd hh:mm:ss') }}</span> <span>{{ new Date(scope.row.createTime).format('yyyy-MM-dd hh:mm:ss') }}</span>
...@@ -119,7 +134,7 @@ ...@@ -119,7 +134,7 @@
{{$t('操作')}}<i class="el-icon-arrow-down el-icon--right"></i> {{$t('操作')}}<i class="el-icon-arrow-down el-icon--right"></i>
</el-button> </el-button>
<el-dropdown-menu slot="dropdown"> <el-dropdown-menu slot="dropdown">
<!-- <el-dropdown-item :disabled="scope.row.ldStatus>=46" command="edit">{{$t('编辑')}}</el-dropdown-item> --> <el-dropdown-item :disabled="scope.row.prStatus>21" command="edit" v-hasPermi="['shipment:box:update']">{{$t('编辑')}}</el-dropdown-item>
<el-dropdown-item command="sea" v-hasPermi="['shipment:box:action:sea']">{{$t('操作-海运')}}</el-dropdown-item> <el-dropdown-item command="sea" v-hasPermi="['shipment:box:action:sea']">{{$t('操作-海运')}}</el-dropdown-item>
<el-dropdown-item command="error" v-hasPermi="['shipment:box:action:error']">{{$t('异常登记')}}</el-dropdown-item> <el-dropdown-item command="error" v-hasPermi="['shipment:box:action:error']">{{$t('异常登记')}}</el-dropdown-item>
<el-dropdown-item command="cost" v-hasPermi="['shipment:box:action:cost']">{{$t('费用登记')}}</el-dropdown-item> <el-dropdown-item command="cost" v-hasPermi="['shipment:box:action:cost']">{{$t('费用登记')}}</el-dropdown-item>
...@@ -268,6 +283,11 @@ export default { ...@@ -268,6 +283,11 @@ export default {
// 通知列表 // 通知列表
noticeList: [], noticeList: [],
allUsers: [], allUsers: [],
ladingBillStatusData: [
this.$t("未完成"),
this.$t("部分完成"),
this.$t("已完成"),
],
}; };
}, },
computed: { computed: {
...@@ -297,7 +317,7 @@ export default { ...@@ -297,7 +317,7 @@ export default {
this.DICT_TYPE.ECW_TRANSPORT_TYPE this.DICT_TYPE.ECW_TRANSPORT_TYPE
).filter((item) => item.value == "1" || item.value == "2"); ).filter((item) => item.value == "1" || item.value == "2");
getWarehouseList().then((res) => (this.warehouseList = res.data)); getWarehouseList().then((res) => (this.warehouseList = res.data));
getCabinetPage(null).then((response) => { getCabinetPage({status:0}).then((response) => {
this.cabinetList = response.data.list; this.cabinetList = response.data.list;
}); });
this.getList(); this.getList();
......
...@@ -301,7 +301,7 @@ export default { ...@@ -301,7 +301,7 @@ export default {
this.DICT_TYPE.ECW_TRANSPORT_TYPE this.DICT_TYPE.ECW_TRANSPORT_TYPE
).filter((item) => item.value == "4"); ).filter((item) => item.value == "4");
getWarehouseList().then((res) => (this.warehouseList = res.data)); getWarehouseList().then((res) => (this.warehouseList = res.data));
getCabinetPage(null).then((response) => { getCabinetPage({status:0}).then((response) => {
this.cabinetList = response.data.list; this.cabinetList = response.data.list;
}); });
this.getList(); this.getList();
......
...@@ -9,7 +9,22 @@ ...@@ -9,7 +9,22 @@
<el-row style="margin-top:15px"> <el-row style="margin-top:15px">
<el-table :data="billData.list" border max-height="500px"> <el-table :data="billData.list" border max-height="500px">
<el-table-column :label="$t('序号')" align="center" width="50" prop="tidanNo" /> <el-table-column :label="$t('序号')" align="center" width="50" prop="tidanNo" />
<el-table-column :label="$t('订单号')" align="center" prop="orderNo" /> <el-table-column :label="$t('订单号')" align="center" prop="orderNo">
<template slot-scope="scope">
<div>
{{scope.row.orderNo}}
</div>
<div style="color:blue;fontWeight:bold;">
{{ scope.row.drawee? scope.row.drawee:''}}
</div>
<div style="color:red;fontWeight:bold;">
{{ scope.row.applicationInfo? scope.row.applicationInfo : ''}}
</div>
<div style="color:red;fontWeight:bold;">
{{ scope.row.customsTypeName? scope.row.customsTypeName : ''}}
</div>
</template>
</el-table-column>
<el-table-column :label="$t('货物信息')" align="center" prop=""> <el-table-column :label="$t('货物信息')" align="center" prop="">
<template slot-scope="scope"> <template slot-scope="scope">
<section class="table-goodList"> <section class="table-goodList">
......
...@@ -50,6 +50,7 @@ import html2canvas from 'html2canvas'; ...@@ -50,6 +50,7 @@ import html2canvas from 'html2canvas';
import { jsPDF } from "jspdf"; import { jsPDF } from "jspdf";
import {uploadFile} from '@/api/infra/file' import {uploadFile} from '@/api/infra/file'
import FileSaver from 'file-saver' import FileSaver from 'file-saver'
import {getOrder, getOrderDetail} from "@/api/ecw/order";
window.html2canvas = html2canvas window.html2canvas = html2canvas
export default { export default {
name: "makeLadingBill", name: "makeLadingBill",
...@@ -175,7 +176,13 @@ export default { ...@@ -175,7 +176,13 @@ export default {
showLoaingTemplate() { showLoaingTemplate() {
this.visible = true; this.visible = true;
}, },
// 先获取订单信息,pdf用 订单号+唛头命名
createPdf(){ createPdf(){
getOrder(this.currRow.orderId).then(res => {
this.afterCreatePdf(res.data)
})
},
afterCreatePdf(orderData){
let loading = this.$loading() let loading = this.$loading()
html2canvas(document.querySelector("#html2canvas-container"), {dpi:144, useCORS: true}).then(canvas => { html2canvas(document.querySelector("#html2canvas-container"), {dpi:144, useCORS: true}).then(canvas => {
const doc = new jsPDF('p','pt','a4',true); const doc = new jsPDF('p','pt','a4',true);
...@@ -194,13 +201,13 @@ export default { ...@@ -194,13 +201,13 @@ export default {
/* doc.save("a4.pdf"); /* doc.save("a4.pdf");
return Promise.reject() */ return Promise.reject() */
let form = new FormData() let form = new FormData()
let file = this.selfNo + '-' + this.currRow.tidanNo + '.pdf' let file = this.selfNo + "-" + this.currRow.tidanNo + ' ' + orderData.marks + '.pdf' //this.selfNo + '-' + this.currRow.tidanNo + '.pdf'
form.append('file', new File([doc.output('arraybuffer')], file, {type: 'application/pdf'})) form.append('file', new File([doc.output('arraybuffer')], file, {type: 'application/pdf'}))
form.append('path', `admin/shipment/${this.selfNo}/pdf/${file}`) // 最前面不能有/,否则返回的url会有两个/ form.append('path', `admin/shipment/${this.selfNo}/pdf/${file}`) // 最前面不能有/,否则返回的url会有两个/
/* let blob = new Blob([doc.output('arraybuffer')], {type: "application/pdf"}) /* let blob = new Blob([doc.output('arraybuffer')], {type: "application/pdf"})
FileSaver.saveAs(blob, file); FileSaver.saveAs(blob, file);
return */ return */
return uploadFile(form) return uploadFile(form)
}).then(res => { }).then(res => {
......
...@@ -140,9 +140,9 @@ ...@@ -140,9 +140,9 @@
</el-table-column> </el-table-column>
<el-table-column :label="$t('操作')" align="center"> <el-table-column :label="$t('操作')" align="center">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="primary" size="small" @click="editCostClick(scope.row)" style="marginRight:10px;">{{$t('编辑')}}</el-button> <el-button type="primary" size="small" @click="editCostClick(scope.row)" style="marginRight:10px;" v-hasPermi="['ecw:box-cost:update']">{{$t('编辑')}}</el-button>
<el-popconfirm :title="$t('确定是否删除')" @confirm="deleteCostClick(scope.row)"> <el-popconfirm :title="$t('确定是否删除')" @confirm="deleteCostClick(scope.row)">
<el-button type="danger" size="small" slot="reference">{{$t('删除')}}</el-button> <el-button type="danger" size="small" slot="reference" v-hasPermi="['ecw:box-cost:delete']">{{$t('删除')}}</el-button>
</el-popconfirm> </el-popconfirm>
</template> </template>
</el-table-column> </el-table-column>
......
This diff is collapsed.
<template>
<div>
<el-form ref="agentForm" :model="agentObj" :rules="rules" label-width="120px">
<el-form-item :label="$t('代理商Agent')" prop="agentId">
<supplierOutSelect v-model="agentObj.agentId" :companyType="'1'" :areaType="1" :placeholder="$t('请选择代理商')" :allSupplier="this.$attrs.allSupplier" />
<el-button v-hasPermi="['ecw:supplier:query']" type="text" style="font-size: 13px; margin-left: 240px;" @click="SupplierDetail">{{$t('查看代理商详情')}}</el-button>
</el-form-item>
</el-form>
<el-row class="operate-button">
<el-button type="success" @click="onSubmit">{{$t('提交')}}</el-button>
<el-button @click="cancel">{{$t('关闭')}}</el-button>
</el-row>
</div>
</template>
<script>
import { agentSet } from "@/api/ecw/boxSea";
import supplierOutSelect from "./common/supplierOutSelect.vue";
import { formatStringNumber, serviceMsg } from "../utils";
/**
* agent
*/
export default {
name: "agent",
inheritAttrs: false,
components: { supplierOutSelect },
data() {
return {
// agent对象
agentObj: {},
// 校验
rules: {
agentId: [{ required: true, message: this.$t("必填"), trigger: "change" }],
},
supplierId: 0
};
},
created() {
const { currNode, shipmentObj } = this.$attrs;
const voName = currNode.voName;
let oldData = { ...shipmentObj[voName] };
oldData = formatStringNumber(oldData, ["agentId"]);
this.agentObj = oldData;
},
methods: {
/** 提交 */
onSubmit() {
this.$refs["agentForm"].validate((valid) => {
if (valid) {
agentSet({
shipmentId: this.$attrs.shipmentObj.id,
...this.agentObj,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel("submit");
});
});
}
});
},
/** 取消 */
cancel(type) {
this.$emit("closeDialog", type);
},
SupplierDetail(){
this.supplierId = this.agentObj.agentId
this.$router.push('/supplier/detail?id='+this.supplierId)
},
},
};
</script>
<style lang="scss" scoped>
</style>
<template>
<div>
<el-form ref="arrivalForm" :rules="rules" :model="airArrivalInfo" label-width="120px">
<!-- <el-form-item :label="$t('预计到港时间')">{{getExpectedTime()}}</el-form-item>
<el-form-item :label="$t('实际到港时间')" prop="apRealTime">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="arrivalObj.apRealTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item :label="$t('确认到港')">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="arrivalObj.apConfirmTime" value-format="yyyy-MM-dd HH:mm:ss">
</el-date-picker>
<p class="message-area" v-show="showMsg">{{$t('请确认是否有异常,如有异常请进行异常登记')}}</p>
</el-form-item> -->
<el-form-item :label="$t('实际二程起飞时间')" prop="actSecondTime" v-show="this.$attrs.shipmentObj.bookAirInfo.voyage">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="airArrivalInfo.actSecondTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item :label="$t('预计到港时间')" prop="estTime">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="airArrivalInfo.estTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
<el-form-item :label="$t('实际到港时间')" prop="actTime">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="airArrivalInfo.actTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-form>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit(1)">{{$t('保存')}}</el-button>
<el-button type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button>
<el-button @click="cancel">{{$t('关闭')}}</el-button>
<el-button type="primary" @click="exceptionReg" :disabled="!showMsg">{{$t('异常登记')}}</el-button>
</el-row>
<!-- 对话框 -->
<el-dialog custom-class="shipping-dialog" :title="$t('票异常')" :visible.sync="dialogVisible" width="700px" :modal-append-to-body=false append-to-body destroy-on-close>
<regError @closeDialog="regCloseDialog" v-bind="$attrs" />
</el-dialog>
</div>
</template>
<script>
import regError from "../../regError";
import dayjs from "dayjs";
import { arrivalCreate } from "@/api/ecw/boxSeaAir";
import { formatDateStr, serviceMsg } from "../utils";
/**
* 到港
*/
export default {
name: "arrival",
inheritAttrs: false,
components: {
regError,
},
data() {
return {
// 到港对象
airArrivalInfo: {},
// 校验
rules: {
actSecondTime: [
{ required: true, message: this.$t("必填"), trigger: "change" },
],
actTime: [
{ required: true, message: this.$t("必填"), trigger: "change" },
]
},
// 弹窗配置
dialogVisible: false,
// 提示消息
showMsg: false,
inspectionTimeArrival: this.getDictDatas(
this.DICT_TYPE.BOX_INSPECTION_TIME_ARRIVAL
)[0].value,
};
},
created() {
const voName = this.$attrs.currNode.voName;
let oldData = { ...this.$attrs.shipmentObj[voName] };
oldData = formatDateStr(
oldData,
["actSecondTime", "estTime", "actTime"],
"YYYY-MM-DD HH:mm:ss"
);
this.airArrivalInfo = oldData;
},
watch: {
// 实际二程起飞时间
"airArrivalInfo.actSecondTime"(val) {
this.compareDate(this.getHeadTravelTime(), val);
},
"airArrivalInfo.estTime"(val) {
this.compareDate(this.airArrivalInfo.actTime, val);
},
"airArrivalInfo.actTime"(val) {
this.compareDate(this.airArrivalInfo.estTime, val);
},
},
methods: {
regCloseDialog(type) {
this.dialogVisible = false;
if (type === "error") {
this.$emit("getBoxInfo");
}
},
// 获取预计到港时间
getHeadTravelTime() {
const { shippingInfo } = this.$attrs.shipmentObj;
if (shippingInfo) {
return dayjs(shippingInfo.realHeadTravelTime).format(
"YYYY-MM-DD HH:mm:ss"
);
}
return null;
},
// 时间比较
compareDate(expectedTime, apConfirmTime) {
this.showMsg = false;
let date1 = null,
date2 = null;
if (expectedTime) date1 = dayjs(expectedTime);
if (apConfirmTime) date2 = dayjs(apConfirmTime);
if (date1 && date2) {
const days = date2.diff(date1, "day");
if (days > this.inspectionTimeArrival) {
this.showMsg = true;
}
}
},
// 异常登记
exceptionReg() {
this.dialogVisible = true;
},
/** 提交 */
onSubmit(operateType) {
this.$refs["arrivalForm"].validate((valid) => {
if (valid) {
arrivalCreate({
...this.airArrivalInfo,
shipmentId: this.$attrs.shipmentObj.id,
operateType,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel("submit");
});
});
}
});
},
/** 取消 */
cancel(type) {
this.$emit("closeDialog", type);
},
},
};
</script>
<style lang="scss" scoped>
.message-area {
margin: 0;
color: red;
}
</style>
<template>
<div>
<el-form ref="bargeForm" :model="bargeObj" :rules="rules" label-width="80px">
<el-form-item :label="$t('驳船')" prop="bgExmtStatus">
<el-radio-group v-model="bargeObj.bgExmtStatus">
<el-radio v-for="item in bargeStatus" :key="item.value" :label="item.value">{{item.label}}</el-radio>
</el-radio-group>
</el-form-item>
<div v-show="bargeObj.bgExmtStatus === '2'">
<el-row>
<el-col :span="12">
<el-form-item :label="$t('驳船预计开船时间')" label-width="130px">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="bargeObj.bgEstShipTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="$t('通知人')" label-width="80px">
<userSelect v-model="bargeObj.notifyUser" :placeholder="$t('请选择通知人')" :allUsers="this.$attrs.allUsers" />
</el-form-item>
</el-col>
</el-row>
<el-form-item :label="$t('驳船实际开船时间')" label-width="130px">
<el-date-picker type="datetime" :placeholder="$t('请选择日期')" v-model="bargeObj.bgRealShipTime" value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
</el-form-item>
</div>
</el-form>
<el-row class="operate-button">
<el-button type="primary" @click="onSubmit(1)">{{$t('保存')}}</el-button>
<el-button type="success" @click="onSubmit(2)">{{$t('提交')}}</el-button>
<el-button @click="cancel">{{$t('关闭')}}</el-button>
</el-row>
</div>
</template>
<script>
import { bargeCreate } from "@/api/ecw/boxSea";
import userSelect from "./common/userSelect.vue";
import { constantDict, formatDateStr, formatNumberString, serviceMsg } from "../utils";
/**
* 驳船
*/
export default {
name: "barge",
inheritAttrs: false,
components: { userSelect },
data() {
return {
// 驳船对象
bargeObj: {},
// 驳船状态
bargeStatus: constantDict.bgExmtStatus,
// 校验
rules: {
bgExmtStatus: [{ required: true, message: this.$t("必填"), trigger: "change" }],
},
};
},
created() {
const voName = this.$attrs.currNode.voName;
let oldData = { ...this.$attrs.shipmentObj[voName] };
oldData = formatDateStr(oldData, ["bgEstShipTime", "bgRealShipTime"]);
oldData = formatNumberString(oldData, ["bgExmtStatus"]);
this.bargeObj = oldData;
},
methods: {
/** 提交 */
onSubmit(operateType) {
this.$refs["bargeForm"].validate((valid) => {
if (valid) {
bargeCreate({
...this.bargeObj,
shipmentId: this.$attrs.shipmentObj.id,
operateType,
}).then((res) => {
serviceMsg(res, this).then(() => {
this.cancel("submit");
});
});
}
});
},
/** 取消 */
cancel(type) {
this.$emit("closeDialog", type);
},
},
};
</script>
<style lang="scss" scoped>
</style>
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.
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.
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.
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.
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.
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.
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.
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