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
fa181c41
Commit
fa181c41
authored
Dec 26, 2019
by
李晓兵
Browse files
Options
Browse Files
Download
Plain Diff
''
parents
26f6ebec
4e9d1800
Pipeline
#4330
canceled with stages
Changes
20
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1215 additions
and
280 deletions
+1215
-280
uat.env.js
config/uat.env.js
+1
-1
main.js
src/main.js
+2
-2
contract-create-list.vue
src/pages/contractCreate/contract-create-list.vue
+260
-31
creat-rent-info.vue
src/pages/contractCreate/creat-rent-info.vue
+69
-19
create-base-info.vue
src/pages/contractCreate/create-base-info.vue
+19
-5
create-enclosure-info.vue
src/pages/contractCreate/create-enclosure-info.vue
+147
-80
sales-info.vue
src/pages/contractCreate/sales-info.vue
+12
-5
repay-plans.vue
src/pages/contractInquire/repay-plans.vue
+4
-5
body-check.vue
src/pages/contractSigning/body-check.vue
+122
-72
contract-detail.vue
src/pages/contractSigning/contract-detail.vue
+11
-7
contract-repay-plan.vue
src/pages/contractSigning/contract-repay-plan.vue
+20
-10
contract-signing.vue
src/pages/contractSigning/contract-signing.vue
+11
-8
body-check.vue
src/pages/distributorSign/body-check.vue
+474
-0
contract-details.vue
src/pages/distributorSign/contract-details.vue
+11
-6
contract-list.vue
src/pages/distributorSign/contract-list.vue
+8
-5
financ-details.vue
src/pages/distributorSign/financ-details.vue
+20
-10
financing-details.vue
src/pages/financingTrial/financing-details.vue
+1
-1
trial-repay-plan.vue
src/pages/financingTrial/trial-repay-plan.vue
+20
-10
index.js
src/router/index.js
+2
-2
index.html
www/index.html
+1
-1
No files found.
config/uat.env.js
View file @
fa181c41
...
...
@@ -10,6 +10,6 @@ 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"'
,
fileUploadSvcPath
:
'"http://180.104.121.66:8088/r/api/app/fileUploadSvc?sysName=XCMG_DEV&apiName="'
,
appId
:
'"com.xcmg.app"'
,
appId
:
'"com.xcmg.app
.dev
"'
,
currentVersion
:
'"1.2.1"'
}
src/main.js
View file @
fa181c41
...
...
@@ -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/contractCreate/contract-create-list.vue
View file @
fa181c41
<!--
* @Author: your name
* @Date: 2019-09-29 10:02:11
* @LastEditTime : 2019-12-2
3 11:04:04
* @LastEditTime : 2019-12-2
6 13:30:22
* @LastEditors : Please set LastEditors
* @Description: In User Settings Edit
-->
...
...
@@ -14,8 +14,8 @@
</div>
</h-header>
<div
class=
"tab-style has-header"
>
<div
:class=
"
{'done':num === 1,'undone':num !== 1}" @click="num = 1;">
<img
:src=
"num === 1?check1:uncheck1"
><span>
待
签约
</span></div>
<div
:class=
"
{'done':num === 2,'undone':num !== 2}" @click="num = 2;">
<img
:src=
"num === 2?check2:uncheck2"
><span>
已
签约
</span></div>
<div
:class=
"
{'done':num === 1,'undone':num !== 1}" @click="num = 1;">
<img
:src=
"num === 1?check1:uncheck1"
><span>
待
提交
</span></div>
<div
:class=
"
{'done':num === 2,'undone':num !== 2}" @click="num = 2;">
<img
:src=
"num === 2?check2:uncheck2"
><span>
已
提交
</span></div>
</div>
<!-- 搜索 -->
<div
class=
"search"
>
...
...
@@ -29,7 +29,7 @@
>
<div
class=
"wrap"
>
<div
v-for=
"(item,index) in showLists"
:key=
"index"
class=
"contract-lists"
>
<div
class=
"pro-code"
@
click=
"
goDetails(item)
"
>
<div
class=
"pro-code"
@
click=
"
changeBase
"
>
<img
src=
"@/assets/distributorSign/fileIcon.png"
alt=
""
class=
"file-icon"
>
<p>
<span>
合同号
</span>
...
...
@@ -40,7 +40,7 @@
<div
class=
"box"
>
<div><p>
承租人
</p><p>
{{
item
.
bp_name
}}
</p></div>
<div><p>
合同租金
</p><p
class=
"money"
>
{{
item
.
total_price
|
currency
}}
</p></div>
<div><p>
申请时间
</p><p>
{{
item
.
confirm_start_date
}}
</p></div>
<div><p>
申请时间
</p><p>
{{
dateConverse
(
item
.
project_start_date
)
}}
</p></div>
</div>
</div>
</div>
...
...
@@ -63,55 +63,290 @@ export default {
return
{
num
:
1
,
pagenum
:
1
,
submitPagenum
:
1
,
approvedPagenum
:
1
,
check1
:
Check1
,
check2
:
Check2
,
uncheck1
:
unCheck1
,
uncheck2
:
unCheck2
,
user_bp_type
:
''
,
// 客户类型
searchInput
:
''
,
// 搜索内容
showLists
:
[
{
project_number
:
'201903022001'
,
bp_name
:
'张三'
,
total_price
:
'1000000'
,
confirm_start_date
:
'2019-12-18'
},
{
project_number
:
'201903022001'
,
bp_name
:
'张三'
,
total_price
:
'1000000'
,
confirm_start_date
:
'2019-12-18'
},
{
project_number
:
'201903022001'
,
bp_name
:
'张三'
,
total_price
:
'1000000'
,
confirm_start_date
:
'2019-12-18'
},
],
submitLists
:
[],
// 待签约
approvedLists
:
[],
// 已签约
showLists
:
[],
approvedFlag
:
false
,
// showLists: [
// { project_number: '201903022001', bp_name: '张三', total_price: '1000000', confirm_start_date: '2019-12-18' },
// { project_number: '201903022001', bp_name: '张三', total_price: '1000000', confirm_start_date: '2019-12-18' },
// { project_number: '201903022001', bp_name: '张三', total_price: '1000000', confirm_start_date: '2019-12-18' },
// ],
}
},
watch
:
{
'num'
:
{
handler
(
newVal
,
oldVal
)
{
this
.
$refs
.
scroll
.
update
(
false
)
if
(
newVal
===
2
)
{
if
(
!
this
.
approvedFlag
)
{
this
.
contractList
()
}
this
.
$refs
.
scroll
.
scrollToTop
()
this
.
showLists
=
this
.
approvedLists
}
else
if
(
newVal
===
1
)
{
this
.
showLists
=
this
.
submitLists
this
.
$refs
.
scroll
.
scrollToTop
()
}
},
activated
()
{
},
created
()
{
searchInput
()
{
let
vm
=
this
if
(
vm
.
timeout
)
{
clearTimeout
(
vm
.
timeout
)
}
vm
.
timeout
=
setTimeout
(()
=>
{
vm
.
search
()
},
1000
)
},
},
beforeRouteEnter
(
to
,
from
,
next
)
{
next
(
vm
=>
{
if
(
from
.
name
===
'MyInfo'
)
{
vm
.
searchInput
=
''
vm
.
pagenum
=
1
vm
.
num
=
1
vm
.
submitPagenum
=
1
vm
.
approvedPagenum
=
1
vm
.
user_bp_type
=
vm
.
$route
.
params
.
user_bp_type
vm
.
listsQuery
()
// 已创建合同列表查询
vm
.
approvedFlag
=
false
vm
.
submitLists
=
[]
vm
.
approvedLists
=
[]
vm
.
$refs
.
scroll
.
update
(
false
)
vm
.
$refs
.
scroll
.
scrollToTop
()
vm
.
contractList
()
// vm.listsQuery()
}
})
},
methods
:
{
listsQuery
()
{
dateConverse
(
date
)
{
return
date
.
replace
(
/
\/
/g
,
'-'
)
},
// listsQuery () {
// let vm = this
// let url = process.env.basePath + 'prj_submit_list'
// let param = {
// user_phone: window.localStorage.user_phone,
// pagesize: 10,
// searchInput: vm.searchInput,
// pagenum: vm.pagenum,
// project_status: 'APPROVED',
// }
// vm.hlsPopup.showLoading('请稍候')
// vm.hlsHttp.post(url, param).then(function (res) {
// vm.hlsPopup.hideLoading()
// console.log('已创建合同列表查询', res)
// if (res.result === 'S') {
// // vm.showLists = res.lists
// }
// })
// },
// 合同查询
contractList
()
{
let
vm
=
this
let
url
=
process
.
env
.
basePath
+
'prj_submit_list'
if
(
vm
.
num
===
1
)
{
let
url
=
$config
.
basePath
+
'prj_submit_list'
let
param
=
{
user_phone
:
window
.
localStorage
.
user_phone
,
pagesize
:
10
,
pagenum
:
vm
.
submitPagenum
,
project_status
:
'NEW'
,
searchInput
:
vm
.
searchInput
,
pagenum
:
vm
.
pagenum
,
}
vm
.
hlsPopup
.
showLoading
(
'请稍候
'
)
vm
.
hlsPopup
.
showLoading
(
'数据加载中
'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
console
.
log
(
'已创建合同列表查询'
,
res
)
if
(
res
.
result
===
'S'
)
{
// vm.showLists = res.lists
vm
.
submitLists
=
res
.
lists
vm
.
showLists
=
vm
.
submitLists
if
(
res
.
lists
.
length
>
0
&&
res
.
lists
.
length
<
10
)
{
vm
.
$refs
.
scroll
.
update
(
true
)
}
else
if
(
res
.
lists
.
length
===
10
)
{
vm
.
$refs
.
scroll
.
update
(
false
)
}
}
else
{
hlsPopup
.
showLongCenter
(
res
.
message
)
}
})
}
else
if
(
vm
.
num
===
2
)
{
let
url
=
$config
.
basePath
+
'prj_confirm_list_query'
let
param
=
{
pagesize
:
10
,
pagenum
:
vm
.
approvedPagenum
,
searchInput
:
vm
.
searchInput
,
project_status
:
'APPROVED'
,
user_phone
:
window
.
localStorage
.
user_phone
,
}
vm
.
hlsPopup
.
showLoading
(
'数据加载中'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
if
(
res
.
result
===
'S'
)
{
console
.
log
(
res
.
lists
)
vm
.
approvedLists
=
res
.
lists
vm
.
approvedFlag
=
true
vm
.
showLists
=
vm
.
approvedLists
if
(
res
.
lists
.
length
>
0
&&
res
.
lists
.
length
<
10
)
{
vm
.
$refs
.
scroll
.
update
(
true
)
}
else
if
(
res
.
lists
.
length
===
10
)
{
vm
.
$refs
.
scroll
.
update
(
false
)
}
}
else
{
hlsPopup
.
showLongCenter
(
res
.
message
)
}
})
}
},
loadMore
()
{
let
vm
=
this
if
(
vm
.
num
===
1
)
{
vm
.
submitPagenum
++
let
url
=
$config
.
basePath
+
'prj_confirm_list_query'
let
param
=
{
user_phone
:
window
.
localStorage
.
user_phone
,
pagesize
:
10
,
pagenum
:
vm
.
submitPagenum
,
project_status
:
'NEW'
,
searchInput
:
vm
.
searchInput
,
}
vm
.
hlsPopup
.
showLoading
(
'请稍后'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
let
returnData
=
[]
if
(
res
.
result
===
'S'
)
{
returnData
=
res
.
lists
if
(
returnData
.
length
===
0
)
{
vm
.
$refs
.
scroll
.
update
(
true
)
}
else
if
(
returnData
.
length
>
0
&&
returnData
.
length
<
10
)
{
returnData
.
forEach
((
data
,
index
,
array
)
=>
{
vm
.
submitLists
.
push
(
array
[
index
])
})
vm
.
$refs
.
scroll
.
update
(
true
)
}
else
if
(
returnData
.
length
===
10
)
{
returnData
.
forEach
((
data
,
index
,
array
)
=>
{
vm
.
submitLists
.
push
(
array
[
index
])
})
vm
.
$refs
.
scroll
.
update
(
false
)
}
vm
.
showLists
=
vm
.
submitLists
}
else
{
hlsPopup
.
showLongCenter
(
res
.
message
)
}
})
}
else
if
(
vm
.
num
===
2
)
{
vm
.
approvedPagenum
++
let
url
=
$config
.
basePath
+
'prj_confirm_list_query'
let
param
=
{
user_phone
:
window
.
localStorage
.
user_phone
,
pagesize
:
10
,
pagenum
:
vm
.
approvedPagenum
,
project_status
:
'APPROVED'
,
searchInput
:
vm
.
searchInput
,
}
vm
.
hlsPopup
.
showLoading
(
'请稍后'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
let
returnData
=
[]
if
(
res
.
result
===
'S'
)
{
returnData
=
res
.
lists
if
(
returnData
.
length
===
0
)
{
vm
.
$refs
.
scroll
.
update
(
true
)
}
else
if
(
returnData
.
length
>
0
&&
returnData
.
length
<
10
)
{
returnData
.
forEach
((
data
,
index
,
array
)
=>
{
vm
.
approvedLists
.
push
(
array
[
index
])
})
vm
.
$refs
.
scroll
.
update
(
true
)
}
else
if
(
returnData
.
length
===
10
)
{
returnData
.
forEach
((
data
,
index
,
array
)
=>
{
vm
.
approvedLists
.
push
(
array
[
index
])
})
vm
.
$refs
.
scroll
.
update
(
false
)
}
vm
.
showLists
=
vm
.
approvedLists
}
else
{
hlsPopup
.
showLongCenter
(
res
.
message
)
}
})
}
},
async
submitSearch
()
{
let
vm
=
this
vm
.
submitPagenum
=
1
let
url
=
$config
.
basePath
+
'prj_confirm_list_query'
let
param
=
{
user_phone
:
window
.
localStorage
.
user_phone
,
pagesize
:
10
,
pagenum
:
vm
.
submitPagenum
,
project_status
:
'NEW'
,
searchInput
:
vm
.
searchInput
,
}
vm
.
hlsPopup
.
showLoading
(
'请稍后'
)
let
res
=
await
vm
.
$post
(
url
,
param
)
if
(
res
.
result
===
'S'
)
{
vm
.
hlsPopup
.
hideLoading
()
vm
.
submitLists
=
res
.
lists
if
(
vm
.
num
===
1
)
{
vm
.
showLists
=
vm
.
submitLists
}
// vm.showLists = vm.submitLists
if
(
res
.
lists
.
length
>=
0
&&
res
.
lists
.
length
<
10
)
{
vm
.
$refs
.
scroll
.
update
(
true
)
}
else
if
(
res
.
lists
.
length
===
10
)
{
vm
.
$refs
.
scroll
.
update
(
false
)
}
return
true
}
else
{
hlsPopup
.
showLongCenter
(
res
.
message
)
return
false
}
},
approvedearch
()
{
let
vm
=
this
let
url
=
$config
.
basePath
+
'prj_confirm_list_query'
vm
.
approvedPagenum
=
1
let
param
=
{
user_phone
:
window
.
localStorage
.
user_phone
,
pagesize
:
10
,
pagenum
:
vm
.
approvedPagenum
,
project_status
:
'APPROVED'
,
searchInput
:
vm
.
searchInput
,
}
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
approvedLists
=
res
.
lists
if
(
vm
.
num
===
2
)
{
vm
.
showLists
=
vm
.
approvedLists
}
// vm.showLists = vm.approvedLists
if
(
res
.
lists
.
length
>=
0
&&
res
.
lists
.
length
<
10
)
{
vm
.
$refs
.
scroll
.
update
(
true
)
}
else
if
(
res
.
lists
.
length
===
10
)
{
vm
.
$refs
.
scroll
.
update
(
false
)
}
})
},
async
search
()
{
let
res
=
await
this
.
submitSearch
()
if
(
res
)
{
this
.
approvedearch
()
}
},
changeBase
()
{
if
(
this
.
num
===
1
)
{
window
.
localStorage
.
setItem
(
'contractReadonly'
,
false
)
}
else
if
(
this
.
num
===
2
)
{
window
.
localStorage
.
setItem
(
'contractReadonly'
,
true
)
}
this
.
$router
.
push
({
name
:
'CreateBaseInfo'
,
})
},
goDetails
()
{
this
.
$router
.
push
({
...
...
@@ -121,12 +356,6 @@ export default {
},
})
},
changePage
()
{
this
.
$router
.
push
({
name
:
'SalesInfo'
,
})
},
loadMore
()
{},
},
}
</
script
>
...
...
src/pages/contractCreate/creat-rent-info.vue
View file @
fa181c41
...
...
@@ -49,43 +49,43 @@
</item>
<item>
<div
slot=
"name"
>
设备单价
</div>
<CurrencyInput
slot=
"content"
v-model=
"saveInfo.equip_price"
placeholder=
"
暂无信息
"
/>
<CurrencyInput
slot=
"content"
v-model=
"saveInfo.equip_price"
placeholder=
"
0
"
/>
</item>
<item>
<div
slot=
"name"
>
融资金额
</div>
<CurrencyInput
slot=
"content"
v-model=
"
saveInfo.finance_amount"
placeholder=
"暂无信息
"
/>
<CurrencyInput
slot=
"content"
v-model=
"
finance_amount"
placeholder=
"0
"
/>
</item>
<item>
<div
slot=
"name"
>
首付比例
</div>
<input
slot=
"content"
v-model=
"saveInfo.down_payment_ratio_n"
placeholder=
"
暂无信息
"
>
<input
slot=
"content"
v-model=
"saveInfo.down_payment_ratio_n"
placeholder=
"
%
"
>
</item>
<item>
<div
slot=
"name"
>
首付款
</div>
<CurrencyInput
slot=
"content"
v-model=
"saveInfo.down_payment"
placeholder=
"
暂无信息
"
/>
<CurrencyInput
slot=
"content"
v-model=
"saveInfo.down_payment"
placeholder=
"
0"
@
input=
"changeRatio
"
/>
</item>
<item>
<div
slot=
"name"
>
保证金比例
</div>
<input
slot=
"content"
v-model=
"saveInfo.deposit_ratio_n"
placeholder=
"
暂无信息
"
>
<input
slot=
"content"
v-model=
"saveInfo.deposit_ratio_n"
placeholder=
"
%
"
>
</item>
<item>
<div
slot=
"name"
>
保证金
</div>
<CurrencyInput
slot=
"content"
v-model=
"saveInfo.deposit"
placeholder=
"
暂无信息"
/>
<CurrencyInput
slot=
"content"
v-model=
"saveInfo.deposit"
placeholder=
"
0"
@
input=
"changeDeposit"
/>
</item>
<item>
<div
slot=
"name"
>
手续费比例
</div>
<input
slot=
"content"
v-model=
"saveInfo.lease_charge_ratio_n"
placeholder=
"
暂无信息
"
>
<input
slot=
"content"
v-model=
"saveInfo.lease_charge_ratio_n"
placeholder=
"
%
"
>
</item>
<item>
<div
slot=
"name"
>
手续费
</div>
<CurrencyInput
slot=
"content"
v-model=
"saveInfo.lease_charge"
placeholder=
"
暂无信息"
/>
<CurrencyInput
slot=
"content"
v-model=
"saveInfo.lease_charge"
placeholder=
"
0"
@
input=
"changeLeaseCharge"
/>
</item>
<item>
<div
slot=
"name"
>
GPS费用
</div>
<CurrencyInput
slot=
"content"
v-model=
"saveInfo.gps_fee"
placeholder=
"
暂无信息
"
/>
<CurrencyInput
slot=
"content"
v-model=
"saveInfo.gps_fee"
placeholder=
"
0
"
/>
</item>
<item>
<div
slot=
"name"
>
保险押金
</div>
<CurrencyInput
slot=
"content"
v-model=
"saveInfo.insurance_fee"
placeholder=
"
暂无信息
"
/>
<CurrencyInput
slot=
"content"
v-model=
"saveInfo.insurance_fee"
placeholder=
"
0
"
/>
</item>
<item
class=
"date-check"
@
click
.
native=
"showTime('YYYY-MM-DD')"
>
<div
slot=
"name"
>
预计付款日
</div>
...
...
@@ -101,7 +101,7 @@
</item>
<item>
<div
slot=
"name"
>
年利率
</div>
<input
slot=
"content"
v-model=
"saveInfo.int_rate_n"
readonly
placeholder=
"
暂无信息
"
>
<input
slot=
"content"
v-model=
"saveInfo.int_rate_n"
readonly
placeholder=
"
%
"
>
</item>
<item
:showArrow=
"true"
@
click
.
native=
"selectPayWay"
>
<div
slot=
"name"
>
支付方式
</div>
...
...
@@ -109,7 +109,7 @@
</item>
<item>
<div
slot=
"name"
>
逾期日利率
</div>
<input
slot=
"content"
v-model=
"saveInfo.penalty_rate_n"
readonly
placeholder=
"
暂无信息
"
>
<input
slot=
"content"
v-model=
"saveInfo.penalty_rate_n"
readonly
placeholder=
"
%
"
>
</item>
<item>
<div
slot=
"name"
>
留购价
</div>
...
...
@@ -270,6 +270,11 @@ export default {
},
}
},
computed
:
{
'finance_amount'
()
{
// 融资金额
return
parseFloat
(
this
.
saveInfo
.
equip_price
-
this
.
saveInfo
.
equip_price
*
this
.
saveInfo
.
down_payment_ratio_n
.
replace
(
'%'
,
''
)
/
100
).
toFixed
(
2
)
},
},
watch
:
{
policyKeyWord
(
newVal
,
oldVal
)
{
this
.
searchBusinessPolicy
()
...
...
@@ -277,6 +282,20 @@ export default {
keyWordProduct
(
newVal
,
oldVal
)
{
this
.
searchProduct
()
},
'saveInfo.equip_price'
()
{
this
.
saveInfo
.
down_payment
=
(
this
.
saveInfo
.
equip_price
*
this
.
saveInfo
.
down_payment_ratio_n
.
replace
(
'%'
,
''
)
/
100
).
toFixed
(
2
)
this
.
saveInfo
.
deposit
=
(
this
.
saveInfo
.
equip_price
*
this
.
saveInfo
.
deposit_ratio_n
.
replace
(
'%'
,
''
)
/
100
).
toFixed
(
2
)
this
.
saveInfo
.
lease_charge
=
parseFloat
((
this
.
saveInfo
.
equip_price
-
this
.
saveInfo
.
equip_price
*
this
.
saveInfo
.
down_payment_ratio_n
.
replace
(
'%'
,
''
)
/
100
)
*
(
this
.
saveInfo
.
lease_charge_ratio_n
.
replace
(
'%'
,
''
)
/
100
)).
toFixed
(
2
)
},
'saveInfo.deposit_ratio_n'
(
newVal
,
oldVal
)
{
this
.
saveInfo
.
deposit
=
(
this
.
saveInfo
.
equip_price
*
newVal
.
replace
(
'%'
,
''
)
/
100
).
toFixed
(
2
)
},
'saveInfo.down_payment_ratio_n'
(
newVal
,
oldVal
)
{
this
.
saveInfo
.
down_payment
=
(
this
.
saveInfo
.
equip_price
*
newVal
.
replace
(
'%'
,
''
)
/
100
).
toFixed
(
2
)
},
'saveInfo.lease_charge_ratio_n'
(
newVal
,
oldVal
)
{
this
.
saveInfo
.
lease_charge
=
parseFloat
((
this
.
saveInfo
.
equip_price
-
this
.
saveInfo
.
equip_price
*
this
.
saveInfo
.
down_payment_ratio_n
.
replace
(
'%'
,
''
)
/
100
)
*
(
this
.
saveInfo
.
lease_charge_ratio_n
.
replace
(
'%'
,
''
)
/
100
)).
toFixed
(
2
)
},
},
beforeRouteEnter
(
to
,
from
,
next
)
{
next
(
vm
=>
{
...
...
@@ -285,18 +304,41 @@ export default {
vm
.
pagenumSearch
=
1
vm
.
pagenumSearchPolicy
=
1
vm
.
policyKeyWord
=
''
if
(
from
.
name
===
'CreateBaseInfo'
)
{
vm
.
keyWordProduct
=
''
vm
.
businessLists
=
[]
vm
.
divisionLists
=
[]
vm
.
pagenum
=
1
vm
.
pagenumPolicy
=
1
if
(
from
.
name
===
'CreateBaseInfo'
)
{
vm
.
isComputed
=
false
Object
.
keys
(
vm
.
saveInfo
).
forEach
(
i
=>
{
if
(
i
!==
'project_id'
)
{
vm
.
saveInfo
[
i
]
=
''
}
})
Object
.
keys
(
vm
.
productInfo
).
forEach
(
i
=>
{
if
(
i
!==
'project_id'
)
{
vm
.
saveInfo
[
i
]
=
''
}
})
setTimeout
(()
=>
{
vm
.
getProductLine
()
// 产品线查询
vm
.
repayPeriod
()
// 还款周期查询
vm
.
getPayWay
()
// 支付方式查询
},
0
)
}
})
},
methods
:
{
changeRatio
()
{
this
.
saveInfo
.
down_payment_ratio_n
=
`
${(
this
.
saveInfo
.
down_payment
/
this
.
saveInfo
.
equip_price
).
toFixed
(
2
)
*
100
}
%`
},
changeDeposit
()
{
this
.
saveInfo
.
deposit_ratio_n
=
`
${(
this
.
saveInfo
.
deposit
/
this
.
saveInfo
.
equip_price
).
toFixed
(
2
)
*
100
}
%`
},
changeLeaseCharge
()
{
this
.
saveInfo
.
lease_charge_ratio_n
=
`
${(
this
.
saveInfo
.
lease_charge
/
(
this
.
saveInfo
.
equip_price
-
this
.
saveInfo
.
equip_price
*
this
.
saveInfo
.
down_payment_ratio_n
.
replace
(
'%'
,
''
)
/
100
)).
toFixed
(
2
)
*
100
}
%`
},
selectBusinessPolicy
(
e
)
{
let
vm
=
this
vm
.
saveInfo
.
product_plan_id
=
e
.
product_plan_id
...
...
@@ -308,6 +350,7 @@ export default {
vm
.
saveInfo
.
int_rate
=
e
.
int_rate
vm
.
saveInfo
.
int_rate_n
=
e
.
int_rate_n
vm
.
saveInfo
.
penalty_rate_n
=
e
.
penalty_rate_n
vm
.
saveInfo
.
penalty_rate
=
e
.
penalty_rate
vm
.
saveInfo
.
deposit_ratio
=
e
.
deposit_ratio
vm
.
saveInfo
.
deposit_ratio_n
=
e
.
deposit_ratio_n
setTimeout
(()
=>
{
...
...
@@ -316,7 +359,14 @@ export default {
},
save
()
{
let
vm
=
this
vm
.
$router
.
push
({
name
:
'CreateEnclosureInfo'
,
})
let
url
=
process
.
env
.
basePath
+
'prj_lease_info_save'
vm
.
saveInfo
.
down_payment_ratio
=
(
vm
.
saveInfo
.
down_payment_ratio_n
.
replace
(
'%'
,
''
)
/
100
).
toFixed
(
2
)
vm
.
saveInfo
.
lease_charge_ratio
=
(
vm
.
saveInfo
.
lease_charge_ratio_n
.
replace
(
'%'
,
''
)
/
100
).
toFixed
(
2
)
vm
.
saveInfo
.
deposit_ratio
=
(
vm
.
saveInfo
.
deposit_ratio_n
.
replace
(
'%'
,
''
)
/
100
).
toFixed
(
2
)
vm
.
saveInfo
.
finance_amount
=
vm
.
finance_amount
let
param
=
{
master
:
vm
.
saveInfo
,
}
...
...
@@ -646,7 +696,7 @@ export default {
name
:
'ContractRepayPlan'
,
params
:
{
product_num
:
this
.
productInfo
.
product_num
,
project_id
:
this
.
project_id
,
project_id
:
window
.
localStorage
.
project_id
,
},
})
},
...
...
src/pages/contractCreate/create-base-info.vue
View file @
fa181c41
...
...
@@ -281,6 +281,7 @@ export default {
bp_agent_id
:
''
,
pageNum
:
1
,
pageNumSearch
:
1
,
status
:
window
.
localStorage
.
contractReadonly
,
BussinessSituationList
:
[],
// 行业情况
jobSituationList
:
[],
// 职业情况
houseInfonList
:
[],
// 房产信息
...
...
@@ -293,7 +294,7 @@ export default {
ORGBaseInfo
:
{},
// 企业基本信息
saveInfo
:
{
// 需要保存的信息
project_id
:
window
.
localStorage
.
project_id
,
bp_id
:
window
.
localStorage
.
bp_id
,
bp_id
:
window
.
localStorage
.
bp_id
_tenant
,
bp_class
:
window
.
localStorage
.
bp_class
,
equip_num
:
''
,
equip_num_n
:
''
,
...
...
@@ -344,8 +345,21 @@ export default {
vm
.
showModalValue
=
false
vm
.
pageNum
=
1
vm
.
pageNumSearch
=
1
vm
.
undertakeList
=
[]
vm
.
bp_class
=
window
.
localStorage
.
bp_class
if
(
from
.
name
===
'SalesInfo'
)
{
Object
.
keys
(
vm
.
saveInfo
).
forEach
(
i
=>
{
if
(
i
!==
'project_id'
&&
i
!==
'bp_id'
&&
i
!==
'bp_class'
&&
i
!==
'abc_deduction_flag'
&&
i
!==
'special_flag'
)
{
vm
.
saveInfo
[
i
]
=
''
}
else
if
(
i
===
'abc_deduction_flag'
&&
i
===
'special_flag'
)
{
vm
.
saveInfo
[
i
]
=
'N'
}
})
vm
.
selectUdertake
=
[]
setTimeout
(()
=>
{
vm
.
getBaseInfo
()
},
0
)
}
else
if
(
from
.
name
===
'SalesInfo'
&&
!
this
.
status
)
{
vm
.
getBaseInfo
()
}
})
...
...
@@ -447,7 +461,7 @@ export default {
let
randomString
=
Math
.
floor
(
Math
.
random
()
*
21
)
let
url
=
process
.
env
.
basePath
+
'
car_confirm_list
_query'
+
'
prj_bp_guta
_query'
+
'&index'
+
`'
${
randomString
}
'`
let
param
=
{
...
...
@@ -487,7 +501,7 @@ export default {
let
randomString
=
Math
.
floor
(
Math
.
random
()
*
21
)
let
url
=
process
.
env
.
basePath
+
'
car_confirm_list
_query'
+
'
prj_bp_guta
_query'
+
'&index'
+
`'
${
randomString
}
'`
let
param
=
{
...
...
@@ -526,7 +540,7 @@ export default {
let
vm
=
this
let
url
=
process
.
env
.
basePath
+
'bp_np_info_query'
let
param
=
{
bp_id
:
window
.
localStorage
.
getItem
(
'bp_id'
),
bp_id
:
window
.
localStorage
.
getItem
(
'bp_id
_tenant
'
),
}
hlsPopup
.
showLoading
(
'请稍候'
)
vm
.
$post
(
url
,
param
).
then
(
function
(
res
)
{
...
...
@@ -542,7 +556,7 @@ export default {
let
vm
=
this
let
url
=
process
.
env
.
basePath
+
'bp_org_info_query'
let
param
=
{
bp_id
:
window
.
localStorage
.
bp_id
,
bp_id
:
window
.
localStorage
.
bp_id
_tenant
,
}
hlsPopup
.
showLoading
(
'请稍候'
)
vm
.
$post
(
url
,
param
).
then
(
function
(
res
)
{
...
...
src/pages/contractCreate/create-enclosure-info.vue
View file @
fa181c41
...
...
@@ -3,7 +3,7 @@
<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>
<span>
附件
信息
</span>
</div>
</h-header>
<h-content>
...
...
@@ -26,13 +26,7 @@
<div
class=
"userInfo"
>
基本资料
</div>
<div
v-if=
"bpClass === 'ORG'"
class=
"house"
>
<p
class=
"titles"
>
营业执照
</p>
<div
v-if=
"!licenseImg"
class=
"card-upload"
@
click=
"ocrShow('CAR_CARD', '')"
>
<img
src=
"@/assets/userBind/camera.png"
class=
"upload-btn"
>
</div>
<div
v-if=
"licenseImg && status !== 'APPROVED'"
class=
"card-upload"
>
<img
:src=
"licenseImg"
@
click=
"ocrShow('CAR_CARD', '')"
>
</div>
<div
v-if=
"licenseImg && status === 'APPROVED'"
class=
"card-upload"
>
<div
v-if=
"licenseImg"
class=
"card-upload"
>
<img
:src=
"licenseImg"
@
click=
"showBigPicture(licenseImg)"
>
</div>
</div>
...
...
@@ -40,11 +34,7 @@
<p
v-if=
"bpClass === 'NP'"
class=
"titles"
>
身份证
</p>
<p
v-if=
"bpClass === 'ORG'"
class=
"titles"
>
法人代表身份证
</p>
<div
class=
"upload-box"
>
<div
v-if=
"!idCardFront"
@
click=
"ocrShow('idCard', 'front')"
>
<img
src=
"@/assets/userBind/front.png"
>
<p>
正面
</p>
</div>
<div
v-if=
"idCardFront && status === 'APPROVED'"
>
<div
v-if=
"idCardFront"
>
<img
v-if=
"idCardFront"
:src=
"idCardFront"
...
...
@@ -52,19 +42,7 @@
@
click=
"showBigPicture(idCardFront)"
>
</div>
<div
v-if=
"idCardFront && status !== 'APPROVED'"
>
<img
v-if=
"idCardFront"
:src=
"idCardFront"
style=
"width: 100%;height: 100%;margin: 0"
@
click=
"ocrShow('idCard', 'front')"
>
</div>
<div
v-if=
"!idCardBack"
@
click=
"ocrShow('idCard', 'back')"
>
<img
src=
"@/assets/userBind/back.png"
>
<p>
反面
</p>
</div>
<div
v-if=
"idCardBack && status === 'APPROVED'"
>
<div
v-if=
"idCardBack"
>
<img
v-if=
"idCardBack"
:src=
"idCardBack"
...
...
@@ -72,60 +50,34 @@
@
click=
"showBigPicture(idCardBack)"
>
</div>
<div
v-if=
"idCardBack && status !== 'APPROVED'"
>
<img
v-if=
"idCardBack"
:src=
"idCardBack"
style=
"width: 100%;height: 100%;margin: 0"
@
click=
"ocrShow('idCard', 'back')"
>
</div>
</div>
</div>
<div
class=
"house"
>
<p
class=
"titles"
>
房产证件
</p>
<div
v-if=
"!houseImg"
class=
"card-upload"
@
click=
"ocrShow('HOUSE_CARD', '')"
>
<img
src=
"@/assets/userBind/camera.png"
class=
"upload-btn"
>
</div>
<div
v-if=
"houseImg && status !== 'APPROVED'"
class=
"card-upload"
>
<img
:src=
"houseImg"
@
click=
"ocrShow('HOUSE_CARD', '')"
>
</div>
<div
v-if=
"houseImg && status === 'APPROVED'"
class=
"card-upload"
>
<div
v-if=
"houseImg"
class=
"card-upload"
>
<img
:src=
"houseImg"
@
click=
"showBigPicture(houseImg)"
>
</div>
</div>
<div
class=
"house"
>
<p
class=
"titles"
>
车辆行驶证
</p>
<div
v-if=
"!carImg"
class=
"card-upload"
@
click=
"ocrShow('CAR_CARD', '')"
>
<img
src=
"@/assets/userBind/camera.png"
class=
"upload-btn"
>
</div>
<div
v-if=
"carImg && status !== 'APPROVED'"
class=
"card-upload"
>
<img
:src=
"carImg"
@
click=
"ocrShow('CAR_CARD', '')"
>
</div>
<div
v-if=
"carImg && status === 'APPROVED'"
class=
"card-upload"
>
<div
v-if=
"carImg"
class=
"card-upload"
>
<img
:src=
"carImg"
@
click=
"showBigPicture(carImg)"
>
</div>
</div>
<div
v-if=
"bpClass === 'NP'"
class=
"house"
>
<p
class=
"titles"
>
婚姻状况证明
</p>
<div
v-if=
"!marryImg"
class=
"card-upload"
@
click=
"ocrShow('CAR_CARD', '')"
>
<img
src=
"@/assets/userBind/camera.png"
class=
"upload-btn"
>
</div>
<div
v-if=
"marryImg && status !== 'APPROVED'"
class=
"card-upload"
>
<img
:src=
"marryImg"
@
click=
"ocrShow('', '')"
>
</div>
<div
v-if=
"marryImg && status === 'APPROVED'"
class=
"card-upload"
>
<div
v-if=
"marryImg"
class=
"card-upload"
>
<img
:src=
"marryImg"
@
click=
"showBigPicture(marryImg)"
>
</div>
</div>
<div
class=
"userInfo"
>
补充资料
</div>
<div
class=
"house"
>
<p
class=
"titles"
>
特批申请书
</p>
<div
v-if=
"!applicationImg"
class=
"card-upload"
@
click=
"ocrShow('
CAR_CARD', ''
)"
>
<div
v-if=
"!applicationImg"
class=
"card-upload"
@
click=
"ocrShow('
特批申请书', checkId
)"
>
<img
src=
"@/assets/userBind/camera.png"
class=
"upload-btn"
>
</div>
<div
v-if=
"applicationImg && status !== 'APPROVED'"
class=
"card-upload"
>
<img
:src=
"applicationImg"
@
click=
"ocrShow('
', ''
)"
>
<img
:src=
"applicationImg"
@
click=
"ocrShow('
特批申请书', checkId
)"
>
</div>
<div
v-if=
"applicationImg && status === 'APPROVED'"
class=
"card-upload"
>
<img
:src=
"applicationImg"
@
click=
"showBigPicture(applicationImg)"
>
...
...
@@ -133,8 +85,8 @@
</div>
</h-content>
<bottom-tab
class=
"add-box"
>
<tab-button
class=
"before"
@
click
.
native=
"
$routeGo()
"
>
保存
</tab-button>
<tab-button
class=
"next"
@
click
.
native=
"
goRen
t"
>
提交
</tab-button>
<tab-button
class=
"before"
@
click
.
native=
"
handSave
"
>
保存
</tab-button>
<tab-button
class=
"next"
@
click
.
native=
"
handleSubmi
t"
>
提交
</tab-button>
</bottom-tab>
</h-view>
</
template
>
...
...
@@ -173,6 +125,7 @@ export default {
vm
.
bpClass
=
window
.
localStorage
.
bp_class
vm
.
status
=
window
.
localStorage
.
user_bp_status
vm
.
loadItemList
()
// vm.getPrjId()
}
})
},
...
...
@@ -186,20 +139,114 @@ export default {
})
},
// ocr识别入口
ocrShow
(
ocrType
,
type
)
{
ocrShow
(
desc
,
checkId
)
{
let
vm
=
this
hlsPopup
.
showActionSheet
({
titleText
:
'请选择照片'
,
buttonArray
:
[
'拍照'
,
'从相册取'
],
callback
:
index
=>
{
if
(
index
===
0
)
{
vm
.
openCamera
(
ocrType
,
type
)
vm
.
openCamera
(
desc
,
checkId
)
}
else
{
vm
.
takePicture
(
ocrType
,
type
)
vm
.
takePicture
(
desc
,
checkId
)
}
},
})
},
openCamera
(
desc
,
checkId
)
{
let
vm
=
this
let
obj
=
{
'pkvalue'
:
checkId
,
'source_type'
:
'PRJ_CDD_ITEM_CHECK'
,
'picture'
:
''
,
'check_id'
:
checkId
,
'filePath'
:
''
,
'attachment_id'
:
''
,
'user_id'
:
1
,
'fileName'
:
desc
+
'_'
+
new
Date
().
getTime
(),
}
let
cameraoptions
=
{
quality
:
100
,
}
let
success
=
function
(
imgdata
)
{
obj
.
picture
=
imgdata
obj
.
filePath
=
imgdata
let
list
=
[]
list
.
push
(
obj
)
// 拍完一张立马执行保存图片逻辑
vm
.
save_picture
(
list
)
}
let
error
=
function
()
{
hlsPopup
.
showLongCenter
(
'请拍照'
)
}
hlsUtil
.
openCamera
(
cameraoptions
,
success
,
error
)
},
takePicture
(
desc
,
checkId
)
{
let
vm
=
this
let
cameraoptions
=
{
quality
:
100
,
}
let
success
=
function
(
imgUrl
)
{
var
list
=
[]
for
(
let
i
=
0
;
i
<
imgUrl
.
length
;
i
++
)
{
let
obj
=
{
'pkvalue'
:
checkId
,
'source_type'
:
'PRJ_CDD_ITEM_CHECK'
,
'picture'
:
''
,
'check_id'
:
checkId
,
'filePath'
:
''
,
'attachment_id'
:
''
,
'user_id'
:
1
,
'fileName'
:
desc
+
'_'
+
new
Date
().
getTime
(),
}
obj
.
picture
=
imgUrl
[
i
]
obj
.
filePath
=
imgUrl
[
i
]
list
.
push
(
obj
)
}
vm
.
save_picture
(
list
)
}
let
error
=
function
()
{
}
vm
.
hlsUtil
.
takePicture
(
cameraoptions
,
success
,
error
)
},
// 图片保存
save_picture
(
list
)
{
let
vm
=
this
if
(
list
.
length
)
{
// hlsPopup.showLoading('图片上传请稍候')
var
alreadyUploadNum
=
0
var
attLength
=
0
var
recordUploadInterval
=
setInterval
(
function
()
{
if
(
alreadyUploadNum
===
attLength
)
{
clearInterval
(
recordUploadInterval
)
/* hlsPopup.hideLoading()
hlsPopup.showLongCenter('图片上传成功') */
}
},
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
vm
.
upload_list
.
push
(
list
[
j
])
break
}
}
}
else
{
hlsPopup
.
hideLoading
()
}
}
if
(
!
list
[
i
].
attachment_id
)
{
attLength
++
hlsUtil
.
fileUploadSvc
(
list
[
i
],
uploadSuccess
)
}
}
}
else
{
hlsPopup
.
hideLoading
()
}
},
loadItemList
()
{
let
vm
=
this
vm
.
dowload_list
=
[]
...
...
@@ -227,24 +274,24 @@ export default {
let
listTemp
=
[...
res
.
lists
]
listTemp
.
forEach
(
item
=>
{
switch
(
item
.
cdd_item
)
{
case
'NP_ID_CARD_F'
:
// 自然人身份证正面
vm
.
idCardFrontCheck_id
=
item
.
check_id
break
case
'LEGAL_ID_CARD_F'
:
// 法人代表身份证正面
vm
.
idCardFrontCheck_id
=
item
.
check_id
break
case
'NP_ID_CARD_B'
:
// 身份证背面
vm
.
idCardBackCheck_id
=
item
.
check_id
break
case
'LEGAL_ID_CARD_B'
:
// 身份证背面
vm
.
idCardBackCheck_id
=
item
.
check_id
break
case
'HOUSE_CARD'
:
// 房产证
vm
.
house_id
=
item
.
check_id
break
case
'CAR_CARD'
:
// 行驶证
vm
.
car_id
=
item
.
check_id
break
//
case 'NP_ID_CARD_F': // 自然人身份证正面
//
vm.idCardFrontCheck_id = item.check_id
//
break
//
case 'LEGAL_ID_CARD_F': // 法人代表身份证正面
//
vm.idCardFrontCheck_id = item.check_id
//
break
//
case 'NP_ID_CARD_B': // 身份证背面
//
vm.idCardBackCheck_id = item.check_id
//
break
//
case 'LEGAL_ID_CARD_B': // 身份证背面
//
vm.idCardBackCheck_id = item.check_id
//
break
//
case 'HOUSE_CARD': // 房产证
//
vm.house_id = item.check_id
//
break
//
case 'CAR_CARD': // 行驶证
//
vm.car_id = item.check_id
//
break
case
'ORG_CODE'
:
// 营业执照
vm
.
license_id
=
item
.
check_id
break
...
...
@@ -329,6 +376,26 @@ export default {
}
})
},
// 保存
handSave
()
{
hlsPopup
.
showLongCenter
(
'保存成功!'
)
},
// 项目提交审批
handleSubmit
()
{
let
vm
=
this
let
url
=
process
.
env
.
basePath
+
'prj_project_submit'
let
param
=
{
project_id
:
window
.
localStorage
.
project_id
,
}
vm
.
hlsPopup
.
showLoading
(
'请稍候'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
console
.
log
(
'项目提交审批'
,
res
)
if
(
res
.
result
===
'S'
)
{
// vm.showLists = res.lists
}
})
},
},
}
</
script
>
...
...
src/pages/contractCreate/sales-info.vue
View file @
fa181c41
<!--
* @Author: your name
* @Date: 2019-09-29 10:02:11
* @LastEditTime : 2019-12-2
3 16:14:57
* @LastEditTime : 2019-12-2
6 12:05:03
* @LastEditors : Please set LastEditors
* @Description: In User Settings Edit
-->
...
...
@@ -74,15 +74,15 @@
</item>
<item
v-if=
"user_bp_type === 'AGENT'"
>
<div
slot=
"name"
class=
"font-color"
>
授信额度
</div>
<input
slot=
"content"
placeholder=
"授信额度"
>
<input
slot=
"content"
v-model=
"inflow_line"
readonly
placeholder=
"授信额度"
>
</item>
<item
v-if=
"user_bp_type === 'AGENT'"
>
<div
slot=
"name"
class=
"font-color"
>
已使用授信额度
</div>
<input
slot=
"content"
placeholder=
"已使用授信额度"
>
<input
slot=
"content"
v-model=
"inflow_used"
readonly
placeholder=
"已使用授信额度"
>
</item>
<item
v-if=
"user_bp_type === 'AGENT'"
>
<div
slot=
"name"
class=
"font-color"
>
剩余授信额度
</div>
<input
slot=
"content"
placeholder=
"剩余授信额度"
>
<input
slot=
"content"
v-model=
"inflow_reset"
readonly
placeholder=
"剩余授信额度"
>
</item>
<item
@
click
.
native=
"showTime('YYYY-MM-DD')"
>
<div
slot=
"name"
class=
"font-color"
>
签约日期
</div>
...
...
@@ -280,7 +280,13 @@ export default {
if
(
res
.
result
===
'S'
)
{
vm
.
bp_agent_name
=
res
.
info
.
bp_agent_name
vm
.
bp_agent_id
=
res
.
info
.
bp_agent_id
if
(
window
.
localStorage
.
bp_type
===
'OFFICE'
)
{
vm
.
office_name
=
res
.
info
.
bp_agent_name
vm
.
salesInfo
.
office_id
=
res
.
info
.
bp_agent_id
vm
.
salesInfo
.
bp_id_agent
=
''
}
else
{
vm
.
salesInfo
.
bp_id_agent
=
res
.
info
.
bp_agent_id
}
vm
.
salesInfo
.
bp_user_id
=
res
.
info
.
bp_user_id
vm
.
lesseeQuery
()
vm
.
salesQuery
()
...
...
@@ -420,6 +426,7 @@ export default {
this
.
lessee
=
item
.
bp_name
this
.
salesInfo
.
bp_id_tenant
=
item
.
bp_id
this
.
showModal
=
false
window
.
localStorage
.
setItem
(
'bp_id_tenant'
,
this
.
salesInfo
.
bp_id_tenant
)
},
hideModal
()
{
this
.
showModal
=
false
...
...
src/pages/contractInquire/repay-plans.vue
View file @
fa181c41
<!--
* @Author: your name
* @Date: 2019-10-31 09:49:57
* @LastEditTime : 2019-12-24 18:
28:09
* @LastEditTime : 2019-12-24 18:
34:37
* @LastEditors : Please set LastEditors
* @Description: 还款
* @FilePath:
...
...
@@ -58,10 +58,8 @@
</div>
</div>
<div
class=
"name"
>
<!--
<span>
款项
</span>
<span>
租金
</span>
-->
<p>
利息
</p>
<p>
{{
item
.
interest
}}
</p>
<span>
利息
</span>
<span>
{{
item
.
interest
|
currency
}}
</span>
</div>
<img
v-if=
"statu === 'black'"
src=
"@/assets/contractInquire/done.png"
alt=
""
class=
"status"
>
<img
v-if=
"statu === 'orange'"
src=
"@/assets/contractInquire/prompt.png"
alt=
""
class=
"status"
>
...
...
@@ -376,6 +374,7 @@ export default {
color: #4B4A4B;
//padding-top: 20px;
margin-left: 40px;
margin-top: -16px;
span:nth-of-type(2) {
margin-left: 8px;
}
...
...
src/pages/contractSigning/body-check.vue
View file @
fa181c41
<
template
>
<h-view
id=
"body-check"
>
<transition
name=
"body"
>
<div
v-if=
"showFlag"
class=
"body-check"
>
<transition
name=
"trans"
>
<div
v-if=
"downNum"
class=
"modal-show"
>
<div
class=
"modal-box"
>
...
...
@@ -9,7 +10,7 @@
<p
class=
"compute"
>
此验证码将于
<span>
{{
time
}}
</span>
秒后过期
<br
>
用普通话朗读数字,视频时长
<br
>
用普通话朗读数字,视频时长
<span>
3~8
</span>
秒最佳
</p>
...
...
@@ -17,22 +18,23 @@
<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>
<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=
"downNum=false
"
>
X
</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=
"$routeGo()
"
>
<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"
>
<img
src=
"@/assets/constractSigning/sketch.png"
>
<span>
正面平视手机,保证光线充足
</span>
<span>
请勿遮挡面部
</span>
</div>
...
...
@@ -42,12 +44,12 @@
<li>
<span>
1
</span>
<span>
牢记验证码,点击开始录制
</span>
<p
/>
<p
/>
</li>
<li>
<span>
2
</span>
<span>
开启前置摄像头,用普通话朗读数字
</span>
<p
/>
<p
/>
</li>
<li>
<span>
3
</span>
...
...
@@ -59,10 +61,12 @@
<bottom-tab
class=
"footer-button"
>
<tab-button
class=
"approve"
@
click
.
native=
"getCode"
>
下一步
</tab-button>
</bottom-tab>
</h-view>
</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
,
...
...
@@ -169,7 +182,7 @@ export default {
onConfirm
:
data
=>
{
if
(
data
)
{
// 重新尝试
vm
.
getCode
()
vm
.
showFlag
=
true
}
else
{
}
},
...
...
@@ -223,7 +236,7 @@ export default {
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
(
'请稍后'
)
...
...
@@ -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 @
fa181c41
<!--
* @Author: your name
* @Date: 2019-09-29 10:02:11
* @LastEditTime
: 2019-12-19 10:38:3
5
* @LastEditors: Please set LastEditors
* @LastEditTime
: 2019-12-26 12:08:2
5
* @LastEditors
: Please set LastEditors
* @Description: In User Settings Edit
-->
<
template
>
...
...
@@ -241,7 +241,7 @@
</div>
<list-item
:item-height=
"44"
class=
"second-part"
>
<item>
<div
slot=
"name"
class=
"font-color"
>
参数项
</div>
<div
slot=
"name"
class=
"font-color"
>
设备识别号
</div>
<input
slot=
"content"
v-model=
"info.product_code"
readonly
>
</item>
<item>
...
...
@@ -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-repay-plan.vue
View file @
fa181c41
<!--
* @Author: your name
* @Date: 2019-10-30 19:29:24
* @LastEditTime
: 2019-11-15 09:14:47
* @LastEditors: Please set LastEditors
* @LastEditTime
: 2019-12-24 18:38:21
* @LastEditors
: Please set LastEditors
* @Description: In User Settings Edit
-->
<
template
>
...
...
@@ -47,13 +47,19 @@
<p>
{{
item
.
due_date
.
substr
(
0
,
4
)
}}
</p>
<span>
{{
dateConverse
(
item
.
due_date
).
substr
(
5
,
10
)
}}
</span>
</div>
<div
class=
"name"
>
<span>
款项
</span>
<div
class=
"number"
>
<div>
<span>
本金
</span>
<span>
{{
item
.
principal
|
currency
}}
</span>
</div>
<div>
<span>
租金
</span>
<span
:class=
"
{'orang':statu==='orange','blu':statu==='blue','gree':statu==='green'}">
{{
item
.
rental
|
currency
}}
</span>
</div>
<div
class=
"number"
>
<span>
应还金额
</span>
<span
:class=
"
{'orang':statu==='orange','blu':statu==='blue','gree':statu==='green'}">
{{
item
.
rental
*
product_num
|
currency
}}
</span>
</div>
<div
class=
"name"
>
<span>
利息
</span>
<span>
{{
item
.
interest
|
currency
}}
</span>
</div>
<img
v-if=
"statu === 'black'"
src=
"@/assets/contractInquire/done.png"
alt=
""
class=
"status"
>
<img
v-if=
"statu === 'orange'"
src=
"@/assets/contractInquire/prompt.png"
alt=
""
class=
"status"
>
...
...
@@ -384,7 +390,7 @@ export default {
font-family: PingFangSC-Regular;
font-size: 13px;
color: #4B4A4B;
padding-top: 20px;
//
padding-top: 20px;
margin-left: 22px;
span:nth-of-type(2) {
margin-left: 8px;
...
...
@@ -396,11 +402,15 @@ export default {
.number {
// flex: 9;
display: flex;
flex-direction: column;
justify-content: space-evenly;
font-family: PingFangSC-Regular;
font-size: 13px;
color: #4B4A4B;
padding-top: 20px;
//
padding-top: 20px;
margin-left: 40px;
margin-top: -16px;
span:nth-of-type(2) {
margin-left: 8px;
}
...
...
src/pages/contractSigning/contract-signing.vue
View file @
fa181c41
<!--
* @Author: your name
* @Date: 2019-09-29 10:02:11
* @LastEditTime
: 2019-12-19 11:11:37
* @LastEditors: Please set LastEditors
* @LastEditTime
: 2019-12-26 13:39:32
* @LastEditors
: Please set LastEditors
* @Description: In User Settings Edit
-->
<
template
>
...
...
@@ -80,7 +80,7 @@ export default {
watch
:
{
'num'
:
{
handler
(
newVal
,
oldVal
)
{
this
.
$refs
.
scroll
.
update
(
false
)
//
this.$refs.scroll.update(false)
if
(
newVal
===
2
)
{
if
(
!
this
.
approvedFlag
)
{
this
.
contractList
()
...
...
@@ -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 @
fa181c41
<
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 @
fa181c41
...
...
@@ -2,8 +2,8 @@
* @Description: 合同详情
* @Author: your name
* @Date: 2019-09-25 15:38:21
* @LastEditTime
: 2019-12-20 15:36:19
* @LastEditors: Please set LastEditors
* @LastEditTime
: 2019-12-26 12:08:42
* @LastEditors
: Please set LastEditors
-->
<
template
>
<h-view
id=
"details"
class=
"public-style"
title=
"经销商签约"
>
...
...
@@ -127,7 +127,7 @@
<p>
设备清单
</p></div>
<list-item
:item-height=
"44"
class=
"second-part"
>
<item>
<div
slot=
"name"
class=
"font-color"
>
参数项
</div>
<div
slot=
"name"
class=
"font-color"
>
设备识别号
</div>
<input
slot=
"content"
v-model=
"info.product_code"
readonly
>
</item>
<item>
...
...
@@ -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 @
fa181c41
...
...
@@ -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/pages/distributorSign/financ-details.vue
View file @
fa181c41
<!--
* @Author: your name
* @Date: 2019-10-30 19:29:24
* @LastEditTime
: 2019-11-13 16:36:01
* @LastEditors: Please set LastEditors
* @LastEditTime
: 2019-12-24 18:39:52
* @LastEditors
: Please set LastEditors
* @Description: In User Settings Edit
-->
<
template
>
...
...
@@ -45,13 +45,19 @@
<p>
{{
item
.
due_date
.
substr
(
0
,
4
)
}}
</p>
<span>
{{
dateConverse
(
item
.
due_date
).
substr
(
5
,
10
)
}}
</span>
</div>
<div
class=
"name"
>
<span>
款项
</span>
<div
class=
"number"
>
<div>
<span>
本金
</span>
<span>
{{
item
.
principal
|
currency
}}
</span>
</div>
<div>
<span>
租金
</span>
<span
:class=
"
{'orang':statu==='orange','blu':statu==='blue','gree':statu==='green'}">
{{
item
.
rental
|
currency
}}
</span>
</div>
<div
class=
"number"
>
<span>
应还金额
</span>
<span
:class=
"
{'orang':statu==='orange','blu':statu==='blue','gree':statu==='green'}">
{{
item
.
rental
*
product_num
|
currency
}}
</span>
</div>
<div
class=
"name"
>
<span>
利息
</span>
<span>
{{
item
.
interest
|
currency
}}
</span>
</div>
<img
v-if=
"statu === 'black'"
src=
"@/assets/contractInquire/done.png"
alt=
""
class=
"status"
>
<img
v-if=
"statu === 'orange'"
src=
"@/assets/contractInquire/prompt.png"
alt=
""
class=
"status"
>
...
...
@@ -348,7 +354,7 @@ export default {
font-family: PingFangSC-Regular;
font-size: 13px;
color: #4B4A4B;
padding-top: 20px;
//
padding-top: 20px;
margin-left: 22px;
span:nth-of-type(2) {
margin-left: 8px;
...
...
@@ -360,11 +366,15 @@ export default {
.number {
// flex: 9;
display: flex;
flex-direction: column;
justify-content: space-evenly;
font-family: PingFangSC-Regular;
font-size: 13px;
color: #4B4A4B;
padding-top: 20px;
//
padding-top: 20px;
margin-left: 40px;
margin-top: -16px;
span:nth-of-type(2) {
margin-left: 8px;
}
...
...
src/pages/financingTrial/financing-details.vue
View file @
fa181c41
...
...
@@ -72,7 +72,7 @@
<span
v-if=
"equip_price"
slot=
"content"
>
{{
parseFloat
(
equip_price
*
info
.
down_payment_ratio_n
.
replace
(
"%"
,
""
)
/
100
+
equip_price
*
info
.
deposit_ratio_n
.
replace
(
"%"
,
""
)
/
100
+
(
equip_price
-
equip_price
*
info
.
down_payment_ratio_n
.
replace
(
"%"
,
""
)
/
100
)
*
(
info
.
lease_charge_ratio_n
.
replace
(
"%"
,
""
)
/
100
)
+
Number
(
gps_fee
)
+
Number
(
insurance_fee
)).
toFixed
(
2
)
|
currency
}}
</span>
</item>
<item
@
click
.
native=
"showTime('YYYY-MM-DD')"
>
<div
slot=
"name"
class=
"font-color"
>
预计付款日
</div>
<div
slot=
"name"
class=
"fo
nt-color"
>
预计付款日
</div>
<div
slot=
"content"
class=
"autoColor"
>
{{
price_date_to
}}
</div>
<img
src=
"@/assets/trial/date.png"
alt=
""
class=
"date-pic"
>
</item>
...
...
src/pages/financingTrial/trial-repay-plan.vue
View file @
fa181c41
<!--
* @Author: your name
* @Date: 2019-10-30 19:29:24
* @LastEditTime
: 2019-11-13 10:34:23
* @LastEditors: Please set LastEditors
* @LastEditTime
: 2019-12-24 18:41:37
* @LastEditors
: Please set LastEditors
* @Description: In User Settings Edit
-->
<
template
>
...
...
@@ -45,14 +45,20 @@
<p>
{{
item
.
due_date
.
substr
(
0
,
4
)
}}
</p>
<span>
{{
dateConverse
(
item
.
due_date
).
substr
(
5
,
10
)
}}
</span>
</div>
<div
class=
"name"
>
<span>
款项
</span>
<span>
租金
</span>
</div>
<div
class=
"number"
>
<span>
应还金额
</span>
<div>
<span>
本金
</span>
<span>
{{
item
.
principal
|
currency
}}
</span>
</div>
<div>
<span>
租金
</span>
<span
:class=
"
{'orang':statu==='orange','blu':statu==='blue','gree':statu==='green'}">
{{
item
.
rental
|
currency
}}
</span>
</div>
</div>
<div
class=
"name"
>
<span>
利息
</span>
<span>
{{
item
.
interest
|
currency
}}
</span>
</div>
<img
v-if=
"statu === 'black'"
src=
"@/assets/contractInquire/done.png"
alt=
""
class=
"status"
>
<img
v-if=
"statu === 'orange'"
src=
"@/assets/contractInquire/prompt.png"
alt=
""
class=
"status"
>
</div>
...
...
@@ -366,7 +372,7 @@ export default {
font-family: PingFangSC-Regular;
font-size: 13px;
color: #4B4A4B;
padding-top: 20px;
//
padding-top: 20px;
margin-left: 22px;
span:nth-of-type(2) {
margin-left: 8px;
...
...
@@ -378,11 +384,15 @@ export default {
.number {
// flex: 9;
display: flex;
flex-direction: column;
justify-content: space-evenly;
font-family: PingFangSC-Regular;
font-size: 13px;
color: #4B4A4B;
padding-top: 20px;
//
padding-top: 20px;
margin-left: 40px;
margin-top: -16px;
span:nth-of-type(2) {
margin-left: 8px;
}
...
...
src/router/index.js
View file @
fa181c41
...
...
@@ -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 @
fa181c41
<!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