Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
hls-xcmg-vue-app
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
xugong
hls-xcmg-vue-app
Commits
723bcade
Commit
723bcade
authored
Dec 26, 2019
by
李晓兵
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
'问题修复'
parent
e18af40d
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
633 additions
and
94 deletions
+633
-94
main.js
src/main.js
+2
-2
body-check.vue
src/pages/contractSigning/body-check.vue
+122
-72
contract-detail.vue
src/pages/contractSigning/contract-detail.vue
+8
-4
contract-signing.vue
src/pages/contractSigning/contract-signing.vue
+8
-5
body-check.vue
src/pages/distributorSign/body-check.vue
+474
-0
contract-details.vue
src/pages/distributorSign/contract-details.vue
+8
-3
contract-list.vue
src/pages/distributorSign/contract-list.vue
+8
-5
index.js
src/router/index.js
+2
-2
index.html
www/index.html
+1
-1
No files found.
src/main.js
View file @
723bcade
...
...
@@ -59,8 +59,8 @@ import Jpush from './scripts/jpushService'
import
Jmessage
from
'./scripts/jmessageService'
// if (process.env.CONFIG_ENV === 'uat') {
//
const VConsole = require('vconsole')
//
new VConsole() // eslint-disable-line
const
VConsole
=
require
(
'vconsole'
)
new
VConsole
()
// eslint-disable-line
// }
Vue
.
use
(
componentInstall
)
...
...
src/pages/contractSigning/body-check.vue
View file @
723bcade
<
template
>
<h-view
id=
"body-check"
>
<transition
name=
"trans"
>
<div
v-if=
"downNum"
class=
"modal-show"
>
<div
class=
"modal-box"
>
<div
class=
"down"
>
<div
class=
"down-content"
>
<span
class=
"title"
>
请牢记以下验证码
</span>
<p
class=
"compute"
>
此验证码将于
<span>
{{
time
}}
</span>
秒后过期
<br
>
用普通话朗读数字,视频时长
<span>
3~8
</span>
秒最佳
</p>
<transition
name=
"body"
>
<div
v-if=
"showFlag"
class=
"body-check"
>
<transition
name=
"trans"
>
<div
v-if=
"downNum"
class=
"modal-show"
>
<div
class=
"modal-box"
>
<div
class=
"down"
>
<div
class=
"down-content"
>
<span
class=
"title"
>
请牢记以下验证码
</span>
<p
class=
"compute"
>
此验证码将于
<span>
{{
time
}}
</span>
秒后过期
<br>
用普通话朗读数字,视频时长
<span>
3~8
</span>
秒最佳
</p>
</div>
<div
class=
"number"
>
<span
v-for=
"(item,index) in codeList"
:key=
"index"
>
{{
item
}}
</span>
</div>
<h-button
:disabled=
"lastTime!=0"
class=
"button"
@
click
.
native=
"recordVdeo"
>
记住了,开始录制
<span
v-if=
"lastTime!=0"
>
(
{{
lastTime
}}
s)
</span></h-button>
</div>
<div
class=
"number"
>
<span
v-for=
"(item,index) in codeList"
:key=
"index"
>
{{
item
}}
</span>
</div>
<h-button
:disabled=
"lastTime!=0"
class=
"button"
@
click
.
native=
"recordVdeo"
>
记住了,开始录制
<span
v-if=
"lastTime!=0"
>
(
{{
lastTime
}}
s)
</span></h-button>
<div
class=
"close"
@
click=
"hideBody"
>
X
</div>
</div>
<div
class=
"close"
@
click=
"downNum=false"
>
X
</div>
</div>
</
div
>
</transition
>
<h-header
:proportion=
"[5,1,1]"
class=
"bar-custom
"
>
<div
slot=
"left"
class=
"h-header-btn"
>
<img
src=
"@/assets/userBind/arrow.png"
@
click=
"$routeGo()"
>
<
span>
活体检测
</span
>
</
div
>
</h-header
>
<h-content
>
<div
class=
"top
"
>
<div
class=
"top-box
"
>
<img
src=
"@/assets/constractSigning/sketch.png"
>
<span>
正面平视手机,保证光线充足
</span>
<
span>
请勿遮挡面部
</span
>
</
transition
>
<h-header
:proportion=
"[5,1,1]"
class=
"bar-custom"
>
<div
slot=
"left"
class=
"h-header-btn
"
>
<img
src=
"@/assets/userBind/arrow.png"
@
click=
"hideBody"
>
<span>
活体检测
</span
>
<
/div
>
</
h-header
>
<h-content
>
<div
class=
"top"
>
<div
class=
"top-box
"
>
<img
src=
"@/assets/constractSigning/sketch.png
"
>
<span>
正面平视手机,保证光线充足
</span
>
<span>
请勿遮挡面部
</span>
<
/div
>
</div>
</div
>
<div
class=
"bottom"
>
<ul
>
<li
>
<span>
1
</span>
<span>
牢记验证码,点击开始录制
</span
>
<
p
/
>
</
li>
<li
>
<span>
2
</span>
<span>
开启前置摄像头,用普通话朗读数字
</span
>
<
p
/
>
</
li>
<li
>
<span>
3
</span>
<
span>
完成录制,等待验证结果
</span
>
</
li
>
</
ul
>
</
div
>
</h-content
>
<bottom-tab
class=
"footer-button"
>
<
tab-button
class=
"approve"
@
click
.
native=
"getCode"
>
下一步
</tab-button
>
</
bottom-tab
>
</
h-view
>
<div
class=
"bottom"
>
<ul
>
<li
>
<span>
1
</span
>
<span>
牢记验证码,点击开始录制
</span>
<p/
>
<
/li
>
<
li>
<span>
2
</span
>
<span>
开启前置摄像头,用普通话朗读数字
</span>
<p/
>
<
/li
>
<
li>
<span>
3
</span
>
<span>
完成录制,等待验证结果
</span>
<
/li
>
</
ul
>
</
div
>
</
h-content
>
<bottom-tab
class=
"footer-button"
>
<tab-button
class=
"approve"
@
click
.
native=
"getCode"
>
下一步
</tab-button
>
<
/bottom-tab
>
</
div
>
</
transition
>
</
template
>
<
script
>
export
default
{
props
:
[
'check_id'
,
'confirm_id'
],
data
()
{
return
{
downNum
:
false
,
...
...
@@ -72,12 +76,21 @@ export default {
file
:
''
,
sessionId
:
''
,
codeList
:
[],
showFlag
:
false
,
}
},
methods
:
{
show
()
{
this
.
showFlag
=
true
},
hideBody
()
{
this
.
showFlag
=
false
this
.
downNum
=
false
},
recordVdeo
()
{
// 开始录制
let
vm
=
this
vm
.
downNum
=
false
// 模态框消失
vm
.
showFlag
=
false
let
onSuccess
=
function
(
mediaFiles
)
{
// 遍历获取录制的文件(iOS 只支持一次录制一个视频)
console
.
log
(
'录制成功!
\
n
\
n'
+
'文件名:'
+
mediaFiles
[
0
].
name
+
'
\
n'
+
'大小:'
+
mediaFiles
[
0
].
size
+
'
\
n
\
n'
+
'localURL地址:'
+
mediaFiles
[
0
].
localURL
+
'
\
n
\
n'
+
'fullPath地址:'
+
mediaFiles
[
0
].
fullPath
)
...
...
@@ -93,7 +106,7 @@ export default {
let
vm
=
this
vm
.
videoListUpload
=
[]
let
obj
=
{
pkvalue
:
vm
.
$route
.
param
s
.
check_id
,
pkvalue
:
thi
s
.
check_id
,
source_type
:
'PRJ_CDD_ITEM_CHECK'
,
picture
:
''
,
filePath
:
fullPath
,
...
...
@@ -162,19 +175,19 @@ export default {
flag
=
true
vm
.
hlsPopup
.
hideLoading
()
console
.
log
(
'##########res '
+
JSON
.
stringify
(
res
))
if
(
res
.
result
.
err_no
!=
0
)
{
// 检测出错
if
(
res
.
result
.
err_no
!=
0
)
{
// 检测出错
hlsPopup
.
showConfirm
({
title
:
'提示'
,
content
:
`检测失败,是否重新重新尝试?`
,
onConfirm
:
data
=>
{
if
(
data
)
{
// 重新尝试
vm
.
getCode
()
vm
.
showFlag
=
true
}
else
{
}
},
})
}
else
if
(
res
.
result
.
result
.
thresholds
.
frr_1e
-
2
<
0.9
)
{
// 检测成功但不符合要求
}
else
if
(
res
.
result
.
result
.
thresholds
.
frr_1e
-
2
<
0.9
)
{
// 检测成功但不符合要求
hlsPopup
.
showConfirm
({
title
:
'提示'
,
content
:
`检测失败,是否重新重新尝试?`
,
...
...
@@ -217,13 +230,13 @@ export default {
}
})
/* let str = '098672'
vm.codeList = [...str] */
vm.codeList = [...str] */
},
goElectronicSign
()
{
// 电子签
let
vm
=
this
let
url
=
process
.
env
.
basePath
+
'get_sign_url'
let
param
=
{
confirm_id
:
vm
.
$route
.
params
.
confirm_id
,
confirm_id
:
vm
.
confirm_id
,
data_class
:
'PRJ_PROJECT'
,
}
vm
.
hlsPopup
.
showLoading
(
'请稍后'
)
...
...
@@ -231,11 +244,11 @@ export default {
vm
.
hlsPopup
.
hideLoading
()
if
(
res
.
info
.
msg
===
'success'
)
{
/* vm.$router.push({
name: 'ElectronicSign',
params: {
url: res.info.data.url,
},
}) */
name: 'ElectronicSign',
params: {
url: res.info.data.url,
},
}) */
cordova
.
InAppBrowser
.
open
(
res
.
info
.
data
.
url
,
'_blank'
,
'location=yes'
)
}
else
{
vm
.
hlsPopup
.
showLongCenter
(
res
.
info
.
msg
)
...
...
@@ -263,16 +276,32 @@ export default {
}
</
script
>
<
style
lang=
"less"
scoped
>
#body-check {
<
style
lang=
"less"
>
.body-enter-active, .body-leave-active {
transition: opacity .5s;
}
.body-enter, .body-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0;
}
.body-check{
width: 100%;
height: 100%;
position: absolute;
top: 0;
z-index: 999;
background: rgba(56, 63, 69, 0.30);
.trans-enter-active,
.trans-leave-active {
transition: opacity 0.5s;
}
.trans-enter,
.trans-leave-active {
opacity: 0;
}
.modal-show {
width: 100%;
height: 100%;
...
...
@@ -282,12 +311,14 @@ export default {
display: flex;
justify-content: center;
align-items: center;
.modal-box {
width: 314px;
display: flex;
justify-content: center;
flex-flow: wrap row;
}
.down {
position: relative;
width: 314px;
...
...
@@ -297,36 +328,43 @@ export default {
display: flex;
justify-content: center;
flex-flow: wrap row;
.button{
width:90%;
.button {
width: 90%;
height: 50px;
background-color: #0073eb;
color: #fff !important;
border-radius: 4px;
}
.down-content {
width: 290px;
margin: 0 auto;
margin-top: 30px;
text-align: center;
.title {
font-size: 16px;
color: #333;
}
.compute {
margin-top: 16px;
font-size: 14px;
line-height: 20px;
color: #666;
span {
color: red;
}
}
}
.number {
width: 100%;
display: flex;
justify-content: center;
span {
width: 40px;
height: 60px;
...
...
@@ -341,6 +379,7 @@ export default {
}
}
}
.close {
border: 1px solid #fff;
width: 40px;
...
...
@@ -353,26 +392,31 @@ export default {
line-height: 40px;
}
}
.content{
.content {
display: flex;
flex-direction: column;
}
.top {
height: 340px;
background-color: #f4f4f4;
display: flex;
justify-content: center;
align-items: flex-start;
.top-box {
width: 60%;
display: flex;
justify-content: center;
flex-wrap: wrap;
img {
width: 80%;
height: 100%;
margin-top: 10px;
}
span {
font-size: 14px;
color: #999;
...
...
@@ -381,22 +425,27 @@ export default {
}
}
}
.bottom {
flex: 1;
background-color: #fff;
box-shadow: 0 -4px 10px 0 #e8e8e8;
display: flex;
justify-content: center;
ul {
width: 80%;
margin-top: 40px;
li {
height: 60px;
p {
height: 35px;
border-left: 1px solid #0073eb;
margin-left: 12px;
}
span:first-child {
border-radius: 50%;
border: 1px solid #0073eb;
...
...
@@ -413,6 +462,7 @@ export default {
}
}
}
.approve {
background: @headerColor;
border-radius: 4px;
...
...
src/pages/contractSigning/contract-detail.vue
View file @
723bcade
...
...
@@ -301,6 +301,8 @@
</bottom-tab>
</h-view>
</h-modal>
<!--活体检测-->
<body-check
ref=
"body"
:check_id=
"$route.params.check_id"
:confirm_id=
"confirm_id"
></body-check>
</h-view>
</
template
>
...
...
@@ -314,11 +316,13 @@ import unCheck2 from '@/assets/constractSigning/unconstract.png'
import
unCheck3
from
'@/assets/constractSigning/unLease.png'
import
LegalPerson
from
'@/pages/distributorSign/legal-person'
import
Personal
from
'@/pages/distributorSign/personal'
import
bodyCheck
from
'./body-check'
export
default
{
name
:
'ContractDetail'
,
components
:
{
Personal
,
LegalPerson
,
bodyCheck
,
},
data
()
{
return
{
...
...
@@ -473,13 +477,14 @@ export default {
})
},
goBodyCheck
(
confirm_id
)
{
// 活体检测
this
.
$router
.
push
({
this
.
$refs
.
body
.
show
()
/* this.$router.push({
name: 'BodyCheck',
params: {
check_id: this.$route.params.check_id,
confirm_id: confirm_id,
},
})
})
*/
},
/* goElectronicSign () { // 电子签
let vm = this
...
...
@@ -615,7 +620,6 @@ export default {
hlsPopup
.
showLongCenter
(
'比对失败,请保证和绑定时是同一个人'
)
}
})
/* vm.save_picture(vm.faceListUpload)
let identifyScore = 90
hlsPopup.showPopup({
...
...
@@ -625,7 +629,7 @@ export default {
// 进入活体检测页面
vm.goBodyCheck(vm.confirm_id)
},
})
*/
})*/
},
// 确认签约逻辑
doConfirm
(
status
)
{
...
...
src/pages/contractSigning/contract-signing.vue
View file @
723bcade
...
...
@@ -467,12 +467,14 @@ export default {
}
}
.box {
height: 156px;
margin-left: 50px;
margin-right: 19px;
div {
width: 100%;
height: 32px;
padding: 8px 0;
line-height: 18px;
display: flex;
justify-content: space-between;
position: relative;
.money {
font-family: Verdana-Bold;
...
...
@@ -482,14 +484,15 @@ export default {
font-weight: 600;
}
p {
height: 32px
;
line-height: 32px
;
position: absolute
;
word-break: break-all
;
word-wrap: break-word
;
white-space: normal
;
font-family: PingFangSC-Regular;
font-size: 14px;
letter-spacing: 0;
}
p:nth-of-type(1){
width: 32%;
left: 0;
color: rgba(75,74,75,0.60);
}
...
...
src/pages/distributorSign/body-check.vue
0 → 100644
View file @
723bcade
<
template
>
<transition
name=
"body"
>
<div
v-if=
"showFlag"
class=
"body-check"
>
<transition
name=
"trans"
>
<div
v-if=
"downNum"
class=
"modal-show"
>
<div
class=
"modal-box"
>
<div
class=
"down"
>
<div
class=
"down-content"
>
<span
class=
"title"
>
请牢记以下验证码
</span>
<p
class=
"compute"
>
此验证码将于
<span>
{{
time
}}
</span>
秒后过期
<br>
用普通话朗读数字,视频时长
<span>
3~8
</span>
秒最佳
</p>
</div>
<div
class=
"number"
>
<span
v-for=
"(item,index) in codeList"
:key=
"index"
>
{{
item
}}
</span>
</div>
<h-button
:disabled=
"lastTime!=0"
class=
"button"
@
click
.
native=
"recordVdeo"
>
记住了,开始录制
<span
v-if=
"lastTime!=0"
>
(
{{
lastTime
}}
s)
</span></h-button>
</div>
<div
class=
"close"
@
click=
"hideBody"
>
X
</div>
</div>
</div>
</transition>
<h-header
:proportion=
"[5,1,1]"
class=
"bar-custom"
>
<div
slot=
"left"
class=
"h-header-btn"
>
<img
src=
"@/assets/userBind/arrow.png"
@
click=
"hideBody"
>
<span>
活体检测
</span>
</div>
</h-header>
<h-content>
<div
class=
"top"
>
<div
class=
"top-box"
>
<img
src=
"@/assets/constractSigning/sketch.png"
>
<span>
正面平视手机,保证光线充足
</span>
<span>
请勿遮挡面部
</span>
</div>
</div>
<div
class=
"bottom"
>
<ul>
<li>
<span>
1
</span>
<span>
牢记验证码,点击开始录制
</span>
<p/>
</li>
<li>
<span>
2
</span>
<span>
开启前置摄像头,用普通话朗读数字
</span>
<p/>
</li>
<li>
<span>
3
</span>
<span>
完成录制,等待验证结果
</span>
</li>
</ul>
</div>
</h-content>
<bottom-tab
class=
"footer-button"
>
<tab-button
class=
"approve"
@
click
.
native=
"getCode"
>
下一步
</tab-button>
</bottom-tab>
</div>
</transition>
</
template
>
<
script
>
export
default
{
props
:
[
'check_id'
,
'confirm_id'
],
data
()
{
return
{
downNum
:
false
,
time
:
60
,
lastTime
:
3
,
code
:
''
,
file
:
''
,
sessionId
:
''
,
codeList
:
[],
showFlag
:
false
,
}
},
methods
:
{
show
()
{
this
.
showFlag
=
true
},
hideBody
()
{
this
.
showFlag
=
false
this
.
downNum
=
false
},
recordVdeo
()
{
// 开始录制
let
vm
=
this
vm
.
downNum
=
false
// 模态框消失
vm
.
showFlag
=
false
let
onSuccess
=
function
(
mediaFiles
)
{
// 遍历获取录制的文件(iOS 只支持一次录制一个视频)
console
.
log
(
'录制成功!
\
n
\
n'
+
'文件名:'
+
mediaFiles
[
0
].
name
+
'
\
n'
+
'大小:'
+
mediaFiles
[
0
].
size
+
'
\
n
\
n'
+
'localURL地址:'
+
mediaFiles
[
0
].
localURL
+
'
\
n
\
n'
+
'fullPath地址:'
+
mediaFiles
[
0
].
fullPath
)
vm
.
succesCall
(
mediaFiles
[
0
].
fullPath
)
// 开始检测
// vm.svaeVideo(mediaFiles[0].fullPath) // 上传视频文件至业务系统
}
let
onError
=
function
(
error
)
{
hlsPopup
.
showLongcenter
(
'录制失败,请重新录制'
)
}
hlsUtil
.
captureVideo
(
onSuccess
,
onError
)
},
svaeVideo
(
fullPath
)
{
let
vm
=
this
vm
.
videoListUpload
=
[]
let
obj
=
{
pkvalue
:
this
.
check_id
,
source_type
:
'PRJ_CDD_ITEM_CHECK'
,
picture
:
''
,
filePath
:
fullPath
,
attachment_id
:
''
,
user_id
:
1
,
fileName
:
'video'
,
}
vm
.
videoListUpload
.
push
(
obj
)
vm
.
saveVideoStart
(
vm
.
videoListUpload
)
// 开始存视频
},
// 视频保存
saveVideoStart
(
list
)
{
console
.
log
(
'list '
+
JSON
.
stringify
(
list
))
let
vm
=
this
if
(
list
.
length
)
{
var
alreadyUploadNum
=
0
var
attLength
=
0
var
recordUploadInterval
=
setInterval
(
function
()
{
if
(
alreadyUploadNum
===
attLength
)
{
clearInterval
(
recordUploadInterval
)
}
},
500
)
for
(
var
i
=
0
;
i
<
list
.
length
;
i
++
)
{
let
uploadSuccess
=
function
(
res
)
{
if
(
res
.
result
===
'S'
)
{
alreadyUploadNum
++
for
(
var
j
=
0
;
j
<
list
.
length
;
j
++
)
{
if
(
list
[
j
].
filePath
===
res
.
response
.
filePath
)
{
list
[
j
].
attachment_id
=
res
.
response
.
attachment_id
console
.
log
(
'%%%%%%%%%%%%% '
+
JSON
.
stringify
(
res
.
response
))
break
}
}
}
else
{
hlsPopup
.
hideLoading
()
}
}
if
(
!
list
[
i
].
attachment_id
)
{
attLength
++
hlsUtil
.
fileUploadSvc
(
list
[
i
],
uploadSuccess
)
}
}
}
else
{
hlsPopup
.
hideLoading
()
}
},
succesCall
(
fileUrl
)
{
// 录制成功后进行检测
let
vm
=
this
console
.
log
(
'fileUrl '
+
fileUrl
)
console
.
log
(
'sessionId '
+
vm
.
sessionId
)
let
url
=
process
.
env
.
ocrPath
+
'/baidu/ocr/videoFaceliveness'
let
param
=
{
fileUrl
:
fileUrl
,
sessionId
:
vm
.
sessionId
,
}
vm
.
hlsPopup
.
showLoading
(
'正在检测'
)
var
flag
=
false
var
loadInterval
=
setInterval
(
function
()
{
vm
.
hlsPopup
.
showLoading
(
'视频过大,请耐心等待'
)
if
(
flag
)
{
vm
.
hlsPopup
.
hideLoading
()
clearInterval
(
loadInterval
)
}
},
5000
)
hlsUtil
.
baiduOcrVideo
(
param
,
url
,
function
(
res
)
{
flag
=
true
vm
.
hlsPopup
.
hideLoading
()
console
.
log
(
'##########res '
+
JSON
.
stringify
(
res
))
if
(
res
.
result
.
err_no
!=
0
)
{
// 检测出错
hlsPopup
.
showConfirm
({
title
:
'提示'
,
content
:
`检测失败,是否重新重新尝试?`
,
onConfirm
:
data
=>
{
if
(
data
)
{
// 重新尝试
vm
.
showFlag
=
true
}
else
{
}
},
})
}
else
if
(
res
.
result
.
result
.
thresholds
.
frr_1e
-
2
<
0.9
)
{
// 检测成功但不符合要求
hlsPopup
.
showConfirm
({
title
:
'提示'
,
content
:
`检测失败,是否重新重新尝试?`
,
onConfirm
:
data
=>
{
if
(
data
)
{
// 重新尝试
vm
.
getCode
()
}
else
{
}
},
})
}
else
{
hlsPopup
.
showPopup
({
title
:
'提示'
,
content
:
`检测成功,请进行电子签认证`
,
onConfirm
:
()
=>
{
// 电子签认证
vm
.
goElectronicSign
()
vm
.
svaeVideo
(
fileUrl
)
// 上传视频文件至业务系统
},
})
}
})
},
getCode
()
{
// 获取验证码
// this.downNum = true
this
.
computeTime
()
this
.
time
=
60
this
.
lastTime
=
3
let
vm
=
this
let
url
=
process
.
env
.
ocrPath
+
'/baidu/ocr/videoSessioncode'
let
param
=
{}
vm
.
hlsPopup
.
showLoading
(
'请稍后'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
if
(
res
.
success
)
{
vm
.
codeList
=
[...
res
.
result
.
result
.
code
]
vm
.
sessionId
=
res
.
result
.
result
.
session_id
vm
.
downNum
=
true
}
})
/* let str = '098672'
vm.codeList = [...str] */
},
goElectronicSign
()
{
// 电子签
let
vm
=
this
let
url
=
process
.
env
.
basePath
+
'get_sign_url'
let
param
=
{
confirm_id
:
vm
.
confirm_id
,
data_class
:
'PRJ_PROJECT'
,
}
vm
.
hlsPopup
.
showLoading
(
'请稍后'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
if
(
res
.
info
.
msg
===
'success'
)
{
/* vm.$router.push({
name: 'ElectronicSign',
params: {
url: res.info.data.url,
},
}) */
cordova
.
InAppBrowser
.
open
(
res
.
info
.
data
.
url
,
'_blank'
,
'location=yes'
)
}
else
{
vm
.
hlsPopup
.
showLongCenter
(
res
.
info
.
msg
)
}
})
},
computeTime
()
{
// 倒计时
let
vm
=
this
let
timer
=
setInterval
(()
=>
{
if
(
vm
.
time
>
0
)
{
vm
.
time
--
}
else
{
clearInterval
(
timer
)
}
},
1000
)
let
lastTime
=
setInterval
(()
=>
{
if
(
vm
.
lastTime
>
0
)
{
vm
.
lastTime
--
}
else
{
clearInterval
(
lastTime
)
}
},
1000
)
},
},
}
</
script
>
<
style
lang=
"less"
>
.body-enter-active, .body-leave-active {
transition: opacity .5s;
}
.body-enter, .body-leave-to /* .fade-leave-active below version 2.1.8 */ {
opacity: 0;
}
.body-check{
width: 100%;
height: 100%;
position: absolute;
top: 0;
z-index: 999;
background: rgba(56, 63, 69, 0.30);
.trans-enter-active,
.trans-leave-active {
transition: opacity 0.5s;
}
.trans-enter,
.trans-leave-active {
opacity: 0;
}
.modal-show {
width: 100%;
height: 100%;
position: absolute;
z-index: 900;
background-color: rgba(56, 63, 69, 0.3);
display: flex;
justify-content: center;
align-items: center;
.modal-box {
width: 314px;
display: flex;
justify-content: center;
flex-flow: wrap row;
}
.down {
position: relative;
width: 314px;
height: 286px;
background-size: 301px 24.7px;
background-color: #fff;
display: flex;
justify-content: center;
flex-flow: wrap row;
.button {
width: 90%;
height: 50px;
background-color: #0073eb;
color: #fff !important;
border-radius: 4px;
}
.down-content {
width: 290px;
margin: 0 auto;
margin-top: 30px;
text-align: center;
.title {
font-size: 16px;
color: #333;
}
.compute {
margin-top: 16px;
font-size: 14px;
line-height: 20px;
color: #666;
span {
color: red;
}
}
}
.number {
width: 100%;
display: flex;
justify-content: center;
span {
width: 40px;
height: 60px;
font-size: 30px;
font-weight: bold;
line-height: 60px;
color: #333;
display: inline-block;
border: 1px solid #e1e1e1;
border-radius: 10px;
text-align: center;
}
}
}
.close {
border: 1px solid #fff;
width: 40px;
height: 40px;
color: #fff;
background-color: rgba(0, 0, 0, 0.3);
margin-top: 20px;
border-radius: 50%;
text-align: center;
line-height: 40px;
}
}
.content {
display: flex;
flex-direction: column;
}
.top {
height: 340px;
background-color: #f4f4f4;
display: flex;
justify-content: center;
align-items: flex-start;
.top-box {
width: 60%;
display: flex;
justify-content: center;
flex-wrap: wrap;
img {
width: 80%;
height: 100%;
margin-top: 10px;
}
span {
font-size: 14px;
color: #999;
line-height: 25px;
letter-spacing: 2px;
}
}
}
.bottom {
flex: 1;
background-color: #fff;
box-shadow: 0 -4px 10px 0 #e8e8e8;
display: flex;
justify-content: center;
ul {
width: 80%;
margin-top: 40px;
li {
height: 60px;
p {
height: 35px;
border-left: 1px solid #0073eb;
margin-left: 12px;
}
span:first-child {
border-radius: 50%;
border: 1px solid #0073eb;
text-align: center;
color: #0073eb;
display: inline-block;
width: 25px;
height: 25px;
line-height: 25px;
font-size: 12px;
margin-right: 10px;
letter-spacing: 0;
}
}
}
}
.approve {
background: @headerColor;
border-radius: 4px;
color: #fff;
font-family: PingFangSC-Semibold;
font-size: 15px;
}
}
</
style
>
src/pages/distributorSign/contract-details.vue
View file @
723bcade
...
...
@@ -175,6 +175,8 @@
<img
src=
"@/assets/intoApproval/approve.png"
>
确认签约
</tab-button>
</bottom-tab>
<!--活体检测-->
<body-check
ref=
"body"
:check_id=
"$route.params.check_id"
:confirm_id=
"confirm_id"
></body-check>
</h-view>
</
template
>
...
...
@@ -182,12 +184,14 @@
import
Tab
from
'@/pages/distributorSign/details-tab'
import
LegalPerson
from
'@/pages/distributorSign/legal-person'
import
Personal
from
'@/pages/distributorSign/personal'
import
bodyCheck
from
'./body-check'
export
default
{
name
:
'ContractDetails'
,
components
:
{
Tab
,
Personal
,
LegalPerson
,
bodyCheck
,
},
data
()
{
return
{
...
...
@@ -273,13 +277,14 @@ export default {
})
},
goBodyCheck
(
confirm_id
)
{
// 活体检测
this
.
$router
.
push
({
this
.
$refs
.
body
.
show
()
/* this.$router.push({
name: 'BodyCheck',
params: {
check_id: this.$route.params.check_id,
confirm_id: confirm_id,
},
})
})
*/
},
/* goElectronicSign () { // 电子签
let vm = this
...
...
@@ -820,7 +825,7 @@ export default {
}
}
.footer-button:nth-of-type(1) {
bottom: 92px;
//
bottom: 92px;
.approve {
width: 358.6px;
height: 44px;
...
...
src/pages/distributorSign/contract-list.vue
View file @
723bcade
...
...
@@ -444,12 +444,14 @@ export default {
}
}
.box {
height: 156px;
margin-left: 50px;
margin-right: 19px;
div {
width: 100%;
height: 32px;
padding: 8px 0;
line-height: 18px;
display: flex;
justify-content: space-between;
position: relative;
.money {
font-family: Verdana-Bold;
...
...
@@ -459,14 +461,15 @@ export default {
font-weight: 600;
}
p {
height: 32px;
line-height: 32px;
position: absolute;
font-family: PingFangSC-Regular;
font-size: 14px;
letter-spacing: 0;
word-break: break-all;
word-wrap: break-word;
white-space: normal;
}
p:nth-of-type(1){
width: 32%;
left: 0;
color: rgba(75,74,75,0.60);
}
...
...
src/router/index.js
View file @
723bcade
...
...
@@ -57,7 +57,7 @@ import ContractDetail from '@/pages/ContractSigning/contract-detail'
import
ContractContent
from
'@/pages/ContractSigning/contract-content'
import
EntryInfo
from
'@/pages/ContractSigning/entry-info'
import
ElectronicSign
from
'@/pages/ContractSigning/electronic-sign'
import
BodyCheck
from
'@/pages/ContractSigning/body-check'
/*import BodyCheck from '@/pages/ContractSigning/body-check'*/
import
ContractRepayPlan
from
'@/pages/ContractSigning/contract-repay-plan'
// 首付款支付
...
...
@@ -233,7 +233,7 @@ export default new Router({
{
path
:
'/entry-info'
,
component
:
EntryInfo
,
name
:
'EntryInfo'
,
meta
:
{
keepAlive
:
true
}},
{
path
:
'/contract-repay-plan'
,
component
:
ContractRepayPlan
,
name
:
'ContractRepayPlan'
,
meta
:
{
keepAlive
:
true
}},
{
path
:
'/electronic-sign'
,
component
:
ElectronicSign
,
name
:
'ElectronicSign'
,
meta
:
{
keepAlive
:
true
}},
{
path
:
'/body-check'
,
component
:
BodyCheck
,
name
:
'BodyCheck'
,
meta
:
{
keepAlive
:
true
}},
/* {path: '/body-check', component: BodyCheck, name: 'BodyCheck', meta: {keepAlive: true}},*/
// 首付款支付
{
path
:
'/first-pay'
,
component
:
FirstPay
,
name
:
'FirstPay'
,
meta
:
{
keepAlive
:
true
}},
...
...
www/index.html
View file @
723bcade
<!DOCTYPE html>
<html><head><meta
charset=
utf-8
><meta
name=
viewport
content=
"initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no,width=device-width,viewport-fit=cover"
><meta
name=
format-detection
content=
"telephone=no"
><meta
name=
format-detection
content=
"email=no"
><meta
name=
apple-mobile-web-app-capable
content=
yes
><meta
name=
apple-mobile-web-app-status-bar-style
content=
black
><script
type=
text/javascript
src=
./static/vuePlatform.js
></script><script
type=
text/javascript
src=
./static/prototype.js
></script><script
type=
text/javascript
src=
cordova.js
></script><script
type=
text/javascript
src=
"http://api.map.baidu.com/api?v=2.0&ak=o7fTnpVAGzXKN7SirV8xGU2xzWQS2NrI"
></script><title>
徐工融租
</title><link
href=
./static/css/app.6319497a7aca33cba9994809c1a48057.css
rel=
stylesheet
></head><body><div
id=
app-box
></div><script
type=
text/javascript
src=
./static/js/manifest.3ad1d5771e9b13dbdad2.js
></script><script
type=
text/javascript
src=
./static/js/vendor.efd596b798e6119ce4a4.js
></script><script
type=
text/javascript
src=
./static/js/app.e855d3033d30dd9c7a5e.js
></script></body></html>
\ No newline at end of file
<!DOCTYPE html>
<html><head><meta
charset=
utf-8
><meta
name=
viewport
content=
"initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no,width=device-width,viewport-fit=cover"
><meta
name=
format-detection
content=
"telephone=no"
><meta
name=
format-detection
content=
"email=no"
><meta
name=
apple-mobile-web-app-capable
content=
yes
><meta
name=
apple-mobile-web-app-status-bar-style
content=
black
><script
type=
text/javascript
src=
./static/vuePlatform.js
></script><script
type=
text/javascript
src=
./static/prototype.js
></script><script
type=
text/javascript
src=
cordova.js
></script><script
type=
text/javascript
src=
"http://api.map.baidu.com/api?v=2.0&ak=o7fTnpVAGzXKN7SirV8xGU2xzWQS2NrI"
></script><title>
徐工融租
</title><link
href=
./static/css/app.d8b40c2ca4c1ada083d556818fb9edcb.css
rel=
stylesheet
></head><body><div
id=
app-box
></div><script
type=
text/javascript
src=
./static/js/manifest.3ad1d5771e9b13dbdad2.js
></script><script
type=
text/javascript
src=
./static/js/vendor.efd596b798e6119ce4a4.js
></script><script
type=
text/javascript
src=
./static/js/app.3aa55f0f2ea9e3dec22c.js
></script></body></html>
\ No newline at end of file
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