Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
S
self-support
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
李俊赕
self-support
Commits
ed1a215e
Commit
ed1a215e
authored
Aug 09, 2021
by
Facius
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: 【ID1001292】 前台-师傅在小程序前台完工后,“审核中”及“已完工”状态下均可查看完工信息
parent
5e3bcaf6
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
558 additions
and
470 deletions
+558
-470
index.vue
src/components/order/index.vue
+558
-470
No files found.
src/components/order/index.vue
View file @
ed1a215e
<
template
>
<
template
>
<view
class=
"order-view"
@
click=
"handleClickCell"
>
<view
class=
"order-view"
@
click=
"handleClickCell"
>
<view
class=
"order-top-view"
>
<view
class=
"order-top-view"
>
<view
class=
"left-view"
>
<view
class=
"left-view"
>
<view
:class=
"['tag-view',
{'active': active}]">
<view
:class=
"['tag-view',
{ active: active }]">
{{
orderData
.
orderServiceType
}}
{{
orderData
.
orderServiceType
}}
</view>
</view>
<view
class=
"store-view"
>
{{
orderData
.
categoryName
}}
</view>
<view
class=
"store-view"
>
{{
orderData
.
categoryName
}}
</view>
</view>
</view>
<view
class=
"right-view"
>
{{
orderData
.
orderBusinessTypeText
}}
</view>
<view
class=
"right-view"
>
{{
orderData
.
orderBusinessTypeText
}}
</view>
</view>
</view>
<view
class=
"content-view"
>
<view
class=
"content-view"
>
<view
class=
"info-view"
v-for=
"(item, key) in infoTexts"
:key=
"key"
>
<view
class=
"info-view"
v-for=
"(item, key) in infoTexts"
:key=
"key"
>
<view
class=
"info-title"
>
<view
class=
"info-title"
>
<text>
{{
item
.
name
+
':'
}}
</text>
<text>
{{
item
.
name
+
':'
}}
</text>
</view>
</view>
<view
class=
"info-content"
>
<view
class=
"info-content"
>
<text
@
longpress=
"handleLongpress(key, orderData[key])"
>
{{
orderData
[
key
]
}}
</text>
<text
@
longpress=
"handleLongpress(key, orderData[key])"
>
{{
<text
v-if=
"item.content"
>
{{
' / '
+
orderData
[
item
.
content
]
}}
</text>
orderData
[
key
]
</view>
}}
</text>
</view>
<text
v-if=
"item.content"
>
{{
' / '
+
orderData
[
item
.
content
]
}}
</text>
<view
class=
"address-view"
>
</view>
<view
class=
"address-left-view"
>
</view>
<image
class=
"address-image"
:src=
"dizhiImage"
mode=
"widthFix"
></image>
<view
class=
"address-view"
>
<text>
{{
formatAddress
(
orderData
)
}}
</text>
<view
class=
"address-left-view"
>
</view>
<image
<view
v-if=
"showDistance"
class=
"address-right-view"
>
class=
"address-image"
{{
orderDistance
}}
km
:src=
"dizhiImage"
</view>
mode=
"widthFix"
</view>
></image>
</view>
<text>
{{
formatAddress
(
orderData
)
}}
</text>
</view>
<view
v-if=
"showDistance"
class=
"address-right-view"
>
{{
orderDistance
}}
km
</view>
</view>
</view>
<view
class=
"line-view"
></view>
<view
class=
"line-view"
></view>
<view
class=
"reason-view"
v-if=
"showReason"
>
<view
class=
"reason-view"
v-if=
"showReason"
>
<view
class=
"reason-title"
><text>
未通过原因:
</text></view>
<view
class=
"reason-title"
><text>
未通过原因:
</text></view>
<view
class=
"reason-text"
><text
v-for=
"(item, index) in orderData.auditResults"
:key=
"index"
>
{{
item
}}
</text></view>
<view
class=
"reason-text"
</view>
><text
v-for=
"(item, index) in orderData.auditResults"
:key=
"index"
>
{{
<view
class=
"bottom-view"
>
item
<view>
}}
</text></view
<view
v-if=
"showCountTime"
class=
"bottom-left-view"
>
>
<view
:class=
"['bottom-tag-view',
{'timeout': timeout}]">
<text>
{{
tagText
}}
</text></view>
</view>
<u-count-down
:timestamp=
"timestamp"
font-size=
"40"
show-days
separator=
"zh"
<view
class=
"bottom-view"
>
:color=
"timeout ? '#FA5A49' : '#FF930D'"
@
change=
"handleChange"
separator-color=
"#666666"
ref=
"order-count-down"
></u-count-down>
<view>
</view>
<view
v-if=
"showCountTime"
class=
"bottom-left-view"
>
<view
v-else-if=
"showTime"
>
<view
:class=
"['bottom-tag-view',
{ timeout: timeout }]"
<text>
{{
timeTitle
}}
</text>
>
<text>
{{
tagText
}}
</text></view
<text>
{{
timeText
}}
</text>
>
</view>
<u-count-down
</view>
:timestamp=
"timestamp"
<u-button
class=
"right-btn"
@
click
.
stop=
"handleClick"
:custom-style=
"buttonStyle"
type=
"primary"
font-size=
"40"
shape=
"circle"
:hover-class=
"buttonTextType ? 'none' : ''"
>
show-days
{{
orderText
}}
separator=
"zh"
</u-button>
:color=
"timeout ? '#FA5A49' : '#FF930D'"
</view>
@
change=
"handleChange"
</view>
separator-color=
"#666666"
ref=
"order-count-down"
></u-count-down>
</view>
<view
v-else-if=
"showTime"
>
<text>
{{
timeTitle
}}
</text>
<text>
{{
timeText
}}
</text>
</view>
</view>
<u-button
class=
"right-btn"
@
click
.
stop=
"handleClick"
:custom-style=
"buttonStyle"
type=
"primary"
shape=
"circle"
>
{{
orderText
}}
</u-button>
</view>
</view>
</
template
>
</
template
>
<
script
>
<
script
>
export
default
{
export
default
{
props
:
{
props
:
{
orderData
:
{
orderData
:
{
type
:
Object
,
type
:
Object
,
default
()
{
default
()
{
return
{
return
{
orderServiceType
:
'安装'
,
// 服务类型:安装、维修
orderServiceType
:
'安装'
,
// 服务类型:安装、维修
categoryName
:
'充电桩'
,
// 品类:充电桩
categoryName
:
'充电桩'
,
// 品类:充电桩
orderBusinessTypeText
:
'分配单'
,
// 业务类型:分配单、订单池
orderBusinessTypeText
:
'分配单'
,
// 业务类型:分配单、订单池
orderNumber
:
'OR2021041809827'
,
// 工单编号
orderNumber
:
'OR2021041809827'
,
// 工单编号
contactName
:
'郭小清'
,
// 客户信息
contactName
:
'郭小清'
,
// 客户信息
contactPhone
:
'13631612077'
,
// 联系方式
contactPhone
:
'13631612077'
,
// 联系方式
contactAddress
:
'湾街道荔枝花园D座125号'
,
// 详细地址
contactAddress
:
'湾街道荔枝花园D座125号'
,
// 详细地址
contactAddressLatitud
:
'116.3896'
,
// 联系人地址经度
contactAddressLatitud
:
'116.3896'
,
// 联系人地址经度
contactAddressLongitud
:
'39.91917'
,
// 联系人地址纬度
contactAddressLongitud
:
'39.91917'
,
// 联系人地址纬度
orderStatus
:
0
,
// 工单状态
orderStatus
:
0
,
// 工单状态
appointmentDatetime
:
''
,
// 预约时间
appointmentDatetime
:
''
,
// 预约时间
currentWillOverTime
:
10000
,
// 剩余时间
currentWillOverTime
:
10000
,
// 剩余时间
currentOverTime
:
new
Date
().
getTime
()
+
10000
,
// 超过时间点
currentOverTime
:
new
Date
().
getTime
()
+
10000
,
// 超过时间点
auditDatetime
:
'2021.04.19 12:45:09'
,
// 审核时间
auditDatetime
:
'2021.04.19 12:45:09'
,
// 审核时间
orderFinishDatetime
:
'2021.04.19 16:24:48'
,
// 提交时间
orderFinishDatetime
:
'2021.04.19 16:24:48'
,
// 提交时间
auditResults
:
{},
// 审核结果
auditResults
:
{},
// 审核结果
orderBusinessType
:
'R'
,
// 业务类型 R 为抢单
orderBusinessType
:
'R'
,
// 业务类型 R 为抢单
orderId
:
'0'
,
// 订单id
orderId
:
'0'
,
// 订单id
}
}
}
},
},
},
/* 订单类型
/* 订单类型
waitAccept:待接单、
waitAccept:待接单、
waitAppointment:待预约、
waitAppointment:待预约、
waitCheckIn:待签到、
waitCheckIn:待签到、
...
@@ -92,26 +117,29 @@
...
@@ -92,26 +117,29 @@
exception:异常单、
exception:异常单、
finish:已完工
finish:已完工
*/
*/
type
:
String
,
type
:
String
,
location
:
{
// 当前坐标
location
:
{
type
:
Array
,
// 当前坐标
default
()
{
type
:
Array
,
return
[
116.3896
,
39.91917
]
// 纬度,经度
default
()
{
}
return
[
116.3896
,
39.91917
]
// 纬度,经度
}
},
},
},
data
()
{
},
return
{
data
()
{
timeout
:
false
,
return
{
timestamp
:
0
,
timeout
:
false
,
};
timestamp
:
0
,
},
}
computed
:
{
},
orderText
()
{
// 按钮文字
computed
:
{
return
this
.
typeTexts
[
this
.
orderType
]
orderText
()
{
},
// 按钮文字
buttonStyle
()
{
// 按钮样式
return
this
.
typeTexts
[
this
.
orderType
]
/** orderType
},
buttonStyle
()
{
// 按钮样式
/** orderType
0 待接单、
0 待接单、
1 待预约、
1 待预约、
2 待签到、
2 待签到、
...
@@ -120,113 +148,142 @@
...
@@ -120,113 +148,142 @@
5 异常单、
5 异常单、
6 已完工
6 已完工
*/
*/
switch
(
this
.
orderType
)
{
switch
(
this
.
orderType
)
{
case
0
:
case
0
:
if
(
!
this
.
isCompetition
)
{
if
(
!
this
.
isCompetition
)
{
return
this
.
buttonStyles
[
0
]
return
this
.
buttonStyles
[
0
]
}
else
{
}
else
{
return
this
.
buttonStyles
[
1
]
return
this
.
buttonStyles
[
1
]
}
}
case
1
:
case
1
:
case
2
:
case
2
:
case
3
:
case
3
:
case
5
:
case
5
:
return
this
.
buttonStyles
[
0
]
case
4
:
case
4
:
case
6
:
case
6
:
return
this
.
buttonStyles
[
0
]
return
this
.
buttonStyles
[
2
]
}
}
},
},
showCountTime
()
{
showCountTime
()
{
// ((待预约、 待签到、 待完工) || (待接单 && 业务类型非抢单)) && 有超过时间点
// ((待预约、 待签到、 待完工) || (待接单 && 业务类型非抢单)) && 有超过时间点
return
([
1
,
2
,
3
].
indexOf
(
this
.
orderType
)
!=
-
1
||
(
this
.
orderType
==
0
&&
!
this
.
isCompetition
))
&&
this
.
orderData
.
currentOverTime
return
(
},
([
1
,
2
,
3
].
indexOf
(
this
.
orderType
)
!=
-
1
||
showTime
()
{
(
this
.
orderType
==
0
&&
!
this
.
isCompetition
))
&&
return
[
4
,
5
,
6
].
indexOf
(
this
.
orderType
)
!=
-
1
this
.
orderData
.
currentOverTime
},
)
infoTexts
()
{
},
return
{
showTime
()
{
'orderNumber'
:
{
name
:
'工单编号'
},
return
[
4
,
5
,
6
].
indexOf
(
this
.
orderType
)
!=
-
1
'partnerCompanyName'
:
{
name
:
'合作厂商'
},
},
'contactName'
:
{
name
:
'客户信息'
,
content
:
'contactPhone'
},
infoTexts
()
{
return
{
}
orderNumber
:
{
name
:
'工单编号'
},
},
partnerCompanyName
:
{
name
:
'合作厂商'
},
typeTexts
()
{
contactName
:
{
name
:
'客户信息'
,
content
:
'contactPhone'
},
return
[
this
.
type0Text
,
'去预约'
,
'去签到'
,
'去完工'
,
'审核中'
,
'去处理'
,
'已完工'
]
}
},
},
isCompetition
()
{
// 是:订单池,抢单; 否:指派单,接单
typeTexts
()
{
return
this
.
orderData
.
orderBusinessType
==
'R'
return
[
},
this
.
type0Text
,
type0Text
()
{
'去预约'
,
return
!
this
.
isCompetition
?
'接单'
:
'抢单'
'去签到'
,
},
'去完工'
,
buttonStyles
()
{
'去查看'
,
return
[{
'去处理'
,
'background-color'
:
'#2272FF'
,
'去查看'
,
'color'
:
'#FFFFFF'
,
]
'font-size'
:
'32rpx'
,
},
'height'
:
'80rpx'
,
isCompetition
()
{
'width'
:
'200rpx'
// 是:订单池,抢单; 否:指派单,接单
},
{
return
this
.
orderData
.
orderBusinessType
==
'R'
'background-color'
:
'#FF930D'
,
},
'color'
:
'#FFFFFF'
,
type0Text
()
{
'font-size'
:
'32rpx'
,
return
!
this
.
isCompetition
?
'接单'
:
'抢单'
'height'
:
'80rpx'
,
},
'width'
:
'200rpx'
buttonStyles
()
{
},
{
return
[
'background-color'
:
'transparent'
,
{
'color'
:
'#2272FF'
,
'background-color'
:
'#2272FF'
,
'font-size'
:
'32rpx'
,
color
:
'#FFFFFF'
,
'height'
:
'32rpx'
,
'font-size'
:
'32rpx'
,
'width'
:
'100rpx'
height
:
'80rpx'
,
}]
width
:
'200rpx'
,
},
},
buttonTextType
()
{
{
return
this
.
orderType
==
4
||
this
.
orderType
==
6
'background-color'
:
'#FF930D'
,
},
color
:
'#FFFFFF'
,
dizhiImage
()
{
'font-size'
:
'32rpx'
,
return
process
.
uniEnv
.
qn_base_url
+
'shouye-dizhi.png'
height
:
'80rpx'
,
},
width
:
'200rpx'
,
active
()
{
},
return
this
.
orderData
.
orderServiceType
==
'安装'
// {
},
// 'background-color': 'transparent',
tagText
()
{
// color: '#2272FF',
return
this
.
timeout
?
'超'
:
'剩'
// 'font-size': '32rpx',
},
// height: '32rpx',
timeText
()
{
// width: '100rpx',
let
time
=
this
.
orderType
==
4
?
this
.
orderData
.
orderFinishDatetime
:
this
.
orderData
.
auditDatetime
// },
return
time
?
this
.
$u
.
timeFormat
(
time
,
'yyyy.mm.dd hh:MM:ss'
)
:
''
]
},
},
timeTitle
()
{
// buttonTextType() {
return
this
.
orderType
==
4
?
'提交时间:'
:
'审核时间:'
// return this.orderType == 4 || this.orderType == 6
},
// },
showReason
()
{
dizhiImage
()
{
return
this
.
orderType
==
5
return
process
.
uniEnv
.
qn_base_url
+
'shouye-dizhi.png'
},
},
showDistance
()
{
active
()
{
return
this
.
orderType
==
0
&&
this
.
location
.
length
>=
2
&&
(
this
.
orderData
.
contactAddressLatitud
||
this
.
orderData
.
contactAddressLongitud
)
return
this
.
orderData
.
orderServiceType
==
'安装'
},
},
isWaitFinish
()
{
tagText
()
{
return
this
.
orderType
==
3
return
this
.
timeout
?
'超'
:
'剩'
},
},
isException
()
{
timeText
()
{
return
this
.
orderType
==
5
let
time
=
},
this
.
orderType
==
4
types
()
{
?
this
.
orderData
.
orderFinishDatetime
return
{
:
this
.
orderData
.
auditDatetime
'waitAccept'
:
0
,
// 待接单、
return
time
?
this
.
$u
.
timeFormat
(
time
,
'yyyy.mm.dd hh:MM:ss'
)
:
''
'waitAppointment'
:
1
,
// 待预约、
},
'waitCheckIn'
:
2
,
// 待签到、
timeTitle
()
{
'waitFinish'
:
3
,
// 待完工、
return
this
.
orderType
==
4
?
'提交时间:'
:
'审核时间:'
'audit'
:
4
,
// 审核中、
},
'exception'
:
5
,
// 异常单、
showReason
()
{
'finish'
:
6
,
//已完工
return
this
.
orderType
==
5
}
},
},
showDistance
()
{
orderDistance
()
{
return
(
return
this
.
distance
(
this
.
orderData
.
contactAddressLatitud
,
this
.
orderData
.
contactAddressLongitud
,
this
.
location
[
0
],
this
.
location
[
1
])
this
.
orderType
==
0
&&
},
this
.
location
.
length
>=
2
&&
/** orderType
(
this
.
orderData
.
contactAddressLatitud
||
this
.
orderData
.
contactAddressLongitud
)
)
},
isWaitFinish
()
{
return
this
.
orderType
==
3
},
isException
()
{
return
this
.
orderType
==
5
},
types
()
{
return
{
waitAccept
:
0
,
// 待接单、
waitAppointment
:
1
,
// 待预约、
waitCheckIn
:
2
,
// 待签到、
waitFinish
:
3
,
// 待完工、
audit
:
4
,
// 审核中、
exception
:
5
,
// 异常单、
finish
:
6
,
//已完工
}
},
orderDistance
()
{
return
this
.
distance
(
this
.
orderData
.
contactAddressLatitud
,
this
.
orderData
.
contactAddressLongitud
,
this
.
location
[
0
],
this
.
location
[
1
]
)
},
/** orderType
0 待接单、
0 待接单、
1 待预约、
1 待预约、
2 待签到、
2 待签到、
...
@@ -235,288 +292,319 @@
...
@@ -235,288 +292,319 @@
5 异常单、
5 异常单、
6 已完工
6 已完工
*/
*/
orderType
()
{
orderType
()
{
/*
/*
orderStatus:
orderStatus:
待接单 orderStatus<31 工单状态小于31
待接单 orderStatus<31
工单状态小于31
待预约 orderStatus == 31 and appointmentDatetime == null 工单状态等于30并且预约时间为空
待预约 orderStatus == 31 and appointmentDatetime == null
工单状态等于30并且预约时间为空
待签到 orderStatus == 31 and appointmentDatetime is not null 工单状态等于30并且预约时间不为空
待签到 orderStatus == 31 and appointmentDatetime is not null 工单状态等于30并且预约时间不为空
待完工 orderStatus >31 and orderStatus < 80 工单状态大于31 小于80
待完工 orderStatus >31 and orderStatus < 80
工单状态大于31 小于80
审核中 orderStatus ==85 or orderStatus == 87 工单状态 等于85 或者 等于有87
审核中 orderStatus ==85 or orderStatus == 87
工单状态 等于85 或者 等于有87
异常 orderStatus ==86 or orderStatus == 88 工单状态 等于86 或者 等于有88
异常 orderStatus ==86 or orderStatus == 88
工单状态 等于86 或者 等于有88
已完工 orderStatus in(80,81,89,110) 工单状态 等于80 or 81 or 89 or 110
已完工 orderStatus in(80,81,89,110)
工单状态 等于80 or 81 or 89 or 110
*/
*/
if
(
!
this
.
type
)
{
if
(
!
this
.
type
)
{
if
(
this
.
orderData
.
orderStatus
<
31
)
{
if
(
this
.
orderData
.
orderStatus
<
31
)
{
return
0
return
0
}
else
if
(
this
.
orderData
.
orderStatus
==
31
)
{
}
else
if
(
this
.
orderData
.
orderStatus
==
31
)
{
if
(
this
.
orderData
.
appointmentDatetime
)
{
if
(
this
.
orderData
.
appointmentDatetime
)
{
return
2
return
2
}
else
{
}
else
{
return
1
return
1
}
}
}
else
if
(
this
.
orderData
.
orderStatus
>
31
&&
this
.
orderData
.
orderStatus
<
80
)
{
}
else
if
(
return
3
this
.
orderData
.
orderStatus
>
31
&&
}
else
if
(
this
.
orderData
.
orderStatus
==
85
||
this
.
orderData
.
orderStatus
==
87
)
{
this
.
orderData
.
orderStatus
<
80
return
4
)
{
}
else
if
(
this
.
orderData
.
orderStatus
==
86
||
this
.
orderData
.
orderStatus
==
88
)
{
return
3
return
5
}
else
if
(
}
else
if
([
80
,
81
,
89
,
110
].
indexOf
(
this
.
orderData
.
orderStatus
)
!=
-
1
)
{
this
.
orderData
.
orderStatus
==
85
||
return
6
this
.
orderData
.
orderStatus
==
87
}
else
{
)
{
return
0
return
4
}
}
else
if
(
}
else
{
this
.
orderData
.
orderStatus
==
86
||
return
this
.
types
[
this
.
type
]
this
.
orderData
.
orderStatus
==
88
}
)
{
}
return
5
},
}
else
if
(
created
()
{
[
80
,
81
,
89
,
110
].
indexOf
(
this
.
orderData
.
orderStatus
)
!=
-
1
this
.
updateTime
()
)
{
},
return
6
watch
:{
}
else
{
'orderData.currentCellTime'
(
val
)
{
return
0
// 从后台重新获取数据之后,时间重新计算
}
this
.
updateTime
()
}
else
{
}
return
this
.
types
[
this
.
type
]
},
}
methods
:
{
},
handleExceptions
()
{
},
if
(
this
.
isException
)
{
created
()
{
getApp
().
track
(
"order_handleExceptions"
,
{})
this
.
updateTime
()
}
},
},
watch
:
{
// title:标题,showCountTime:是否显示倒计时。详情页面情况太多,提前传值可以避免页面晃动
'orderData.currentCellTime'
(
val
)
{
handleClick
()
{
// 从后台重新获取数据之后,时间重新计算
var
func
=
'click'
this
.
updateTime
()
this
.
handleExceptions
()
},
if
(
this
.
isWaitFinish
||
this
.
isException
)
{
// 不是待完工、不是异常单点按钮算点cell
},
func
=
'action'
methods
:
{
}
handleExceptions
()
{
this
.
$emit
(
func
,
this
.
orderData
,
this
.
type
,
this
.
showCountTime
?
'show'
:
''
)
if
(
this
.
isException
)
{
},
getApp
().
track
(
'order_handleExceptions'
,
{})
handleClickCell
()
{
}
var
func
=
'click'
},
this
.
handleExceptions
()
// title:标题,showCountTime:是否显示倒计时。详情页面情况太多,提前传值可以避免页面晃动
if
(
this
.
isException
)
{
// 异常单点cell算点按钮
handleClick
()
{
func
=
'action'
var
func
=
'action'
}
this
.
handleExceptions
()
this
.
$emit
(
func
,
this
.
orderData
,
this
.
type
,
this
.
showCountTime
?
'show'
:
''
)
this
.
$emit
(
},
func
,
handleChange
(
timestamp
)
{
this
.
orderData
,
if
(
this
.
timeout
)
this
.
$refs
[
'order-count-down'
].
seconds
+=
2
this
.
type
,
if
(
timestamp
==
0
&&
!
this
.
timeout
)
{
// 超时之后倒计时变为正计时
this
.
showCountTime
?
'show'
:
''
setTimeout
(()
=>
{
)
this
.
timestamp
=
1
},
this
.
timeout
=
true
handleClickCell
()
{
},
1000
)
var
func
=
'click'
}
this
.
handleExceptions
()
},
if
(
this
.
isException
)
{
formatAddress
(
order
)
{
// 异常单点cell算点按钮
let
address
=
""
func
=
'action'
if
(
order
)
{
}
address
=
order
.
contactProvinceText
||
""
this
.
$emit
(
address
+=
order
.
contactCityText
||
""
func
,
address
+=
order
.
contactCommunityText
||
""
this
.
orderData
,
address
+=
order
.
contactStreetText
||
""
this
.
type
,
address
+=
order
.
contactAddress
||
""
this
.
showCountTime
?
'show'
:
''
}
)
return
address
},
},
handleChange
(
timestamp
)
{
/**
if
(
this
.
timeout
)
this
.
$refs
[
'order-count-down'
].
seconds
+=
2
* echo distance(116.3896,39.91917,116.3940,39.91726);
if
(
timestamp
==
0
&&
!
this
.
timeout
)
{
* 计算两点之间直线距离
// 超时之后倒计时变为正计时
* @param float $lon1 纬度
setTimeout
(()
=>
{
* @param float $lat1 经度
this
.
timestamp
=
1
* @param float $lon2 纬度
this
.
timeout
=
true
* @param float $lat2 经度
},
1000
)
* @return float 浮点数
}
*/
},
distance
(
lat1
,
lng1
,
lat2
,
lng2
)
{
formatAddress
(
order
)
{
var
radLat1
=
this
.
Rad
(
lat1
);
let
address
=
''
var
radLat2
=
this
.
Rad
(
lat2
);
if
(
order
)
{
var
a
=
radLat1
-
radLat2
;
address
=
order
.
contactProvinceText
||
''
var
b
=
this
.
Rad
(
lng1
)
-
this
.
Rad
(
lng2
);
address
+=
order
.
contactCityText
||
''
var
s
=
2
*
Math
.
asin
(
Math
.
sqrt
(
Math
.
pow
(
Math
.
sin
(
a
/
2
),
2
)
+
address
+=
order
.
contactCommunityText
||
''
Math
.
cos
(
radLat1
)
*
Math
.
cos
(
radLat2
)
*
Math
.
pow
(
Math
.
sin
(
b
/
2
),
2
)));
address
+=
order
.
contactStreetText
||
''
s
=
s
*
6378.137
;
// EARTH_RADIUS;
address
+=
order
.
contactAddress
||
''
s
=
Math
.
round
(
s
*
10000
)
/
10000
//输出为米
}
return
Number
(
s
?
s
.
toFixed
(
2
):
0
);
return
address
},
},
Rad
(
d
){
/**
return
d
*
Math
.
PI
/
180.0
;
//经纬度转换成三角函数中度分表形式。
* echo distance(116.3896,39.91917,116.3940,39.91726);
},
* 计算两点之间直线距离
updateTime
()
{
* @param float $lon1 纬度
var
time
=
new
Date
().
getTime
()
* @param float $lat1 经度
this
.
timeout
=
this
.
orderData
.
currentOverTime
<
time
* @param float $lon2 纬度
this
.
timestamp
=
Math
.
round
(
Math
.
abs
(
this
.
orderData
.
currentOverTime
-
time
)
/
1000
)
* @param float $lat2 经度
},
* @return float 浮点数
handleLongpress
(
key
,
text
)
{
// 长按复制单号
*/
if
(
key
==
'orderNumber'
)
{
uni
.
setClipboardData
({
distance
(
lat1
,
lng1
,
lat2
,
lng2
)
{
data
:
text
,
var
radLat1
=
this
.
Rad
(
lat1
)
success
:
function
()
{
var
radLat2
=
this
.
Rad
(
lat2
)
console
.
log
(
'success'
);
var
a
=
radLat1
-
radLat2
}
var
b
=
this
.
Rad
(
lng1
)
-
this
.
Rad
(
lng2
)
});
var
s
=
}
2
*
}
Math
.
asin
(
}
Math
.
sqrt
(
}
Math
.
pow
(
Math
.
sin
(
a
/
2
),
2
)
+
Math
.
cos
(
radLat1
)
*
Math
.
cos
(
radLat2
)
*
Math
.
pow
(
Math
.
sin
(
b
/
2
),
2
)
)
)
s
=
s
*
6378.137
// EARTH_RADIUS;
s
=
Math
.
round
(
s
*
10000
)
/
10000
//输出为米
return
Number
(
s
?
s
.
toFixed
(
2
)
:
0
)
},
Rad
(
d
)
{
return
(
d
*
Math
.
PI
)
/
180.0
//经纬度转换成三角函数中度分表形式。
},
updateTime
()
{
var
time
=
new
Date
().
getTime
()
this
.
timeout
=
this
.
orderData
.
currentOverTime
<
time
this
.
timestamp
=
Math
.
round
(
Math
.
abs
(
this
.
orderData
.
currentOverTime
-
time
)
/
1000
)
},
handleLongpress
(
key
,
text
)
{
// 长按复制单号
if
(
key
==
'orderNumber'
)
{
uni
.
setClipboardData
({
data
:
text
,
success
:
function
()
{
console
.
log
(
'success'
)
},
})
}
},
},
}
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
<
style
lang=
"scss"
scoped
>
.order-view
{
.order-view
{
width
:
100%
;
width
:
100%
;
background-color
:
#FFFFFF
;
background-color
:
#ffffff
;
border-radius
:
12rpx
;
border-radius
:
12rpx
;
padding
:
30rpx
;
padding
:
30rpx
;
margin-bottom
:
20rpx
;
margin-bottom
:
20rpx
;
.order-top-view
{
display
:
flex
;
align-items
:
center
;
justify-content
:
space-between
;
margin-bottom
:
20rpx
;
.order-top-view
{
.left-view
{
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
justify-content
:
space-between
;
margin-bottom
:
20rpx
;
.left-view
{
.tag-view
{
display
:
flex
;
text-align
:
center
;
align-items
:
center
;
width
:
84rpx
;
height
:
40rpx
;
color
:
#ffffff
;
border-radius
:
8rpx
;
background-image
:
linear-gradient
(
to
right
,
#ff930d
,
#ffc174
);
font-size
:
22rpx
;
line-height
:
42rpx
;
&
.active
{
background-image
:
linear-gradient
(
to
right
,
#2272ff
,
#47abff
);
}
}
.tag-view
{
.store-view
{
text-align
:
center
;
color
:
#333333
;
width
:
84rpx
;
font-size
:
36rpx
;
height
:
40rpx
;
font-weight
:
bold
;
color
:
#FFFFFF
;
margin-left
:
20rpx
;
border-radius
:
8rpx
;
}
background-image
:
linear-gradient
(
to
right
,
#FF930D
,
#FFC174
);
}
font-size
:
22rpx
;
line-height
:
42rpx
;
&
.active
{
background-image
:
linear-gradient
(
to
right
,
#2272FF
,
#47ABFF
);
}
}
.store-view
{
.right-view
{
color
:
#333333
;
text-align
:
center
;
font-size
:
36rpx
;
width
:
100rpx
;
font-weight
:
bold
;
height
:
40rpx
;
margin-left
:
20rpx
;
background-color
:
#f4f5f7
;
}
border-radius
:
20rpx
;
}
color
:
#333333
;
font-size
:
22rpx
;
line-height
:
40rpx
;
}
}
.right-view
{
.content-view
{
text-align
:
center
;
.info-view
{
width
:
100rpx
;
text-align
:
left
;
height
:
40rpx
;
color
:
#333333
;
background-color
:
#F4F5F7
;
font-size
:
26rpx
;
border-radius
:
20rpx
;
margin-top
:
18rpx
;
color
:
#333333
;
margin-bottom
:
18rpx
;
font-size
:
22rpx
;
display
:
flex
;
line-height
:
40rpx
;
align-items
:
flex-start
;
}
}
.content-view
{
.info-title
{
.info-view
{
flex-shrink
:
0
;
text-align
:
left
;
}
color
:
#333333
;
.info-content
{
font-size
:
26rpx
;
word-break
:
break-all
;
margin-top
:
18rpx
;
}
margin-bottom
:
18rpx
;
}
display
:
flex
;
align-items
:
flex-start
;
.info-title
{
flex-shrink
:
0
;
}
.info-content
{
word-break
:
break-all
;
}
}
.address-view
{
.address-view
{
display
:
flex
;
display
:
flex
;
align-items
:
flex-start
;
align-items
:
flex-start
;
justify-content
:
space-between
;
justify-content
:
space-between
;
color
:
#333333
;
color
:
#333333
;
font-size
:
24rpx
;
font-size
:
24rpx
;
margin-top
:
20rpx
;
margin-top
:
20rpx
;
.address-left-view
{
.address-left-view
{
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
align-items
:
flex-start
;
align-items
:
flex-start
;
text-align
:
left
;
text-align
:
left
;
.address-image
{
width
:
26rpx
;
height
:
28rpx
;
margin-right
:
8rpx
;
flex-shrink
:
0
;
margin-top
:
4rpx
;
}
}
.address-right-view
{
.address-image
{
margin-left
:
30rpx
;
width
:
26rpx
;
}
height
:
28rpx
;
}
margin-right
:
8rpx
;
}
flex-shrink
:
0
;
margin-top
:
4rpx
;
}
}
.line-view
{
.address-right-view
{
background-color
:
#F4F5F7
;
margin-left
:
30rpx
;
height
:
2rpx
;
}
width
:
100%
;
}
margin-top
:
30rpx
;
}
}
.reason-view
{
.line-view
{
text-align
:
left
;
background-color
:
#f4f5f7
;
margin-top
:
30rpx
;
height
:
2rpx
;
font-size
:
26rpx
;
width
:
100%
;
color
:
#FA5A49
;
margin-top
:
30rpx
;
display
:
flex
;
}
align-items
:
flex-start
;
display
:
flex
;
.reason-title
{
flex-shrink
:
0
;
color
:
#666666
;
}
.reason-text
{
display
:
flex
;
flex-direction
:
column
;
}
}
.bottom-view
{
.reason-view
{
display
:
flex
;
text-align
:
left
;
align-items
:
center
;
margin-top
:
30rpx
;
justify-content
:
space-between
;
font-size
:
26rpx
;
margin-top
:
30rpx
;
color
:
#fa5a49
;
display
:
flex
;
align-items
:
flex-start
;
display
:
flex
;
.reason-title
{
flex-shrink
:
0
;
color
:
#666666
;
}
.reason-text
{
display
:
flex
;
flex-direction
:
column
;
}
}
.bottom-left-view
{
.bottom-view
{
display
:
flex
;
display
:
flex
;
align-items
:
center
;
align-items
:
center
;
justify-content
:
space-between
;
margin-top
:
30rpx
;
.bottom-tag-view
{
.bottom-left-view
{
width
:
52rpx
;
display
:
flex
;
height
:
52rpx
;
align-items
:
center
;
border-radius
:
26rpx
;
color
:
#FFFFFF
;
font-size
:
26rpx
;
background-color
:
#FF930D
;
margin-right
:
16rpx
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
&
.timeout
{
.bottom-tag-view
{
background-color
:
#FA5A49
;
width
:
52rpx
;
}
height
:
52rpx
;
}
border-radius
:
26rpx
;
}
color
:
#ffffff
;
font-size
:
26rpx
;
background-color
:
#ff930d
;
margin-right
:
16rpx
;
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
}
&
.timeout
{
}
background-color
:
#fa5a49
;
}
}
}
}
}
</
style
>
</
style
>
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