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
ef72f4e0
Commit
ef72f4e0
authored
Jul 24, 2022
by
huhaiqing
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
出货开发
parent
76b8812b
Changes
12
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
717 additions
and
224 deletions
+717
-224
boxSea.js
src/api/ecw/boxSea.js
+130
-0
agent-end.png
src/assets/images/shipping/agent-end.png
+0
-0
agent-start.png
src/assets/images/shipping/agent-start.png
+0
-0
agent-wait.png
src/assets/images/shipping/agent-wait.png
+0
-0
index.js
src/router/index.js
+1
-1
dict.js
src/utils/dict.js
+3
-2
booking.vue
src/views/ecw/box/shippingSea/nodePage/booking.vue
+58
-29
preinstall.vue
src/views/ecw/box/shippingSea/nodePage/preinstall.vue
+369
-145
settlement.vue
src/views/ecw/box/shippingSea/nodePage/settlement.vue
+50
-0
trailer.vue
src/views/ecw/box/shippingSea/nodePage/trailer.vue
+35
-33
seaProcess.vue
src/views/ecw/box/shippingSea/seaProcess.vue
+28
-7
shippingSea.vue
src/views/ecw/box/shippingSea/shippingSea.vue
+43
-7
No files found.
src/api/ecw/boxSea.js
0 → 100644
View file @
ef72f4e0
import
request
from
"
@/utils/request
"
;
// booking
export
function
booking
(
data
)
{
return
request
({
url
:
"
/ecw/box-book-sea/create
"
,
method
:
"
post
"
,
data
,
});
}
// trailer
export
function
trailer
(
data
)
{
return
request
({
url
:
"
/ecw/box-trailer/create
"
,
method
:
"
post
"
,
data
,
});
}
/***************************** 预装 **********************************/
/**
* 获得已预装部分列表
*
* @export
* @param {*} params
* @return {*}
*/
export
function
secGoodsList
(
params
)
{
return
request
({
url
:
"
/ecw/box-preload-goods/secGoodsList
"
,
method
:
"
get
"
,
params
,
});
}
/**
* 获得订单预装分页
*
* @export
* @param {*} params
* @return {*}
*/
export
function
preloadPage
(
params
)
{
return
request
({
url
:
"
/ecw/order/preloadPage
"
,
method
:
"
get
"
,
params
,
});
}
/**
* 创建预装部分
*
* @export
* @param {*} params
* @return {*}
*/
export
function
createSection
(
data
)
{
return
request
({
url
:
"
/ecw/box-preload-section/create
"
,
method
:
"
post
"
,
data
,
});
}
/**
* 删除预装部分
*
* @export
* @param {*} params
* @return {*}
*/
export
function
deleteSection
(
id
)
{
return
request
({
url
:
"
/ecw/box-preload-goods/deleteSection?id=
"
+
id
,
method
:
"
delete
"
,
});
}
/**
* 删除预装货物
*
* @export
* @param {*} params
* @return {*}
*/
export
function
deleteGoods
(
id
)
{
return
request
({
url
:
"
/ecw/box-preload-goods/delete?ids=
"
+
id
.
join
(
"
,
"
),
method
:
"
delete
"
,
});
}
/**
* 预装
*
* @export
* @param {*} params
* @return {*}
*/
export
function
createGoods
(
data
)
{
return
request
({
url
:
"
/ecw/box-preload-goods/create
"
,
method
:
"
post
"
,
data
,
});
}
/**
* 服务提示消息回调
*
* @export
* @param {*} result
* @param {*} _vue
* @return {*}
*/
export
function
serviceMsg
(
result
,
_vue
)
{
return
new
Promise
((
resolve
,
reject
)
=>
{
const
{
code
,
msg
}
=
result
;
if
(
code
===
0
)
{
_vue
.
$message
.
success
(
"
提交成功
"
);
resolve
();
}
else
{
_vue
.
$message
.
error
(
msg
);
reject
();
}
});
}
src/assets/images/shipping/agent-end.png
0 → 100644
View file @
ef72f4e0
4.09 KB
src/assets/images/shipping/agent-start.png
0 → 100644
View file @
ef72f4e0
1.31 KB
src/assets/images/shipping/agent-wait.png
0 → 100644
View file @
ef72f4e0
1.42 KB
src/router/index.js
View file @
ef72f4e0
...
@@ -381,7 +381,7 @@ export const constantRoutes = [
...
@@ -381,7 +381,7 @@ export const constantRoutes = [
meta: {title: '出货详情', icon: '', activeMenu: '/shipment/box'}
meta: {title: '出货详情', icon: '', activeMenu: '/shipment/box'}
}, */
}, */
{
{
path
:
'
shippingSea/:
box
Id(
\\
d+)
'
,
path
:
'
shippingSea/:
shipment
Id(
\\
d+)
'
,
component
:
(
resolve
)
=>
import
(
'
@/views/ecw/box/shippingSea/shippingSea
'
),
component
:
(
resolve
)
=>
import
(
'
@/views/ecw/box/shippingSea/shippingSea
'
),
props
:
true
,
props
:
true
,
name
:
'
shippingSea
'
,
name
:
'
shippingSea
'
,
...
...
src/utils/dict.js
View file @
ef72f4e0
...
@@ -152,8 +152,9 @@ export const DICT_TYPE = {
...
@@ -152,8 +152,9 @@ export const DICT_TYPE = {
RECEIVE_FLAG
:
'
receive_flag
'
,
RECEIVE_FLAG
:
'
receive_flag
'
,
COMDINED_VALUE_ADDED_FEE
:
'
combined_value_added_fee
'
,
COMDINED_VALUE_ADDED_FEE
:
'
combined_value_added_fee
'
,
ORDER_SPECIAL_NEEDS
:
'
order_special_needs
'
,
ORDER_SPECIAL_NEEDS
:
'
order_special_needs
'
,
ORDER_ABNORMAL_STATE
:
'
order_abnormal_state
'
ORDER_ABNORMAL_STATE
:
'
order_abnormal_state
'
,
// ========== 出货模块 ==========
BOX_SHIPMENT_TRAILER_STATUS
:
'
shipment_trailer_status
'
,
// 拖车状态
}
}
/**
/**
...
...
src/views/ecw/box/shippingSea/nodePage/booking.vue
View file @
ef72f4e0
<
template
>
<
template
>
<div>
<div>
<el-form
ref=
"bookingForm"
:rules=
"rules"
:model=
"booking"
label-width=
"140px"
>
<el-form
ref=
"bookingForm"
:rules=
"rules"
:model=
"booking
Obj
"
label-width=
"140px"
>
<el-form-item
label=
"SO NO"
>
<el-form-item
label=
"SO NO
.
"
>
<el-input
v-model=
"booking
.soNo"
placeholder=
"请输入SO NO
"
></el-input>
<el-input
v-model=
"booking
Obj.sono"
placeholder=
"请输入SO NO.
"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"船公司类型"
>
<el-form-item
label=
"船公司类型"
>
<el-select
v-model=
"booking
.t
ype"
placeholder=
"请选择船公司类型"
>
<el-select
v-model=
"booking
Obj.shipCompanyT
ype"
placeholder=
"请选择船公司类型"
>
<el-option
v-for=
"
type in types"
:key=
"type"
:label=
"type"
:value=
"type
"
></el-option>
<el-option
v-for=
"
supplier in shipCompany"
:key=
"supplier.id"
:label=
"supplier.companyZh"
:value=
"supplier.id
"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"驳船港"
>
<el-form-item
label=
"驳船港"
>
<el-select
v-model=
"booking.bargePort"
placeholder=
"请选择驳船港"
>
<el-select
v-model=
"booking
Obj
.bargePort"
placeholder=
"请选择驳船港"
>
<el-option
v-for=
"
type in types"
:key=
"type"
:label=
"type"
:value=
"type
"
></el-option>
<el-option
v-for=
"
dock in docks"
:key=
"dock.id"
:label=
"dock.titleZh"
:value=
"dock.id
"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"大船港"
>
<el-form-item
label=
"大船港"
>
<el-select
v-model=
"booking
.bigShip
Port"
placeholder=
"请选择大船港"
>
<el-select
v-model=
"booking
Obj.big
Port"
placeholder=
"请选择大船港"
>
<el-option
v-for=
"
type in types"
:key=
"type"
:label=
"type"
:value=
"type
"
></el-option>
<el-option
v-for=
"
dock in docks"
:key=
"dock.id"
:label=
"dock.titleZh"
:value=
"dock.id
"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"目的港"
>
<el-form-item
label=
"目的港"
>
<el-select
v-model=
"booking
.destination
"
placeholder=
"请选择目的港"
>
<el-select
v-model=
"booking
Obj.destPort
"
placeholder=
"请选择目的港"
>
<el-option
v-for=
"
type in types"
:key=
"type"
:label=
"type"
:value=
"type
"
></el-option>
<el-option
v-for=
"
dock in docks"
:key=
"dock.id"
:label=
"dock.titleZh"
:value=
"dock.id
"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"订舱公司"
>
<el-form-item
label=
"订舱公司"
>
<el-select
v-model=
"booking
.booking
Company"
placeholder=
"请选择订舱公司"
>
<el-select
v-model=
"booking
Obj.space
Company"
placeholder=
"请选择订舱公司"
>
<el-option
v-for=
"
type in types"
:key=
"type"
:label=
"type"
:value=
"type
"
></el-option>
<el-option
v-for=
"
supplier in suppliers"
:key=
"supplier.id"
:label=
"supplier.companyZh"
:value=
"supplier.id
"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"预计驳船时间"
prop=
"
t
ime"
>
<el-form-item
label=
"预计驳船时间"
prop=
"
bargeT
ime"
>
<el-date-picker
type=
"date"
placeholder=
"请选择日期"
v
-model=
"booking
.bargeTime"
></el-date-picker>
<el-date-picker
type=
"date"
placeholder=
"请选择日期"
v
alue-format=
"yyyy-MM-dd"
v-model=
"bookingObj
.bargeTime"
></el-date-picker>
</el-form-item>
</el-form-item>
<el-row>
<el-row>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"预计开船时间"
prop=
"
t
ime"
>
<el-form-item
label=
"预计开船时间"
prop=
"
sailT
ime"
>
<el-date-picker
type=
"date"
placeholder=
"请选择日期"
v
-model=
"booking.departure
Time"
></el-date-picker>
<el-date-picker
type=
"date"
placeholder=
"请选择日期"
v
alue-format=
"yyyy-MM-dd"
v-model=
"bookingObj.sail
Time"
></el-date-picker>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"通知人"
label-width=
"80px"
>
<el-form-item
label=
"通知人"
label-width=
"80px"
>
<el-select
v-model=
"booking
.feedTimePerson
"
placeholder=
"请选择通知人"
>
<el-select
v-model=
"booking
Obj.feedTimePerson1
"
placeholder=
"请选择通知人"
>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
...
@@ -50,12 +50,12 @@
...
@@ -50,12 +50,12 @@
<el-row>
<el-row>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"预计提单补料时间"
>
<el-form-item
label=
"预计提单补料时间"
>
<el-date-picker
type=
"date"
placeholder=
"请选择日期"
v
-model=
"booking
.feedTime"
></el-date-picker>
<el-date-picker
type=
"date"
placeholder=
"请选择日期"
v
alue-format=
"yyyy-MM-dd"
v-model=
"bookingObj
.feedTime"
></el-date-picker>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"通知人"
label-width=
"80px"
>
<el-form-item
label=
"通知人"
label-width=
"80px"
>
<el-select
v-model=
"booking.feedTimePerson"
placeholder=
"请选择通知人"
>
<el-select
v-model=
"booking
Obj
.feedTimePerson"
placeholder=
"请选择通知人"
>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
...
@@ -64,12 +64,12 @@
...
@@ -64,12 +64,12 @@
<el-row>
<el-row>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"预计报关时间"
>
<el-form-item
label=
"预计报关时间"
>
<el-date-picker
type=
"date"
placeholder=
"请选择日期"
v
-model=
"booking
.declarationTime"
></el-date-picker>
<el-date-picker
type=
"date"
placeholder=
"请选择日期"
v
alue-format=
"yyyy-MM-dd"
v-model=
"bookingObj
.declarationTime"
></el-date-picker>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"通知人"
label-width=
"80px"
>
<el-form-item
label=
"通知人"
label-width=
"80px"
>
<el-select
v-model=
"booking.feedTimePerson"
placeholder=
"请选择通知人"
>
<el-select
v-model=
"booking
Obj
.feedTimePerson"
placeholder=
"请选择通知人"
>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
...
@@ -78,12 +78,12 @@
...
@@ -78,12 +78,12 @@
<el-row>
<el-row>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"预计截关时间"
>
<el-form-item
label=
"预计截关时间"
>
<el-date-picker
type=
"date"
placeholder=
"请选择日期"
v
-model=
"booking
.cutOffTime"
></el-date-picker>
<el-date-picker
type=
"date"
placeholder=
"请选择日期"
v
alue-format=
"yyyy-MM-dd"
v-model=
"bookingObj
.cutOffTime"
></el-date-picker>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
label=
"通知人"
label-width=
"80px"
>
<el-form-item
label=
"通知人"
label-width=
"80px"
>
<el-select
v-model=
"booking.feedTimePerson"
placeholder=
"请选择通知人"
>
<el-select
v-model=
"booking
Obj
.feedTimePerson"
placeholder=
"请选择通知人"
>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
</el-col>
</el-col>
...
@@ -99,29 +99,58 @@
...
@@ -99,29 +99,58 @@
</
template
>
</
template
>
<
script
>
<
script
>
import
{
getDockPage
}
from
"
@/api/ecw/dock
"
;
import
{
booking
,
serviceMsg
}
from
"
@/api/ecw/boxSea
"
;
/**
/**
* 订舱
* 订舱
*/
*/
export
default
{
export
default
{
name
:
"
booking
"
,
name
:
"
booking
"
,
props
:
{
shipmentObj
:
Object
,
allSupplier
:
Array
,
},
data
()
{
data
()
{
return
{
return
{
// 船公司类型
types
:
[
"
PIL
"
,
"
MSK
"
,
"
CMA
"
,
"
COSCO
"
,
"
ZIM
"
,
"
ONE
"
,
"
OOCL
"
,
"
MSC
"
,
"
HPL
"
],
// 订舱对象
// 订舱对象
booking
:
{},
booking
Obj
:
{},
// 校验
// 校验
rules
:
{
rules
:
{
time
:
[{
required
:
true
,
message
:
"
必填
"
,
trigger
:
"
change
"
}],
bargeTime
:
[{
required
:
true
,
message
:
"
必填
"
,
trigger
:
"
change
"
}],
sailTime
:
[{
required
:
true
,
message
:
"
必填
"
,
trigger
:
"
change
"
}],
},
},
// 码头
docks
:
[],
// 供应商
suppliers
:
this
.
allSupplier
.
filter
((
item
)
=>
item
.
companyTypes
.
includes
(
"
1
"
)
),
// 船公司
shipCompany
:
this
.
allSupplier
.
filter
((
item
)
=>
item
.
companyTypes
.
includes
(
"
9
"
)
),
};
};
},
},
created
()
{
getDockPage
({
pageNo
:
"
1
"
,
pageSize
:
"
10000
"
}).
then
((
res
)
=>
{
const
{
data
}
=
res
;
this
.
docks
=
data
.
list
;
});
},
methods
:
{
methods
:
{
/** 提交 */
/** 提交 */
onSubmit
()
{
onSubmit
()
{
this
.
$refs
[
"
bookingForm
"
].
validate
((
valid
)
=>
{
this
.
$refs
[
"
bookingForm
"
].
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
alert
(
"
submit!
"
);
booking
({
shipmentId
:
shipmentObj
.
id
,
...
this
.
bookingObj
,
operateType
:
2
,
}).
then
((
res
)
=>
{
serviceMsg
(
res
,
this
).
then
(()
=>
{
this
.
cancel
();
});
});
}
}
});
});
},
},
...
...
src/views/ecw/box/shippingSea/nodePage/preinstall.vue
View file @
ef72f4e0
<
template
>
<
template
>
<div
class=
"preinstall"
>
<div
class=
"preinstall"
>
<!-- 搜索工作栏 -->
<!-- 搜索工作栏 -->
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"90px"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
size=
"small"
:inline=
"true"
v-show=
"showSearch"
label-width=
"90px"
>
<el-form-item
label=
"入仓时间"
prop=
"
warehousingT
ime"
>
<el-form-item
label=
"入仓时间"
prop=
"
rucangt
ime"
>
<el-date-picker
v-model=
"queryParams.
warehousingT
ime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd"
type=
"daterange"
range-separator=
"-"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
/>
<el-date-picker
v-model=
"queryParams.
rucangt
ime"
style=
"width: 240px"
value-format=
"yyyy-MM-dd"
type=
"daterange"
range-separator=
"-"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"始发地"
prop=
"startWarehouseId"
>
<el-form-item
label=
"始发地"
prop=
"startWarehouseId"
>
<el-select
v-model=
"queryParams.startWarehouseId"
placeholder=
"请选择始发地"
clearable
size=
"small"
>
<el-select
v-model=
"queryParams.startWarehouseId"
placeholder=
"请选择始发地"
clearable
size=
"small"
>
<el-option
v-for=
"item in exportWarehouseList"
:label=
"item.titleZh"
:value=
"item.id"
:key=
"item.id"
></el-option>
<el-option
v-for=
"item in exportWarehouseList"
:label=
"item.titleZh"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"目的地"
prop=
"destWarehouseId"
>
<el-form-item
label=
"目的地"
prop=
"destWarehouseId
List
"
>
<el-select
v-model=
"queryParams.destWarehouseId
"
placeholder=
"请选择目的地"
>
<el-select
v-model=
"queryParams.destWarehouseId
List"
placeholder=
"请选择目的地"
multiple
>
<el-option
v-for=
"item in importWarehouseList"
:label=
"item.titleZh"
:value=
"item.id"
:key=
"item.id"
></el-option>
<el-option
v-for=
"item in importWarehouseList"
:label=
"item.titleZh"
:value=
"item.id"
:key=
"item.id"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"状态"
prop=
"
state
"
>
<el-form-item
label=
"状态"
prop=
"
orderStatus
"
>
<el-select
v-model=
"queryParams.
state
"
placeholder=
"请选择状态"
clearable
size=
"small"
>
<el-select
v-model=
"queryParams.
orderStatus
"
placeholder=
"请选择状态"
clearable
size=
"small"
>
<el-option
v-for=
"item in stateOps"
:label=
"item.label"
:value=
"item.value"
:key=
"item.value"
></el-option>
<el-option
v-for=
"item in stateOps"
:label=
"item.label"
:value=
"item.value"
:key=
"item.value"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"备案"
prop=
"
filing
"
>
<el-form-item
label=
"备案"
prop=
"
productRecord
"
>
<el-select
v-model=
"queryParams.
filing
"
placeholder=
"请选择备案"
clearable
size=
"small"
>
<el-select
v-model=
"queryParams.
productRecord
"
placeholder=
"请选择备案"
clearable
size=
"small"
>
<el-option
v-for=
"item in filingOps"
:label=
"item.label"
:value=
"item.value"
:key=
"item.value"
></el-option>
<el-option
v-for=
"item in filingOps"
:label=
"item.label"
:value=
"item.value"
:key=
"item.value"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"报关方式"
prop=
"
declarationMethod
"
>
<el-form-item
label=
"报关方式"
prop=
"
customsType
"
>
<el-select
v-model=
"queryParams.
declarationMethod
"
placeholder=
"请选择报关方式"
clearable
size=
"small"
>
<el-select
v-model=
"queryParams.
customsType
"
placeholder=
"请选择报关方式"
clearable
size=
"small"
>
<el-option
v-for=
"item in declarationMethodOps"
:label=
"item.label"
:value=
"item.value"
:key=
"item.value"
></el-option>
<el-option
v-for=
"item in declarationMethodOps"
:label=
"item.label"
:value=
"item.value"
:key=
"item.value"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"订单号
码"
prop=
"o
rderNo"
>
<el-form-item
label=
"订单号
"
prop=
"toBePreO
rderNo"
>
<el-input
v-model=
"queryParams.orderNo"
placeholder=
"请输入订单号码"
clearable
/>
<el-input
v-model=
"queryParams.orderNo"
placeholder=
"请输入订单号码"
clearable
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"已预装单号"
prop=
"pre
installed
No"
>
<el-form-item
label=
"已预装单号"
prop=
"pre
Order
No"
>
<el-input
v-model=
"queryParams.pre
installed
No"
placeholder=
"请输入已预装单号"
clearable
/>
<el-input
v-model=
"queryParams.pre
Order
No"
placeholder=
"请输入已预装单号"
clearable
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"品名"
prop=
"
product
Name"
>
<el-form-item
label=
"品名"
prop=
"
item
Name"
>
<el-input
v-model=
"queryParams.
product
Name"
placeholder=
"请输入品名"
clearable
/>
<el-input
v-model=
"queryParams.
item
Name"
placeholder=
"请输入品名"
clearable
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
"重货比"
prop=
"
ratioMin
"
>
<el-form-item
label=
"重货比"
prop=
"
weightRatioMax
"
>
<el-input
v-model=
"queryParams.
ratioMin"
placeholder=
"请输入
"
clearable
/>
<el-input
v-model=
"queryParams.
weightRatioMax"
placeholder=
"请输入 大
"
clearable
/>
</el-form-item>
</el-form-item>
<el-form-item
label=
""
prop=
"
ratioMax
"
>
<el-form-item
label=
""
prop=
"
weightRatioMin
"
>
<el-input
v-model=
"queryParams.
ratioMax"
placeholder=
"请输入
"
clearable
/>
<el-input
v-model=
"queryParams.
weightRatioMin"
placeholder=
"请输入 小
"
clearable
/>
</el-form-item>
</el-form-item>
<el-form-item>
<el-form-item>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
搜索已预装订单
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery
('pre')
"
>
搜索已预装订单
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery"
>
搜索待预装订单
</el-button>
<el-button
type=
"primary"
icon=
"el-icon-search"
@
click=
"handleQuery
('toBePre')
"
>
搜索待预装订单
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
重置
</el-button>
<el-button
icon=
"el-icon-refresh"
@
click=
"resetQuery"
>
重置
</el-button>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<!-- 操作工具栏 -->
<!-- 操作工具栏 -->
<el-row
:gutter=
"10"
>
<el-row
:gutter=
"10"
>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"
getList
"
></right-toolbar>
<right-toolbar
:showSearch.sync=
"showSearch"
@
queryTable=
"
handleQuery('toBePre')
"
></right-toolbar>
</el-row>
</el-row>
<!-- 表格 -->
<!-- 表格 -->
<el-card
style=
"margin-top: 15px"
>
<el-card
style=
"margin-top: 15px"
class=
"preinstall-card"
>
<el-row
class=
"preinstall-title"
>
<el-row
class=
"preinstall-title"
>
<div>
<div>
<p>
自编号:
</p>
<p>
自编号:
</p>
<p>
111
</p>
<p>
{{
shipmentObj
.
selfNo
}}
</p>
</div>
</div>
<div>
<div>
<p>
柜号:
</p>
<p>
柜号:
</p>
<p>
111
</p>
<p>
{{
shipmentObj
.
cubNo
}}
</p>
</div>
</div>
<div>
<div>
<p>
容量:
</p>
<p>
容量:
</p>
<p>
111
</p>
<p>
无返回
</p>
</div>
</div>
<div>
<div>
<p>
始发地:
</p>
<p>
始发地:
</p>
<p>
111
</p>
<p>
{{
importCityName
(
shipmentObj
.
startWarehouseId
)
}}
</p>
</div>
</div>
<div>
<div>
<p>
目的地:
</p>
<p>
目的地:
</p>
<p>
111
</p>
<p>
{{
importCityName
(
shipmentObj
.
destWarehouseId
)
}}
</p>
</div>
</div>
</el-row>
</el-row>
<el-row
class=
"preinstall-table"
>
<el-row
class=
"preinstall-table"
>
...
@@ -90,106 +89,156 @@
...
@@ -90,106 +89,156 @@
<div
class=
"table-label"
>
已预装订单
</div>
<div
class=
"table-label"
>
已预装订单
</div>
<div>
<div>
<p>
总计:
</p>
<p>
总计:
</p>
<p>
111
</p>
<p>
无返回
</p>
</div>
</div>
<div
class=
"red-label"
>
<div
class=
"red-label"
>
<p>
可预装方数:
</p>
<p>
可预装方数:
</p>
<p>
111
</p>
<p>
无返回
</p>
</div>
</div>
<div
class=
"red-label"
>
<div
class=
"red-label"
>
<p>
重量:
</p>
<p>
重量:
</p>
<p>
111
</p>
<p>
无返回
</p>
</div>
</div>
<div
class=
"table-button"
>
<div
class=
"table-button"
>
<el-button
type=
"success"
size=
"small"
>
增加
</el-button>
<el-button
type=
"success"
size=
"small"
@
click=
"addPart"
>
增加
</el-button>
</div>
</div>
</el-row>
</el-row>
<el-scrollbar
style=
"height:calc(100% - 43px)"
>
<el-row
v-for=
"(part, index) in preList"
:key=
"index"
class=
"pre-part"
>
<el-row
class=
"preinstall-title"
>
<el-row
class=
"preinstall-title"
>
<div>
<div
class=
"pre-part-info"
>
<p>
第一部分
</p>
<p>
第
{{
index
+
1
}}
部分
</p>
<p>
111
</p>
<p>
<span>
{{
part
.
secStatistics
?
part
.
secStatistics
.
num
:
0
}}
箱
</span>
<span>
{{
part
.
secStatistics
?
part
.
secStatistics
.
volume
:
0
}}
m³
</span>
<span>
{{
part
.
secStatistics
?
part
.
secStatistics
.
weight
:
0
}}
kg
</span>
</p>
</div>
</div>
<div
class=
"table-button"
>
<div
class=
"table-button"
>
<el-button
type=
"danger"
size=
"small
"
>
删除部分
</el-button>
<el-button
type=
"danger"
size=
"small"
@
click=
"deletePart(part)
"
>
删除部分
</el-button>
<el-button
type=
"danger"
size=
"small
"
>
删除订单
</el-button>
<el-button
type=
"danger"
size=
"small"
@
click=
"deleteOrder('selected', part)
"
>
删除订单
</el-button>
<el-button
type=
"primary"
size=
"small"
>
收起
</el-button>
<el-button
type=
"primary"
size=
"small"
@
click=
"foldTable(index, part)"
>
{{
part
.
fold
?
'
展开
'
:
'
收起
'
}}
</el-button>
</div>
</div>
</el-row>
</el-row>
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table
v-loading=
"preLoading"
border
:data=
"part.sectionGoodsList"
v-show=
"!part.fold"
@
select=
"(selection)=>checkboxSelect(selection, part)"
@
select-all=
"(selection)=>checkboxSelect(selection, part)"
>
<el-table-column
type=
"selection"
width=
"55"
/>
<el-table-column
type=
"selection"
align=
"center"
width=
"55"
fixed=
"left"
/>
<el-table-column
label=
"订单号"
align=
"center"
prop=
"selfNo"
/>
<el-table-column
label=
"订单号"
align=
"center"
prop=
"orderId"
width=
"120"
/>
<el-table-column
label=
"目的地"
align=
"center"
prop=
"cubNo"
/>
<el-table-column
label=
"目的地"
align=
"center"
prop=
"destWarehouseName"
width=
"120"
/>
<el-table-column
label=
"入仓时间"
align=
"center"
prop=
"cabinetId"
/>
<el-table-column
label=
"入仓时间"
align=
"center"
prop=
"rucangtime"
width=
"120"
/>
<el-table-column
label=
"品名"
align=
"center"
prop=
"transportType"
/>
<el-table-column
label=
"品名"
align=
"center"
prop=
"prodTitleZh"
width=
"120"
/>
<el-table-column
label=
"箱数"
align=
"center"
prop=
"squareNumber"
/>
<el-table-column
label=
"箱数"
align=
"center"
prop=
"num"
/>
<el-table-column
label=
"体积/重量/重货比"
align=
"center"
prop=
"weight"
/>
<el-table-column
label=
"体积/重量/重货比"
align=
"center"
width=
"140"
prop=
"volumeWeight"
>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<template
slot-scope=
"scope"
>
<p
v-if=
"scope.row.volume"
>
{{
scope
.
row
.
volume
}}
m³
</p>
<p
v-if=
"scope.row.weight"
>
{{
scope
.
row
.
weight
}}
kg
</p>
</
template
>
</el-table-column>
<el-table-column
label=
"报关方式"
align=
"center"
prop=
"customsType"
width=
"120"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.ECW_CUSTOMS_TYPE"
:value=
"scope.row.customsType"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"备案"
align=
"center"
prop=
"productRecord"
width=
"100"
>
<
template
slot-scope=
"scope"
>
<dict-tag
:type=
"DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE"
:value=
"scope.row.productRecord"
/>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
align=
"center"
width=
"160"
class-name=
"small-padding fixed-width"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"primary"
size=
"small"
>
操作
</el-button>
<el-dropdown
trigger=
"click"
@
command=
"(command)=>handleGoods('singele',scope.row,command)"
>
<el-button
type=
"primary"
size=
"small"
>
操作
</el-button>
<el-button
type=
"primary"
size=
"small"
icon=
"el-icon-edit-outline"
circle
></el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
:command=
"bPart"
v-for=
"(bPart, index) in preList"
:key=
"bPart.id"
v-show=
"bPart.id !== part.id"
>
第
{{
index
+
1
}}
部分
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-button
type=
"danger"
size=
"small"
icon=
"el-icon-minus"
circle
style=
"margin-left:10px;"
@
click=
"deleteOrder('row',scope.row)"
></el-button>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
</el-row>
</el-scrollbar>
</el-col>
</el-col>
<!-- 待预装订单 -->
<!-- 待预装订单 -->
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-row
class=
"preinstall-title"
>
<el-row
class=
"preinstall-title"
>
<div
class=
"table-label"
>
待预装订单
</div>
<div
class=
"table-label
red-label
"
>
待预装订单
</div>
<div
class=
"preinstall-title preinstalled"
>
<div
class=
"preinstall-title preinstalled"
>
<div
class=
"red-label"
>
<div
class=
"red-label"
>
<p>
筛选后待预装数量:
</p>
<p>
筛选后待预装数量:
</p>
<p>
111
</p>
<p>
无返回
</p>
</div>
</div>
<div
class=
"red-label"
>
<div
class=
"red-label"
>
<p>
方数:
</p>
<p>
方数:
</p>
<p>
111
</p>
<p>
无返回
</p>
</div>
</div>
<div
class=
"red-label"
>
<div
class=
"red-label"
>
<p>
重量:
</p>
<p>
重量:
</p>
<p>
111
</p>
<p>
无返回
</p>
</div>
</div>
</div>
</div>
</el-row>
</el-row>
<el-row>
<el-scrollbar
style=
"height:calc(100% - 40px)"
>
<el-pagination
background
layout=
"prev, pager, next"
:page-size=
"pageParam.pageSize"
:total=
"total"
@
current-change=
"pageChange"
v-show=
"total > 0"
></el-pagination>
<el-row
v-for=
"(item, index) in toBePreList"
:key=
"index"
class=
"tobePre-row"
>
<el-row
class=
"preinstall-title order-title"
>
<el-row
class=
"preinstall-title order-title"
>
<div>
<div>
<p>
EC11111
</p>
<p>
{{item.orderNo}}
</p>
</div>
</div>
<div>
<div>
<p>
发往:
</p>
<p>
发往:
</p>
<p>
111
</p>
<p>
{{item.destWarehouseName}}
</p>
</div>
</div>
<div>
<div>
<p>
海运拼仓
</p>
<p>
{{item.warehouseType}}
</p>
</div>
</div>
<div>
<div>
<p>
入仓时间
</p>
<p>
入仓时间:
</p>
<p>
111
</p>
<p>
{{item.rucangtime}}
</p>
</div>
</div>
<div>
<div>
<p>
重货比
</p>
<p>
重货比:
</p>
<p>
111
</p>
<p>
{{item.weightRatio}}
</p>
</div>
</div>
<div
class=
"table-button"
>
<div
class=
"table-button"
>
<el-button
type=
"primary"
size=
"small"
>
预装
</el-button>
<el-dropdown
trigger=
"click"
@
command=
"(command)=>handleGoods('all',item,command)"
>
<el-button
type=
"success"
size=
"small"
>
预装全部
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
:command=
"part"
v-for=
"(part, index) in preList"
:key=
"part.id"
>
第{{index+1}}部分
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div>
</div>
</el-row>
</el-row>
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table
v-loading=
"toBePreLoading"
:data=
"item.orderItemList"
border
show-summary
:summary-method=
"getSummaries"
>
<el-table-column
type=
"index"
label=
"序号"
width=
"50"
/>
<el-table-column
type=
"index"
align=
"center"
label=
"序号"
width=
"50"
/>
<el-table-column
label=
"品名"
align=
"center"
prop=
"selfNo"
/>
<el-table-column
label=
"品名"
align=
"center"
prop=
"prodTitleZh"
/>
<el-table-column
label=
"备案"
align=
"center"
prop=
"cubNo"
/>
<el-table-column
label=
"备案"
align=
"center"
prop=
"brandType"
>
<el-table-column
label=
"箱数"
align=
"center"
prop=
"cabinetId"
/>
<
template
slot-scope=
"scope"
>
<el-table-column
label=
"体积/重量"
align=
"center"
prop=
"transportType"
/>
<dict-tag
:type=
"DICT_TYPE.PRODUCT_RECORD_ATTRIBUTE"
:value=
"scope.row.brandType"
/>
<el-table-column
label=
"报关方式"
align=
"center"
prop=
"squareNumber"
/>
</
template
>
<el-table-column
label=
"包装类型"
align=
"center"
prop=
"weight"
/>
</el-table-column>
<el-table-column
label=
"材质"
align=
"center"
prop=
"boxStatus"
/>
<el-table-column
label=
"箱数"
align=
"center"
prop=
"num"
/>
<el-table-column
label=
"体积/重量"
align=
"center"
prop=
"volumeWeight"
>
<
template
slot-scope=
"scope"
>
<p
v-if=
"scope.row.volume"
>
{{
scope
.
row
.
volume
}}
m³
</p>
<p
v-if=
"scope.row.weight"
>
{{
scope
.
row
.
weight
}}
kg
</p>
</
template
>
</el-table-column>
<el-table-column
label=
"报关方式"
align=
"center"
prop=
""
/>
<el-table-column
label=
"包装类型"
align=
"center"
prop=
""
/>
<el-table-column
label=
"材质"
align=
"center"
prop=
"material"
/>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<el-table-column
label=
"操作"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-dropdown
trigger=
"click"
@
command=
"(command)=>handleGoods('singele',scope.row,command)"
>
<el-button
type=
"primary"
size=
"small"
>
预装
</el-button>
<el-button
type=
"primary"
size=
"small"
>
预装
</el-button>
<el-dropdown-menu
slot=
"dropdown"
>
<el-dropdown-item
:command=
"part"
v-for=
"(part, index) in preList"
:key=
"part.id"
>
第
{{
index
+
1
}}
部分
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
</el-table>
</el-table>
</el-row>
</el-row>
</el-scrollbar>
</el-col>
</el-col>
</el-row>
</el-row>
</el-card>
</el-card>
...
@@ -214,13 +263,25 @@
...
@@ -214,13 +263,25 @@
<
script
>
<
script
>
import
{
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
getWarehouseList
}
from
"
@/api/ecw/warehouse
"
;
import
{
getWarehouseList
}
from
"
@/api/ecw/warehouse
"
;
import
{
secGoodsList
,
preloadPage
,
createSection
,
deleteSection
,
serviceMsg
,
createGoods
,
deleteGoods
,
}
from
"
@/api/ecw/boxSea
"
;
/**
/**
* 预装
* 预装
*/
*/
export
default
{
export
default
{
name
:
"
preinstall
"
,
name
:
"
preinstall
"
,
components
:
{},
props
:
{
shipmentObj
:
Object
,
allSupplier
:
Array
,
},
data
()
{
data
()
{
return
{
return
{
// 状态
// 状态
...
@@ -234,28 +295,32 @@ export default {
...
@@ -234,28 +295,32 @@ export default {
declarationMethodOps
:
this
.
getDictDatas
(
DICT_TYPE
.
ECW_CUSTOMS_TYPE
),
declarationMethodOps
:
this
.
getDictDatas
(
DICT_TYPE
.
ECW_CUSTOMS_TYPE
),
// 仓库
// 仓库
warehouseList
:
[],
warehouseList
:
[],
// 遮罩层
// 查询标识
loading
:
false
,
type
:
""
,
// 已预装 遮罩层
preLoading
:
false
,
preList
:
[],
// 选中行
selectedRows
:
{},
// 待预装
toBePreLoading
:
false
,
toBePreList
:
[],
total
:
0
,
// 显示搜索条件
// 显示搜索条件
showSearch
:
true
,
showSearch
:
true
,
// 总条数
total
:
0
,
// 出货列表
list
:
[],
// 查询参数
// 查询参数
queryParams
:
{
queryParams
:
{},
pageNo
:
1
,
pageParam
:
{
pageNo
:
1
,
pageSize
:
5
},
pageSize
:
10
,
},
// 目的地操作员
// 目的地操作员
operatorData
:
{
operatorData
:
{
operator
:
null
,
operator
:
null
,
},
},
// 校验
// 校验
rules
:
{
rules
:
{
operator
:
[
operator
:
[{
required
:
true
,
message
:
"
必填
"
,
trigger
:
"
change
"
}],
{
required
:
true
,
message
:
"
必填
"
,
trigger
:
"
change
"
},
],
},
},
};
};
},
},
...
@@ -276,44 +341,56 @@ export default {
...
@@ -276,44 +341,56 @@ export default {
created
()
{
created
()
{
// 查询仓库数据
// 查询仓库数据
getWarehouseList
().
then
((
res
)
=>
(
this
.
warehouseList
=
res
.
data
));
getWarehouseList
().
then
((
res
)
=>
(
this
.
warehouseList
=
res
.
data
));
// this.getList(
);
this
.
handleQuery
(
"
toBePre
"
);
},
},
methods
:
{
methods
:
{
/** 查询列表 */
/* 获取城市 */
getList
()
{
importCityName
(
id
)
{
this
.
loading
=
true
;
var
arr
=
this
.
warehouseList
.
filter
((
item
)
=>
item
.
id
==
id
);
return
arr
.
length
>
0
?
arr
[
0
].
titleZh
:
"
无
"
;
},
/* 选中行 */
checkboxSelect
(
selection
,
part
)
{
this
.
selectedRows
[
part
.
id
]
=
selection
;
},
/* 查询已预装 */
getSecGoods
()
{
this
.
preLoading
=
true
;
// 处理查询参数
let
params
=
{
...
this
.
queryParams
};
// 已预装单号
params
.
orderNo
=
params
.
preOrderNo
;
params
.
shipmentId
=
this
.
shipmentObj
.
id
;
secGoodsList
(
params
).
then
((
res
)
=>
{
this
.
preList
=
res
.
data
;
this
.
preLoading
=
false
;
});
},
/* 查询待预装 */
getPreLoad
()
{
this
.
toBePreLoading
=
true
;
// 处理查询参数
// 处理查询参数
let
params
=
{
...
this
.
queryParams
};
let
params
=
{
...
this
.
queryParams
};
// 执行查询
// 订单号
getboxPage
(
params
).
then
((
response
)
=>
{
params
.
orderNo
=
params
.
toBePreOrderNo
;
this
.
list
=
response
.
data
.
list
;
preloadPage
({
...
params
,
...
this
.
pageParam
}).
then
((
res
)
=>
{
this
.
total
=
response
.
data
.
total
;
this
.
toBePreList
=
res
.
data
.
list
;
this
.
loading
=
false
;
this
.
total
=
res
.
data
.
total
;
this
.
toBePreLoading
=
false
;
});
});
},
},
/** 搜索按钮操作 */
/** 搜索按钮操作 */
handleQuery
()
{
handleQuery
(
type
)
{
this
.
queryParams
.
pageNo
=
1
;
this
.
pageParam
.
pageNo
=
1
;
this
.
getList
();
if
(
type
===
"
pre
"
)
{
this
.
getSecGoods
();
}
else
{
this
.
getPreLoad
();
}
},
},
/** 重置按钮操作 */
/** 重置按钮操作 */
resetQuery
()
{
resetQuery
()
{
this
.
resetForm
(
"
queryForm
"
);
this
.
resetForm
(
"
queryForm
"
);
this
.
handleQuery
();
},
/** 查看按钮操作 */
handleCommand
(
row
,
command
)
{
switch
(
command
)
{
case
"
sea
"
:
this
.
$router
.
push
(
"
/boxSea/shippingSea/
"
+
row
.
id
);
break
;
case
"
edit
"
:
break
;
case
"
delete
"
:
break
;
}
},
},
/** 提交 */
/** 提交 */
onSubmit
()
{
onSubmit
()
{
...
@@ -323,12 +400,130 @@ export default {
...
@@ -323,12 +400,130 @@ export default {
}
}
});
});
},
},
/* 统计列 */
getSummaries
(
param
)
{
const
{
columns
,
data
}
=
param
;
const
sums
=
[];
columns
.
forEach
((
column
,
index
)
=>
{
if
(
column
.
property
===
"
brandType
"
)
{
sums
[
index
]
=
"
合计
"
;
return
;
}
if
(
column
.
property
===
"
num
"
)
{
sums
[
index
]
=
this
.
calcSum
(
column
.
property
,
data
)
??
0
;
}
if
(
column
.
property
===
"
volumeWeight
"
)
{
const
volume
=
this
.
calcSum
(
"
volume
"
,
data
);
const
weight
=
this
.
calcSum
(
"
weight
"
,
data
);
sums
[
index
]
=
`
${
volume
??
0
}
m
³
$
{
weight
??
0
}
kg
`;
}
});
return sums;
},
/* 计算总和 */
calcSum(key, data) {
const values = data.map((item) => Number(item[key]));
if (!values.every((value) => isNaN(value))) {
return values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0);
}
},
/* 待预装订单分页 */
pageChange(page) {
this.queryParams.page = page;
this.getPreLoad();
},
/* 折叠 */
foldTable(index, part) {
part.fold = !part.fold;
this.$set(this.preList, index, part);
},
/* 增加部分 */
addPart() {
createSection({ shipmentId: this.shipmentObj.id }).then((res) => {
serviceMsg(res, this).then(() => {
this.getSecGoods();
});
});
},
/* 删除部分 */
deletePart(part) {
this.$confirm("确认删除该部分及其已预装订单?", "提示", {
type: "warning",
})
.then((_) => {
deleteSection(part.id).then((res) => {
serviceMsg(res, this).then(() => {
this.getSecGoods();
});
});
})
.catch((_) => {});
},
/** 预装 */
handleGoods(type, item, part) {
let params = {
secId: part.id,
shipmentId: this.shipmentObj.id,
orderId: item.orderId,
};
if (type === "all") {
params.orderItemIdList = item.orderItemList.map(
(data) => data.orderItemId
);
} else {
params.orderItemIdList = [item.orderItemId];
}
createGoods(params).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
},
/* 删除订单 */
deleteOrder(type, data) {
let ids = [];
if (type === "selected") {
const rows = this.selectedRows[data.id] ?? [];
if (!rows.length) {
this.$message.warning("请选择订单");
return;
}
ids = rows.map((item) => item.orderItemId);
}
if (type === "row") {
ids.push(data.orderItemId);
}
deleteGoods(ids).then((res) => {
serviceMsg(res, this).then(() => {
this.queryAllData();
});
});
},
/* 查询所有数据 */
queryAllData() {
this.getSecGoods();
this.pageParam.pageNo = 1;
this.getPreLoad();
},
},
},
};
};
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
>
.preinstall
{
.preinstall
{
display
:
flex
;
flex-direction
:
column
;
p
{
p
{
margin
:
0
;
margin
:
0
;
}
}
...
@@ -359,7 +554,8 @@ export default {
...
@@ -359,7 +554,8 @@ export default {
}
}
.table-label
{
.table-label
{
font-size
:
14px
;
font-size
:
16px
;
font-weight
:
bolder
;
}
}
.red-label
{
.red-label
{
color
:
red
;
color
:
red
;
...
@@ -373,6 +569,7 @@ export default {
...
@@ -373,6 +569,7 @@ export default {
}
}
.preinstall-table
{
.preinstall-table
{
display
:
flex
;
display
:
flex
;
height
:
calc
(
100%
-
30px
);
>
div
{
>
div
{
border
:
1px
solid
#e6ebf5
;
border
:
1px
solid
#e6ebf5
;
padding
:
10px
0px
;
padding
:
10px
0px
;
...
@@ -381,5 +578,32 @@ export default {
...
@@ -381,5 +578,32 @@ export default {
margin-right
:
10px
;
margin-right
:
10px
;
}
}
}
}
.pre-part
{
margin-bottom
:
10px
;
margin-right
:
10px
;
.pre-part-info
{
font-weight
:
bolder
;
>
p
:first-child
{
color
:
#13ce66
;
margin-right
:
10px
;
}
>
p
:last-child
{
>
span
{
margin-right
:
5px
;
}
}
}
}
.preinstall-card
{
.el-card__body
{
height
:
100%
;
.tobePre-row
{
margin-top
:
10px
;
}
}
}
}
}
</
style
>
</
style
>
src/views/ecw/box/shippingSea/nodePage/settlement.vue
0 → 100644
View file @
ef72f4e0
<
template
>
<div>
<el-form
ref=
"settlementForm"
:model=
"settlementObj"
label-width=
"80px"
>
<el-form-item
label=
"可结算"
>
<el-date-picker
type=
"date"
placeholder=
"请选择日期"
v-model=
"settlementObj.billable"
></el-date-picker>
</el-form-item>
<el-form-item
label=
"已结算"
>
<el-date-picker
type=
"date"
placeholder=
"请选择日期"
v-model=
"settlementObj.settled"
></el-date-picker>
</el-form-item>
</el-form>
<el-row
class=
"operate-button"
>
<el-button
type=
"primary"
>
保存
</el-button>
<el-button
type=
"success"
@
click=
"onSubmit"
>
提交
</el-button>
<el-button
@
click=
"cancel"
>
关闭
</el-button>
</el-row>
</div>
</
template
>
<
script
>
/**
* 结算
*/
export
default
{
name
:
"
settlement
"
,
data
()
{
return
{
// 结算对象
settlementObj
:
{},
};
},
methods
:
{
/** 提交 */
onSubmit
()
{
this
.
$refs
[
"
settlementForm
"
].
validate
((
valid
)
=>
{
if
(
valid
)
{
alert
(
"
submit!
"
);
}
});
},
/** 取消 */
cancel
()
{
this
.
$emit
(
"
closeDialog
"
);
},
},
};
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
src/views/ecw/box/shippingSea/nodePage/trailer.vue
View file @
ef72f4e0
<
template
>
<
template
>
<div>
<div>
<el-form
ref=
"trailerForm"
:rules=
"rules"
:model=
"trailer
"
label-width=
"120px"
class=
"trailer-form
"
>
<el-form
ref=
"trailerForm"
:rules=
"rules"
:model=
"trailer
Obj"
label-width=
"120px
"
>
<el-form-item
label=
"状态"
>
<el-form-item
label=
"状态"
>
<el-select
v-model=
"trailer
.s
tatus"
placeholder=
"请选择状态"
>
<el-select
v-model=
"trailer
Obj.tlContainerS
tatus"
placeholder=
"请选择状态"
>
<el-option
v-for=
"
item in status"
:key=
"item.value"
:label=
"item.label"
:value=
"item
.value"
></el-option>
<el-option
v-for=
"
type in this.getDictDatas(DICT_TYPE.BOX_SHIPMENT_TRAILER_STATUS)"
:key=
"type.value"
:label=
"type.label"
:value=
"type
.value"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"拖车公司"
>
<el-form-item
label=
"拖车公司"
>
<el-select
v-model=
"trailer
.trailerCompany
"
placeholder=
"请选择拖车公司"
>
<el-select
v-model=
"trailer
Obj.tlCompanyId
"
placeholder=
"请选择拖车公司"
>
<el-option
v-for=
"
item in status"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value
"
></el-option>
<el-option
v-for=
"
supplier in suppliers"
:key=
"supplier.id"
:label=
"supplier.companyZh"
:value=
"supplier.id
"
></el-option>
</el-select>
</el-select>
</el-form-item>
</el-form-item>
<el-form-item
label=
"拖车时间"
prop=
"time"
>
<el-form-item
label=
"拖车时间"
prop=
"t
lT
ime"
>
<el-date-picker
type=
"date"
placeholder=
"请选择日期"
v
-model=
"trailer.trailer
Time"
></el-date-picker>
<el-date-picker
type=
"date"
placeholder=
"请选择日期"
v
alue-format=
"yyyy-MM-dd"
v-model=
"trailerObj.tl
Time"
></el-date-picker>
</el-form-item>
</el-form-item>
<el-form-item
label=
"车牌"
>
<el-form-item
label=
"车牌"
>
<el-input
v-model=
"trailer
.licensePlate
"
placeholder=
"请输入车牌"
></el-input>
<el-input
v-model=
"trailer
Obj.tlLicensePlate
"
placeholder=
"请输入车牌"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"司机"
>
<el-form-item
label=
"司机"
>
<el-input
v-model=
"trailer
.d
river"
placeholder=
"请输入司机"
></el-input>
<el-input
v-model=
"trailer
Obj.tlD
river"
placeholder=
"请输入司机"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"司机联系方式"
>
<el-form-item
label=
"司机联系方式"
>
<el-input
v-model=
"trailer
.telephone
"
placeholder=
"请输入司机联系方式"
></el-input>
<el-input
v-model=
"trailer
Obj.tlDriverContact
"
placeholder=
"请输入司机联系方式"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"货柜号"
>
<el-form-item
label=
"货柜号"
>
<el-input
v-model=
"trailer
.containerNumber
"
placeholder=
"请输入货柜号"
></el-input>
<el-input
v-model=
"trailer
Obj.tlContainerNo
"
placeholder=
"请输入货柜号"
></el-input>
</el-form-item>
</el-form-item>
<el-form-item
label=
"封条"
>
<el-form-item
label=
"封条"
>
<el-input
v-model=
"trailer
.s
eal"
placeholder=
"请输入封条"
></el-input>
<el-input
v-model=
"trailer
Obj.tlStripS
eal"
placeholder=
"请输入封条"
></el-input>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<el-row
class=
"operate-button"
>
<el-row
class=
"operate-button"
>
<el-button
type=
"primary"
@
click=
"onSubmit"
>
保存
</el-button>
<el-button
type=
"primary"
@
click=
"onSubmit
(1)
"
>
保存
</el-button>
<el-button
type=
"success"
@
click=
"onSubmit"
>
提交
</el-button>
<el-button
type=
"success"
@
click=
"onSubmit
(2)
"
>
提交
</el-button>
<el-button
@
click=
"cancel"
>
关闭
</el-button>
<el-button
@
click=
"cancel"
>
关闭
</el-button>
</el-row>
</el-row>
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
{
trailer
,
serviceMsg
}
from
"
@/api/ecw/boxSea
"
;
/**
/**
* 拖车
* 拖车
*/
*/
export
default
{
export
default
{
name
:
"
trailer
"
,
name
:
"
trailer
"
,
props
:
{
shipmentObj
:
Object
,
allSupplier
:
Array
,
},
data
()
{
data
()
{
return
{
return
{
// 状态
status
:
[
{
value
:
"
1
"
,
label
:
"
已派车,待提柜
"
,
},
{
value
:
"
2
"
,
label
:
"
已提柜,待还柜
"
,
},
{
value
:
"
3
"
,
label
:
"
已还柜
"
,
},
],
// 拖车对象
// 拖车对象
trailer
:
{},
trailer
Obj
:
{},
// 校验
// 校验
rules
:
{
rules
:
{
time
:
[{
required
:
true
,
message
:
"
必填
"
,
trigger
:
"
change
"
}],
t
lT
ime
:
[{
required
:
true
,
message
:
"
必填
"
,
trigger
:
"
change
"
}],
},
},
// 拖车公司
suppliers
:
this
.
allSupplier
.
filter
((
item
)
=>
item
.
companyTypes
.
includes
(
"
4
"
)
),
};
};
},
},
methods
:
{
methods
:
{
/** 提交 */
/** 提交 */
onSubmit
()
{
onSubmit
(
operateType
)
{
this
.
$refs
[
"
trailerForm
"
].
validate
((
valid
)
=>
{
this
.
$refs
[
"
trailerForm
"
].
validate
((
valid
)
=>
{
if
(
valid
)
{
if
(
valid
)
{
alert
(
"
submit!
"
);
trailer
({
...
this
.
trailerObj
,
shipmentId
:
shipmentObj
.
id
,
operateType
,
}).
then
((
res
)
=>
{
serviceMsg
(
res
,
this
).
then
(()
=>
{
this
.
cancel
();
});
});
}
}
});
});
},
},
...
...
src/views/ecw/box/shippingSea/seaProcess.vue
View file @
ef72f4e0
...
@@ -22,7 +22,7 @@
...
@@ -22,7 +22,7 @@
<!-- 弹窗 -->
<!-- 弹窗 -->
<el-dialog
custom-class=
"shipping-dialog"
:title=
"dialogConfig.title"
:visible.sync=
"dialogConfig.dialogVisible"
:width=
"dialogConfig.width"
:fullscreen=
"dialogConfig.fullscreen"
:close-on-click-modal=
false
:modal-append-to-body=
false
append-to-body
destroy-on-close
>
<el-dialog
custom-class=
"shipping-dialog"
:title=
"dialogConfig.title"
:visible.sync=
"dialogConfig.dialogVisible"
:width=
"dialogConfig.width"
:fullscreen=
"dialogConfig.fullscreen"
:close-on-click-modal=
false
:modal-append-to-body=
false
append-to-body
destroy-on-close
>
<component
v-bind:is=
"currentComponent"
@
closeDialog=
"closeDialog"
></component>
<component
v-bind:is=
"currentComponent"
@
closeDialog=
"closeDialog"
:shipmentObj=
"shipmentObj"
:allSupplier=
"allSupplier"
></component>
</el-dialog>
</el-dialog>
</div>
</div>
</template>
</template>
...
@@ -43,6 +43,8 @@ import clrDocumentWidget from "./nodePage/clrDocument.vue";
...
@@ -43,6 +43,8 @@ import clrDocumentWidget from "./nodePage/clrDocument.vue";
import
arrivalWidget
from
"
./nodePage/arrival.vue
"
;
import
arrivalWidget
from
"
./nodePage/arrival.vue
"
;
import
cusClearanceWidget
from
"
./nodePage/cusClearance.vue
"
;
import
cusClearanceWidget
from
"
./nodePage/cusClearance.vue
"
;
import
unloadingWidget
from
"
./nodePage/unloading/index.vue
"
;
import
unloadingWidget
from
"
./nodePage/unloading/index.vue
"
;
import
settlementWidget
from
"
./nodePage/settlement.vue
"
;
import
{
getSupplierPage
}
from
"
@/api/ecw/supplier
"
;
/**
/**
* 海运流程图
* 海运流程图
...
@@ -65,10 +67,11 @@ export default {
...
@@ -65,10 +67,11 @@ export default {
arrivalWidget
,
arrivalWidget
,
cusClearanceWidget
,
cusClearanceWidget
,
unloadingWidget
,
unloadingWidget
,
settlementWidget
,
},
},
props
:
{
props
:
{
shippingType
:
String
,
shippingType
:
String
,
boxId
:
String
,
shipmentObj
:
Object
,
},
},
data
()
{
data
()
{
return
{
return
{
...
@@ -101,9 +104,9 @@ export default {
...
@@ -101,9 +104,9 @@ export default {
type
:
"
trailer
"
,
type
:
"
trailer
"
,
},
},
{
{
unNode
:
true
,
type
:
"
agent
"
,
title
:
"
AGENT
"
,
title
:
"
AGENT
"
,
imgSrc
:
require
(
"
@/assets/images/shipping/agent-start.png
"
),
type
:
"
agent
"
,
},
},
],
],
[
[
...
@@ -151,13 +154,13 @@ export default {
...
@@ -151,13 +154,13 @@ export default {
type: "clearanceDocument",
type: "clearanceDocument",
}, */
}, */
{
{
unNode
:
true
,
type
:
"
blCopy
"
,
title
:
"
提单Copy
"
,
title
:
"
提单Copy
"
,
imgSrc
:
require
(
"
@/assets/images/shipping/tdcopy-start.png
"
),
type
:
"
blCopy
"
,
},
},
{
{
unNode
:
true
,
type
:
"
clrDocument
"
,
type
:
"
clrDocument
"
,
imgSrc
:
require
(
"
@/assets/images/shipping/qg-start.png
"
),
title
:
"
清关文件
"
,
title
:
"
清关文件
"
,
},
},
],
],
...
@@ -193,8 +196,21 @@ export default {
...
@@ -193,8 +196,21 @@ export default {
},
},
// 当前组件
// 当前组件
currentComponent
:
""
,
currentComponent
:
""
,
// 供应商
allSupplier
:
[],
};
};
},
},
created
()
{
getSupplierPage
({
pageNo
:
"
1
"
,
pageSize
:
"
10000
"
}).
then
((
res
)
=>
{
const
{
data
}
=
res
;
this
.
allSupplier
=
data
.
list
.
map
((
item
)
=>
{
if
(
item
.
companyType
)
{
item
.
companyTypes
=
item
.
companyType
.
split
(
"
,
"
);
}
return
item
;
});
});
},
methods
:
{
methods
:
{
/** 关闭弹窗 */
/** 关闭弹窗 */
closeDialog
()
{
closeDialog
()
{
...
@@ -228,6 +244,11 @@ export default {
...
@@ -228,6 +244,11 @@ export default {
this
.
$set
(
this
.
dialogConfig
,
"
dialogVisible
"
,
true
);
this
.
$set
(
this
.
dialogConfig
,
"
dialogVisible
"
,
true
);
},
},
},
},
watch
:
{
shipmentObj
(
val
)
{
this
.
shipmentObj
=
val
;
},
},
};
};
</
script
>
</
script
>
...
...
src/views/ecw/box/shippingSea/shippingSea.vue
View file @
ef72f4e0
...
@@ -9,17 +9,23 @@
...
@@ -9,17 +9,23 @@
<!-- 信息 -->
<!-- 信息 -->
<el-card
style=
"margin-top: 15px"
>
<el-card
style=
"margin-top: 15px"
>
<el-descriptions
:column=
"5"
border
>
<el-descriptions
:column=
"5"
border
>
<el-descriptions-item
label=
"自编号"
></el-descriptions-item>
<el-descriptions-item
label=
"自编号"
>
{{
shipmentObj
.
selfNo
}}
</el-descriptions-item>
<el-descriptions-item
label=
"运输方式"
></el-descriptions-item>
<el-descriptions-item
label=
"运输方式"
>
<el-descriptions-item
label=
"始发地"
></el-descriptions-item>
<dict-tag
:type=
"DICT_TYPE.ECW_TRANSPORT_TYPE"
:value=
"shipmentObj.transportType"
/>
<el-descriptions-item
label=
"目的地"
></el-descriptions-item>
</el-descriptions-item>
<el-descriptions-item
label=
"始发地"
>
{{
importCityName
(
shipmentObj
.
startWarehouseId
)
}}
</el-descriptions-item>
<el-descriptions-item
label=
"目的地"
>
{{
importCityName
(
shipmentObj
.
destWarehouseId
)
}}
</el-descriptions-item>
<el-descriptions-item
label=
"状态"
></el-descriptions-item>
<el-descriptions-item
label=
"状态"
></el-descriptions-item>
</el-descriptions>
</el-descriptions>
</el-card>
</el-card>
<!-- 海运流程图 -->
<!-- 海运流程图 -->
<div
class=
"shipping-flow"
>
<div
class=
"shipping-flow"
>
<shippingChart
:
boxId=
"boxId
"
/>
<shippingChart
:
shipmentObj=
"shipmentObj
"
/>
</div>
</div>
</el-col>
</el-col>
</el-row>
</el-row>
...
@@ -28,6 +34,9 @@
...
@@ -28,6 +34,9 @@
<
script
>
<
script
>
import
shippingChart
from
"
../shippingSea/seaProcess
"
;
import
shippingChart
from
"
../shippingSea/seaProcess
"
;
import
{
getbox
}
from
"
@/api/ecw/box
"
;
import
{
getWarehouseList
}
from
"
@/api/ecw/warehouse
"
;
/**
/**
* 海运操作主页面
* 海运操作主页面
*/
*/
...
@@ -37,7 +46,28 @@ export default {
...
@@ -37,7 +46,28 @@ export default {
shippingChart
,
shippingChart
,
},
},
props
:
{
props
:
{
boxId
:
String
,
shipmentId
:
String
,
},
data
()
{
return
{
shipmentObj
:
{},
warehouseList
:
[],
};
},
created
()
{
getbox
(
this
.
shipmentId
).
then
((
res
)
=>
{
const
{
data
}
=
res
;
this
.
shipmentObj
=
data
??
{};
});
getWarehouseList
().
then
((
r
)
=>
{
this
.
warehouseList
=
r
.
data
;
});
},
methods
:
{
importCityName
(
id
)
{
var
arr
=
this
.
warehouseList
.
filter
((
item
)
=>
item
.
id
==
id
);
return
arr
.
length
>
0
?
arr
[
0
].
titleZh
:
"
无
"
;
},
},
},
};
};
</
script
>
</
script
>
...
@@ -48,6 +78,12 @@ export default {
...
@@ -48,6 +78,12 @@ export default {
}
}
// 海运操作统一弹窗样式
// 海运操作统一弹窗样式
.shipping-dialog
{
.shipping-dialog
{
.el-dialog__body
{
height
:
calc
(
100%
-
54px
);
>
:first-child
{
height
:
100%
;
}
}
// 页面内元素弹窗form控件宽度设置
// 页面内元素弹窗form控件宽度设置
.el-form-item__content
{
.el-form-item__content
{
>
div
{
>
div
{
...
@@ -57,7 +93,7 @@ export default {
...
@@ -57,7 +93,7 @@ export default {
.operate-button
{
.operate-button
{
text-align
:
center
;
text-align
:
center
;
}
}
.two-element
{
.two-element
{
.el-form-item__content
{
.el-form-item__content
{
display
:
flex
;
display
:
flex
;
>
:last-child
{
>
:last-child
{
...
...
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