Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
梁建民
/
wmsMin
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
089f82d5
authored
Mar 15, 2023
by
LJM
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
报关
parent
221827d6
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
799 additions
and
422 deletions
assets/css/declaration/checkIn.scss
assets/css/declaration/futureGoods.scss
assets/css/declaration/index.scss
assets/css/font.css
pages/declaration/checkIn.vue
pages/declaration/futureGoods.vue
pages/declaration/index.vue
pages/home/index.vue
static/iconfont.ttf
uni_modules/uni-table/components/uni-tr/uni-tr.vue
util/api.js
assets/css/declaration/checkIn.scss
View file @
089f82d5
.home-index
{
padding-bottom
:
158rpx
;
.check-in
{
.head
{
padding-top
:
12rpx
;
height
:
180rpx
;
border-top
:
1rpx
solid
#cad9e0
;
padding
:
0
24rpx
;
height
:
100rpx
;
background
:
#ffffff
;
border-bottom
:
1px
solid
#e6edf0
;
padding-left
:
28rpx
;
padding-right
:
24rpx
;
.box
{
.icon-juxing
{
font-size
:
120rpx
;
color
:
#197adb
;
margin-right
:
24rpx
;
}
.t1
{
font-size
:
36rpx
;
color
:
#197adb
;
font-weight
:
bold
;
}
.t2
{
font-size
:
24rpx
;
color
:
#404547
;
margin-top
:
12rpx
;
}
.t3
{
font-size
:
22rpx
;
color
:
#6e767a
;
}
.icon-riqi1
{
font-size
:
36rpx
;
color
:
#6e767a
;
}
}
.fast-entry
{
position
:
relative
;
background
:
#ffffff
;
padding-top
:
24rpx
;
&
:
:
after
{
position
:
absolute
;
bottom
:
0px
;
left
:
0
;
right
:
0
;
width
:
100%
;
height
:
1px
;
background-color
:
#ffffff
;
content
:
''
;
.tt
{
margin-left
:
12rpx
;
font-size
:
28rpx
;
color
:
#1e2021
;
}
.ti
t
{
.ti
me-box
{
font-size
:
24rpx
;
color
:
#6e767a
;
}
.uni-input
{
margin-right
:
12rpx
;
}
.icon-sanjiaoxing3
{
font-size
:
17rpx
;
color
:
#9ca8ad
;
}
}
.title
{
padding-left
:
24rpx
;
margin-top
:
32rpx
;
background-color
:
#ffffff
;
height
:
93rpx
;
.arrow
{
width
:
12rpx
;
height
:
12rpx
;
background
:
#197adb
;
border-radius
:
50%
;
margin-right
:
16rpx
;
}
.tt
{
font-size
:
32rpx
;
color
:
#1e2021
;
font-weight
:
bold
;
margin-bottom
:
36rpx
;
padding-left
:
24rpx
;
}
.bar
{
flex-wrap
:
wrap
;
.box
{
position
:
relative
;
flex
:
1
;
height
:
177rpx
;
border-right
:
1px
solid
#e6edf0
;
border-bottom
:
1px
solid
#e6edf0
;
&
:nth-of-type
(
3n
)
{
border-right
:
1px
solid
transparent
;
}
.num
{
position
:
absolute
;
right
:
32rpx
;
top
:
5rpx
;
width
:
42rpx
;
height
:
32rpx
;
background
:
#bb3434
;
border-radius
:
16rpx
;
font-size
:
20rpx
;
color
:
#ffffff
;
}
.uni-table
{
padding
:
0
24rpx
120rpx
24rpx
;
background
:
#fff
;
.uni-th
{
height
:
62rpx
;
background
:
#fff
;
border-top
:
1px
solid
#cad9e0
;
border-bottom
:
1px
solid
#cad9e0
;
text
{
flex
:
0
0
20%
;
font-size
:
22rpx
;
color
:
#404547
;
border-right
:
1px
solid
#cad9e0
;
&
:last-child
{
border-right
:
none
;
}
.iconfont
{
font-size
:
64rpx
;
color
:
#197adb
;
}
}
.uni-tr
{
height
:
100%
;
background
:
#fff
;
border-bottom
:
1px
solid
#cad9e0
;
text
{
flex
:
0
0
20%
;
font-size
:
22rpx
;
color
:
#6e767a
;
border-right
:
1px
solid
#cad9e0
;
padding
:
8rpx
0
;
&
:last-child
{
border-right
:
none
;
}
.text
{
margin-top
:
8rpx
;
font-size
:
22rpx
;
color
:
#404547
;
&
.color
{
color
:
#0079fe
;
}
}
}
}
.scan
{
position
:
fixed
;
bottom
:
50rpx
;
left
:
0
;
right
:
0
;
width
:
301rpx
;
height
:
86rpx
;
background
:
#197adb
;
box-shadow
:
0px
9rpx
10rpx
0px
rgba
(
0
,
0
,
0
,
0
.11
);
border-radius
:
43rpx
;
margin
:
0
auto
;
.icon-juxing2
{
font-size
:
48rpx
;
color
:
#ffffff
;
margin-right
:
28rpx
;
}
.tt
{
font-size
:
32rpx
;
color
:
#ffffff
;
}
}
}
assets/css/declaration/futureGoods.scss
View file @
089f82d5
.home-index
{
padding-bottom
:
158rpx
;
.futureGoods
{
.head
{
padding-top
:
12rpx
;
height
:
180rpx
;
border-top
:
1rpx
solid
#cad9e0
;
padding
:
0
24rpx
;
height
:
100rpx
;
background
:
#ffffff
;
border-bottom
:
1px
solid
#e6edf0
;
padding-left
:
28rpx
;
padding-right
:
24rpx
;
.box
{
.icon-juxing
{
font-size
:
120rpx
;
color
:
#197adb
;
margin-right
:
24rpx
;
}
.t1
{
font-size
:
36rpx
;
color
:
#197adb
;
font-weight
:
bold
;
}
.t2
{
font-size
:
24rpx
;
color
:
#404547
;
margin-top
:
12rpx
;
}
.t3
{
font-size
:
22rpx
;
color
:
#6e767a
;
}
.icon-riqi1
{
font-size
:
36rpx
;
color
:
#6e767a
;
}
}
.fast-entry
{
position
:
relative
;
background
:
#ffffff
;
padding-top
:
24rpx
;
&
:
:
after
{
position
:
absolute
;
bottom
:
0px
;
left
:
0
;
right
:
0
;
width
:
100%
;
height
:
1px
;
background-color
:
#ffffff
;
content
:
''
;
.tt
{
margin-left
:
12rpx
;
font-size
:
28rpx
;
color
:
#1e2021
;
}
.ti
t
{
.ti
me-box
{
font-size
:
24rpx
;
color
:
#6e767a
;
}
.uni-input
{
margin-right
:
12rpx
;
}
.icon-sanjiaoxing3
{
font-size
:
17rpx
;
color
:
#9ca8ad
;
}
}
.title
{
padding-left
:
24rpx
;
margin
:
32rpx
24rpx
0
24rpx
;
background-color
:
#ffffff
;
height
:
93rpx
;
.arrow
{
width
:
12rpx
;
height
:
12rpx
;
background
:
#197adb
;
border-radius
:
50%
;
margin-right
:
16rpx
;
}
.tt
{
font-size
:
32rpx
;
color
:
#1e2021
;
font-weight
:
bold
;
margin-bottom
:
36rpx
;
padding-left
:
24rpx
;
}
.bar
{
flex-wrap
:
wrap
;
.box
{
position
:
relative
;
flex
:
1
;
height
:
177rpx
;
border-right
:
1px
solid
#e6edf0
;
border-bottom
:
1px
solid
#e6edf0
;
&
:nth-of-type
(
3n
)
{
border-right
:
1px
solid
transparent
;
}
.num
{
position
:
absolute
;
right
:
32rpx
;
top
:
5rpx
;
width
:
42rpx
;
height
:
32rpx
;
background
:
#bb3434
;
border-radius
:
16rpx
;
font-size
:
20rpx
;
color
:
#ffffff
;
}
.iconfont
{
font-size
:
64rpx
;
color
:
#197adb
;
}
.text
{
margin-top
:
8rpx
;
font-size
:
22rpx
;
color
:
#404547
;
}
}
}
.uni-table-box
{
padding-bottom
:
50rpx
;
margin
:
0
24rpx
;
background-color
:
#ffffff
;
::v-deep
.uni-table-scroll
{
}
::v-deep
.uni-table
{
min-width
:
100%
!
important
;
}
}
.
scan
{
.
fix-box
{
position
:
fixed
;
bottom
:
50rpx
;
left
:
0
;
right
:
0
;
width
:
301rpx
;
height
:
86rpx
;
background
:
#197adb
;
box-shadow
:
0px
9rpx
10rpx
0px
rgba
(
0
,
0
,
0
,
0
.11
);
border-radius
:
43rpx
;
margin
:
0
auto
;
.icon-juxing2
{
font-size
:
48rpx
;
color
:
#ffffff
;
margin-right
:
28rpx
;
bottom
:
0
;
width
:
100%
;
height
:
98rpx
;
background
:
#ffffff
;
padding
:
0
24rpx
;
.t1
{
font-size
:
22rpx
;
color
:
#404547
;
}
.t
t
{
.t
2
{
font-size
:
32rpx
;
color
:
#197adb
;
font-weight
:
bold
;
}
.btn
{
width
:
252rpx
;
height
:
78rpx
;
background
:
#bb3434
;
border-radius
:
4rpx
;
font-size
:
28rpx
;
color
:
#ffffff
;
}
}
}
::v-deep
{
.uni-table-scroll
{
width
:
auto
!
important
;
margin
:
0
24rpx
;
}
.checkbox
{
width
:
45px
!
important
;
display
:
flex
!
important
;
align-items
:
center
;
}
.disabledClass
{
.checkbox
{
.is-checked
{
background-color
:
#e6edf0
!
important
;
border-color
:
#e6edf0
!
important
;
}
}
}
.uni-table-tr
{
display
:
flex
!
important
;
}
.uni-table-th
,
.uni-table-td
{
width
:
25%
!
important
;
display
:
flex
!
important
;
font-weight
:
normal
!
important
;
}
.uni-table-td
{
border-right
:
1px
#ebeef5
solid
;
}
}
assets/css/declaration/index.scss
View file @
089f82d5
.home-index
{
padding-bottom
:
158rpx
;
.declaration-index
{
.head
{
padding-top
:
12rpx
;
height
:
180rpx
;
border-top
:
1rpx
solid
#cad9e0
;
padding
:
0
24rpx
;
height
:
100rpx
;
background
:
#ffffff
;
border-bottom
:
1px
solid
#e6edf0
;
padding-left
:
28rpx
;
padding-right
:
24rpx
;
.box
{
.icon-juxing
{
font-size
:
120rpx
;
color
:
#197adb
;
margin-right
:
24rpx
;
}
.t1
{
font-size
:
36rpx
;
color
:
#197adb
;
font-weight
:
bold
;
}
.t2
{
font-size
:
24rpx
;
color
:
#404547
;
margin-top
:
12rpx
;
}
.t3
{
font-size
:
22rpx
;
color
:
#6e767a
;
}
.icon-riqi1
{
font-size
:
36rpx
;
color
:
#6e767a
;
}
}
.fast-entry
{
position
:
relative
;
background
:
#ffffff
;
padding-top
:
24rpx
;
&
:
:
after
{
position
:
absolute
;
bottom
:
0px
;
left
:
0
;
right
:
0
;
width
:
100%
;
height
:
1px
;
background-color
:
#ffffff
;
content
:
''
;
.tt
{
margin-left
:
12rpx
;
font-size
:
28rpx
;
color
:
#1e2021
;
}
.ti
t
{
.ti
me-box
{
font-size
:
24rpx
;
color
:
#1e2021
;
color
:
#6e767a
;
}
.uni-input
{
margin-right
:
12rpx
;
}
.icon-sanjiaoxing3
{
font-size
:
17rpx
;
color
:
#9ca8ad
;
}
}
.content
{
padding-top
:
40rpx
;
.t1
{
font-size
:
28rpx
;
color
:
#404547
;
margin-bottom
:
16rpx
;
text-align
:
center
;
}
.t2
{
font-size
:
42rpx
;
color
:
#197adb
;
font-weight
:
bold
;
margin-bottom
:
36rpx
;
padding-left
:
24
rpx
;
text-align
:
center
;
margin-bottom
:
70
rpx
;
}
.bar
{
flex-wrap
:
wrap
;
.box
{
position
:
relative
;
flex
:
1
;
height
:
177rpx
;
border-right
:
1px
solid
#e6edf0
;
border-bottom
:
1px
solid
#e6edf0
;
&
:nth-of-type
(
3n
)
{
border-right
:
1px
solid
transparent
;
.btn-box
{
position
:
relative
;
.btn
{
width
:
488rpx
;
height
:
128rpx
;
background
:
#197adb
;
border-radius
:
4rpx
;
font-size
:
28rpx
;
color
:
#ffffff
;
margin-bottom
:
120rpx
;
font-weight
:
bold
;
&
.curr
{
background
:
#cad9e0
;
color
:
#404547
;
}
.num
{
position
:
absolute
;
right
:
32rpx
;
top
:
5
rpx
;
width
:
42rpx
;
height
:
32rpx
;
background
:
#bb3434
;
border-radius
:
1
6rpx
;
font-size
:
20rpx
;
color
:
#ffffff
;
}
.is
{
position
:
absolute
;
bottom
:
72
rpx
;
left
:
0
;
right
:
0
;
.time
{
font-size
:
2
6rpx
;
color
:
#404547
;
margin-right
:
36rpx
;
}
.
iconfont
{
font-size
:
64
rpx
;
.
author
{
font-size
:
26
rpx
;
color
:
#197adb
;
}
.text
{
margin-top
:
8rpx
;
font-size
:
22rpx
;
.status
{
font-size
:
26rpx
;
color
:
#404547
;
}
}
}
}
.
sca
n
{
.
fix-bt
n
{
position
:
fixed
;
bottom
:
5
0rpx
;
bottom
:
11
0rpx
;
left
:
0
;
right
:
0
;
width
:
301rpx
;
height
:
86rpx
;
background
:
#197adb
;
box-shadow
:
0px
9rpx
10rpx
0px
rgba
(
0
,
0
,
0
,
0
.11
);
border-radius
:
43rpx
;
margin
:
0
auto
;
.icon-juxing2
{
font-size
:
48rpx
;
width
:
100%
;
.entry-btn
{
margin
:
0
24rpx
;
height
:
88rpx
;
background
:
#bb3434
;
border-radius
:
4rpx
;
font-size
:
28rpx
;
color
:
#ffffff
;
margin-right
:
28rpx
;
}
.tt
{
font-size
:
32rpx
;
color
:
#ffffff
;
.statistics
{
margin-top
:
24rpx
;
padding
:
10rpx
0
;
background-color
:
#ffffff
;
.iconfont
{
font-size
:
44rpx
;
color
:
#404547
;
margin-bottom
:
4rpx
;
}
.tt
{
font-size
:
20rpx
;
color
:
#6e767a
;
}
}
}
}
assets/css/font.css
View file @
089f82d5
...
...
@@ -11,6 +11,22 @@
-moz-osx-font-smoothing
:
grayscale
;
}
.icon-sanjiaoxing3
:before
{
content
:
"\e78b"
;
}
.icon-chakanbeizhu
:before
{
content
:
"\e78c"
;
}
.icon-riqi1
:before
{
content
:
"\e78d"
;
}
.icon-juxing10
:before
{
content
:
"\e78e"
;
}
.icon-weixin
:before
{
content
:
"\e600"
;
}
...
...
pages/declaration/checkIn.vue
View file @
089f82d5
<
template
>
<view
class=
"mine-index"
></view>
<view
class=
"check-in"
>
<view
class=
"head row bothSide verCenter"
>
<view
class=
"row verCenter"
>
<text
class=
"iconfont icon-riqi1"
></text>
<text
class=
"tt"
>
报关日期选择
</text>
</view>
<view
class=
"time-box"
>
<picker
mode=
"date"
:value=
"date"
@
change=
"bindDateChange"
>
<view
class=
"row verCenter"
>
<view
class=
"uni-input"
>
{{
date
}}
</view>
<text
class=
"iconfont icon-sanjiaoxing3"
></text>
</view>
</picker>
</view>
</view>
<view
class=
"title row verCenter"
>
<text
class=
"arrow"
></text>
<text
class=
"tt"
>
报关单列表
</text>
</view>
<view
class=
"uni-table"
>
<view
class=
"uni-th row"
>
<text
class=
"row verCenter rowCenter"
>
报告时间
</text>
<text
class=
"row verCenter rowCenter"
>
查车确认
</text>
<text
class=
"row verCenter rowCenter"
>
通关确认
</text>
<text
class=
"row verCenter rowCenter"
>
入库确认
</text>
<text
class=
"row verCenter rowCenter"
>
未来
</text>
</view>
<template
v-if=
"list.length > 0"
>
<view
class=
"uni-tr row verCenter"
v-for=
"(item, index) in list"
:key=
"index"
>
<text
class=
"row verCenter rowCenter"
>
{{
item
.
date
||
'-'
}}
</text>
<text
class=
"row verCenter rowCenter"
>
{{
item
.
car_confirm_time
||
'-'
}}
</text>
<text
class=
"row verCenter rowCenter"
>
{{
item
.
pass_customs_time
||
'-'
}}
</text>
<text
class=
"row verCenter rowCenter"
>
{{
item
.
sz_getgoods_time
||
'-'
}}
</text>
<text
class=
"row verCenter rowCenter"
>
{{
item
.
no_num
}}
</text>
</view>
</
template
>
<
template
v-else
>
<view
class=
"uni-tr row verCenter"
><text
class=
"row verCenter rowCenter"
style=
"flex:0 0 100%"
>
暂无数据
</text></view>
</
template
>
</view>
</view>
</template>
<
script
>
import
{
API
}
from
'@/util/api.js'
;
export
default
{
data
()
{
return
{};
const
currentDate
=
this
.
getDate
({
format
:
true
});
return
{
date
:
currentDate
,
list
:
[]
};
},
onShow
()
{
this
.
getData
();
},
methods
:
{
bindDateChange
:
function
(
e
)
{
this
.
date
=
e
.
detail
.
value
;
this
.
getData
();
},
getDate
()
{
const
date
=
new
Date
();
let
year
=
date
.
getFullYear
();
let
month
=
date
.
getMonth
()
+
1
;
let
day
=
date
.
getDate
();
month
=
month
>
9
?
month
:
'0'
+
month
;
day
=
day
>
9
?
day
:
'0'
+
day
;
return
`
${
year
}
-
${
month
}
-
${
day
}
`
;
},
getData
()
{
this
.
request
(
API
.
userInfo
,
'POST'
,
{},
fals
e
).
then
(
res
=>
{
this
.
request
(
API
.
getCustomsDeclarationAndReceiptStatistics
,
'GET'
,
{
date
:
this
.
date
},
tru
e
).
then
(
res
=>
{
if
(
res
.
err_code
===
0
)
{
if
(
res
.
data
.
length
>
0
)
{
this
.
is_loading
=
false
;
this
.
list
=
res
.
data
;
}
else
{
this
.
list
=
[];
}
}
else
{
uni
.
showToast
({
title
:
res
.
err_msg
,
icon
:
'error'
});
}
});
}
...
...
pages/declaration/futureGoods.vue
View file @
089f82d5
<
template
>
<view
class=
"mine-index"
></view>
<view
class=
"futureGoods"
>
<view
class=
"head row bothSide verCenter"
>
<view
class=
"row verCenter"
>
<text
class=
"iconfont icon-riqi1"
></text>
<text
class=
"tt"
>
报关日期选择
</text>
</view>
<view
class=
"time-box"
>
<picker
mode=
"date"
:value=
"date"
@
change=
"bindDateChange"
>
<view
class=
"row verCenter"
>
<view
class=
"uni-input"
>
{{
date
}}
</view>
<text
class=
"iconfont icon-sanjiaoxing3"
></text>
</view>
</picker>
</view>
</view>
<view
class=
"title row verCenter"
>
<text
class=
"arrow"
></text>
<text
class=
"tt"
>
报关单列表
</text>
</view>
<view
class=
"uni-table-box"
>
<uni-table
type=
"selection"
border
stripe
emptyText=
"暂无更多数据"
@
selection-change=
"selectionChange"
>
<uni-tr>
<uni-th
align=
"center"
>
入仓号
</uni-th>
<uni-th
align=
"center"
>
车序
</uni-th>
<uni-th
align=
"center"
>
汇总件数
</uni-th>
<uni-th
align=
"center"
>
到货状态
</uni-th>
</uni-tr>
<uni-tr
v-for=
"(item, index) in list"
:key=
"index"
:disabledClass=
"item.status == '未来货'"
>
<uni-td
align=
"center"
>
{{
item
.
entrustNo
||
''
}}
</uni-td>
<uni-td
align=
"center"
>
{{
item
.
car_sort
||
''
}}
</uni-td>
<uni-td
align=
"center"
>
{{
item
.
sumCustomsQty
||
''
}}
</uni-td>
<uni-td
align=
"center"
>
<template
v-if=
"item.status == '正常'"
>
<text
style=
"color: #197ADB;"
>
{{
item
.
status
||
''
}}
</text>
</
template
>
<
template
v-else
>
<text
style=
"color: #BB3434;"
>
{{
item
.
status
||
''
}}
</text>
</
template
>
</uni-td>
</uni-tr>
</uni-table>
</view>
<view
class=
"fix-box row bothSide verCenter"
>
<view>
<text
class=
"t1"
>
已选择:
</text>
<text
class=
"t2"
>
{{ filterList.length }}
</text>
</view>
<view
class=
"btn row rowCenter verCenter"
@
click=
"createRegistrationOfNonArrivalGoods()"
>
未来货登记
</view>
</view>
</view>
</template>
<
script
>
import
{
API
}
from
'@/util/api.js'
;
export
default
{
data
()
{
return
{};
const
currentDate
=
this
.
getDate
({
format
:
true
});
return
{
date
:
currentDate
,
list
:
[],
selectedIndexs
:
[],
filterList
:
[],
erp_order_sn
:
[],
car_sort
:
[]
};
},
onShow
()
{
this
.
getData
();
},
methods
:
{
bindDateChange
:
function
(
e
)
{
this
.
date
=
e
.
detail
.
value
;
this
.
getData
();
},
getDate
()
{
const
date
=
new
Date
();
let
year
=
date
.
getFullYear
();
let
month
=
date
.
getMonth
()
+
1
;
let
day
=
date
.
getDate
();
month
=
month
>
9
?
month
:
'0'
+
month
;
day
=
day
>
9
?
day
:
'0'
+
day
;
return
`
${
year
}
-
${
month
}
-
${
day
}
`
;
},
selectionChange
(
e
)
{
this
.
selectedIndexs
=
e
.
detail
.
index
;
this
.
filterList
=
this
.
selectedIndexs
.
map
(
i
=>
this
.
list
[
i
]);
this
.
filterList
=
this
.
filterList
.
filter
((
currentValue
,
index
,
arr
)
=>
{
if
(
currentValue
.
status
==
'正常'
)
{
return
arr
;
}
});
},
/**
* 生成今天的未来-货登记
*/
createRegistrationOfNonArrivalGoods
()
{
if
(
this
.
filterList
.
length
<=
0
)
{
uni
.
showModal
({
title
:
'提示'
,
content
:
'请选择报关单'
,
showCancel
:
false
});
return
false
;
}
this
.
erp_order_sn
=
this
.
filterList
.
map
(
obj
=>
{
return
obj
.
entrustNo
;
});
this
.
car_sort
=
this
.
filterList
.
map
(
obj
=>
{
return
obj
.
car_sort
;
});
this
.
request
(
API
.
createRegistrationOfNonArrivalGoods
,
'GET'
,
{
'erp_order_sn[]'
:
this
.
erp_order_sn
.
join
(
','
),
'car_sort[]'
:
this
.
car_sort
.
join
(
','
)
},
true
).
then
(
res
=>
{
if
(
res
.
err_code
===
0
)
{
uni
.
showToast
({
title
:
'操作成功'
,
icon
:
'success'
});
setTimeout
(()
=>
{
uni
.
redirectTo
({
url
:
'/pages/declaration/index'
});
},
2000
);
}
else
{
uni
.
showModal
({
title
:
'提示'
,
content
:
res
.
err_msg
,
showCancel
:
false
});
}
});
},
/**
* 获取金蝶的未来货登记
*/
getData
()
{
this
.
request
(
API
.
userInfo
,
'POST'
,
{},
fals
e
).
then
(
res
=>
{
this
.
request
(
API
.
getEasRegistrationOfNonArrivalGoods
,
'GET'
,
{
date
:
this
.
date
},
tru
e
).
then
(
res
=>
{
if
(
res
.
err_code
===
0
)
{
if
(
res
.
data
.
length
>
0
)
{
this
.
list
=
res
.
data
;
}
else
{
this
.
list
=
[];
}
}
else
if
(
res
.
err_code
===
20046
)
{
}
else
{
uni
.
showToast
({
title
:
res
.
err_msg
,
icon
:
'error'
});
}
});
}
...
...
pages/declaration/index.vue
View file @
089f82d5
<
template
>
<view
class=
"mine-index"
></view>
<view
class=
"declaration-index"
>
<view
class=
"head row bothSide verCenter"
>
<view
class=
"row verCenter"
>
<text
class=
"iconfont icon-riqi1"
></text>
<text
class=
"tt"
>
报关日期选择
</text>
</view>
<view
class=
"time-box"
>
<picker
mode=
"date"
:value=
"date"
@
change=
"bindDateChange"
>
<view
class=
"row verCenter"
>
<view
class=
"uni-input"
>
{{
date
}}
</view>
<text
class=
"iconfont icon-sanjiaoxing3"
></text>
</view>
</picker>
</view>
</view>
<view
class=
"content column rowCenter verCenter"
>
<view
class=
"t1"
>
当前时间:
</view>
<view
class=
"t2"
>
{{
timer
}}
</view>
<view
class=
"btn-box"
>
<template
v-if=
"andReceipt.car_confirm_time"
>
<view
class=
"btn row rowCenter verCenter curr"
>
查车确认 (关务)
</view>
<view
class=
"is row rowCenter verCenter"
>
<text
class=
"time"
>
{{
andReceipt
.
car_confirm_time
}}
</text>
<text
class=
"author"
>
{{
andReceipt
.
car_confirm_name
}}
</text>
<text
class=
"status"
>
已确认
</text>
</view>
</
template
>
<
template
v-else
>
<view
class=
"btn row rowCenter verCenter"
@
click=
"signTodayCustomsDeclarationAndReceipt(1)"
>
查车确认 (关务)
</view>
</
template
>
</view>
<view
class=
"btn-box"
>
<
template
v-if=
"andReceipt.pass_customs_time"
>
<view
class=
"btn row rowCenter verCenter curr"
>
通关确认 (关务)
</view>
<view
class=
"is row rowCenter verCenter"
>
<text
class=
"time"
>
{{
andReceipt
.
pass_customs_time
}}
</text>
<text
class=
"author"
>
{{
andReceipt
.
pass_customs_name
}}
</text>
<text
class=
"status"
>
已确认
</text>
</view>
</
template
>
<
template
v-else
>
<view
class=
"btn row rowCenter verCenter"
@
click=
"signTodayCustomsDeclarationAndReceipt(2)"
>
通关确认 (关务)
</view>
</
template
>
</view>
<view
class=
"btn-box"
>
<
template
v-if=
"andReceipt.sz_getgoods_time"
>
<view
class=
"btn row rowCenter verCenter curr"
>
深圳收货确认
</view>
<view
class=
"is row rowCenter verCenter"
>
<text
class=
"time"
>
{{
andReceipt
.
sz_getgoods_time
}}
</text>
<text
class=
"author"
>
{{
andReceipt
.
sz_getgoods_name
}}
</text>
<text
class=
"status"
>
已确认
</text>
</view>
</
template
>
<
template
v-else
>
<view
class=
"btn row rowCenter verCenter"
@
click=
"signTodayCustomsDeclarationAndReceipt(3)"
>
深圳收货确认
</view>
</
template
>
</view>
</view>
<view
class=
"fix-btn"
>
<navigator
class=
"entry-btn row rowCenter verCenter"
url=
"/pages/declaration/futureGoods"
hover-class=
"none"
>
未来货登记
</navigator>
<navigator
class=
"statistics column rowCenter verCenter"
url=
"/pages/declaration/checkIn"
hover-class=
"none"
>
<text
class=
"iconfont icon-juxing10"
></text>
<text
class=
"tt"
>
签到统计
</text>
</navigator>
</view>
</view>
</template>
<
script
>
import
{
API
}
from
'@/util/api.js'
;
export
default
{
data
()
{
return
{};
const
currentDate
=
this
.
getDate
({
format
:
true
});
return
{
date
:
currentDate
,
andReceipt
:
{},
timer
:
''
};
},
onShow
()
{
this
.
getData
();
setInterval
(()
=>
{
this
.
getTime
();
},
1000
);
this
.
getTodayCustomsDeclarationAndReceipt
();
},
methods
:
{
getData
()
{
this
.
request
(
API
.
userInfo
,
'POST'
,
{},
false
).
then
(
res
=>
{
getDate
()
{
const
date
=
new
Date
();
let
year
=
date
.
getFullYear
();
let
month
=
date
.
getMonth
()
+
1
;
let
day
=
date
.
getDate
();
month
=
month
>
9
?
month
:
'0'
+
month
;
day
=
day
>
9
?
day
:
'0'
+
day
;
return
`
${
year
}
-
${
month
}
-
${
day
}
`
;
},
getTime
()
{
var
date
=
new
Date
();
var
year
=
date
.
getFullYear
();
var
month
=
date
.
getMonth
()
+
1
;
var
day
=
date
.
getDate
();
var
hour
=
date
.
getHours
()
<
10
?
'0'
+
date
.
getHours
()
:
date
.
getHours
();
var
minute
=
date
.
getMinutes
()
<
10
?
'0'
+
date
.
getMinutes
()
:
date
.
getMinutes
();
var
second
=
date
.
getSeconds
()
<
10
?
'0'
+
date
.
getSeconds
()
:
date
.
getSeconds
();
month
>=
1
&&
month
<=
9
?
(
month
=
'0'
+
month
)
:
''
;
day
>=
0
&&
day
<=
9
?
(
day
=
'0'
+
day
)
:
''
;
var
timer
=
year
+
'-'
+
month
+
'-'
+
day
+
' '
+
hour
+
':'
+
minute
+
':'
+
second
;
this
.
timer
=
timer
;
},
bindDateChange
:
function
(
e
)
{
this
.
date
=
e
.
detail
.
value
;
this
.
getTodayCustomsDeclarationAndReceipt
();
},
/**
* 获取报关收货信息
*/
getTodayCustomsDeclarationAndReceipt
()
{
this
.
request
(
API
.
getTodayCustomsDeclarationAndReceipt
,
'POST'
,
{
datetime
:
this
.
date
},
false
).
then
(
res
=>
{
if
(
res
.
err_code
===
0
)
{
this
.
andReceipt
=
res
.
data
;
}
else
{
uni
.
showModal
({
title
:
'提示'
,
content
:
res
.
err_msg
,
showCancel
:
false
});
}
});
},
signTodayCustomsDeclarationAndReceipt
(
type
)
{
if
(
type
==
2
)
{
if
(
this
.
andReceipt
.
car_confirm_time
==
''
)
{
uni
.
showModal
({
title
:
'提示'
,
content
:
'请先签到查车确认 (关务)'
,
showCancel
:
false
});
return
false
;
}
}
if
(
type
==
3
)
{
if
(
this
.
andReceipt
.
car_confirm_time
==
''
)
{
uni
.
showModal
({
title
:
'提示'
,
content
:
'请先签到查车确认 (关务)'
,
showCancel
:
false
});
return
false
;
}
if
(
this
.
andReceipt
.
pass_customs_time
==
''
)
{
uni
.
showModal
({
title
:
'提示'
,
content
:
'请先签到通关确认 (关务)'
,
showCancel
:
false
});
return
false
;
}
}
this
.
request
(
API
.
signTodayCustomsDeclarationAndReceipt
,
'POST'
,
{
type
:
type
},
false
).
then
(
res
=>
{
if
(
res
.
err_code
===
0
)
{
uni
.
showToast
({
title
:
'操作成功'
,
duration
:
2000
});
setTimeout
(()
=>
{
this
.
getTodayCustomsDeclarationAndReceipt
();
},
2000
);
}
else
{
uni
.
showModal
({
title
:
'提示'
,
content
:
res
.
err_msg
,
showCancel
:
false
});
}
});
}
...
...
pages/home/index.vue
View file @
089f82d5
...
...
@@ -131,7 +131,7 @@ export default {
},
{
name
:
'报关收货签到'
,
iconfont
:
'icon-
wuli
u'
,
iconfont
:
'icon-
chakanbeizh
u'
,
tips
:
''
}
]
...
...
static/iconfont.ttf
View file @
089f82d5
No preview for this file type
uni_modules/uni-table/components/uni-tr/uni-tr.vue
View file @
089f82d5
<
template
>
<!-- #ifdef H5 -->
<tr
class=
"uni-table-tr"
>
<th
v-if=
"selection === 'selection' && ishead"
class=
"checkbox"
:class=
"
{ 'tr-table--border': border }">
<table-checkbox
:checked=
"checked"
:indeterminate=
"indeterminate"
:disabled=
"disabled"
@
checkboxSelected=
"checkboxSelected"
></table-checkbox>
</th>
<slot></slot>
<!--
<uni-th
class=
"th-fixed"
>
123
</uni-th>
-->
</tr>
<!-- #endif -->
<!-- #ifndef H5 -->
<view
class=
"uni-table-tr"
>
<view
v-if=
"selection === 'selection' "
class=
"checkbox"
:class=
"
{ 'tr-table--border': border }">
<table-checkbox
:checked=
"checked"
:indeterminate=
"indeterminate"
:disabled=
"disabled"
@
checkboxSelected=
"checkboxSelected"
></table-checkbox>
</view>
<slot></slot>
</view>
<!-- #endif -->
<!-- #ifdef H5 -->
<tr
class=
"uni-table-tr"
>
<th
v-if=
"selection === 'selection' && ishead"
class=
"checkbox"
:class=
"
{ 'tr-table--border': border }">
<table-checkbox
:checked=
"checked"
:indeterminate=
"indeterminate"
:disabled=
"disabled"
@
checkboxSelected=
"checkboxSelected"
></table-checkbox></th>
<slot></slot>
<!--
<uni-th
class=
"th-fixed"
>
123
</uni-th>
-->
</tr>
<!-- #endif -->
<!-- #ifndef H5 -->
<view
class=
"uni-table-tr"
:class=
"
{ disabledClass: disabledClass }">
<view
v-if=
"selection === 'selection'"
class=
"checkbox"
:class=
"
{ 'tr-table--border': border }">
<table-checkbox
:checked=
"checked"
:indeterminate=
"indeterminate"
:disabled=
"disabled"
@
checkboxSelected=
"checkboxSelected"
></table-checkbox></view>
<slot></slot>
</view>
<!-- #endif -->
</
template
>
<
script
>
import
tableCheckbox
from
'./table-checkbox.vue'
import
tableCheckbox
from
'./table-checkbox.vue'
;
/**
* Tr 表格行组件
* @description 表格行组件 仅包含 th,td 组件
* @tutorial https://ext.dcloud.net.cn/plugin?id=
*/
export
default
{
name
:
'uniTr'
,
components
:
{
tableCheckbox
},
props
:
{
disabled
:
{
type
:
Boolean
,
default
:
false
},
keyValue
:
{
type
:
[
String
,
Number
],
default
:
''
}
},
options
:
{
virtualHost
:
true
},
data
()
{
return
{
value
:
false
,
border
:
false
,
selection
:
false
,
widthThArr
:
[],
ishead
:
true
,
checked
:
false
,
indeterminate
:
false
}
},
created
()
{
this
.
root
=
this
.
getTable
()
this
.
head
=
this
.
getTable
(
'uniThead'
)
if
(
this
.
head
)
{
this
.
ishead
=
false
this
.
head
.
init
(
this
)
}
this
.
border
=
this
.
root
.
border
this
.
selection
=
this
.
root
.
type
this
.
root
.
trChildren
.
push
(
this
)
const
rowData
=
this
.
root
.
data
.
find
(
v
=>
v
[
this
.
root
.
rowKey
]
===
this
.
keyValue
)
if
(
rowData
){
this
.
rowData
=
rowData
}
this
.
root
.
isNodata
()
},
mounted
()
{
if
(
this
.
widthThArr
.
length
>
0
)
{
const
selectionWidth
=
this
.
selection
===
'selection'
?
50
:
0
this
.
root
.
minWidth
=
this
.
widthThArr
.
reduce
((
a
,
b
)
=>
Number
(
a
)
+
Number
(
b
))
+
selectionWidth
}
},
// #ifndef VUE3
destroyed
()
{
const
index
=
this
.
root
.
trChildren
.
findIndex
(
i
=>
i
===
this
)
this
.
root
.
trChildren
.
splice
(
index
,
1
)
this
.
root
.
isNodata
()
},
// #endif
// #ifdef VUE3
unmounted
()
{
const
index
=
this
.
root
.
trChildren
.
findIndex
(
i
=>
i
===
this
)
this
.
root
.
trChildren
.
splice
(
index
,
1
)
this
.
root
.
isNodata
()
},
// #endif
methods
:
{
minWidthUpdate
(
width
)
{
this
.
widthThArr
.
push
(
width
)
},
// 选中
checkboxSelected
(
e
)
{
let
rootData
=
this
.
root
.
data
.
find
(
v
=>
v
[
this
.
root
.
rowKey
]
===
this
.
keyValue
)
this
.
checked
=
e
.
checked
this
.
root
.
check
(
rootData
||
this
,
e
.
checked
,
rootData
?
this
.
keyValue
:
null
)
},
change
(
e
)
{
this
.
root
.
trChildren
.
forEach
(
item
=>
{
if
(
item
===
this
)
{
this
.
root
.
check
(
this
,
e
.
detail
.
value
.
length
>
0
?
true
:
false
)
}
})
},
/**
* 获取父元素实例
*/
getTable
(
name
=
'uniTable'
)
{
let
parent
=
this
.
$parent
let
parentName
=
parent
.
$options
.
name
while
(
parentName
!==
name
)
{
parent
=
parent
.
$parent
if
(
!
parent
)
return
false
parentName
=
parent
.
$options
.
name
}
return
parent
}
}
}
name
:
'uniTr'
,
components
:
{
tableCheckbox
},
props
:
{
disabledClass
:
{
type
:
Boolean
,
default
:
false
},
disabled
:
{
type
:
Boolean
,
default
:
false
},
keyValue
:
{
type
:
[
String
,
Number
],
default
:
''
}
},
options
:
{
virtualHost
:
true
},
data
()
{
return
{
value
:
false
,
border
:
false
,
selection
:
false
,
widthThArr
:
[],
ishead
:
true
,
checked
:
false
,
indeterminate
:
false
};
},
created
()
{
this
.
root
=
this
.
getTable
();
this
.
head
=
this
.
getTable
(
'uniThead'
);
if
(
this
.
head
)
{
this
.
ishead
=
false
;
this
.
head
.
init
(
this
);
}
this
.
border
=
this
.
root
.
border
;
this
.
selection
=
this
.
root
.
type
;
this
.
root
.
trChildren
.
push
(
this
);
const
rowData
=
this
.
root
.
data
.
find
(
v
=>
v
[
this
.
root
.
rowKey
]
===
this
.
keyValue
);
if
(
rowData
)
{
this
.
rowData
=
rowData
;
}
this
.
root
.
isNodata
();
},
mounted
()
{
if
(
this
.
widthThArr
.
length
>
0
)
{
const
selectionWidth
=
this
.
selection
===
'selection'
?
50
:
0
;
this
.
root
.
minWidth
=
this
.
widthThArr
.
reduce
((
a
,
b
)
=>
Number
(
a
)
+
Number
(
b
))
+
selectionWidth
;
}
},
// #ifndef VUE3
destroyed
()
{
const
index
=
this
.
root
.
trChildren
.
findIndex
(
i
=>
i
===
this
);
this
.
root
.
trChildren
.
splice
(
index
,
1
);
this
.
root
.
isNodata
();
},
// #endif
// #ifdef VUE3
unmounted
()
{
const
index
=
this
.
root
.
trChildren
.
findIndex
(
i
=>
i
===
this
);
this
.
root
.
trChildren
.
splice
(
index
,
1
);
this
.
root
.
isNodata
();
},
// #endif
methods
:
{
minWidthUpdate
(
width
)
{
this
.
widthThArr
.
push
(
width
);
},
// 选中
checkboxSelected
(
e
)
{
let
rootData
=
this
.
root
.
data
.
find
(
v
=>
v
[
this
.
root
.
rowKey
]
===
this
.
keyValue
);
this
.
checked
=
e
.
checked
;
this
.
root
.
check
(
rootData
||
this
,
e
.
checked
,
rootData
?
this
.
keyValue
:
null
);
},
change
(
e
)
{
this
.
root
.
trChildren
.
forEach
(
item
=>
{
if
(
item
===
this
)
{
this
.
root
.
check
(
this
,
e
.
detail
.
value
.
length
>
0
?
true
:
false
);
}
});
},
/**
* 获取父元素实例
*/
getTable
(
name
=
'uniTable'
)
{
let
parent
=
this
.
$parent
;
let
parentName
=
parent
.
$options
.
name
;
while
(
parentName
!==
name
)
{
parent
=
parent
.
$parent
;
if
(
!
parent
)
return
false
;
parentName
=
parent
.
$options
.
name
;
}
return
parent
;
}
}
};
</
script
>
<
style
lang=
"scss"
>
$
border-color
:
#ebeef5
;
.uni-table-tr
{
/* #ifndef APP-NVUE */
display
:
table-row
;
transition
:
all
0.3s
;
box-sizing
:
border-box
;
/* #endif */
/* #ifndef APP-NVUE */
display
:
table-row
;
transition
:
all
0.3s
;
box-sizing
:
border-box
;
/* #endif */
}
.checkbox
{
padding
:
0
8px
;
width
:
26px
;
padding-left
:
12px
;
/* #ifndef APP-NVUE */
display
:
table-cell
;
vertical-align
:
middle
;
/* #endif */
color
:
#333
;
font-weight
:
500
;
border-bottom
:
1px
$
border-color
solid
;
font-size
:
14px
;
//
text-align
:
center
;
padding
:
0
8px
;
width
:
26px
;
padding-left
:
12px
;
/* #ifndef APP-NVUE */
display
:
table-cell
;
vertical-align
:
middle
;
/* #endif */
color
:
#333
;
font-weight
:
500
;
border-bottom
:
1px
$
border-color
solid
;
font-size
:
14px
;
//
text-align
:
center
;
}
.tr-table--border
{
border-right
:
1px
$
border-color
solid
;
border-right
:
1px
$
border-color
solid
;
}
/* #ifndef APP-NVUE */
.uni-table-tr
{
::v-deep
.uni-table-th
{
&.
table--border
:
last-child
{
//
border-right
:
none
;
}
}
::v-deep
.uni-table-th
{
&.
table--border
:
last-child
{
//
border-right
:
none
;
}
}
::v-deep
.uni-table-td
{
&.
table--border
:
last-child
{
//
border-right
:
none
;
}
}
::v-deep
.uni-table-td
{
&.
table--border
:
last-child
{
//
border-right
:
none
;
}
}
}
/* #endif */
...
...
util/api.js
View file @
089f82d5
...
...
@@ -124,8 +124,27 @@ const API = {
/**
* 扫描出入库列表
*/
szScanOutInList
:
API_BASE
+
'/supplywechatwms/szScanOutInList'
szScanOutInList
:
API_BASE
+
'/supplywechatwms/szScanOutInList'
,
/**
* 获取报关收货信息
*/
getTodayCustomsDeclarationAndReceipt
:
API_BASE
+
'/supplywechatwms/getTodayCustomsDeclarationAndReceipt'
,
/**
* 签到今天的报关收货信息
*/
signTodayCustomsDeclarationAndReceipt
:
API_BASE
+
'/supplywechatwms/signTodayCustomsDeclarationAndReceipt'
,
/**
* 获取金蝶的未来货登记
*/
getEasRegistrationOfNonArrivalGoods
:
API_BASE
+
'/supplywechatwms/getEasRegistrationOfNonArrivalGoods'
,
/**
* 生成今天的未来-货登记
*/
createRegistrationOfNonArrivalGoods
:
API_BASE
+
'/supplywechatwms/createRegistrationOfNonArrivalGoods'
,
/**
* 获取今天的报关收货统计
*/
getCustomsDeclarationAndReceiptStatistics
:
API_BASE
+
'/supplywechatwms/getCustomsDeclarationAndReceiptStatistics'
,
}
...
...
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