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
e3de6ee7
Commit
e3de6ee7
authored
Dec 23, 2019
by
李晓兵
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
'待签约认证'
parent
0dfac473
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
904 additions
and
841 deletions
+904
-841
uat.env.js
config/uat.env.js
+1
-1
certification.png
src/assets/constractSigning/certification.png
+0
-0
main.js
src/main.js
+2
-2
body-check.vue
src/pages/contractSigning/body-check.vue
+296
-258
contract-detail.vue
src/pages/contractSigning/contract-detail.vue
+605
-580
No files found.
config/uat.env.js
View file @
e3de6ee7
...
...
@@ -10,5 +10,5 @@ module.exports = {
filePath
:
'"http://180.104.121.66:8088/r/api/app/fileViewSvc?sysName=XCMG_DEV&apiName=file_view&"'
,
ocrPath
:
'"http://180.104.121.66:8088/r/api"'
,
appId
:
'"com.xcmg.app"'
,
currentVersion
:
'"1.1.
8
"'
currentVersion
:
'"1.1.
9
"'
}
src/assets/constractSigning/certification.png
0 → 100644
View file @
e3de6ee7
1.22 KB
src/main.js
View file @
e3de6ee7
...
...
@@ -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 @
e3de6ee7
...
...
@@ -62,218 +62,256 @@
</h-view>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
downNum
:
false
,
time
:
60
,
lastTime
:
3
,
code
:
''
,
file
:
''
,
sessionId
:
''
,
codeList
:
[],
}
},
methods
:
{
recordVdeo
()
{
// 开始录制
let
vm
=
this
vm
.
downNum
=
false
// 模态框消失
let
onSuccess
=
function
(
mediaFiles
)
{
// 遍历获取录制的文件(iOS 只支持一次录制一个视频)
/* for (let i = 0; i < mediaFiles.length; i++) {
alert('录制成功!\n\n' + '文件名:' + mediaFiles[i].name + '\n' + '大小:' + mediaFiles[i].size + '\n\n' + 'localURL地址:' + mediaFiles[i].localURL + '\n\n' + 'fullPath地址:' + mediaFiles[i].fullPath)
} */
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
(
'录制失败,请重新录制'
)
export
default
{
data
()
{
return
{
downNum
:
false
,
time
:
60
,
lastTime
:
3
,
code
:
''
,
file
:
''
,
sessionId
:
''
,
codeList
:
[],
}
hlsUtil
.
captureVideo
(
onSuccess
,
onError
)
},
svaeVideo
(
fullPath
)
{
let
vm
=
this
vm
.
videoListUpload
=
[]
let
obj
=
{
pkvalue
:
vm
.
$route
.
params
.
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
methods
:
{
recordVdeo
()
{
// 开始录制
let
vm
=
this
vm
.
downNum
=
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
:
vm
.
$route
.
params
.
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
()
}
}
else
{
hlsPopup
.
hideLoading
()
}
if
(
!
list
[
i
].
attachment_id
)
{
attLength
++
hlsUtil
.
fileUploadSvc
(
list
[
i
],
uploadSuccess
)
}
}
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
.
result
.
thresholds
.
frr_1e
-
2
<
0.9
)
{
vm
.
hlsPopup
.
showLongCenter
(
'检测失败,请重新尝试'
)
}
else
{
vm
.
hlsPopup
.
showLongCenter
(
'检测成功'
)
hlsPopup
.
hideLoading
(
)
}
})
},
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
},
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
,
}
})
/* let str = '098672'
vm.codeList = [...str] */
},
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
)
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
.
result
.
thresholds
.
frr_1e
-
2
<
0.9
)
{
hlsPopup
.
showConfirm
({
title
:
'提示'
,
content
:
`检测失败,是否重新重新尝试?`
,
onConfirm
:
data
=>
{
if
(
data
)
{
// 重新尝试
vm
.
getCode
()
}
else
{
}
},
})
vm
.
hlsPopup
.
showLongCenter
(
'检测失败,请重新尝试'
)
}
else
{
hlsPopup
.
showPopup
({
title
:
'提示'
,
content
:
`检测成功,请进行电子签认证`
,
onConfirm
:
()
=>
{
// 电子签认证
vm
.
goElectronicSign
()
},
})
}
})
},
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
.
$route
.
params
.
confirm_id
,
data_class
:
'PRJ_PROJECT'
,
}
},
1000
)
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"
scoped
>
#body-check {
.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;
#body-check {
.trans-enter-active,
.trans-leave-active {
transition: opacity 0.5s;
}
.down {
position: relative;
width: 314px;
height: 286px;
background-size: 301px 24.7px;
background-color: #fff;
.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;
flex-flow: wrap row;
.button{
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;
.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 {
.number {
width: 100%;
display: flex;
justify-content: center;
...
...
@@ -290,85 +328,85 @@ export default {
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;
}
}
.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;
}
}
.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%;
.top {
height: 340px;
background-color: #f4f4f4;
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;
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:first-child {
border-radius: 50%;
border: 1px solid #0073eb;
text-align: center;
color: #0073eb;
display: inline-block;
width: 25px;
height: 25px;
span {
font-size: 14px;
color: #999;
line-height: 25px;
font-size: 12px;
margin-right: 10px;
letter-spacing: 0;
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;
}
}
.approve {
background: @headerColor;
border-radius: 4px;
color: #fff;
font-family: PingFangSC-Semibold;
font-size: 15px;
}
}
</
style
>
src/pages/contractSigning/contract-detail.vue
View file @
e3de6ee7
...
...
@@ -109,12 +109,12 @@
<p>
本人同意接收来自于徐工融资租赁有限公司或第三方发出的提醒付款、确认付款、催款等短信(不含广告),同意接收来自于徐工融资租赁有限公司的录音电话,并积极配合。
</p>
</div>
</div>
<div
v-if=
"tabNum === 1"
class=
"bodyCheck"
>
<button
@
click=
"
goBodyCheck"
>
活体检测
</button>
</div>
<div
v-if=
"tabNum === 1"
class=
"sign-elect"
>
<button
@
click=
"goElectronicSign"
>
电子签
</button>
</div
>
<
!--
<
div
v-if=
"tabNum === 1"
class=
"bodyCheck"
>
<button
@
click=
"
iFram"
>
iFram
</button>
</div>
-->
<
!--
<
div
v-if=
"tabNum === 1"
class=
"sign-elect"
>
<button
@
click=
"goElectronicSign"
>
电子签
</button>
</div>
--
>
</div>
</h-content>
<h-content
v-if=
"num === 2"
>
...
...
@@ -266,14 +266,11 @@
</div>
</div>
</h-content>
<
!--
<bottom-tab
v-if=
"con_confirm_status == 'SUBMIT'
"
>
<tab-button
class=
"
footer"
@
click
.
native=
"inSure
"
>
审批
<
bottom-tab
v-if=
"con_confirm_status!=='APPROVED'"
class=
"add-box
"
>
<tab-button
class=
"
before"
@
click
.
native=
"takePhonto
"
>
<img
src=
"@/assets/constractSigning/certification.png"
>
认证
</tab-button>
</bottom-tab>
-->
<bottom-tab
v-if=
"con_confirm_status!=='APPROVED'"
class=
"footer-button"
>
<!--
<tab-button
class=
"approve"
@
click
.
native=
"showModalValue=true"
>
-->
<tab-button
class=
"approve"
@
click
.
native=
"inSure"
>
<tab-button
class=
"next"
@
click
.
native=
"inSure"
>
<img
src=
"@/assets/intoApproval/approve.png"
>
审批
</tab-button>
</bottom-tab>
...
...
@@ -444,36 +441,38 @@ export default {
}
})
},
goBodyCheck
()
{
// 活体检测
goBodyCheck
(
confirm_id
)
{
// 活体检测
this
.
$router
.
push
({
name
:
'BodyCheck'
,
params
:
{
check_id
:
this
.
$route
.
params
.
check_id
,
confirm_id
:
confirm_id
,
},
})
},
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
,
},
})
}
else
{
vm
.
hlsPopup
.
showLongCenter
(
res
.
info
.
msg
)
}
})
},
/* 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)
}
})
}, */
charge
(
val
,
status
)
{
let
vm
=
this
this
.
hlsPopup
.
showConfirm
({
...
...
@@ -481,25 +480,24 @@ export default {
content
:
`您确认
${
val
}
吗?`
,
onConfirm
:
data
=>
{
if
(
data
)
{
// 执行同意的逻辑,先打开相机自拍一张
vm
.
takePhonto
(
status
)
// this.confirmContractSign()
// 需要先校验是否认证通过
vm
.
doConfirm
(
status
)
}
},
})
},
takePhonto
(
status
)
{
takePhonto
()
{
let
vm
=
this
hlsPopup
.
showPopup
({
title
:
'提示'
,
content
:
`请自拍一张`
,
onConfirm
:
()
=>
{
vm
.
takePhontoOpenCamera
(
status
)
vm
.
takePhontoOpenCamera
()
},
})
},
// 打开相机自拍
takePhontoOpenCamera
(
status
)
{
takePhontoOpenCamera
()
{
let
vm
=
this
vm
.
faceListUpload
=
[]
let
obj
=
{
...
...
@@ -518,7 +516,7 @@ export default {
let
success
=
function
(
imgdata
)
{
obj
.
filePath
=
imgdata
// obj.filePath = 'http://hlsapp.hand-china.com/file/XCMG/2.jpg'
vm
.
confirmContractSign
(
imgdata
,
status
)
vm
.
confirmContractSign
(
imgdata
)
vm
.
faceListUpload
.
push
(
obj
)
}
let
error
=
function
()
{
...
...
@@ -527,11 +525,11 @@ export default {
hlsUtil
.
openCamera
(
cameraoptions
,
success
,
error
)
// this.confirmContractSign('', status)
},
// 执行同意的逻辑(查询对应的身份证正面图片->人脸识别->
确认签约
)
async
confirmContractSign
(
faceImg
,
status
)
{
// 执行同意的逻辑(查询对应的身份证正面图片->人脸识别->
活体检测
)
async
confirmContractSign
(
faceImg
)
{
let
idCardImgUrl
=
await
this
.
idCardImgUrlGet
()
if
(
idCardImgUrl
)
{
this
.
faceIdentify
(
faceImg
,
idCardImgUrl
,
status
)
this
.
faceIdentify
(
faceImg
,
idCardImgUrl
)
}
},
// 获取身份证照片
...
...
@@ -546,11 +544,11 @@ export default {
hlsPopup
.
hideLoading
()
if
(
res
.
result
===
'S'
&&
res
.
info
)
{
let
cardUrl
=
process
.
env
.
filePath
+
'attachment_id='
+
res
.
info
.
attachment_id
+
'&access_token='
+
window
.
localStorage
.
access_token
process
.
env
.
filePath
+
'attachment_id='
+
res
.
info
.
attachment_id
+
'&access_token='
+
window
.
localStorage
.
access_token
return
cardUrl
}
else
if
(
res
.
result
===
'S'
&&
!
res
.
info
)
{
hlsPopup
.
showLongCenter
(
'未找到身份证照片'
)
...
...
@@ -561,7 +559,7 @@ export default {
}
},
// 人脸比对
faceIdentify
(
faceImg
,
idCardImgUrl
,
status
)
{
faceIdentify
(
faceImg
,
idCardImgUrl
)
{
let
vm
=
this
let
obj
=
{
fileUrl
:
faceImg
,
...
...
@@ -572,21 +570,31 @@ export default {
hlsUtil
.
baiduOcrFace
(
obj
,
url
,
function
(
res
)
{
hlsPopup
.
hideLoading
()
if
(
res
.
success
)
{
vm
.
save_picture
(
vm
.
faceListUpload
)
let
identifyScore
=
res
.
result
.
result
.
score
.
toFixed
(
0
)
hlsPopup
.
show
Confirm
({
hlsPopup
.
show
Popup
({
title
:
'提示'
,
content
:
`识别分数为
${
identifyScore
}
`
,
onConfirm
:
data
=>
{
if
(
data
)
{
vm
.
doConfirm
(
status
)
}
else
{
}
content
:
`识别分数为
${
identifyScore
}
,请进行活体检测`
,
onConfirm
:
()
=>
{
// 进入活体检测页面
vm
.
goBodyCheck
(
vm
.
confirm_id
)
},
})
}
else
{
hlsPopup
.
showLongCenter
(
'比对失败,请保证和绑定时是同一个人'
)
}
})
/* vm.save_picture(vm.faceListUpload)
let identifyScore = 90
hlsPopup.showPopup({
title: '提示',
content: `识别分数为${identifyScore},请进行活体检测`,
onConfirm: () => {
// 进入活体检测页面
vm.goBodyCheck(vm.confirm_id)
},
}) */
},
// 确认签约逻辑
doConfirm
(
status
)
{
...
...
@@ -603,7 +611,6 @@ export default {
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
if
(
res
.
result
===
'S'
)
{
vm
.
save_picture
(
vm
.
faceListUpload
)
vm
.
hlsPopup
.
showSuccess
(
'审批成功'
)
window
.
localStorage
.
setItem
(
'backFlag'
,
true
)
vm
.
$routeGo
()
...
...
@@ -624,7 +631,7 @@ export default {
if
(
alreadyUploadNum
===
attLength
)
{
clearInterval
(
recordUploadInterval
)
/* hlsPopup.hideLoading()
hlsPopup.showLongCenter('图片上传成功') */
hlsPopup.showLongCenter('图片上传成功') */
}
},
500
)
for
(
var
i
=
0
;
i
<
list
.
length
;
i
++
)
{
...
...
@@ -848,611 +855,629 @@ export default {
}
</
script
>
<
style
lang=
"less"
rel=
"stylesheet"
>
#contract-details {
.sign-elect {
width:100%;
height:1.1rem;
position: fixed;
bottom: 43px;
// margin-top: 20px;
background: #fff;
display: flex;
justify-content: center;
align-items: center;
button {
width: 7.172rem;
height: 0.88rem;
background: #1d3fff;
border-radius: 0.08rem;
color: #fff;
font-family: PingFangSC-Semibold;
font-size: 0.3rem;
line-height: 0.4rem;
letter-spacing: 0.2rem;
#contract-details {
.sign-elect {
width:100%;
height:1.1rem;
position: fixed;
bottom: 43px;
// margin-top: 20px;
background: #fff;
display: flex;
justify-content: center;
align-items: center;
button {
width: 7.172rem;
height: 0.88rem;
background: #1d3fff;
border-radius: 0.08rem;
color: #fff;
font-family: PingFangSC-Semibold;
font-size: 0.3rem;
line-height: 0.4rem;
letter-spacing: 0.2rem;
}
}
}
.bodyCheck{
width:100%
;
height:1.1rem
;
position: fixed
;
bottom: 92px
;
background: #fff
;
display: flex
;
justify-content
: center;
align-items: center;
button {
width: 7.172
rem;
height: 0.88rem
;
background: #1d3fff
;
border-radius: 0.08rem
;
color: #fff
;
font-family: PingFangSC-Semibold
;
font-size: 0.3
rem;
line-height: 0.88
rem;
letter-spacing: 0.2rem;
.bodyCheck{
width:100%;
height:1.1rem
;
position: fixed
;
bottom: 92px
;
background: #fff
;
display: flex
;
justify-content: center
;
align-items
: center;
button {
width: 7.172rem;
height: 0.88
rem;
background: #1d3fff
;
border-radius: 0.08rem
;
color: #fff
;
font-family: PingFangSC-Semibold
;
font-size: 0.3rem
;
line-height: 0.88
rem;
letter-spacing: 0.2
rem;
}
}
}
.footer-button
{
.approve {
width: 358.6
px;
height: 44px
;
background: @headerColor
;
border-radius: 4px
;
color: #fff
;
font-family: PingFangSC-Semibold
;
font-size: 15
px;
line-height: 2
0px;
letter-spacing: 10px;
img {
width
: 16.8px;
height: 16.8px;
.footer-button {
.approve
{
width: 358.6px;
height: 44
px;
background: @headerColor
;
border-radius: 4px
;
color: #fff
;
font-family: PingFangSC-Semibold
;
font-size: 15px
;
line-height: 20
px;
letter-spacing: 1
0px;
img {
width: 16.8px;
height
: 16.8px;
}
}
}
}
.name-box {
display: inline-block;
text-align: center;
line-height: 16px;
color: #00469c;
width: 16px;
height: 16px;
background: #cddbec;
border-radius: 4px;
}
.name {
font-family: PingFangSC-Regular;
font-size: 14px;
color: #383f45;
letter-spacing: 0;
margin-left: 10px;
}
.card-num {
font-family: PingFangSC-Regular;
font-size: 14px;
color: #383f45;
letter-spacing: 0;
display: block;
margin-left: 31px;
margin-top: 7px;
}
.right {
position: relative;
}
.right span {
float: right;
margin-right: 48px;
display: block;
font-family: PingFangSC-Regular;
font-size: 14px;
color: rgba(56, 63, 69, 0.6);
letter-spacing: 0;
line-height: 18px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width: 150px;
margin-top: -10px;
text-align: right;
}
.right span:last-child {
margin-top: 7px;
}
.right img {
position: absolute;
top: 30%;
left: 88%;
width: 14px;
height: 16px;
}
.alert {
padding-bottom: 160px;
width: 100%;
//margin-top: -10px;
background: #fbf2d2;
}
.alert-fund {
margin-top: -10px;
}
.alert-content {
width: 334px;
margin: 0 auto;
padding-top: 16px;
}
.info-word {
font-family: PingFangSC-Semibold;
font-size: 14px;
color: #fcc800;
letter-spacing: 0.5px;
margin-left: 8px;
}
.title {
display: flex;
align-items: center;
}
.top-word {
p {
.name-box {
display: inline-block;
text-align: center;
line-height: 16px;
color: #00469c;
width: 16px;
height: 16px;
background: #cddbec;
border-radius: 4px;
}
.name {
font-family: PingFangSC-Regular;
font-size: 12px;
color: #656464;
letter-spacing: 0.37px;
font-size: 14px;
color: #383f45;
letter-spacing: 0;
margin-left: 10px;
}
.card-num {
font-family: PingFangSC-Regular;
font-size: 14px;
color: #383f45;
letter-spacing: 0;
display: block;
margin-left: 31px;
margin-top: 7px;
line-height: 15px;
text-indent: 16px;
}
.right {
position: relative;
}
p::before {
content: "";
.right span {
float: right;
margin-right: 48px;
display: block;
font-family: PingFangSC-Regular;
font-size: 14px;
color: rgba(56, 63, 69, 0.6);
letter-spacing: 0;
line-height: 18px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width: 150px;
margin-top: -10px;
text-align: right;
}
.right span:last-child {
margin-top: 7px;
}
.right img {
position: absolute;
top: 5px;
left: 0px;
width: 4px;
height: 4px;
border-radius: 20px;
background-color: #fcc800;
top: 30%;
left: 88%;
width: 14px;
height: 16px;
}
.alert {
padding-bottom: 30px;
width: 100%;
//margin-top: -10px;
background: #fbf2d2;
}
.alert-fund {
margin-top: -10px;
}
.alert-content {
width: 334px;
margin: 0 auto;
padding-top: 16px;
}
}
.top-info {
font-family: PingFangSC-Regular;
font-size: 12px;
color: #656464;
letter-spacing: 0.37px;
margin-top: 7px;
line-height: 15px;
span {
.info-word {
font-family: PingFangSC-Semibold;
font-size: 14px;
color: #fcc800;
letter-spacing: 0.5px;
margin-left: 8px;
}
}
.alert img {
width: 18px;
height: 18px;
}
.font-color {
font-family: PingFangSC-Regular;
font-size: 14px;
color: #656464;
letter-spacing: 0;
}
.repay-plan {
height: 44px;
width: 100%;
margin-top: -10px;
background: #f2f2f2;
p {
font-family: PingFangSC-Semibold;
.title {
display: flex;
align-items: center;
}
.top-word {
p {
font-family: PingFangSC-Regular;
font-size: 12px;
color: #656464;
letter-spacing: 0.37px;
margin-top: 7px;
line-height: 15px;
text-indent: 16px;
position: relative;
}
p::before {
content: "";
display: block;
position: absolute;
top: 5px;
left: 0px;
width: 4px;
height: 4px;
border-radius: 20px;
background-color: #fcc800;
}
}
.top-info {
font-family: PingFangSC-Regular;
font-size: 12px;
color: #656464;
letter-spacing: 0.37px;
margin-top: 7px;
line-height: 15px;
span {
color: #fcc800;
}
}
.alert img {
width: 18px;
height: 18px;
}
.font-color {
font-family: PingFangSC-Regular;
font-size: 14px;
color: #
00469c
;
color: #
656464
;
letter-spacing: 0;
height: 44px;
width: 84px;
line-height: 44px;
font-weight: bold;
text-decoration: underline;
margin-left: 16px;
}
}
.equipment-list-fund {
height: 40px;
line-height: 40px;
background-color: #fafafa;
display: flex;
align-items: center;
color: #00469c;
font-size: 15px;
//margin-left: 16px;
position: relative;
//margin-top: -10px;
span {
width: 4px;
height: 20px;
background: #00469c;
.repay-plan {
height: 44px;
width: 100%;
margin-top: -10px;
background: #f2f2f2;
p {
font-family: PingFangSC-Semibold;
font-size: 14px;
color: #00469c;
letter-spacing: 0;
height: 44px;
width: 84px;
line-height: 44px;
font-weight: bold;
text-decoration: underline;
margin-left: 16px;
}
}
p {
padding-left: 10px;
.equipment-list-fund {
height: 40px;
line-height: 40px;
background-color: #fafafa;
display: flex;
align-items: center;
color: #00469c;
font-size: 15px;
//margin-left: 16px;
position: relative;
//margin-top: -10px;
span {
width: 4px;
height: 20px;
background: #00469c;
}
p {
padding-left: 10px;
}
}
}
.all {
position: absolute;
background-color: transparent;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 2;
.prompt {
.all {
position: absolute;
top: 50%;
left: 50%;
margin-top: -75px;
margin-left: -121px;
background-color: #fff;
box-shadow: 0 1px 2px 1px rgba(128, 128, 128, 0.1);
border-radius: 4px;
width: 242px;
height: 150px;
background-color: transparent;
width: 100%;
height: 100%;
top: 0;
left: 0;
z-index: 2;
.top {
height: 105px;
border-bottom: 1px solid #f1f0f5;
.prompt {
position: absolute;
top: 50%;
left: 50%;
margin-top: -75px;
margin-left: -121px;
background-color: #fff;
box-shadow: 0 1px 2px 1px rgba(128, 128, 128, 0.1);
border-radius: 4px;
width: 242px;
height: 150px;
div:first-child {
font-family: PingFangSC-Semibold;
font-size: 14px;
color: #e50020;
letter-spacing: 0.5px;
font-weight: 700;
margin-top: 13px;
.top {
height: 105px;
border-bottom: 1px solid #f1f0f5;
img {
width: 18px;
line-height: 12px;
display: block;
margin: -3px 5px 0 40%;
float: left;
div:first-child {
font-family: PingFangSC-Semibold;
font-size: 14px;
color: #e50020;
letter-spacing: 0.5px;
font-weight: 700;
margin-top: 13px;
img {
width: 18px;
line-height: 12px;
display: block;
margin: -3px 5px 0 40%;
float: left;
}
}
div:nth-child(2) {
margin-top: 22px;
font-family: PingFangSC-Regular;
font-size: 13px;
color: #383f45;
letter-spacing: 0.4px;
padding: 0 22px;
line-height: 20px;
}
}
div:nth-child(2)
{
margin-top: 22px
;
.bottom
{
text-align: center
;
font-family: PingFangSC-Regular;
font-size: 13px;
color: #383f45;
letter-spacing: 0.4px;
padding: 0 22px;
line-height: 20px;
font-size: 14px;
color: #00469c;
line-height: 32px;
}
}
}
.bottom {
text-align: center;
font-family: PingFangSC-Regular;
.tab-style {
display: flex;
justify-content: center;
padding-top: 12px;
padding-bottom: 8px;
align-items: center;
background-color: #fff;
box-shadow: 0 2px 3px 0 rgba(220, 220, 221, 0.5);
div {
display: block;
height: 32px;
width: 172px;
border-radius: 16px;
border-radius: 16px;
font-family: PingFangSC-Semibold;
font-size: 14px;
color: #00469c;
letter-spacing: 0.43px;
margin: 0 4px;
line-height: 32px;
}
}
}
.tab-style {
display: flex;
justify-content: center;
padding-top: 12px;
padding-bottom: 8px;
align-items: center;
background-color: #fff;
box-shadow: 0 2px 3px 0 rgba(220, 220, 221, 0.5);
div {
display: block;
height: 32px;
width: 172px;
border-radius: 16px;
border-radius: 16px;
font-family: PingFangSC-Semibold;
font-size: 14px;
letter-spacing: 0.43px;
margin: 0 4px;
line-height: 32px;
}
.undone {
background: rgba(220, 220, 221, 0.26);
color: #383f45;
}
.done {
background: rgba(0, 70, 156, 0.1);
color: #00469c;
}
img {
width: 16px;
display: block;
float: left;
margin: 8px 5px 0 20px;
}
span:nth-of-type(2) {
margin-left: 7px;
}
}
.content {
height: 87%;
.contract-text {
.border-red {
border: 2px solid rgba(255, 0, 0, 0.4);
.undone {
background: rgba(220, 220, 221, 0.26);
color: #383f45;
}
.done {
background: rgba(0, 70, 156, 0.1);
color: #00469c;
}
.hls-item {
margin-top: 8px;
background-color: #fff;
img {
width: 16px;
display: block;
float: left;
margin: 8px 5px 0 20px;
}
.contents
{
padding: 0
;
span:nth-of-type(2)
{
margin-left: 7px
;
}
}
.in-detail {
background-color: rgba(0, 70, 156, 0.08);
width: 48px;
height: 56px;
text-align: center;
line-height: 65px;
.content {
height: 87%;
img {
width: 16px;
.contract-text {
.border-red {
border: 2px solid rgba(255, 0, 0, 0.4);
}
}
.in-all {
//width: 96px;
display: flex;
.hls-item {
margin-top: 8px;
background-color: #fff;
}
img
{
width: 16px
;
.contents
{
padding: 0
;
}
div {
.in-detail {
background-color: rgba(0, 70, 156, 0.08);
width: 48px;
height: 56px;
text-align: center;
line-height: 65px;
}
div:first-child {
background-color: rgba(252, 200, 0, 0.1);
img {
width: 16px;
}
}
div:nth-child(2) {
background-color: rgba(0, 70, 156, 0.08);
}
}
}
}
.in-all {
//width: 96px;
display: flex;
.business-condition {
.equipment-list {
height: 40px;
line-height: 40px;
background-color: #fafafa;
color: #00469c;
font-size: 15px;
margin-left: 16px;
position: relative;
}
img {
width: 16px;
}
.equipment-list::before {
content: "";
display: block;
width: 4px;
height: 20px;
background-color: #00469c;
position: absolute;
left: -15px;
top: 10px;
}
div {
width: 48px;
height: 56px;
text-align: center;
line-height: 65px;
}
div {
font-family: PingFangSC-Regular;
color: #656464;
letter-spacing: 0;
}
div:first-child {
background-color: rgba(252, 200, 0, 0.1);
}
section {
font-family: PingFangSC-Regular;
color: rgba(56, 63, 69, 0.6);
letter-spacing: 0;
div:nth-child(2) {
background-color: rgba(0, 70, 156, 0.08);
}
}
}
}
}
.aguremrnt-list {
display: flex;
flex-direction: row;
.business-condition {
.equipment-list {
height: 40px;
line-height: 40px;
background-color: #fafafa;
color: #00469c;
font-size: 15px;
margin-left: 16px;
position: relative;
}
.pic {
margin-left: -3px;
}
.equipment-list::before {
content: "";
display: block;
width: 4px;
height: 20px;
background-color: #00469c;
position: absolute;
left: -15px;
top: 10px;
}
.pics {
// width: 21px;
height: 30px;
}
div {
font-family: PingFangSC-Regular;
color: #656464;
letter-spacing: 0;
}
.read {
height: 16px;
margin-top: 8px;
margin-left: 6px;
section {
font-family: PingFangSC-Regular;
color: rgba(56, 63, 69, 0.6);
letter-spacing: 0;
}
}
.second {
height: 32px;
line-height: 32px;
font-family: PingFangSC-Regular;
font-size: 14px;
margin-left: 16px;
color: #383f45;
letter-spacing: 0.43px;
}
.aguremrnt-list {
display: flex;
flex-direction: row;
.first {
margin-left: 13px;
}
}
.pic {
margin-left: -3px;
}
.myModal {
width: 100%;
height: 100%;
position: absolute;
z-index: 999;
background-color: rgba(56, 63, 69, 0.3);
display: flex;
justify-content: center;
align-items: center;
.box {
position: relative;
width: 301px;
height: 467px;
background: url("../../assets/intoApproval/top.png") no-repeat;
background-size: 301px 24.7px;
background-color: #fff;
button {
width: 240px;
height: 40px;
position: absolute;
color: #fff;
bottom: 16px;
left: 30.5px;
background-color: rgba(56, 63, 69, 0.5);
.pics {
// width: 21px;
height: 30px;
}
.title-box {
width: 100%;
display: block;
text-align: center;
margin-top: 37px;
font-family: PingFangSC-Semibold;
font-size: 16px;
color: #00469c;
.read {
height: 16px;
margin-top: 8px;
margin-left: 6px;
}
.content-box {
width: 240px;
height: 280px;
.second {
height: 32px;
line-height: 32px;
font-family: PingFangSC-Regular;
font-size: 12px;
font-size: 14px;
margin-left: 16px;
color: #383f45;
margin: 0 auto;
margin-top: 12px;
overflow-y: scroll;
div {
height: 20px;
line-height: 20px;
letter-spacing: 0.43px;
}
.first {
margin-left: 13px;
}
}
.myModal {
width: 100%;
height: 100%;
position: absolute;
z-index: 999;
background-color: rgba(56, 63, 69, 0.3);
display: flex;
justify-content: center;
align-items: center;
.box {
position: relative;
width: 301px;
height: 467px;
background: url("../../assets/intoApproval/top.png") no-repeat;
background-size: 301px 24.7px;
background-color: #fff;
button {
width: 240px;
height: 40px;
position: absolute;
color: #fff;
bottom: 16px;
left: 30.5px;
background-color: rgba(56, 63, 69, 0.5);
}
p {
text-indent: 22px;
line-height: 16px;
margin-top: 6px;
.title-box {
width: 100%;
display: block;
text-align: center;
margin-top: 37px;
font-family: PingFangSC-Semibold;
font-size: 16px;
color: #00469c;
}
.font-blod {
font-weight: bold;
text-indent: 0;
.content-box {
width: 240px;
height: 280px;
font-family: PingFangSC-Regular;
font-size: 12px;
color: #383f45;
margin: 0 auto;
margin-top: 12px;
overflow-y: scroll;
div {
height: 20px;
line-height: 20px;
}
p {
text-indent: 22px;
line-height: 16px;
margin-top: 6px;
}
.font-blod {
font-weight: bold;
text-indent: 0;
}
.sec {
text-indent: 22px;
}
}
.sec {
text-indent: 22px;
.confirm {
width: 240px;
height: 20px;
padding-top: 25px;
margin: 0 auto;
font-family: PingFangSC-Regular;
font-size: 12px;
color: #383f45;
line-height: 20px;
display: flex;
justify-content: center;
align-items: center;
input {
width: 16px;
height: 16px;
margin-right: 8px;
background: none;
}
input::before {
content: "";
display: block;
background-image: url("../../assets/intoApproval/top.png");
}
}
}
.confirm {
width: 240px;
height: 20px;
padding-top: 25px;
margin: 0 auto;
font-family: PingFangSC-Regular;
font-size: 12px;
color: #383f45;
line-height: 20px;
display: flex;
justify-content: center;
align-items: center;
input {
width: 16px;
height: 16px;
margin-right: 8px;
background: none;
}
input::before {
content: "";
display: block;
background-image: url("../../assets/intoApproval/top.png");
}
.approveContent {
position: absolute;
top: 50%;
background-color: #fafafa;
overflow-y: scroll;
}
.approveBottom {
width: 343px;
margin: 0 auto;
span {
display: block;
width: 100%;
font-family: PingFangSC-Semibold;
font-size: 15px;
color: #00469c;
height: 21px;
line-height: 21px;
margin: 16px 0;
img {
float: right;
}
}
textarea {
width: 343px;
height: 178px;
border-radius: 2px;
padding: 10px;
}
span::after {
content: "";
display: block;
position: relative;
left: 70px;
top: -17px;
width: 14px;
height: 14px;
background: url("../../assets/intoApproval/approv.png");
background-size: 14px 14px;
}
}
}
.approveContent {
position: absolute;
top: 50%;
background-color: #fafafa;
overflow-y: scroll;
}
.approveBottom {
width: 343px;
margin: 0 auto;
span {
display: block;
width: 100%;
.reject,
.same {
width: 175px;
height: 40px;
border-radius: 4px;
font-family: PingFangSC-Semibold;
font-size: 15px;
color: #00469c;
height: 21px;
line-height: 21px;
margin: 16px 0;
img {
float: right;
width: 13px;
height: 13px;
}
}
textarea {
width: 343px;
height: 178px;
border-radius: 2px;
padding: 10px;
.reject {
color: #656464;
border: 1px solid #656464;
}
span::after {
content: "";
display: block;
position: relative;
left: 70px;
top: -17px;
width: 14px;
height: 14px;
background: url("../../assets/intoApproval/approv.png");
background-size: 14px 14px;
.same {
color: #ffffff;
background: #00469c;
border: 1px solid #00469c;
}
}
.reject,
.same {
width: 175px;
height: 40px;
border-radius: 4px;
font-family: PingFangSC-Semibold;
font-size: 15px;
img {
width: 13px;
height: 13px;
.add-box {
.before {
border: 1px solid #fdb62f;
border-radius: 4px;
color: #fdb62f;
img{
width: 18px;
}
}
.next {
background: #1d3fff;
border-radius: 4px;
color: #fff;
img{
width: 18px;
}
}
}
}
.reject {
color: #656464;
border: 1px solid #656464;
}
.same {
color: #ffffff;
background: #00469c;
border: 1px solid #00469c;
.modal {
background-color: rgba(0, 0, 0, 0) !important;
}
}
.modal {
background-color: rgba(0, 0, 0, 0) !important;
}
</
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