Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-app-operator-master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lanbaoming
jiedao-app-operator-master
Commits
aaf02179
Commit
aaf02179
authored
Jun 20, 2023
by
我在何方
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://gitlab.jdshangmen.com/jiedao-app/jiedao-app-operator
into dev
parents
ddf174c7
dad20b2e
Changes
24
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
1183 additions
and
53 deletions
+1183
-53
boxAir.js
src/api/ecw/boxAir.js
+89
-0
index.vue
src/components/ProductSelector/index.vue
+4
-0
index.vue
src/components/RoutersSelector/index.vue
+1
-1
index.js
src/router/index.js
+1
-1
dict.js
src/utils/dict.js
+1
-0
indexAir.vue
src/views/ecw/box/indexAir.vue
+25
-8
queryAir.vue
src/views/ecw/box/queryAir.vue
+733
-0
index.vue
src/views/ecw/box/shippingAir/nodePage/mergePkg/index.vue
+224
-0
pkgPage.vue
src/views/ecw/box/shippingAir/nodePage/mergePkg/pkgPage.vue
+15
-0
unPkgPage.vue
...views/ecw/box/shippingAir/nodePage/mergePkg/unPkgPage.vue
+15
-0
seaProcess.vue
src/views/ecw/box/shippingAir/seaProcess.vue
+9
-3
utils.js
src/views/ecw/box/shippingAir/utils.js
+8
-8
packaging-type.vue
src/views/ecw/channel/componrnts/packaging-type.vue
+2
-2
edit.vue
src/views/ecw/channel/edit.vue
+10
-1
myAchievement.vue
src/views/ecw/deptTarget/myAchievement.vue
+1
-1
myDeptAchievement.vue
src/views/ecw/deptTarget/myDeptAchievement.vue
+1
-1
myDeptTarget.vue
src/views/ecw/deptTarget/myDeptTarget.vue
+5
-2
edit.vue
src/views/ecw/order/edit.vue
+3
-0
Warehouse.vue
src/views/ecw/order/warehousing/components/Warehouse.vue
+4
-4
index.vue
src/views/ecw/order/warehousing/index.vue
+1
-1
index.vue
src/views/ecw/product/index.vue
+9
-6
edit.vue
src/views/ecw/productAttr/edit.vue
+7
-4
edit.vue
src/views/ecw/productPrice/edit.vue
+12
-7
index.vue
src/views/ecw/productPrice/index.vue
+3
-3
No files found.
src/api/ecw/boxAir.js
View file @
aaf02179
...
...
@@ -69,4 +69,93 @@ export function createGoods(data) {
method
:
"
post
"
,
data
,
});
}
/**
* 获得获得合包箱分页
*
* @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
,
});
}
\ No newline at end of file
src/components/ProductSelector/index.vue
View file @
aaf02179
...
...
@@ -63,6 +63,10 @@ export default {
value
(
val
){
// console.log('初始化内容', val)
this
.
init
()
},
// 类型变了,清空内容
productType
(){
this
.
list
=
[]
}
},
created
(){
...
...
src/components/RoutersSelector/index.vue
View file @
aaf02179
...
...
@@ -48,7 +48,7 @@
{{
$l
(
row
,
'
destTitle
'
)
}}
</
template
>
</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}"
>
{{
$l
(
row
.
channel
,
'
name
'
)
}}
</
template
>
...
...
src/router/index.js
View file @
aaf02179
...
...
@@ -474,7 +474,7 @@ export const constantRoutes = [
children
:
[
{
path
:
'
query/:shipmentId(
\\
d+)
'
,
component
:
(
resolve
)
=>
import
(
'
@/views/ecw/box/query
'
),
component
:
(
resolve
)
=>
import
(
'
@/views/ecw/box/query
Air
'
),
props
:
true
,
name
:
'
shippingDetail
'
,
meta
:
{
titleZh
:
'
出货详情
'
,
titleEn
:
"
Shipping Details
"
,
icon
:
''
,
activeMenu
:
'
/shipment/boxDetail
'
}
...
...
src/utils/dict.js
View file @
aaf02179
...
...
@@ -200,6 +200,7 @@ export const DICT_TYPE = {
ORDER_SPECIAL_NEEDS
:
'
order_special_needs
'
,
// 订单特殊需求
ORDER_ABNORMAL_STATE
:
'
order_abnormal_state
'
,
TARGET_TYPE
:
'
target_type
'
,
//部门业绩目标类型
CEBE_UNIT
:
'
cube_unit
'
,
//目标单位
RECEIPT_ITEM_STATE
:
'
receipt_item_state
'
,
//收款单明细状态
// ========== 出货模块 ==========
BOX_SHIPPING_TRAILER_STATUS
:
'
shipping_trailer_status
'
,
// 拖车状态
...
...
src/views/ecw/box/indexAir.vue
View file @
aaf02179
...
...
@@ -56,7 +56,11 @@
<!-- 列表 -->
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table-column
:label=
"$t('自编号')"
align=
"center"
prop=
"selfNo"
/>
<el-table-column
:label=
"$t('自编号')"
align=
"center"
prop=
"selfNo"
>
<template
slot-scope=
"scope"
>
<a
href=
"javascript:void(0)"
@
click=
"handleCommand(scope.row, 'detail')"
>
{{
scope
.
row
.
selfNo
}}
</a>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('运输方式')"
align=
"center"
prop=
"transportType"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
:value=
"scope.row.transportType"
/>
...
...
@@ -69,15 +73,19 @@
</
template
>
</el-table-column>
<el-table-column
label=
"方数(预装/已装)"
align=
"center"
prop=
"squareNumber"
/>
<el-table-column
label=
"重量(预装/已装)"
align=
"center"
prop=
"weight"
/>
<el-table-column
:label=
"$t('状态')"
align=
"center"
prop=
"boxStatus"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.BOX_SHIPMENT_STATUS"
:value=
"scope.row.boxStatus"
/>
<el-table-column
:label=
"$t('方数(预装/已装)')"
align=
"center"
prop=
""
>
<
template
slot-scope=
"{row}"
>
{{
row
.
boxStatistics
.
volume
}}
/
{{
row
.
boxStatistics
.
loadVolume
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('重量(预装/已装)')"
align=
"center"
prop=
"weight"
>
<
template
slot-scope=
"{row}"
>
{{
row
.
boxStatistics
.
weight
}}
/
{{
row
.
boxStatistics
.
loadWeight
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('状态')"
align=
"center"
prop=
"shipmentStatusText"
/>
<el-table-column
:label=
"$t('日期')"
align=
"center"
prop=
"createTime"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<span>
{{
new
Date
(
scope
.
row
.
createTime
).
format
(
'
yyyy-MM-dd hh:mm:ss
'
)
}}
</span>
...
...
@@ -160,12 +168,17 @@
<
/template
>
<
script
>
import
{
createbox
,
updatebox
,
deletebox
,
getbox
,
getboxPage
,
exportboxExcel
}
from
'
@/api/ecw/box
'
import
{
deletebox
,
getbox
,
getboxPage
,
exportboxExcel
}
from
'
@/api/ecw/box
'
import
{
getChannelList
}
from
'
@/api/ecw/channel
'
import
{
getWarehouseList
}
from
'
@/api/ecw/warehouse
'
import
costForm
from
'
./costForm.vue
'
import
regError
from
'
./regError.vue
'
import
editAirForm
from
'
./editAirForm.vue
'
import
{
downloadFile
,
downloadFileByUrl
,
formatDate
,
}
from
"
./shippingAir/utils
"
;
export
default
{
name
:
'
indexAir
'
,
...
...
@@ -283,6 +296,7 @@ export default {
this
.
getChannelList
()
}
,
methods
:
{
formatDate
,
getChannelList
()
{
getChannelList
().
then
((
res
)
=>
(
this
.
channelList
=
res
.
data
))
}
,
...
...
@@ -395,6 +409,9 @@ export default {
/** 查看按钮操作 */
handleCommand
(
row
,
command
)
{
switch
(
command
)
{
case
"
detail
"
:
this
.
$router
.
push
(
"
/boxAir/query/
"
+
row
.
id
);
break
;
case
'
air
'
:
this
.
$router
.
push
(
'
/boxAir/shippingAir/
'
+
row
.
id
)
break
...
...
src/views/ecw/box/queryAir.vue
0 → 100644
View file @
aaf02179
<
template
>
<div
class=
"app-container shipping-detail"
>
<el-row
type=
"flex"
style=
"margin-top: 15px; margin-bottom: 15px"
justify=
"center"
>
<el-col
:xs=
"24"
:sm=
"24"
:md=
"24"
:lg=
"20"
:xl=
"22"
>
<div
style=
"display: flex; justify-content: space-between;align-items: flex-end;"
>
<h2>
{{
$t
(
'
出货详情
'
)
}}
</h2>
<div>
<!--
<el-button
size=
"small"
@
click=
"handleCommand('edit')"
>
{{
$t
(
'
编辑
'
)
}}
</el-button>
-->
<el-button
size=
"small"
v-hasPermi=
"['shipment:box:action:sea']"
@
click=
"handleCommand('router')"
>
{{
$t
(
'
操作
'
)
}}
</el-button>
<el-button
type=
"primary"
v-hasPermi=
"['shipment:box:action:error']"
size=
"small"
@
click=
"handleCommand('error')"
>
{{
$t
(
'
异常登记
'
)
}}
</el-button>
<el-button
type=
"primary"
v-hasPermi=
"['shipment:box:action:cost']"
size=
"small"
@
click=
"handleCommand('cost')"
>
{{
$t
(
'
费用登记
'
)
}}
</el-button>
<!--
<el-button
type=
"danger"
size=
"small"
@
click=
"handleCommand('delete')"
>
{{
$t
(
'
删除
'
)
}}
</el-button>
-->
</div>
</div>
<el-card
style=
"margin-top: 15px"
>
<el-descriptions
:column=
"4"
border
>
<el-descriptions-item
:label=
"$t('自编号')"
>
{{
shipmentObj
.
selfNo
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('运输方式')"
>
<dict-tag
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
:value=
"shipmentObj.transportType"
/>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('出货渠道')"
>
{{
getShipChannelName
(
shipmentObj
.
shippingChannelId
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('状态')"
>
{{
shipmentObj
.
shipmentStatusText
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('总计')"
>
{{
getBoxSum
(
shipmentObj
.
boxStatistics
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('始发地')"
>
{{
getCityName
(
shipmentObj
.
startWarehouseId
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('目的地')"
>
{{
getCityName
(
shipmentObj
.
destWarehouseId
)
}}
</el-descriptions-item>
<el-descriptions-item
label=
"SO NO"
>
{{
shipmentObj
.
bookSeaInfo
?
shipmentObj
.
bookSeaInfo
.
sono
:
''
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('目的港清关')"
>
{{
getClearance
(
shipmentObj
.
destinationClearance
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('发货方式')"
>
{{
getdeliveryType
(
shipmentObj
.
deliveryType
)
}}
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-tabs
style=
"margin-top: 15px"
type=
"border-card"
value=
"detail"
>
<el-tab-pane
:label=
"$t('明细')"
name=
"detail"
>
<div
class=
"detail-pane"
>
<div>
{{
$t
(
'
当前部分
'
)
}}
:
</div>
<el-select
:placeholder=
"$t('请选择')"
v-model=
"sectionId"
@
change=
"sectionChange"
>
<el-option
key=
"0"
:label=
"$t('全部')"
value=
"0"
></el-option>
<el-option
v-for=
"item in sectionList"
:key=
"item.id"
:label=
"item.title"
:value=
"item.id"
></el-option>
</el-select>
<p
class=
"box-weight"
>
{{
getSectionInfo
}}
</p>
<div
style=
"margin-left:30px;"
>
<el-button
type=
"primary"
v-hasPermi=
"['shipment:box:order:select']"
size=
"small"
@
click=
"()=>updateStatus('selected')"
>
{{
$t
(
'
更新所选订单状态
'
)
}}
</el-button>
<el-button
type=
"primary"
v-hasPermi=
"['shipment:box:order:all']"
size=
"small"
@
click=
"()=>updateStatus('all')"
>
{{
$t
(
'
更新全部订单状态
'
)
}}
</el-button>
</div>
<div
class=
"document-status"
>
<p>
{{
$t
(
'
单证状态
'
)
}}
:
</p>
<template
v-for=
"(item, index) in getDocStatus(sectionObj.sectionOrderList)"
>
<dict-tag
:type=
"DICT_TYPE.ECW_CUSTOMS_TYPE"
:value=
"item"
:key=
"index"
/>
</
template
>
</div>
</div>
<el-table
:data=
"sectionObj.sectionOrderList"
style=
"width: 100%"
border
@
selection-change=
"handleSelectionChange"
>
<el-table-column
type=
"selection"
width=
"50"
:selectable=
"selectable"
></el-table-column>
>
<el-table-column
align=
"center"
:label=
"$t('序号')"
width=
"50"
prop=
"tidanNum"
/>
<el-table-column
prop=
"orderNo"
:label=
"$t('订单号')"
align=
"center"
>
<
template
v-slot=
"scope"
>
<a
href=
"javascript:void(0)"
@
click=
"jumpOrderDetail(scope.row)"
>
{{
scope
.
row
.
orderNo
}}
</a>
</
template
>
</el-table-column>
<el-table-column
prop=
"goodsList"
:label=
"$t('货物信息')"
width=
"230px"
align=
"center"
>
<
template
v-slot=
"{row}"
>
<section>
<div
v-for=
"(item, index) in row.goodsList"
:key=
"index"
>
{{
index
+
1
}}
:
{{
item
.
prodTitleZh
}}
</div>
</section>
</
template
>
</el-table-column>
<el-table-column
prop=
"num"
:label=
"$t('计划箱数')"
align=
"center"
></el-table-column>
<el-table-column
prop=
"installNum"
:label=
"$t('实装箱数')"
align=
"center"
></el-table-column>
<el-table-column
prop=
"unloadNum"
:label=
"$t('卸柜箱数')"
align=
"center"
></el-table-column>
<el-table-column
prop=
"destWarehouseName"
:label=
"$t('提货点')"
align=
"center"
></el-table-column>
<el-table-column
prop=
"volume"
:label=
"$t('体积')"
align=
"center"
></el-table-column>
<el-table-column
prop=
"weight"
:label=
"$t('重量')"
align=
"center"
></el-table-column>
<el-table-column
prop=
"totalWorth"
:label=
"$t('货值')"
align=
"center"
></el-table-column>
<el-table-column
prop=
"customsType"
:label=
"$t('报关方式')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<div
:class=
"scope.row.customsType !== 1 ? 'customsType-red' : ''"
>
<dict-tag
:type=
"DICT_TYPE.ECW_CUSTOMS_TYPE"
:value=
"scope.row.customsType"
/>
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"customsFee"
:label=
"$t('报关费用')"
align=
"center"
></el-table-column>
<el-table-column
prop=
""
:label=
"$t('操作')"
align=
"center"
width=
"120px"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"primary"
size=
"small"
:disabled=
"scope.row.abnormalDealStatus === 1"
@
click=
"()=>updateStatus('single', scope.row)"
>
{{
$t
(
'
更新状态
'
)
}}
</el-button>
</
template
>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane
:label=
"$t('状态')"
name=
"status"
>
<div
v-for=
"(item, index) in logList"
:key=
"item.id"
:class=
"`shipping-status ${index === 0 ? 'curr-status' : '' }`"
>
<div
class=
"status-line"
></div>
<div
class=
"status-number"
>
{{logList.length - index}}
</div>
<div
class=
"status-info"
>
<div>
{{$l(item, 'title')}}
</div>
<div>
<p>
{{formatDate(item.createTime)}}
</p>
<p>
{{item.operator}}
</p>
</div>
</div>
</div>
</el-tab-pane>
<el-tab-pane
:label=
"$t('费用')"
name=
"fee"
>
<el-table
:data=
"costList"
style=
"width: 100%"
border
>
<el-table-column
type=
"index"
align=
"center"
:label=
"$t('序号')"
width=
"50"
/>
<el-table-column
prop=
"costType"
:label=
"$t('费用类型')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.FEE_TYPE"
:value=
"scope.row.costType"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"supplierId"
:label=
"$t('供应商')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
{{
getSupplier
(
scope
.
row
.
supplierId
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"price"
:label=
"$t('金额')"
align=
"center"
></el-table-column>
<el-table-column
prop=
"payPrice"
:label=
"$t('实付金额')"
align=
"center"
></el-table-column>
<el-table-column
prop=
"payTime"
:label=
"$t('实付日期')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.payTime"
>
{{
formatDate
(
scope
.
row
.
payTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('操作')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<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-button
type=
"danger"
size=
"small"
slot=
"reference"
v-hasPermi=
"['ecw:box-cost:delete']"
>
{{
$t
(
'
删除
'
)
}}
</el-button>
</el-popconfirm>
</
template
>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane
:label=
"$t('异常')"
name=
"error"
>
<el-table
:data=
"errorList"
style=
"width: 100%"
border
>
<el-table-column
type=
"index"
align=
"center"
:label=
"$t('序号')"
width=
"50"
/>
<el-table-column
prop=
"opStep"
:label=
"$t('操作')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.BOX_SHIPPING_PROCESS"
:value=
"scope.row.opStep"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"billAbnId"
:label=
"$t('异常')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.BOX_SHIPPING_TICKET_EXCEPTION"
:value=
"scope.row.billAbnId"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
"abnDetail"
:label=
"$t('异常描述')"
align=
"center"
width=
"300"
></el-table-column>
<el-table-column
prop=
"delayDays"
:label=
"$t('异常延迟天数')"
align=
"center"
></el-table-column>
<el-table-column
prop=
""
:label=
"$t('异常时间')"
align=
"center"
width=
"200"
>
<
template
slot-scope=
"scope"
>
<span
v-if=
"scope.row.abnStartTime"
>
{{
formatDate
(
scope
.
row
.
abnStartTime
)
}}
-
</span>
<span
v-if=
"scope.row.abnEndTime"
>
{{
formatDate
(
scope
.
row
.
abnEndTime
)
}}
</span>
</
template
>
</el-table-column>
</el-table>
</el-tab-pane>
<el-tab-pane
:label=
"$t('表单')"
name=
"download"
>
<el-table
:data=
"downloadList"
style=
"width: 50%"
>
<el-table-column
prop=
"title"
:label=
"$t('文件类型')"
></el-table-column>
<el-table-column
prop=
""
:label=
"$t('下载链接')"
>
<
template
slot-scope=
"scope"
>
<a
v-if=
"scope.row.serviceName"
href=
"javascript:void(0)"
@
click=
"downloadDetailFile(scope.row)"
v-hasPermi=
"[`$
{scope.row.hasPermi}`]">
{{
$t
(
'
下载
'
)
}}
</a>
<div
v-else
>
{{
$t
(
'
未完成
'
)
}}
</div>
</
template
>
</el-table-column>
</el-table>
</el-tab-pane>
</el-tabs>
</el-col>
</el-row>
<!-- 对话框(添加 / 修改) -->
<el-dialog
:title=
"dialogConfig.title"
:visible.sync=
"dialogConfig.visible"
:width=
"dialogConfig.width"
append-to-body
class=
"shippingSea-dialog"
>
<
template
v-if=
"dialogConfig.type === 'edit'"
>
<editForm
v-if=
"dialogConfig.visible"
@
closeDialog=
"closeDialog"
:shipmentObj=
"shipmentObj"
:warehouseList=
"warehouseList"
:transportTypes=
"transportTypes"
:cabinetList=
"cabinetList"
/>
</
template
>
<
template
v-if=
"dialogConfig.type === 'cost'"
>
<costForm
v-if=
"dialogConfig.visible"
@
closeDialog=
"closeDialog"
:shipmentObj=
"shipmentObj"
:costDetail=
"costDetail"
/>
</
template
>
<
template
v-if=
"dialogConfig.type === 'error'"
>
<regError
v-if=
"dialogConfig.visible"
@
closeDialog=
"closeDialog"
:shipmentObj=
"shipmentObj"
:allUsers=
"allUsers"
/>
</
template
>
<
template
v-if=
"dialogConfig.type === 'updateError'"
>
<updateError
v-if=
"dialogConfig.visible"
@
closeDialog=
"closeDialog"
:shipmentObj=
"shipmentObj"
:errorInfo=
"errorInfo"
/>
</
template
>
</el-dialog>
</div>
</template>
<
script
>
import
{
getbox
,
getLogList
,
getCostList
,
getAbnormalList
,
deleteCost
,
deletebox
,
}
from
"
@/api/ecw/box
"
;
import
{
getChannelList
}
from
"
@/api/ecw/channel
"
;
import
{
getCabinetPage
}
from
"
@/api/ecw/cabinet
"
;
import
{
getWarehouseList
}
from
"
@/api/ecw/warehouse
"
;
import
{
getTotlContent
,
formatDate
,
serviceMsg
,
downloadFile
,
downloadFileByUrl
,
}
from
"
./shippingSea/utils
"
;
import
{
getSectionList
,
boxGoodsDetail
}
from
"
@/api/ecw/boxSea
"
;
import
{
getSupplierPage
}
from
"
@/api/ecw/supplier
"
;
import
costForm
from
"
./costForm.vue
"
;
import
regError
from
"
./regError.vue
"
;
import
editForm
from
"
./editForm.vue
"
;
import
updateError
from
"
./updateError.vue
"
;
import
{
listUser
}
from
"
@/api/system/user
"
;
export
default
{
name
:
"
boxDetail
"
,
props
:
{
shipmentId
:
String
,
},
components
:
{
costForm
,
regError
,
editForm
,
updateError
,
},
created
()
{
this
.
transportTypes
=
this
.
getDictDatas
(
this
.
DICT_TYPE
.
ECW_TRANSPORT_TYPE
).
filter
((
item
)
=>
item
.
value
==
"
1
"
||
item
.
value
==
"
2
"
);
this
.
initData
();
this
.
queryAllData
();
// 用户
listUser
({
pageNo
:
"
1
"
,
pageSize
:
"
10000
"
}).
then
((
res
)
=>
{
const
{
data
}
=
res
;
this
.
allUsers
=
data
.
list
??
[];
});
},
data
()
{
return
{
// 出货对象
shipmentObj
:
{},
// 渠道
channelList
:
[],
// 柜型
cabinetList
:
[],
// 仓库
warehouseList
:
[],
// 供应商
allSupplier
:
[],
allUsers
:
[],
// 部分list
sectionList
:
[],
// 单证数组
docStatus
:
[],
// 操作日志
logList
:
[],
// 费用
costList
:
[],
// 异常
errorList
:
[],
// 部分订单商品
sectionObj
:
{
secStatistics
:
{},
sectionOrderList
:
[],
totalStatistics
:
{},
},
// 部分ID
sectionId
:
"
0
"
,
// 弹窗配置
dialogConfig
:
{
visible
:
false
,
title
:
""
,
width
:
"
600px
"
,
type
:
""
,
},
// 运输方式
transportTypes
:
[],
// 费用详情
costDetail
:
{},
// 下载
downloadList
:
[
{
title
:
this
.
$t
(
"
预装单
"
),
serviceName
:
"
downloadPreloadGoodsList
"
,
hasPermi
:
"
shipment:box:download:downloadPreloadGoodsList
"
},
{
title
:
this
.
$t
(
"
已装单
"
),
serviceName
:
"
downloadLoadGoodsList
"
,
hasPermi
:
"
shipment:box:download:downloadLoadGoodsList
"
},
{
title
:
this
.
$t
(
"
应收汇总表
"
),
serviceName
:
"
downloadReceivableList
"
,
hasPermi
:
"
shipment:box:download:downloadReceivableList
"
},
{
title
:
this
.
$t
(
"
提货单
"
),
serviceName
:
"
zipDownload
"
,
fileFormat
:
"
zip
"
,
hasPermi
:
"
shipment:box:download:zipDownload
"
},
{
title
:
"
agent list
"
,
serviceName
:
"
downloadAgentListFiles
"
,
type
:
"
url
"
,
hasPermi
:
"
shipment:box:download:downloadAgentListFiles
"
},
{
title
:
"
soncap
"
,
serviceName
:
"
downloadSoncapFiles
"
,
type
:
"
url
"
,
hasPermi
:
"
shipment:box:download:downloadSoncapFiles
"
},
{
title
:
this
.
$t
(
"
提单Copy
"
),
serviceName
:
"
downloadLadingCopy
"
,
type
:
"
url
"
,
hasPermi
:
"
shipment:box:download:downloadLadingCopy
"
},
],
// 选中行
selectedRows
:
[],
// 修改异常
errorInfo
:
{
orderList
:
[],
errorType
:
""
,
operate
:
""
,
},
};
},
methods
:
{
selectable
(
row
,
index
)
{
if
(
row
.
abnormalDealStatus
===
1
)
return
false
;
return
true
;
},
/* 全选 */
handleSelectionChange
(
selected
)
{
this
.
selectedRows
=
selected
;
},
/* 更新状态 */
updateStatus
(
type
,
row
)
{
let
orders
=
[];
if
(
type
===
"
selected
"
)
{
if
(
!
this
.
selectedRows
.
length
)
{
this
.
$message
.
error
(
"
请选择需要更新的订单
"
);
return
;
}
orders
=
this
.
selectedRows
;
}
else
if
(
type
===
"
all
"
)
{
// 筛选未处理的订单
orders
=
this
.
sectionObj
.
sectionOrderList
.
filter
(
(
item
)
=>
item
.
abnormalDealStatus
===
0
);
if
(
!
orders
.
length
)
{
this
.
$message
.
error
(
"
没有订单需要更新
"
);
return
;
}
}
else
if
(
type
===
"
single
"
)
{
orders
=
[
row
];
}
this
.
getErrorType
();
this
.
$set
(
this
.
errorInfo
,
"
orderList
"
,
orders
);
this
.
$set
(
this
.
errorInfo
,
"
operate
"
,
type
);
// 判断异常类型
this
.
handleCommand
(
"
updateError
"
);
},
getErrorType
()
{
for
(
const
[
key
,
value
]
of
Object
.
entries
(
this
.
shipmentObj
))
{
// 报关异常 customsHasAbnormal
if
(
key
===
"
customsHasAbnormal
"
&&
value
)
{
this
.
$set
(
this
.
errorInfo
,
"
errorType
"
,
"
customs
"
);
this
.
$set
(
this
.
dialogConfig
,
"
title
"
,
this
.
$t
(
"
更新报关异常状态
"
));
}
// 起运异常 shippingHasAbnormal
if
(
key
===
"
shippingHasAbnormal
"
&&
value
)
{
this
.
$set
(
this
.
errorInfo
,
"
errorType
"
,
"
shipping
"
);
this
.
$set
(
this
.
dialogConfig
,
"
title
"
,
this
.
$t
(
"
更新起运异常状态
"
));
}
// 到港异常 arrivalHasAbnormal
if
(
key
===
"
arrivalHasAbnormal
"
&&
value
)
{
this
.
$set
(
this
.
errorInfo
,
"
errorType
"
,
"
arrival
"
);
this
.
$set
(
this
.
dialogConfig
,
"
title
"
,
this
.
$t
(
"
更新到港异常状态
"
));
}
}
},
// 初始化字典数据
initData
()
{
// 查询渠道
getChannelList
().
then
((
res
)
=>
(
this
.
channelList
=
res
.
data
));
// 查询柜型
getCabinetPage
(
null
).
then
(
(
response
)
=>
(
this
.
cabinetList
=
response
.
data
.
list
)
);
// 仓库
getWarehouseList
().
then
((
r
)
=>
{
this
.
warehouseList
=
r
.
data
;
});
// 供应商
getSupplierPage
({
pageNo
:
"
1
"
,
pageSize
:
"
10000
"
}).
then
((
res
)
=>
{
const
{
data
}
=
res
;
this
.
allSupplier
=
data
.
list
;
});
},
// 查询详情页所有数据
queryAllData
()
{
let
param
=
{
shipmentId
:
this
.
shipmentId
};
// 查询出货信息
this
.
getBoxDetail
();
// 部分
getSectionList
(
param
).
then
((
res
)
=>
{
this
.
sectionList
=
res
.
data
.
map
((
item
,
index
)
=>
{
return
{
...
item
,
title
:
this
.
$t
(
"
第{index}部分
"
,
{
index
:
index
+
1
}),
};
});
});
// 明细
this
.
getBoxGoodsDetail
();
// 状态
getLogList
(
param
).
then
((
res
)
=>
{
this
.
logList
=
res
.
data
;
});
// 费用
this
.
getCost
();
// 异常
getAbnormalList
(
param
).
then
((
res
)
=>
{
this
.
errorList
=
res
.
data
;
});
//表单
},
// 出货信息
getBoxDetail
()
{
getbox
(
this
.
shipmentId
).
then
((
res
)
=>
{
const
{
data
}
=
res
;
this
.
shipmentObj
=
data
??
{};
});
},
// 获取费用
getCost
()
{
getCostList
({
shipmentId
:
this
.
shipmentId
}).
then
((
res
)
=>
{
this
.
costList
=
res
.
data
;
});
},
// 部分切换
sectionChange
()
{
this
.
getBoxGoodsDetail
();
},
// 获取部分详情以及物品
getBoxGoodsDetail
()
{
boxGoodsDetail
({
shipmentId
:
this
.
shipmentId
,
secId
:
this
.
sectionId
,
}).
then
((
res
)
=>
{
this
.
sectionObj
=
res
.
data
;
});
},
// 供应商
getSupplier
(
id
)
{
let
arr
=
this
.
allSupplier
.
find
((
item
)
=>
item
.
id
==
id
)
??
{};
return
this
.
$l
(
arr
,
"
company
"
);
},
editCostClick
(
row
)
{
this
.
costDetail
=
row
;
this
.
handleCommand
(
"
cost
"
);
},
deleteCostClick
(
row
)
{
deleteCost
(
row
.
id
).
then
((
res
)
=>
{
serviceMsg
(
res
,
this
).
then
((
res
)
=>
{
this
.
getCost
();
});
});
},
/* 跳转订单详情 */
jumpOrderDetail
(
row
)
{
this
.
$router
.
push
({
path
:
"
/order/detail
"
,
query
:
{
orderId
:
row
.
orderId
},
});
},
// 事件执行
handleCommand
(
type
)
{
switch
(
type
)
{
case
"
edit
"
:
this
.
$set
(
this
.
dialogConfig
,
"
visible
"
,
true
);
this
.
$set
(
this
.
dialogConfig
,
"
title
"
,
this
.
$t
(
"
修改出货
"
));
this
.
$set
(
this
.
dialogConfig
,
"
type
"
,
"
edit
"
);
break
;
case
"
router
"
:
this
.
$router
.
push
(
"
/boxSea/shippingSea/
"
+
this
.
shipmentId
);
break
;
case
"
cost
"
:
this
.
$set
(
this
.
dialogConfig
,
"
visible
"
,
true
);
this
.
$set
(
this
.
dialogConfig
,
"
title
"
,
this
.
$t
(
"
费用登记
"
));
this
.
$set
(
this
.
dialogConfig
,
"
type
"
,
"
cost
"
);
break
;
case
"
error
"
:
this
.
$set
(
this
.
dialogConfig
,
"
visible
"
,
true
);
this
.
$set
(
this
.
dialogConfig
,
"
title
"
,
this
.
$t
(
"
异常登记
"
));
this
.
$set
(
this
.
dialogConfig
,
"
type
"
,
"
error
"
);
break
;
case
"
delete
"
:
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认删除出货编号为 {no} 的数据项?
"
,
{
no
:
this
.
shipmentObj
.
selfNo
,
})
)
.
then
(()
=>
{
return
deletebox
(
this
.
shipmentId
);
})
.
then
((
res
)
=>
{
serviceMsg
(
res
,
this
).
then
((
res
)
=>
{
// 获取当前path
const
currPath
=
this
.
$router
.
currentRoute
.
path
;
// 根据path获取view
const
view
=
this
.
visitedViews
.
find
(
(
item
)
=>
item
.
path
===
currPath
);
if
(
view
)
{
this
.
$store
.
dispatch
(
"
tagsView/delView
"
,
view
);
this
.
$router
.
push
(
"
/shipment/boxSea
"
);
}
});
})
.
catch
(()
=>
{});
break
;
case
"
updateError
"
:
this
.
$set
(
this
.
dialogConfig
,
"
visible
"
,
true
);
this
.
$set
(
this
.
dialogConfig
,
"
type
"
,
"
updateError
"
);
break
;
}
},
// 关闭弹框
closeDialog
(
type
)
{
this
.
$set
(
this
.
dialogConfig
,
"
visible
"
,
false
);
if
(
type
===
"
edit
"
)
{
this
.
getBoxDetail
();
}
if
(
type
===
"
cost
"
)
{
this
.
getCost
();
}
if
(
type
===
"
error
"
)
{
getAbnormalList
({
shipmentId
:
this
.
shipmentId
}).
then
((
res
)
=>
{
this
.
errorList
=
res
.
data
;
});
}
if
(
type
===
"
detail
"
)
{
this
.
getBoxGoodsDetail
();
}
},
formatDate
,
downloadDetailFile
(
row
)
{
const
{
fileFormat
,
type
}
=
row
;
if
(
type
===
"
url
"
)
{
downloadFileByUrl
(
row
.
serviceName
,
{
shipmentId
:
this
.
shipmentId
});
}
else
{
let
fileName
=
`
${
row
.
title
}
(
${
this
.
shipmentObj
.
selfNo
}
).
${
fileFormat
??
"
xlsx
"
}
`;
downloadFile(
row.serviceName,
{ shipmentId: this.shipmentId },
fileName,
fileFormat ?? "xlsx"
);
}
},
},
computed: {
visitedViews() {
return this.$store.state.tagsView.visitedViews;
},
// 单证状态
getDocStatus() {
return (list = []) => {
// 获取类型
let customsTypes = list.map((item) => item.customsType);
// 去重
return Array.from(new Set(customsTypes));
};
},
/* 渠道 */
getShipChannelName() {
return (shippingChannelId) => {
for (const channelItem of this.channelList) {
if (channelItem.channelId == shippingChannelId) {
return this.$l(channelItem, "name");
}
}
};
},
/* 获取柜型 */
getCabinetLabel() {
return (cabinetId) => {
for (const cabinetItem of this.cabinetList) {
if (cabinetItem.id == cabinetId) {
return cabinetItem.name;
}
}
};
},
/* 总计 */
getBoxSum() {
return (boxStatistics) => {
if (boxStatistics) {
return this.$t("{num}箱 {volume}m³ {weight}kg", {
num: boxStatistics.num ?? 0,
volume: boxStatistics.volume ?? 0,
weight: boxStatistics.weight ?? 0,
});
}
return;
};
},
/* 获取仓库 */
getCityName() {
return (id) => {
let arr = this.warehouseList.filter((item) => item.id == id);
return arr.length > 0 ? this.$l(arr[0], "title") : this.$t("无");
};
},
// 部分信息
getSectionInfo() {
const { totalStatistics, secStatistics } = this.sectionObj;
if (!this.sectionId) {
return getTotlContent(totalStatistics);
} else {
return getTotlContent(secStatistics);
}
},
getClearance() {
return (id) => {
let data = ['','我司清关','合作方清关','客户']
return data[id]
}
},
getdeliveryType() {
return (id) => {
let data = ['','多票','单票']
return data[id]
}
}
},
};
</
script
>
<
style
lang=
"scss"
>
.shipping-detail
{
.detail-pane
{
display
:
flex
;
align-items
:
center
;
margin-bottom
:
5px
;
.box-weight
{
margin-left
:
10px
;
}
.document-status
{
flex
:
1
;
justify-content
:
flex-end
;
display
:
flex
;
align-items
:
center
;
>
span
{
margin-right
:
10px
;
}
}
}
.el-table__body
{
.customsType-red
{
color
:
red
;
}
}
.shipping-status
{
position
:
relative
;
display
:
flex
;
.status-line
{
width
:
1px
;
height
:
calc
(
100%
-
35px
);
background-color
:
#e8eaec
;
position
:
absolute
;
left
:
13px
;
top
:
30px
;
}
.status-number
{
width
:
26px
;
height
:
26px
;
border
:
1px
solid
#ccc
;
border-radius
:
50%
;
display
:
flex
;
align-items
:
center
;
justify-content
:
center
;
}
.status-info
{
color
:
#999
;
margin-left
:
20px
;
>
:first-child
{
font-size
:
14px
;
font-weight
:
bolder
;
line-height
:
26px
;
}
>
:last-child
{
line-height
:
26px
;
display
:
flex
;
>
p
{
margin
:
0
;
margin-right
:
10px
;
}
}
}
&
.curr-status
{
.status-number
{
color
:
#fff
;
background-color
:
#2d8cf0
;
border-color
:
#2d8cf0
;
}
.status-info
{
color
:
#666
;
}
}
}
}
</
style
>
src/views/ecw/box/shippingAir/nodePage/mergePkg/index.vue
0 → 100644
View file @
aaf02179
<
template
>
<div>
<el-row
type=
"flex"
style=
"margin-top: 15px; margin-bottom: 15px"
justify=
"center"
>
<el-col
:xs=
"24"
:sm=
"24"
:md=
"24"
:lg=
"20"
:xl=
"22"
>
<el-card>
<el-descriptions
:column=
"4"
border
>
<el-descriptions-item
:label=
"$t('自编号')"
>
{{
shipmentObj
.
selfNo
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('运输方式')"
>
<dict-tag
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
:value=
"shipmentObj.transportType"
/>
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('始发地')"
>
{{
getCityName
(
shipmentObj
.
startWarehouseId
)
}}
</el-descriptions-item>
<el-descriptions-item
:label=
"$t('目的地')"
>
{{
getCityName
(
shipmentObj
.
destWarehouseId
)
}}
</el-descriptions-item>
</el-descriptions>
</el-card>
<el-row
style=
"margin-top: 15px"
>
<el-row>
<el-button
size=
"small"
type=
"primary"
@
click=
"
addMergedialogVisible = true
addMergeForm =
{}
mergeTitle = $t('新建合包箱号')
"
>
{{
$t
(
'
新建合包箱号
'
)
}}
</el-button
>
</el-row>
<el-row
style=
"margin-top: 5px"
>
<el-table
border
:data=
"pagList"
max-height=
"600px"
>
<el-table-column
align=
"center"
:label=
"$t('序号')"
width=
"50"
prop=
"tidanNum"
/>
<el-table-column
:label=
"$t('箱号')"
align=
"center"
prop=
"pkgNum"
/>
<el-table-column
:label=
"$t('尺寸')"
width=
"250px"
align=
"center"
>
<template
slot-scope=
"scope"
>
{{
scope
.
row
.
pkgLength
}}
*
{{
scope
.
row
.
pkgWidth
}}
*
{{
scope
.
row
.
pkgHight
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('订单数')"
width=
"250px"
align=
"center"
prop=
"orderCount"
/>
<el-table-column
:label=
"$t('箱数')"
width=
"250px"
align=
"center"
prop=
"sumCount"
/>
<el-table-column
:label=
"$t('入仓体积')"
width=
"250px"
align=
"center"
prop=
"sumVolume"
/>
<el-table-column
:label=
"$t('入仓重量')"
align=
"center"
prop=
"sumWeight"
/>
<el-table-column
:label=
"$t('入仓数量(个)')"
align=
"center"
prop=
"sumQuantity"
/>
<el-table-column
:label=
"$t('状态')"
align=
"center"
prop=
"tallyStatus"
>
<
template
slot-scope=
"scope"
>
{{
statusData
[
scope
.
row
.
status
]
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('创建时间')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
{{
formatDate
(
scope
.
row
.
createTime
,
'
YYYY-MM-DD HH:mm:ss
'
)
}}
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('操作')"
align=
"center"
width=
"260"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
v-if=
"scope.row.status == 1"
type=
"text"
size=
"small"
@
click=
"editMerge(scope.row)"
>
{{
$t
(
'
编辑
'
)
}}
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"pkgPage(scope.row)"
>
{{
$t
(
'
装箱
'
)
}}
</el-button>
<el-button
v-if=
"scope.row.status != 2"
type=
"text"
size=
"small"
@
click=
"deleteMerge(scope.row.id)"
>
{{
$t
(
'
删除
'
)
}}
</el-button>
<el-button
type=
"text"
size=
"small"
@
click=
"removeClick('single', scope.row)"
>
{{
$t
(
'
打印标签
'
)
}}
</el-button>
</
template
>
</el-table-column>
</el-table>
</el-row>
</el-row>
<!-- 新增合包箱 -->
<el-dialog
:title=
"mergeTitle"
:visible.sync=
"addMergedialogVisible"
width=
"700px"
:modal-append-to-body=
"false"
append-to-body
>
<el-form
ref=
"addMergeForm"
:model=
"addMergeForm"
label-width=
"100px"
>
<el-form-item
:label=
"$t('箱号')"
prop=
"pkgNum"
>
{{ !isMergeEdit ? '自动生成' : addMergeForm.pkgNum }}
</el-form-item>
<el-form-item
v-if=
"!isMergeEdit"
:label=
"$t('数量')"
prop=
"num"
:rules=
"[{ required: true, message: this.$t('数量不能为空'), trigger: 'blur' }]"
>
<el-input-number
v-model=
"addMergeForm.num"
:controls=
"false"
:min=
"1"
:precision=
"0"
/>
</el-form-item>
<el-row>
<el-col
:span=
"8"
>
<el-form-item
:label=
"$t('长')"
prop=
"pkgLength"
>
<el-input-number
v-model=
"addMergeForm.pkgLength"
:controls=
"false"
:precision=
"2"
style=
"width: 100px"
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
:label=
"$t('宽')"
prop=
"pkgWidth"
>
<el-input-number
v-model=
"addMergeForm.pkgWidth"
:controls=
"false"
:precision=
"2"
style=
"width: 100px"
/>
</el-form-item>
</el-col>
<el-col
:span=
"8"
>
<el-form-item
:label=
"$t('高')"
prop=
"pkgHight"
>
<el-input-number
v-model=
"addMergeForm.pkgHight"
:controls=
"false"
:precision=
"2"
style=
"width: 100px"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div
style=
"text-align: center"
>
<el-button
size=
"small"
type=
"primary"
@
click=
"addMerge"
>
{{ $t('确定') }}
</el-button>
<el-button
size=
"small"
type=
"primary"
@
click=
"addMergedialogVisible = false"
>
{{ $t('取消') }}
</el-button>
</div>
</el-dialog>
<!-- 装箱 -->
<el-dialog
:title=
"pkgPageTitle"
:visible.sync=
"pkgPagedialogVisible"
:fullscreen=
"true"
:modal-append-to-body=
"false"
append-to-body
>
<el-radio-group
v-model=
"pkgPageType"
>
<el-radio-button
:label=
"1"
>
{{$t('未装箱列表')}}
</el-radio-button>
<el-radio-button
:label=
"2"
>
{{$t('已装箱列表')}}
</el-radio-button>
</el-radio-group>
<un-pkg-page
v-if=
"pkgPageType == 1"
/>
<pkg-page
v-if=
"pkgPageType == 2"
/>
</el-dialog>
<el-row
style=
"margin-top: 15px"
class=
"operate-button"
>
<el-button
size=
"small"
type=
"primary"
@
click=
"finish"
>
{{ $t('完成') }}
</el-button>
<el-button
size=
"small"
@
click=
"$emit('closeDialog')"
>
{{ $t('取消') }}
</el-button>
</el-row>
</el-col>
</el-row>
</div>
</template>
<
script
>
import
{
getMergePkgList
,
createMergePkg
,
updateMergePkg
,
deleteMergePkg
}
from
'
@/api/ecw/boxAir
'
import
{
formatDate
,
serviceMsg
}
from
'
../../utils
'
import
unPkgPage
from
'
./unPkgPage.vue
'
import
PkgPage
from
'
./pkgPage.vue
'
export
default
{
components
:
{
unPkgPage
,
PkgPage
},
data
()
{
return
{
pagList
:
[],
statusData
:
[
''
,
'
未装箱
'
,
'
装箱中
'
,
'
已封箱
'
],
// 查询参数
queryParams
:
{
page
:
1
,
rows
:
10
,
shipmentId
:
this
.
$attrs
.
shipmentObj
.
id
},
// 出货信息
shipmentObj
:
this
.
$attrs
.
shipmentObj
,
addMergedialogVisible
:
false
,
addMergeForm
:
{},
mergeTitle
:
''
,
isMergeEdit
:
false
,
pkgPageType
:
1
,
pkgPageTitle
:
''
,
pkgPagedialogVisible
:
false
}
},
created
()
{
this
.
getList
()
},
computed
:
{
/* 获取仓库 */
getCityName
()
{
return
(
id
)
=>
{
let
arr
=
this
.
$attrs
.
warehouseList
.
filter
((
item
)
=>
item
.
id
==
id
)
return
arr
.
length
>
0
?
this
.
$l
(
arr
[
0
],
'
title
'
)
:
this
.
$t
(
'
无
'
)
}
}
},
methods
:
{
formatDate
,
getList
()
{
getMergePkgList
(
this
.
queryParams
).
then
((
res
)
=>
{
this
.
pagList
=
res
.
data
.
list
})
},
editMerge
(
row
)
{
this
.
mergeTitle
=
this
.
$t
(
'
编辑合包箱号
'
)
this
.
isMergeEdit
=
true
this
.
addMergedialogVisible
=
true
this
.
addMergeForm
.
pkgNum
=
row
.
pkgNum
this
.
addMergeForm
.
pkgLength
=
row
.
pkgLength
this
.
addMergeForm
.
pkgWidth
=
row
.
pkgWidth
this
.
addMergeForm
.
pkgHight
=
row
.
pkgHight
this
.
addMergeForm
.
id
=
row
.
id
},
addMerge
()
{
this
.
$refs
[
'
addMergeForm
'
].
validate
((
valid
)
=>
{
if
(
!
valid
)
{
return
}
this
.
addMergeForm
.
shipmentId
=
this
.
$attrs
.
shipmentObj
.
id
if
(
!
this
.
addMergeForm
.
id
)
{
createMergePkg
(
this
.
addMergeForm
).
then
((
res
)
=>
{
serviceMsg
(
res
,
this
).
then
(()
=>
{
this
.
addMergedialogVisible
=
false
this
.
getList
()
})
})
}
else
{
updateMergePkg
(
this
.
addMergeForm
).
then
((
res
)
=>
{
serviceMsg
(
res
,
this
).
then
(()
=>
{
this
.
addMergedialogVisible
=
false
this
.
getList
()
})
})
}
})
},
deleteMerge
(
id
)
{
this
.
$modal
.
confirm
(
this
.
$t
(
'
是否确认删除?
'
))
.
then
(
function
()
{
return
deleteMergePkg
(
id
)
})
.
then
(()
=>
{
this
.
getList
()
this
.
$modal
.
msgSuccess
(
this
.
$t
(
'
删除成功
'
))
})
.
catch
(()
=>
{})
},
pkgPage
(
row
)
{
this
.
pkgPagedialogVisible
=
true
this
.
pkgPageTitle
=
this
.
$t
(
'
合包箱号:
'
)
+
row
.
pkgNum
},
finish
()
{}
}
}
</
script
>
<
style
>
</
style
>
\ No newline at end of file
src/views/ecw/box/shippingAir/nodePage/mergePkg/pkgPage.vue
0 → 100644
View file @
aaf02179
<
template
>
<div>
22
</div>
</
template
>
<
script
>
export
default
{
}
</
script
>
<
style
>
</
style
>
\ No newline at end of file
src/views/ecw/box/shippingAir/nodePage/mergePkg/unPkgPage.vue
0 → 100644
View file @
aaf02179
<
template
>
<div>
11
</div>
</
template
>
<
script
>
export
default
{
}
</
script
>
<
style
>
</
style
>
\ No newline at end of file
src/views/ecw/box/shippingAir/seaProcess.vue
View file @
aaf02179
...
...
@@ -46,6 +46,7 @@ import unloadingWidget from "./nodePage/unloading/index.vue";
import
settlementWidget
from
"
./nodePage/settlement.vue
"
;
import
reviewWidget
from
"
./nodePage/review.vue
"
;
import
tallyWidget
from
"
./nodePage/tally/index.vue
"
;
import
mergePkgWidget
from
"
./nodePage/mergePkg/index.vue
"
;
import
{
checkPermi
}
from
'
@/utils/permission
'
/**
...
...
@@ -75,6 +76,7 @@ export default {
settlementWidget
,
reviewWidget
,
tallyWidget
,
mergePkgWidget
},
props
:
{
shipmentObj
:
Object
,
...
...
@@ -133,7 +135,7 @@ export default {
},
/** 节点点击 */
nodeClick
(
currIndex
,
node
)
{
if
(
!
checkPermi
([
'
box:
'
+
node
.
type
+
'
:
show
'
]))
{
if
(
!
checkPermi
([
'
box:
'
+
node
.
type
+
'
:
action
'
]))
{
this
.
$message
.
error
(
this
.
$t
(
"
没有此操作的权限
"
));
return
;
}
...
...
@@ -149,8 +151,12 @@ export default {
switch
(
node
.
type
)
{
// 订舱
case
"
booking
"
:
// 驳船
case
"
barge
"
:
break
;
// 合包
case
"
mergePkg
"
:
this
.
$set
(
this
.
dialogConfig
,
"
fullscreen
"
,
true
);
this
.
$set
(
this
.
dialogConfig
,
"
title
"
,
this
.
$t
(
"
合包列表
"
));
break
;
// 清关文件
case
"
clrDocument
"
:
this
.
$set
(
this
.
dialogConfig
,
"
width
"
,
"
700px
"
);
...
...
src/views/ecw/box/shippingAir/utils.js
View file @
aaf02179
...
...
@@ -78,21 +78,21 @@ function airBaseData() {
{
title
:
i18n
.
$t
(
"
合包
"
),
imgSrc
:
{
start
:
require
(
"
@/assets/images/shipping/
tc
-start.png
"
),
wait
:
require
(
"
@/assets/images/shipping/
tc
-wait.png
"
),
end
:
require
(
"
@/assets/images/shipping/
tc
-end.png
"
),
start
:
require
(
"
@/assets/images/shipping/
qg
-start.png
"
),
wait
:
require
(
"
@/assets/images/shipping/
qg
-wait.png
"
),
end
:
require
(
"
@/assets/images/shipping/
qg
-end.png
"
),
},
type
:
"
trailer
"
,
type
:
"
mergePkg
"
,
dataKey
:
"
3
"
,
// 字典数据键值
/**
*
拖车状态:31、未派车;32、已派车
*
合包状态:161待合包 162已合包
*/
voName
:
"
trailerInfo
"
,
keyName
:
"
tl
Status
"
,
keyName
:
"
mergePkg
Status
"
,
status
:
{
start
:
[
3
1
],
start
:
[
16
1
],
wait
:
[],
end
:
[
3
2
],
end
:
[
16
2
],
},
},
],
...
...
src/views/ecw/channel/componrnts/packaging-type.vue
View file @
aaf02179
...
...
@@ -96,11 +96,11 @@ export default {
"
channelId
"
:
''
,
"
clearancePrice
"
:
''
,
"
clearancePriceUnit
"
:
''
,
"
clearanceVolumeUnit
"
:
''
,
"
clearanceVolumeUnit
"
:
6
,
"
endNum
"
:
''
,
"
packagingId
"
:
''
,
"
startNum
"
:
''
,
"
weightUnit
"
:
''
"
weightUnit
"
:
6
}
this
.
value1
[
this
.
keyArr
].
push
(
p
)
this
.
$forceUpdate
();
...
...
src/views/ecw/channel/edit.vue
View file @
aaf02179
...
...
@@ -294,7 +294,16 @@ export default {
this
.
form
.
channelPackagingList
[
index
].
channelPriceStepClearanceList
[
indexx
]
=
p
;
}
let
it
=
this
.
form
.
channelPackagingList
[
index
].
channelPriceStepClearanceList
[
indexx
]
this
.
form
.
channelPackagingList
[
index
].
channelPriceStepClearanceList
[
indexx
]
=
{...
p
,...
it
,
clearancePrice
:
itemm
.
clearancePrice
,
clearancePriceUnit
:
itemm
.
clearancePriceUnit
,
clearanceVolumeUnit
:
itemm
.
clearanceVolumeUnit
}
;
this
.
form
.
channelPackagingList
[
index
].
channelPriceStepClearanceList
[
indexx
]
=
{
...
p
,
...
it
,
clearancePrice
:
itemm
.
clearancePrice
,
clearancePriceUnit
:
itemm
.
clearancePriceUnit
,
clearanceVolumeUnit
:
itemm
.
clearanceVolumeUnit
,
endNum
:
itemm
.
endNum
,
startNum
:
itemm
.
startNum
,
weightUnit
:
itemm
.
weightUnit
}
;
})
})
this
.
$forceUpdate
()
...
...
src/views/ecw/deptTarget/myAchievement.vue
View file @
aaf02179
...
...
@@ -99,7 +99,7 @@
<el-table-column
:label=
"$t('重量')"
align=
"center"
prop=
"completeWeight"
/>
<el-table-column
:label=
"$t('方数')"
align=
"center"
prop=
"completeVolume"
/>
<el-table-column
:label=
"$t('下单时间')"
align=
"center"
prop=
"createTime"
/>
<el-table-column
:label=
"$t('
装柜
时间')"
align=
"center"
prop=
"ldBoxTime"
/>
<el-table-column
:label=
"$t('
业绩创建
时间')"
align=
"center"
prop=
"ldBoxTime"
/>
<el-table-column
:label=
"$t('客户经理')"
align=
"center"
prop=
"userId"
:formatter=
"customerServiceFn"
>
</el-table-column>
</el-table>
...
...
src/views/ecw/deptTarget/myDeptAchievement.vue
View file @
aaf02179
...
...
@@ -98,7 +98,7 @@
<el-table-column
:label=
"$t('重量')"
align=
"center"
prop=
"completeWeight"
/>
<el-table-column
:label=
"$t('方数')"
align=
"center"
prop=
"completeVolume"
/>
<el-table-column
:label=
"$t('下单时间')"
align=
"center"
prop=
"createTime"
/>
<el-table-column
:label=
"$t('
装柜
时间')"
align=
"center"
prop=
"ldBoxTime"
/>
<el-table-column
:label=
"$t('
业绩创建
时间')"
align=
"center"
prop=
"ldBoxTime"
/>
<el-table-column
:label=
"$t('客户经理')"
align=
"center"
prop=
"userId"
:formatter=
"customerServiceFn"
>
</el-table-column>
</el-table>
...
...
src/views/ecw/deptTarget/myDeptTarget.vue
View file @
aaf02179
...
...
@@ -124,8 +124,11 @@
:key=
"item.channelId"
></el-option>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('立方数')"
prop=
"cubeNum"
>
<el-input
v-model=
"form.cubeNum"
:placeholder=
"$t('请输入立方数')"
/>
<el-form-item
:label=
"$t('目标值')"
prop=
"cubeNum"
>
<el-input
v-model=
"form.cubeNum"
:placeholder=
"$t('请输入目标值')"
/>
</el-form-item>
<el-form-item
:label=
"$t('目标单位')"
prop=
"cubeUnit"
>
<dict-selector
:type=
"DICT_TYPE.CEBE_UNIT"
v-model=
"form.cubeUnit"
:placeholder=
"$t('请选择目标单位')"
/>
</el-form-item>
</el-form>
<div
slot=
"footer"
class=
"dialog-footer"
>
...
...
src/views/ecw/order/edit.vue
View file @
aaf02179
...
...
@@ -931,6 +931,9 @@ export default {
if
(
updateChannel
){
this
.
$set
(
this
,
'
showWorkFlow
'
,
true
)
}
},
'
$route.query.transportType
'
(
transportType
){
this
.
$set
(
this
.
form
,
'
transportId
'
,
+
transportType
)
}
},
activated
(){
...
...
src/views/ecw/order/warehousing/components/Warehouse.vue
View file @
aaf02179
...
...
@@ -157,10 +157,10 @@
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('数量')"
width=
"1
3
0px"
>
<el-table-column
:label=
"$t('数量')"
width=
"1
4
0px"
>
<
template
v-slot=
"{r,c,$index}"
>
<el-form-item
:rules=
"tableFormRules.quantityAll"
>
<el-input
:disabled=
"$index
<
protectRowCount
"
v-model.number=
"form.table[$index].quantityAll"
placeholder=
""
>
<el-input
:disabled=
"$index
<
protectRowCount
"
v-model.number=
"form.table[$index].quantityAll"
placeholder=
""
type=
"number"
>
<template
slot=
"append"
>
{{
$t
(
'
个
'
)
}}
</
template
>
</el-input>
</el-form-item>
...
...
@@ -371,11 +371,11 @@
</el-form-item>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('数量')"
width=
"1
3
0px"
>
<el-table-column
:label=
"$t('数量')"
width=
"1
4
0px"
>
<
template
v-slot=
"{r,c,$index}"
>
<el-form-item>
<span
v-if=
"form1.table[$index].id"
>
{{
form1
.
table
[
$index
].
quantityAll
}}
</span>
<el-input
v-else
v-model.number=
"form1.table[$index].quantityAll"
placeholder=
""
>
<el-input
v-else
type=
"number"
v-model.number=
"form1.table[$index].quantityAll"
placeholder=
""
>
<template
slot=
"append"
>
{{
$t
(
'
个
'
)
}}
</
template
>
</el-input>
</el-form-item>
...
...
src/views/ecw/order/warehousing/index.vue
View file @
aaf02179
...
...
@@ -164,7 +164,7 @@
<span
style=
"font-size: 18px"
>
{{$t('入仓影像')}}
</span>
</div>
<div>
<image-and-video-upload
readonly
:fileSize=
"50"
:isShowTip=
"true"
:value=
"[...form.urls, ...this.orderItemList.map(e => e.pictureUrls).flat()]"
></image-and-video-upload>
<image-and-video-upload
readonly
:fileSize=
"50"
:isShowTip=
"true"
:value=
"[...form.urls, ...this.orderItemList.map(e => e.pictureUrls
|| []
).flat()]"
></image-and-video-upload>
</div>
</el-card>
<div
style=
"text-align: center;margin-top: 15px"
v-if=
"!(order.status !== 3 && isEdit)"
>
...
...
src/views/ecw/product/index.vue
View file @
aaf02179
...
...
@@ -232,7 +232,7 @@
复制模板线路价格:{{lineNum}}个
</span>
<span
@
click=
"toPriceManager(formCopy)"
style=
"color: #0a84ff;cursor: pointer;"
>
查看《#
选择空运商品模板名称
#》路线价格
查看《#
{{$l(formCopy,'title')}}
#》路线价格
</span>
</p>
</el-form>
...
...
@@ -424,16 +424,19 @@ export default {
this
.
form
.
priceStepClearanceList
[
index
].
clearancePrice
=
item
.
clearancePrice
this
.
form
.
priceStepClearanceList
[
index
].
clearancePriceUnit
=
item
.
clearancePriceUnit
this
.
form
.
priceStepClearanceList
[
index
].
clearanceVolumeUnit
=
item
.
clearanceVolumeUnit
this
.
form
.
priceStepClearanceList
[
index
].
endNum
=
item
.
endNum
this
.
form
.
priceStepClearanceList
[
index
].
startNum
=
item
.
startNum
this
.
form
.
priceStepClearanceList
[
index
].
weightUnit
=
item
.
weightUnit
}
else
{
let
p
=
{
"
channelId
"
:
''
,
"
channelId
"
:
undefined
,
"
clearancePrice
"
:
item
.
clearancePrice
,
"
clearancePriceUnit
"
:
item
.
clearancePriceUnit
,
"
clearanceVolumeUnit
"
:
item
.
clearanceVolumeUnit
,
"
endNum
"
:
''
,
"
packagingId
"
:
''
,
"
startNum
"
:
''
,
"
weightUnit
"
:
''
"
endNum
"
:
item
.
endNum
,
"
packagingId
"
:
undefined
,
"
startNum
"
:
item
.
startNum
,
"
weightUnit
"
:
item
.
weightUnit
}
this
.
form
.
priceStepClearanceList
.
push
(
p
)
}
...
...
src/views/ecw/productAttr/edit.vue
View file @
aaf02179
...
...
@@ -43,7 +43,7 @@
复制模板线路价格:{{lineNum}}个
</span>
<span
@
click=
"toPriceManager(formCopv)"
style=
"color: #0a84ff;cursor: pointer;"
>
查看《#
选择空运商品模板名称
#》路线价格
查看《#
{{$l(formCopv,'title')}}
#》路线价格
</span>
</p>
<el-form-item>
...
...
@@ -154,16 +154,19 @@ export default {
this
.
form
.
priceStepClearanceList
[
index
].
clearancePrice
=
item
.
clearancePrice
this
.
form
.
priceStepClearanceList
[
index
].
clearancePriceUnit
=
item
.
clearancePriceUnit
this
.
form
.
priceStepClearanceList
[
index
].
clearanceVolumeUnit
=
item
.
clearanceVolumeUnit
this
.
form
.
priceStepClearanceList
[
index
].
endNum
=
item
.
endNum
this
.
form
.
priceStepClearanceList
[
index
].
startNum
=
item
.
startNum
this
.
form
.
priceStepClearanceList
[
index
].
weightUnit
=
item
.
weightUnit
}
else
{
let
p
=
{
"
channelId
"
:
''
,
"
clearancePrice
"
:
item
.
clearancePrice
,
"
clearancePriceUnit
"
:
item
.
clearancePriceUnit
,
"
clearanceVolumeUnit
"
:
item
.
clearanceVolumeUnit
,
"
endNum
"
:
''
,
"
endNum
"
:
item
.
endNum
,
"
packagingId
"
:
''
,
"
startNum
"
:
''
,
"
weightUnit
"
:
''
"
startNum
"
:
item
.
startNum
,
"
weightUnit
"
:
item
.
weightUnit
}
this
.
form
.
priceStepClearanceList
.
push
(
p
)
}
...
...
src/views/ecw/productPrice/edit.vue
View file @
aaf02179
...
...
@@ -777,19 +777,24 @@ export default {
}
}
else
{
// 全包价 的阶段 设置和运费(全包价)不能为空
let
stepPriceEmpty
=
false
this
.
form
.
priceStepList
.
forEach
(
item
=>
{
let
notEmptyFields
=
[
'
startNum
'
,
'
endNum
'
,
'
weightUnit
'
]
let
stepPriceEmpty
=
[]
this
.
form
.
priceStepList
.
forEach
((
item
,
index
)
=>
{
let
notEmptyFields
=
[
'
endNum
'
,
'
weightUnit
'
]
// 第一条阶梯的起始值可以是0,其他的不能为0
if
(
index
){
notEmptyFields
.
push
(
'
startNum
'
)
}
notEmptyFields
.
forEach
(
field
=>
{
if
(
!
item
[
field
]
||
item
[
field
].
toString
().
trim
()
==
''
){
stepPriceEmpty
=
true
stepPriceEmpty
.
push
({
index
,
field
}
)
}
}
)
if
((
this
.
form
.
priceType
==
0
&&
!
item
.
transportPrice
)
||
(
this
.
form
.
priceType
==
1
&&
!
item
.
allPrice
)){
stepPriceEmpty
=
true
stepPriceEmpty
.
push
({
index
,
field
:
!
item
.
transportPrice
?
'
transportPrice
'
:
'
allPrice
'
}
)
}
}
)
if
(
stepPriceEmpty
){
if
(
stepPriceEmpty
.
length
){
console
.
log
(
'
stepPriceEmpty
'
,
stepPriceEmpty
)
return
this
.
$message
.
error
(
this
.
$t
(
'
阶梯和价格设置不能留空
'
))
}
}
...
...
@@ -813,7 +818,7 @@ export default {
this
.
loading
=
true
return
updateProductPrice
(
data
).
then
(
res
=>
{
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
请求成功
"
));
this
.
$
router
.
back
()
this
.
$
tab
.
closePage
()
}
).
finally
(
res
=>
this
.
loading
=
false
)
}
...
...
src/views/ecw/productPrice/index.vue
View file @
aaf02179
...
...
@@ -12,11 +12,11 @@
<el-option
v-for=
"type in typeList"
:key=
"type.id"
:label=
"type.titleZh"
:value=
"type.id"
/>
</el-select>
</el-form-item>
<el-form-item
:label=
"$t('运输方式')"
prop=
"transportType"
>
<el-form-item
:label=
"$t('运输方式')"
prop=
"transportType"
v-if=
"!transportType"
>
<dict-selector
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
v-model=
"queryParams.transportType"
formatter=
"number"
clearable
/>
</el-form-item>
<!--海运不显示渠道-->
<el-form-item
:label=
"$t('出货渠道')"
prop=
"shippingChannelId"
v-if=
"type == '
sea
'"
>
<el-form-item
:label=
"$t('出货渠道')"
prop=
"shippingChannelId"
v-if=
"type == '
air
'"
>
<el-select
v-model=
"queryParams.shippingChannelId"
clearable
>
<el-option
v-for=
"item in channelList"
:key=
"item.id"
:label=
"$l(item, 'name')"
:value=
"item.channelId"
/>
</el-select>
...
...
@@ -732,7 +732,7 @@ export default {
}
,
// 批量修改单个商品的价格(一条或者多条,后者全部路线)
batchSetSingleProductPrice
(
type
){
this
.
$router
.
push
(
`../../lineProject/product-price/edit?action=batchUpdate&type=${type
}
&product_id=${this.$route.query.product_id
}
&ids=${this.ids
}
`
)
this
.
$router
.
push
(
`../../lineProject/product-price/edit
-${type
}
?action=batchUpdate&type=${type
}
&product_id=${this.$route.query.product_id
}
&ids=${this.ids
}
`
)
}
,
// 批量设置路线
handleBatchEdit
(
type
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment