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
acf90b99
Commit
acf90b99
authored
Dec 18, 2023
by
王建文
Browse files
Options
Browse Files
Download
Plain Diff
融资方案
parents
a2bb55d3
1b2c7b7a
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
2845 additions
and
942 deletions
+2845
-942
currencyInput.vue
src/components/currencyInput.vue
+17
-11
contract-detail.vue
src/pages/contractSigning/contract-detail.vue
+951
-861
contract-new.vue
src/pages/contractSigning/contract-new.vue
+1795
-0
contract-signing.vue
src/pages/contractSigning/contract-signing.vue
+80
-70
index.js
src/router/index.js
+2
-0
No files found.
src/components/currencyInput.vue
View file @
acf90b99
...
...
@@ -25,6 +25,10 @@ export default {
// type: Boolean,
// default: true,
// },
readonly
:
{
type
:
Boolean
,
default
:
false
,
},
content
:
{
type
:
String
,
default
:
''
,
...
...
@@ -59,6 +63,7 @@ export default {
methods
:
{
keyboradShow
()
{
let
vm
=
this
if
(
!
vm
.
readonly
)
{
hlsPopup
.
showNumberKeyborad
({
title
:
'数字键盘'
,
keyDown
:
(
text
)
=>
{
...
...
@@ -68,13 +73,14 @@ export default {
vm
.
onDelete
()
},
})
}
},
onInput
(
value
)
{
// if (this.disable) return
if
(
this
.
value
===
'0'
||
this
.
value
===
'0.00'
)
{
if
(
this
.
value
===
'0'
||
this
.
value
===
'0.00'
)
{
this
.
newVal
=
''
this
.
newVal
+=
(
''
+
value
)
}
else
{
}
else
{
this
.
newVal
=
this
.
value
if
(
this
.
newVal
.
includes
(
'.'
)
&&
value
===
'.'
)
{
}
else
{
...
...
src/pages/contractSigning/contract-detail.vue
View file @
acf90b99
...
...
@@ -36,16 +36,16 @@
</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=
"$routeGo()"
>
<span>
方案详情
</span>
</div>
</h-header>
<div
class=
"tab-style"
>
<div
:class=
"
{ 'done': num === 0, 'undone': num !== 0 }" @click="num = 0;">
<img
:src=
"num === 0 ? check1 : uncheck1"
>
基本信息
<img
:src=
"num === 0 ? check1 : uncheck1"
>
基本信息
</div>
<div
:class=
"
{ 'done': num === 1, 'undone': num !== 1 }" @click="num = 1;">
<img
:src=
"num === 1 ? check3 : uncheck3"
>
方案信息
<img
:src=
"num === 1 ? check3 : uncheck3"
>
方案信息
</div>
</div>
<h-content
v-if=
"num === 0"
class=
"business-condition"
>
...
...
@@ -74,7 +74,7 @@
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
注册资本
</div>
<input
slot=
"content"
v-model=
"baseInfo.registered_capital"
>
<input
slot=
"content"
v-model=
"baseInfo.registered_capital"
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
注册地址
</div>
...
...
@@ -82,19 +82,19 @@
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
经营地址
</div>
<input
slot=
"content"
v-model=
"baseInfo.business_address"
>
<input
slot=
"content"
v-model=
"baseInfo.business_address"
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
固定电话
</div>
<input
slot=
"content"
v-model=
"baseInfo.phone"
>
<input
slot=
"content"
v-model=
"baseInfo.phone"
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
是否授权
</div>
<
input
slot=
"content"
v-model=
"baseInfo.auth_flag"
>
<
h-switch
slot=
"content"
v-model=
"baseInfo.auth_flag"
/
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
是否征信授权
</div>
<
input
slot=
"content"
v-model=
"baseInfo.auth_flag"
>
<
h-switch
slot=
"content"
v-model=
"baseInfo.credit_flag"
/
>
</item>
</list-item>
<div
class=
"equipment-list"
>
法定代表人
</div>
...
...
@@ -113,8 +113,7 @@
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
联系地址
</div>
<input
slot=
"content"
v-model=
"baseInfo.living_address"
>
<textarea
slot=
"content"
v-model=
"baseInfo.living_address"
></textarea>
</item>
</list-item>
<div
class=
"equipment-list"
>
...
...
@@ -129,9 +128,9 @@
<span
class=
"card-num"
>
证件号
</span>
</div>
<div
slot=
"content"
class=
"right"
>
<img
src=
"@/assets/intoApproval/introduce.png"
>
<img
src=
"@/assets/intoApproval/introduce.png"
>
<span
:title=
"item.bp_name"
>
{{
item
.
bp_name
}}
</span>
<br
>
<br>
<span>
{{
item
.
bp_class
===
'NP'
?
item
.
id_card_no
:
item
.
organization_code
}}
</span>
</div>
</item>
...
...
@@ -148,22 +147,22 @@
:key=
"index+'info2'"
class=
"card-upload"
>
<img
:src=
"item.picture"
@
click=
"showBigPicture(item.picture)"
>
<img
:src=
"item.picture"
@
click=
"showBigPicture(item.picture)"
>
<div
class=
"close"
@
click=
"remove_pic(item.attachment_id,index,'mining')"
>
<img
src=
"@/assets/userBind/deleteIcon.png"
>
<img
src=
"@/assets/userBind/deleteIcon.png"
>
</div>
</div>
<!--特批 从服务器上下载的图片-->
<div
v-for=
"(pic, index) in dowload_list_mining"
:key=
"index+'mining'"
>
<div
v-if=
"pic.check_id==miningCheckId"
:key=
"index+'info3'"
class=
"card-upload"
>
<img
:src=
"pic.url"
@
click=
"showBigPicture(pic.url)"
>
<img
:src=
"pic.url"
@
click=
"showBigPicture(pic.url)"
>
<div
class=
"close"
@
click=
"delete_pic(pic.attachment_id,'mining')"
>
<img
src=
"@/assets/userBind/deleteIcon.png"
>
<img
src=
"@/assets/userBind/deleteIcon.png"
>
</div>
</div>
</div>
<div
class=
"card-upload plus"
@
click=
"ocrShow('采矿权许可证',miningCheckId,'mining')"
>
<img
src=
"@/assets/userBind/camera.png"
class=
"upload-btn"
>
<img
src=
"@/assets/userBind/camera.png"
class=
"upload-btn"
>
</div>
</div>
</list-item>
...
...
@@ -175,7 +174,7 @@
<div
slot=
"name"
class=
"font-color"
>
纳税人类型
</div>
<input
slot=
"content"
v-model=
"
invoic
eInfo.taxpayer_type_n"
v-model=
"
bas
eInfo.taxpayer_type_n"
type=
"text"
readonly
placeholder=
"请选择"
...
...
@@ -186,7 +185,7 @@
<div
slot=
"name"
class=
"font-color"
>
发票类型
</div>
<input
slot=
"content"
v-model=
"
invoic
eInfo.invoice_kind_n"
v-model=
"
bas
eInfo.invoice_kind_n"
type=
"text"
readonly
placeholder=
"请选择"
...
...
@@ -195,43 +194,43 @@
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
发票抬头
</div>
<input
slot=
"content"
v-model=
"
invoiceInfo.invoice_title"
type=
"text"
placeholder=
"请输入发票抬头"
>
<input
slot=
"content"
v-model=
"
baseInfo.invoice_title"
type=
"text"
placeholder=
"请输入发票抬头"
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
发票地址
</div>
<textarea
slot=
"content"
ref=
"myTestarea"
v-model=
"
invoic
eInfo.invoice_adds"
cols=
"22"
slot=
"content"
ref=
"myTestarea"
v-model=
"
bas
eInfo.invoice_adds"
cols=
"22"
rows=
"1"
type=
"text"
placeholder=
"请输入发票地址"
@
input=
"addRows(
invoiceInfo.invoice_adds)"
/>
type=
"text"
placeholder=
"请输入发票地址"
@
input=
"addRows(
baseInfo.invoice_adds)"
/>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
开户电话
</div>
<input
slot=
"content"
v-model=
"
invoiceInfo.invoice_tel"
type=
"text"
placeholder=
"请输入开户电话"
>
<input
slot=
"content"
v-model=
"
baseInfo.invoice_tel"
type=
"text"
placeholder=
"请输入开户电话"
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
发票开户行
</div>
<textarea
slot=
"content"
ref=
"myTestareaLive"
v-model=
"
invoic
eInfo.open_bank"
v-model=
"
bas
eInfo.open_bank"
cols=
"22"
rows=
"1"
type=
"text"
placeholder=
"请输入发票开户行"
@
input=
"addRowsLive(
invoic
eInfo.open_bank)"
@
input=
"addRowsLive(
bas
eInfo.open_bank)"
/>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
开户行账号
</div>
<input
slot=
"content"
v-model=
"
invoiceInfo.open_account"
type=
"text"
placeholder=
"请输入开户行账号"
>
<input
slot=
"content"
v-model=
"
baseInfo.open_account"
type=
"text"
placeholder=
"请输入开户行账号"
>
</item>
<item>
<
!--
<
item>
<div
slot=
"name"
class=
"font-color"
>
纳税人识别号
</div>
<input
slot=
"content"
v-model=
"invoiceInfo.organization_code"
placeholder=
"纳税人识别号"
type=
"text"
>
</item>
</item>
-->
</list-item>
<div
class=
"equipment-list"
>
基本账户信息
...
...
@@ -303,22 +302,22 @@
:key=
"index+'info2'"
class=
"card-upload"
>
<img
:src=
"item.picture"
@
click=
"showBigPicture(item.picture)"
>
<img
:src=
"item.picture"
@
click=
"showBigPicture(item.picture)"
>
<div
class=
"close"
@
click=
"remove_pic(item.attachment_id,index,'report')"
>
<img
src=
"@/assets/userBind/deleteIcon.png"
>
<img
src=
"@/assets/userBind/deleteIcon.png"
>
</div>
</div>
<!--特批 从服务器上下载的图片-->
<div
v-for=
"(pic, index) in dowload_list_report"
:key=
"index+'report'"
>
<div
v-if=
"pic.check_id==reportCheckId"
:key=
"index+'info3'"
class=
"card-upload"
>
<img
:src=
"pic.url"
@
click=
"showBigPicture(pic.url)"
>
<img
:src=
"pic.url"
@
click=
"showBigPicture(pic.url)"
>
<div
class=
"close"
@
click=
"delete_pic(pic.attachment_id,'report')"
>
<img
src=
"@/assets/userBind/deleteIcon.png"
>
<img
src=
"@/assets/userBind/deleteIcon.png"
>
</div>
</div>
</div>
<div
class=
"card-upload plus"
@
click=
"ocrShow('财务报表',reportCheckId,'report')"
>
<img
src=
"@/assets/userBind/camera.png"
class=
"upload-btn"
>
<img
src=
"@/assets/userBind/camera.png"
class=
"upload-btn"
>
</div>
</div>
</list-item>
...
...
@@ -411,7 +410,7 @@
<!--
<p
@
click=
"repayPlan"
>
查看还款计划
</p>
-->
<!--
</div>
-->
<div
class=
"equipment-list-fund"
>
<span
/>
<span/>
<p>
设备清单
</p>
<div
style=
"width: 75%;text-align: right;"
@
click=
"downNum=true"
>
新增
</div>
</div>
...
...
@@ -422,16 +421,16 @@
<!--
</item>
-->
<item>
<div
slot=
"name"
class=
"font-color"
>
产品名称
</div>
<input
slot=
"content"
v-model=
"item.ref_v02"
readonly
>
<input
slot=
"content"
v-model=
"item.ref_v02"
readonly
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
产品数量
</div>
<input
slot=
"content"
v-model=
"item.quantity"
readonly
>
<input
slot=
"content"
v-model=
"item.quantity"
readonly
>
</item>
</list-item>
</h-content>
<bottom-tab
class=
"add-box"
>
<tab-button
class=
"next"
@
click
.
native=
"
saveData
"
>
<tab-button
class=
"next"
@
click
.
native=
"
handleSave
"
>
<img
src=
"@/assets/intoApproval/approve.png"
>
保存
</tab-button>
</bottom-tab>
...
...
@@ -447,17 +446,17 @@ 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
PDFJS
from
'pdfjs-dist'
import
CurrencyInput
from
'@/components/currencyInput'
import
RateInput
from
'@/components/rateInput'
// import bodyCheck from './body-check'
import
axios
from
'axios'
import
PDFJS
from
'pdfjs-dist'
export
default
{
name
:
'ContractDetail'
,
components
:
{
Personal
,
LegalPerson
,
CurrencyInput
,
RateInput
,
// bodyCheck,
},
data
()
{
...
...
@@ -481,7 +480,9 @@ export default {
attachArray
:
[],
// 附件数组
bp_class
:
this
.
$route
.
params
.
item
.
bp_class
,
// 承租人性质(自然人,企业)
info
:
{},
// 租赁信息
baseInfo
:
{},
// 基本信息
baseInfo
:
{
credit_flag
:
true
,
},
// 基本信息
project_id
:
''
,
bank_flag
:
false
,
isConfirm
:
false
,
// 征信授权书状态
...
...
@@ -510,18 +511,7 @@ export default {
legalPic
:
''
,
// 法人授权书图片
abc_deduction_flag
:
'N'
,
// 代扣授权书状态
signCheckFlag
:
false
,
// 签约校验,为true已认证通过可进行签约,否则不可签约
invoiceInfo
:
{
invoice_kind
:
''
,
invoice_kind_n
:
''
,
taxpayer_type
:
''
,
invoice_title
:
''
,
taxpayer_type_n
:
''
,
organization_code
:
''
,
invoice_adds
:
''
,
invoice_tel
:
''
,
open_bank
:
''
,
open_account
:
''
,
},
bank_lists
:
{
bank_account_num
:
''
,
// 卡号
bank_account_name
:
''
,
// 账户姓名
...
...
@@ -531,7 +521,7 @@ export default {
},
quotationInfo
:
{},
leaseList
:
[],
itemInfo
:{},
itemInfo
:
{},
downNum
:
false
,
checkId
:
''
,
reportCheckId
:
''
,
...
...
@@ -711,6 +701,7 @@ export default {
if
(
res
.
result
===
'S'
)
{
// vm.lists = res.lists
vm
.
baseInfo
=
res
.
info
if
(
res
.
info
.
auth_flag
)
{
window
.
localStorage
.
setItem
(
'auth_flag'
,
res
.
info
.
auth_flag
)
}
...
...
@@ -718,25 +709,7 @@ export default {
}
})
},
invoiceQuery
()
{
let
vm
=
this
let
url
=
process
.
env
.
basePath
+
'bp_invoice_query'
let
param
=
{
bp_id
:
vm
.
bp_id
,
}
vm
.
hlsPopup
.
showLoading
(
'请稍候'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
if
(
res
.
result
===
'S'
)
{
console
.
log
(
'invoiceInfo'
,
res
.
info
)
vm
.
invoiceInfo
=
res
.
info
vm
.
invoiceInfo
.
invoice_title
=
JSON
.
parse
(
window
.
localStorage
.
getItem
(
'handleUser'
)).
bp_name
// Object.assign(vm.invoiceInfo, res.info)
vm
.
addRows
(
vm
.
invoiceInfo
.
invoice_adds
)
vm
.
addRowsLive
(
vm
.
invoiceInfo
.
open_bank
)
}
})
},
addRows
(
e
)
{
if
(
e
)
{
...
...
@@ -845,26 +818,22 @@ export default {
}
})
},
//
selectBpTenant (e) {
//
let vm = this
//
vm.hlsPopup.selectList({
//
list: vm.bpTenantList,
//
code: 'bp_id',
//
object: {},
//
returnItem: function (index, obj) {
//
debugger
selectBpTenant
(
e
)
{
let
vm
=
this
vm
.
hlsPopup
.
selectList
({
list
:
vm
.
bpTenantList
,
code
:
'bp_id'
,
object
:
{},
returnItem
:
function
(
index
,
obj
)
{
debugger
// console.log(vm.bpTenantList[index])
// vm.baseInfo = {
// ...vm.baseInfo,
// ...vm.bpTenantList[index],
// }
// vm.invoiceInfo = {
// ...vm.invoiceInfo,
// ...vm.bpTenantList[index],
// }
// },
// })
// },
vm
.
baseInfo
=
{
...
vm
.
baseInfo
,
...
vm
.
bpTenantList
[
index
],
}
},
})
},
getAttachmentList
(
checkId
,
code
)
{
let
vm
=
this
let
url
=
...
...
@@ -934,9 +903,9 @@ export default {
code
:
'bp_type'
,
object
:
{},
returnItem
:
function
(
index
,
obj
)
{
vm
.
$set
(
vm
.
invoic
eInfo
,
'taxpayer_type'
,
obj
.
bp_type
)
vm
.
$set
(
vm
.
invoic
eInfo
,
'taxpayer_type_n'
,
obj
.
bp_type_n
)
console
.
log
(
'obj'
,
vm
.
invoic
eInfo
)
vm
.
$set
(
vm
.
bas
eInfo
,
'taxpayer_type'
,
obj
.
bp_type
)
vm
.
$set
(
vm
.
bas
eInfo
,
'taxpayer_type_n'
,
obj
.
bp_type_n
)
console
.
log
(
'obj'
,
vm
.
bas
eInfo
)
},
})
},
...
...
@@ -947,8 +916,8 @@ export default {
code
:
'bp_type'
,
object
:
{},
returnItem
:
function
(
index
,
obj
)
{
vm
.
$set
(
vm
.
invoic
eInfo
,
'invoice_kind'
,
obj
.
bp_type
)
vm
.
$set
(
vm
.
invoic
eInfo
,
'invoice_kind_n'
,
obj
.
bp_type_n
)
vm
.
$set
(
vm
.
bas
eInfo
,
'invoice_kind'
,
obj
.
bp_type
)
vm
.
$set
(
vm
.
bas
eInfo
,
'invoice_kind_n'
,
obj
.
bp_type_n
)
},
})
},
...
...
@@ -1170,19 +1139,43 @@ export default {
code
:
'bp_type'
,
object
:
{},
returnItem
:
function
(
index
,
obj
)
{
vm
.
info
.
annual_pay_times_n
=
obj
.
bp_type_n
vm
.
annual_pay_times
=
obj
.
bp_type
vm
.
$set
(
vm
.
quotationInfo
,
'annual_pay_times_n'
,
obj
.
bp_type_n
)
vm
.
$set
(
vm
.
quotationInfo
,
'annual_pay_times'
,
obj
.
bp_type
)
},
})
},
// 时间选择
showTime
(
format
)
{
let
vm
=
this
hlsPopup
.
showTime
({
nowDate
:
(
new
Date
()).
format
(
'yyyy-MM-dd'
),
format
:
format
,
callback
:
(
date
)
=>
{
vm
.
$set
(
vm
.
quotationInfo
,
'lease_start_date'
,
date
)
},
})
},
// handleSave
handleSave
()
{
if
(
this
.
num
===
0
)
{
this
.
prjBaseInfoSave
()
}
else
{
this
.
calculationSave
()
}
},
// 保存融租方案接口
prjBaseInfoSave
()
{
let
vm
=
this
let
url
=
$config
.
basePath
+
'zm_prj_base_info_save'
let
param
=
{
'project_id'
:
vm
.
project_id
,
'operator_id'
:
''
,
...
vm
.
baseInfo
,
let
master
=
{
...
vm
.
baseInfo
,
...
vm
.
bank_lists
,...
vm
.
invoiceInfo
}
master
.
project_id
=
vm
.
project_id
let
param
=
{
master
}
vm
.
hlsPopup
.
showLoading
(
'请稍候'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
...
...
@@ -1220,6 +1213,7 @@ export default {
// 方案信息保存&更新接口
calculationSave
()
{
let
vm
=
this
<<<<<<<
HEAD
if
(
!
vm
.
quotationInfo
.
equip_price
)
{
hlsPopup
.
showLongCenter
(
'请输入设备总价'
)
}
else
if
(
!
vm
.
quotationInfo
.
gps_fee
)
{
...
...
@@ -1256,19 +1250,30 @@ export default {
hlsPopup
.
showLongCenter
(
res
.
message
)
}
})
}
vm
.
hlsPopup
.
showLoading
(
'请稍候'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
if
(
res
.
result
===
'S'
)
{
vm
.
quotationInfo
.
quotation_id
=
res
.
quotation_id
}
else
{
hlsPopup
.
showLongCenter
(
res
.
message
)
}
})
},
},
}
</
script
>
<
style
lang=
"less"
rel=
"stylesheet"
>
#contract-details {
#contract-details {
.outer {
width: 259px;
height: 370px;
background-color: #fff;
overflow-y: scroll;
overflow-x: hidden;
.canvas {
position: relative;
z-index: 0;
...
...
@@ -1285,6 +1290,7 @@ export default {
display: flex;
justify-content: center;
align-items: center;
button {
width: 7.172rem;
height: 0.88rem;
...
...
@@ -1297,6 +1303,7 @@ export default {
letter-spacing: 0.2rem;
}
}
.bodyCheck {
width: 100%;
height: 1.1rem;
...
...
@@ -1306,6 +1313,7 @@ export default {
display: flex;
justify-content: center;
align-items: center;
button {
width: 7.172rem;
height: 0.88rem;
...
...
@@ -1318,6 +1326,7 @@ export default {
letter-spacing: 0.2rem;
}
}
.footer-button {
.approve {
width: 358.6px;
...
...
@@ -1329,12 +1338,14 @@ export default {
font-size: 15px;
line-height: 20px;
letter-spacing: 10px;
img {
width: 16.8px;
height: 16.8px;
}
}
}
.name-box {
display: inline-block;
text-align: center;
...
...
@@ -1345,6 +1356,7 @@ export default {
background: #cddbec;
border-radius: 4px;
}
.name {
font-family: PingFangSC-Regular;
font-size: 14px;
...
...
@@ -1352,6 +1364,7 @@ export default {
letter-spacing: 0;
margin-left: 10px;
}
.card-num {
font-family: PingFangSC-Regular;
font-size: 14px;
...
...
@@ -1361,9 +1374,11 @@ export default {
margin-left: 31px;
margin-top: 7px;
}
.right {
position: relative;
}
.right span {
float: right;
margin-right: 48px;
...
...
@@ -1380,9 +1395,11 @@ export default {
margin-top: -10px;
text-align: right;
}
.right span:last-child {
margin-top: 7px;
}
.right img {
position: absolute;
top: 30%;
...
...
@@ -1390,14 +1407,17 @@ export default {
width: 14px;
height: 16px;
}
.alert {
padding-bottom: 30px;
width: 100%;
background: #fbf2d2;
}
.alert-fund {
margin-top: -10px;
}
.alert-content {
width: 334px;
margin: 0 auto;
...
...
@@ -1416,6 +1436,7 @@ export default {
display: flex;
align-items: center;
}
.top-word {
p {
font-family: PingFangSC-Regular;
...
...
@@ -1427,6 +1448,7 @@ export default {
text-indent: 16px;
position: relative;
}
p::before {
content: "";
display: block;
...
...
@@ -1439,6 +1461,7 @@ export default {
background-color: #fcc800;
}
}
.top-info {
font-family: PingFangSC-Regular;
font-size: 12px;
...
...
@@ -1456,17 +1479,20 @@ export default {
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;
font-size: 14px;
...
...
@@ -1480,6 +1506,7 @@ export default {
margin-left: 16px;
}
}
.equipment-list-fund {
height: 40px;
line-height: 40px;
...
...
@@ -1496,10 +1523,12 @@ export default {
height: 20px;
background: #00469c;
}
p {
padding-left: 10px;
}
}
.all {
position: absolute;
background-color: transparent;
...
...
@@ -1584,10 +1613,12 @@ export default {
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;
...
...
@@ -1694,6 +1725,7 @@ export default {
letter-spacing: 0;
}
}
.aguremrnt-list {
display: flex;
display: -webkit-flex;
...
...
@@ -1701,11 +1733,13 @@ export default {
-webkit-align-items: center;
width: 100%;
height: 100%;
.unread {
width: 34px;
height: 20px;
margin: 0 10px;
}
.wrap-img {
width: 12%;
height: 100%;
...
...
@@ -1716,11 +1750,13 @@ export default {
justify-content: center;
-webkit-justify-content: center;
background: rgb(254, 251, 233);
img {
width: 22px;
height: 20px;
}
}
.pic {
margin-left: -3px;
}
...
...
@@ -1761,6 +1797,7 @@ export default {
display: flex;
justify-content: center;
align-items: center;
.box {
position: relative;
width: 301px;
...
...
@@ -1769,11 +1806,13 @@ export default {
background: url("../../assets/intoApproval/top.png") no-repeat;
background-size: 301px 24.7px;
background-color: #fff;
img {
position: absolute;
z-index: 999;
width: 301px;
}
button {
width: 240px;
height: 40px;
...
...
@@ -1783,6 +1822,7 @@ export default {
left: 30.5px;
background-color: rgba(56, 63, 69, 0.5);
}
.title-box {
width: 100%;
display: block;
...
...
@@ -1792,6 +1832,7 @@ export default {
font-size: 16px;
color: #00469c;
}
.content-box {
width: 240px;
height: 280px;
...
...
@@ -1801,23 +1842,28 @@ export default {
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;
}
}
.confirm {
width: 240px;
height: 20px;
...
...
@@ -1833,12 +1879,14 @@ export default {
align-items: center;
position: relative;
margin-top: 15px;
input {
width: 16px;
height: 16px;
margin-right: 8px;
background: none;
}
input::before {
content: "";
display: block;
...
...
@@ -1847,15 +1895,18 @@ export default {
}
}
}
.approveContent {
position: absolute;
top: 50%;
background-color: #fafafa;
overflow-y: scroll;
}
.approveBottom {
width: 343px;
margin: 0 auto;
span {
display: block;
width: 100%;
...
...
@@ -1865,16 +1916,19 @@ export default {
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;
...
...
@@ -1887,6 +1941,7 @@ export default {
background-size: 14px 14px;
}
}
.reject,
.same {
width: 175px;
...
...
@@ -1894,56 +1949,69 @@ export default {
border-radius: 4px;
font-family: PingFangSC-Semibold;
font-size: 15px;
img {
width: 13px;
height: 13px;
}
}
.reject {
color: #656464;
border: 1px solid #656464;
}
.same {
color: #ffffff;
background: #00469c;
border: 1px solid #00469c;
}
.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;
}
}
}
input::placeholder{
input::placeholder {
color: #B4B4B5;
}
.font-color {
color: #656464;
}
textarea::placeholder {
color: #b4b4b5;
}
textarea {
text-align: right;
color:
#666;
color:
#666;
resize: none;
}
.footer-button {
padding-top: 15px;
padding-bottom: 15px;
}
.save {
width: 100%;
height: 45px;
...
...
@@ -1956,11 +2024,13 @@ export default {
background: #fff;
margin-top: 10px;
padding-bottom: 10px;
.plus {
display: flex;
justify-content: center;
align-items: center;
}
.card-upload {
position: relative;
width: 80px;
...
...
@@ -2002,7 +2072,8 @@ export default {
}
}
}
.house:last-child, .house:nth-last-child(2){
.house:last-child, .house:nth-last-child(2) {
// margin-top: 0;
div {
float: left;
...
...
@@ -2013,6 +2084,7 @@ export default {
display: flex;
justify-content: center;
margin-top: 15px;
div {
width: 172px;
height: 120px;
...
...
@@ -2020,53 +2092,63 @@ export default {
text-align: center;
font-size: 14px;
color: #b4b4b5;
.front,
.back {
width: 172px;
height: 120px;
}
}
div:nth-of-type(2) {
margin-left: 7px;
}
img {
margin-top: 32px;
width: 58px;
height: 45px;
}
p {
margin-top: 12px;
font-size: 13px;
}
}
}
.modal {
}
.modal {
background-color: rgba(0, 0, 0, 0) !important;
}
}
.trans-enter-active,
.trans-leave-active {
.trans-enter-active,
.trans-leave-active {
transition: opacity 0.5s;
}
.trans-enter,
.trans-leave-active {
}
.trans-enter,
.trans-leave-active {
opacity: 0;
}
.hide {
}
.hide {
display: flex;
justify-content: flex-start;
align-items: center;
img {
width: 30px;
height: 30px;
margin-left: 65%;
}
}
.wrap {
}
.wrap {
padding-top: 92px;
}
.modal-show {
}
.modal-show {
width: 100%;
height: 100%;
position: absolute;
...
...
@@ -2075,6 +2157,7 @@ export default {
background-color: rgba(56, 63, 69, 0.3);
justify-content: center;
align-items: center;
.down {
position: relative;
width: 314px;
...
...
@@ -2083,6 +2166,7 @@ export default {
background-size: 301px 24.7px;
background-color: #fff;
}
.top {
width: 100%;
height: 44px;
...
...
@@ -2093,6 +2177,7 @@ export default {
line-height: 44px;
color: #fff;
background: #0041c4;
img {
width: 16px;
height: 16px;
...
...
@@ -2101,8 +2186,10 @@ export default {
margin-right: 20px;
}
}
.down-content {
margin-top: 8px;
span:first-child {
font-family: PingFangSC-Regular;
font-size: 13px;
...
...
@@ -2110,6 +2197,7 @@ export default {
letter-spacing: 0;
margin-left: 15px;
}
.photo {
width: 172px;
height: 120px;
...
...
@@ -2119,12 +2207,14 @@ export default {
margin-top: 12px;
background: url("../../assets/contractStart/photo.png") 70px no-repeat;
background-size: 24px 20px;
img {
width: 100%;
height: 100%;
}
}
}
button {
width: 240px;
height: 40px;
...
...
@@ -2135,6 +2225,6 @@ export default {
background-color: #0041c4;
border-radius: 4px;
}
}
}
</
style
>
src/pages/contractSigning/contract-new.vue
0 → 100755
View file @
acf90b99
<
template
>
<h-view
id=
"contract-details"
class=
"public-style"
>
<h-header
:proportion=
"[5, 1, 1]"
class=
"bar-custom"
>
<div
slot=
"left"
class=
"h-header-btn"
>
<img
src=
"@/assets/userBind/arrow.png"
@
click=
"$routeGo()"
>
<span>
方案详情
</span>
</div>
</h-header>
<div
class=
"tab-style"
>
<div
:class=
"
{ 'done': num === 0, 'undone': num !== 0 }" @click="num = 0;">
<img
:src=
"num === 0 ? check1 : uncheck1"
>
基本信息
</div>
<div
:class=
"
{ 'done': num === 1, 'undone': num !== 1 }" @click="num = 1;">
<img
:src=
"num === 1 ? check3 : uncheck3"
>
方案信息
</div>
</div>
<h-content
v-if=
"num === 0"
class=
"business-condition"
>
<list-item
:item-height=
"44"
class=
"second-part"
>
<item>
<div
slot=
"name"
class=
"font-color"
>
业务经办
</div>
<input
slot=
"content"
v-model=
"baseInfo.bp_user_id_n"
readonly
>
</item>
</list-item>
<div
class=
"equipment-list"
>
承租人信息
</div>
<list-item
:item-height=
"44"
class=
"second-part"
>
<item>
<div
slot=
"name"
class=
"font-color"
>
公司名称
</div>
<input
slot=
"content"
v-model=
"baseInfo.bp_name"
type=
"text"
readonly
placeholder=
"请选择"
@
click=
"selectBpTenant"
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
营业执照号
</div>
<input
slot=
"content"
v-model=
"baseInfo.organization_code"
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
注册资本
</div>
<input
slot=
"content"
v-model=
"baseInfo.registered_capital"
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
注册地址
</div>
<textarea
slot=
"content"
v-model=
"baseInfo.registered_place"
/>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
经营地址
</div>
<input
slot=
"content"
v-model=
"baseInfo.business_address"
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
固定电话
</div>
<input
slot=
"content"
v-model=
"baseInfo.phone"
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
是否授权
</div>
<h-switch
slot=
"content"
v-model=
"baseInfo.auth_flag"
/>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
是否征信授权
</div>
<h-switch
slot=
"content"
v-model=
"baseInfo.credit_flag"
/>
</item>
</list-item>
<div
class=
"equipment-list"
>
法定代表人
</div>
<list-item
:item-height=
"44"
class=
"second-part"
>
<item>
<div
slot=
"name"
class=
"font-color"
>
姓名
</div>
<input
slot=
"content"
v-model=
"baseInfo.legal_person"
readonly
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
证件号
</div>
<input
slot=
"content"
v-model=
"baseInfo.id_card_no"
readonly
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
手机号码
</div>
<input
slot=
"content"
v-model=
"baseInfo.cell_phone"
readonly
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
联系地址
</div>
<textarea
slot=
"content"
v-model=
"baseInfo.living_address"
/>
</item>
</list-item>
<div
class=
"equipment-list"
>
采矿权许可证
</div>
<list-item
:item-height=
"76"
>
<div
class=
"house spec"
>
<!--待上传图片列表-->
<div
v-for=
"(item, index) in upload_list_mining"
v-if=
"item.check_id === miningCheckId"
:key=
"index+'info2'"
class=
"card-upload"
>
<img
:src=
"item.picture"
@
click=
"showBigPicture(item.picture)"
>
<div
class=
"close"
@
click=
"remove_pic(item.attachment_id,index,'mining')"
>
<img
src=
"@/assets/userBind/deleteIcon.png"
>
</div>
</div>
<!--特批 从服务器上下载的图片-->
<div
v-for=
"(pic, index) in dowload_list_mining"
:key=
"index+'mining'"
>
<div
v-if=
"pic.check_id==miningCheckId"
:key=
"index+'info3'"
class=
"card-upload"
>
<img
:src=
"pic.url"
@
click=
"showBigPicture(pic.url)"
>
<div
class=
"close"
@
click=
"delete_pic(pic.attachment_id,'mining')"
>
<img
src=
"@/assets/userBind/deleteIcon.png"
>
</div>
</div>
</div>
<div
class=
"card-upload plus"
@
click=
"ocrShow('采矿权许可证',miningCheckId,'mining')"
>
<img
src=
"@/assets/userBind/camera.png"
class=
"upload-btn"
>
</div>
</div>
</list-item>
<div
class=
"equipment-list"
>
开票信息
</div>
<list-item
:item-height=
"44"
>
<item
:showArrow=
"true"
>
<div
slot=
"name"
class=
"font-color"
>
纳税人类型
</div>
<input
slot=
"content"
v-model=
"baseInfo.taxpayer_type_n"
type=
"text"
readonly
placeholder=
"请选择"
@
click=
"selectTaxpayer"
>
</item>
<item
:showArrow=
"true"
>
<div
slot=
"name"
class=
"font-color"
>
发票类型
</div>
<input
slot=
"content"
v-model=
"baseInfo.invoice_kind_n"
type=
"text"
readonly
placeholder=
"请选择"
@
click=
"selectInvoiceType"
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
发票抬头
</div>
<input
slot=
"content"
v-model=
"baseInfo.invoice_title"
type=
"text"
placeholder=
"请输入发票抬头"
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
发票地址
</div>
<textarea
slot=
"content"
ref=
"myTestarea"
v-model=
"baseInfo.invoice_adds"
cols=
"22"
rows=
"1"
type=
"text"
placeholder=
"请输入发票地址"
@
input=
"addRows(baseInfo.invoice_adds)"
/>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
开户电话
</div>
<input
slot=
"content"
v-model=
"baseInfo.invoice_tel"
type=
"text"
placeholder=
"请输入开户电话"
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
发票开户行
</div>
<textarea
slot=
"content"
ref=
"myTestareaLive"
v-model=
"baseInfo.open_bank"
cols=
"22"
rows=
"1"
type=
"text"
placeholder=
"请输入发票开户行"
@
input=
"addRowsLive(baseInfo.open_bank)"
/>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
开户行账号
</div>
<input
slot=
"content"
v-model=
"baseInfo.open_account"
type=
"text"
placeholder=
"请输入开户行账号"
>
</item>
<!--
<item>
<div
slot=
"name"
class=
"font-color"
>
纳税人识别号
</div>
<input
slot=
"content"
v-model=
"invoiceInfo.organization_code"
placeholder=
"纳税人识别号"
type=
"text"
readonly
>
</item>
-->
</list-item>
<div
class=
"equipment-list"
>
基本账户信息
</div>
<list-item
:item-height=
"44"
>
<item>
<div
slot=
"name"
>
账户名称
</div>
<input
slot=
"content"
v-model=
"baseInfo.bank_account_name"
placeholder=
"请输入账户名称"
>
</item>
<item>
<div
slot=
"name"
>
开户行
</div>
<input
slot=
"content"
v-model=
"baseInfo.bank_full_name"
placeholder=
"请输入开户行"
>
</item>
<item>
<div
slot=
"name"
>
银行账号
</div>
<input
slot=
"content"
v-model=
"baseInfo.bank_account_num"
placeholder=
"请输入银行账号"
>
</item>
<item>
<div
slot=
"name"
>
联行号
</div>
<input
slot=
"content"
v-model=
"baseInfo.bank_branch_name"
placeholder=
"请输入联行号"
>
</item>
</list-item>
<div
class=
"equipment-list"
>
联系人信息
</div>
<list-item
:item-height=
"44"
>
<item>
<div
slot=
"name"
>
联系人姓名
</div>
<input
slot=
"content"
v-model=
"baseInfo.contact_name"
placeholder=
"请输入联系人姓名"
>
</item>
<item>
<div
slot=
"name"
>
身份证号码
</div>
<input
slot=
"content"
v-model=
"baseInfo.contact_card_no"
placeholder=
"请输入身份证号码"
>
</item>
<item>
<div
slot=
"name"
>
联系电话
</div>
<input
slot=
"content"
v-model=
"baseInfo.contact_tel"
placeholder=
"请输入联系电话"
>
</item>
<item>
<div
slot=
"name"
>
联系地址
</div>
<input
slot=
"content"
v-model=
"baseInfo.contact_adds"
placeholder=
"请输入联系地址"
>
</item>
</list-item>
<div
class=
"equipment-list"
>
财务报表
</div>
<list-item
:item-height=
"76"
>
<div
class=
"house spec"
>
<!--待上传图片列表-->
<div
v-for=
"(item, index) in upload_list_report"
v-if=
"item.check_id === reportCheckId"
:key=
"index+'info2'"
class=
"card-upload"
>
<img
:src=
"item.picture"
@
click=
"showBigPicture(item.picture)"
>
<div
class=
"close"
@
click=
"remove_pic(item.attachment_id,index,'report')"
>
<img
src=
"@/assets/userBind/deleteIcon.png"
>
</div>
</div>
<!--特批 从服务器上下载的图片-->
<div
v-for=
"(pic, index) in dowload_list_report"
:key=
"index+'report'"
>
<div
v-if=
"pic.check_id==reportCheckId"
:key=
"index+'info3'"
class=
"card-upload"
>
<img
:src=
"pic.url"
@
click=
"showBigPicture(pic.url)"
>
<div
class=
"close"
@
click=
"delete_pic(pic.attachment_id,'report')"
>
<img
src=
"@/assets/userBind/deleteIcon.png"
>
</div>
</div>
</div>
<div
class=
"card-upload plus"
@
click=
"ocrShow('财务报表',reportCheckId,'report')"
>
<img
src=
"@/assets/userBind/camera.png"
class=
"upload-btn"
>
</div>
</div>
</list-item>
</h-content>
<h-content
v-if=
"num === 1"
>
<list-item
:item-height=
"44"
class=
"second-part"
>
<item>
<div
slot=
"name"
class=
"font-color"
>
设备总价
</div>
<CurrencyInput
slot=
"content"
v-model=
"quotationInfo.equip_price"
placeholder=
"请输入设备总价"
/>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
融资金额
</div>
<CurrencyInput
slot=
"content"
v-model=
"quotationInfo.finance_amount"
placeholder=
"请输入融资金额"
/>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
首付款
</div>
<CurrencyInput
slot=
"content"
v-model=
"quotationInfo.down_payment"
placeholder=
"请输入首付款"
/>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
保证金比例
</div>
<RateInput
slot=
"content"
v-model=
"quotationInfo.deposit_ratio_n"
placeholder=
"请输入保证金比例"
/>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
保证金
</div>
<CurrencyInput
slot=
"content"
v-model=
"quotationInfo.deposit"
placeholder=
"请输入保证金"
/>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
手续费比例
</div>
<RateInput
slot=
"content"
v-model=
"quotationInfo.lease_charge_ratio_n"
placeholder=
"请输入手续费比例"
/>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
手续费
</div>
<currency-input
slot=
"content"
v-model=
"quotationInfo.lease_charge"
placeholder=
"请输入手续费"
/>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
保险押金
</div>
<!--
<span
slot=
"content"
>
{{
info
.
insurance_fee
*
info
.
product_num
|
currency
}}
</span>
-->
<CurrencyInput
slot=
"content"
v-model=
"quotationInfo.insurance_fee"
placeholder=
"请输入保险押金"
/>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
GPS费用
</div>
<CurrencyInput
slot=
"content"
v-model=
"quotationInfo.gps_fee"
placeholder=
"请输入GPS费用"
/>
</item>
<item>
<div
slot=
"name"
>
首次付款合计
</div>
<CurrencyInput
slot=
"content"
v-model=
"quotationInfo.first_pay"
placeholder=
"请输入首次付款合计"
/>
</item>
<item
:show-arrow=
"true"
@
click
.
native=
"showTime('YYYY-MM-DD')"
>
<div
slot=
"name"
class=
"font-color"
>
预计付款日
</div>
<div
slot=
"content"
class=
"autoColor"
>
{{
quotationInfo
.
lease_start_date
}}
</div>
</item>
<item
:show-arrow=
"true"
@
click
.
native=
"periodPull"
>
<div
slot=
"name"
class=
"font-color"
>
还款周期
</div>
<span
slot=
"content"
>
{{
quotationInfo
.
annual_pay_times_n
}}
</span>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
租赁期数
</div>
<input
slot=
"content"
v-model=
"quotationInfo.lease_times"
placeholder=
"请输入租赁期数"
type=
"number"
>
</item>
<item>
<div
slot=
"name"
class=
"font-color"
>
年利率
</div>
<RateInput
slot=
"content"
v-model=
"quotationInfo.int_rate_n"
placeholder=
"请输入年利率"
/>
</item>
</list-item>
</h-content>
<bottom-tab
class=
"add-box"
>
<tab-button
class=
"next"
@
click
.
native=
"handleSave()"
>
<img
src=
"@/assets/intoApproval/approve.png"
>
保存
</tab-button>
</bottom-tab>
</h-view>
</
template
>
<
script
>
import
LegalPerson
from
'@/pages/distributorSign/legal-person'
import
Personal
from
'@/pages/distributorSign/personal'
import
CurrencyInput
from
'@/components/currencyInput'
import
RateInput
from
'@/components/rateInput'
import
Check1
from
'@/assets/constractSigning/business.png'
import
Check2
from
'@/assets/constractSigning/constract.png'
import
Check3
from
'@/assets/constractSigning/lease.png'
import
unCheck1
from
'@/assets/constractSigning/unbusiness.png'
import
unCheck2
from
'@/assets/constractSigning/unconstract.png'
import
unCheck3
from
'@/assets/constractSigning/unLease.png'
export
default
{
name
:
'ContractNew'
,
components
:
{
Personal
,
LegalPerson
,
CurrencyInput
,
RateInput
,
// bodyCheck,
},
data
()
{
return
{
info
:
{},
// 租赁信息
num
:
1
,
downNum
:
false
,
leaseList
:
[],
baseInfo
:
{
credit_flag
:
true
,
},
// 基本信息
project_id
:
''
,
check1
:
Check1
,
check2
:
Check2
,
check3
:
Check3
,
uncheck1
:
unCheck1
,
uncheck2
:
unCheck2
,
uncheck3
:
unCheck3
,
quotationInfo
:
{},
itemInfo
:
{},
upload_list_mining
:
[],
dowload_list_mining
:
[],
upload_list_report
:
[],
dowload_list_report
:
[],
}
},
computed
:
{},
watch
:
{
$route
(
to
,
from
)
{
hlsPopup
.
hideConfirm
()
},
},
activated
()
{
},
mounted
()
{
this
.
getBpTenantSelects
()
this
.
getInvoiceType
()
this
.
getTaxpayer
()
this
.
repayPeriod
()
},
methods
:
{
dateConverse
(
date
)
{
return
date
.
replace
(
/
\/
/g
,
'-'
)
},
addRows
(
e
)
{
if
(
e
)
{
let
len
=
0
for
(
let
i
=
0
;
i
<
e
.
length
;
i
++
)
{
var
c
=
e
.
charCodeAt
(
i
)
// 统计字符串的字符长度
if
((
c
>=
0x0001
&&
c
<=
0x007e
)
||
(
c
>=
0xff60
&&
c
<=
0xff9f
))
{
len
+=
1
}
else
{
len
+=
2
}
}
let
addNum
=
Math
.
ceil
(
len
/
21
)
this
.
$refs
.
myTestarea
.
rows
=
addNum
}
},
addRowsLive
(
e
)
{
if
(
e
)
{
let
len
=
0
for
(
let
i
=
0
;
i
<
e
.
length
;
i
++
)
{
var
c
=
e
.
charCodeAt
(
i
)
// 统计字符串的字符长度
if
((
c
>=
0x0001
&&
c
<=
0x007e
)
||
(
c
>=
0xff60
&&
c
<=
0xff9f
))
{
len
+=
1
}
else
{
len
+=
2
}
}
let
addNum
=
Math
.
ceil
(
len
/
21
)
this
.
$refs
.
myTestareaLive
.
rows
=
addNum
}
},
getBpTenantSelects
()
{
let
vm
=
this
let
url
=
process
.
env
.
basePath
+
'bp_tenant_query'
let
param
=
{}
vm
.
hlsPopup
.
showLoading
(
'请稍候'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
if
(
res
.
result
===
'S'
)
{
vm
.
bpTenantList
=
res
.
lists
.
map
(
item
=>
{
item
.
code
=
item
.
bp_id
item
.
code_name
=
item
.
bp_name
return
item
})
}
})
},
selectBpTenant
(
e
)
{
let
vm
=
this
vm
.
hlsPopup
.
selectList
({
list
:
vm
.
bpTenantList
,
code
:
'bp_id'
,
object
:
{},
returnItem
:
function
(
index
,
obj
)
{
debugger
// console.log(vm.bpTenantList[index])
vm
.
baseInfo
=
{
...
vm
.
baseInfo
,
...
vm
.
bpTenantList
[
index
],
}
},
})
},
getInvoiceType
()
{
let
vm
=
this
let
url
=
process
.
env
.
basePath
+
'bp_invoice_kind_query'
let
param
=
{}
vm
.
hlsPopup
.
showLoading
(
'请稍候'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
if
(
res
.
result
===
'S'
)
{
vm
.
invoicList
=
res
.
lists
.
map
(
item
=>
{
return
{
code
:
item
.
invoice_kind
,
code_name
:
item
.
invoice_kind_n
,
}
})
}
})
},
getTaxpayer
()
{
let
vm
=
this
let
url
=
process
.
env
.
basePath
+
'bp_taxpayer_type_query'
let
param
=
{}
vm
.
hlsPopup
.
showLoading
(
'请稍候'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
if
(
res
.
result
===
'S'
)
{
vm
.
taxpayerList
=
res
.
lists
.
map
(
item
=>
{
return
{
code
:
item
.
taxpayer_type
,
code_name
:
item
.
taxpayer_type_n
,
}
})
}
})
},
selectTaxpayer
(
e
)
{
let
vm
=
this
console
.
log
(
'vm.taxpayerList'
,
vm
.
taxpayerList
)
vm
.
hlsPopup
.
selectList
({
list
:
vm
.
taxpayerList
,
code
:
'bp_type'
,
object
:
{},
returnItem
:
function
(
index
,
obj
)
{
vm
.
$set
(
vm
.
baseInfo
,
'taxpayer_type'
,
obj
.
bp_type
)
vm
.
$set
(
vm
.
baseInfo
,
'taxpayer_type_n'
,
obj
.
bp_type_n
)
console
.
log
(
'obj'
,
vm
.
baseInfo
)
},
})
},
selectInvoiceType
(
e
)
{
let
vm
=
this
vm
.
hlsPopup
.
selectList
({
list
:
vm
.
invoicList
,
code
:
'bp_type'
,
object
:
{},
returnItem
:
function
(
index
,
obj
)
{
vm
.
$set
(
vm
.
baseInfo
,
'invoice_kind'
,
obj
.
bp_type
)
vm
.
$set
(
vm
.
baseInfo
,
'invoice_kind_n'
,
obj
.
bp_type_n
)
},
})
},
// 查看大图
showBigPicture
(
pic
)
{
let
vm
=
this
vm
.
hlsPopup
.
showBigPicture
({
imgUrl
:
pic
,
width
:
'100% !important'
,
})
},
// ocr识别入口
ocrShow
(
desc
,
id
,
code
)
{
let
vm
=
this
hlsPopup
.
showActionSheet
({
titleText
:
'请选择照片'
,
buttonArray
:
[
'拍照'
,
'从相册取'
],
callback
:
index
=>
{
if
(
index
===
0
)
{
vm
.
openCamera
(
desc
,
id
,
code
)
}
else
{
vm
.
takePicture
(
desc
,
id
,
code
)
}
},
})
},
openCamera
(
desc
,
id
,
code
)
{
let
vm
=
this
let
obj
=
{
'pkvalue'
:
id
,
'source_type'
:
'PRJ_CDD_ITEM_CHECK'
,
'picture'
:
''
,
'check_id'
:
id
,
'filePath'
:
''
,
'attachment_id'
:
''
,
'user_id'
:
1
,
'fileName'
:
desc
+
'_'
+
new
Date
().
getTime
(),
}
let
cameraoptions
=
{
quality
:
100
,
}
let
success
=
function
(
imgdata
)
{
obj
.
filePath
=
imgdata
obj
.
picture
=
hlsUtil
.
convertImageUrl
(
imgdata
)
let
list
=
[]
list
.
push
(
obj
)
// 拍完一张立马执行保存图片逻辑
vm
.
save_picture
(
list
,
code
)
}
let
error
=
function
()
{
hlsPopup
.
showLongCenter
(
'请拍照'
)
}
hlsUtil
.
openCamera
(
cameraoptions
,
success
,
error
)
},
takePicture
(
desc
,
checkId
,
code
)
{
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
.
filePath
=
imgUrl
[
i
]
obj
.
picture
=
hlsUtil
.
convertImageUrl
(
imgUrl
[
i
])
list
.
push
(
obj
)
}
vm
.
save_picture
(
list
,
code
)
}
let
error
=
function
()
{
}
vm
.
hlsUtil
.
takePicture
(
cameraoptions
,
success
,
error
)
},
// 图片保存
save_picture
(
list
,
code
)
{
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
if
(
code
===
'report'
)
{
vm
.
upload_list_report
.
push
(
list
[
j
])
break
}
else
if
(
code
===
'mining'
)
{
vm
.
upload_list_mining
.
push
(
list
[
j
])
break
}
}
}
}
else
{
hlsPopup
.
hideLoading
()
}
}
if
(
!
list
[
i
].
attachment_id
)
{
attLength
++
hlsUtil
.
fileUploadSvc
(
list
[
i
],
uploadSuccess
)
}
}
}
else
{
hlsPopup
.
hideLoading
()
}
},
// 移除图片
remove_pic
(
attachment_id
,
index
,
code
)
{
let
vm
=
this
var
delete_list
=
[]
let
obj
=
{
'attachment_id'
:
attachment_id
}
delete_list
.
push
(
obj
)
let
url
=
process
.
env
.
basePath
+
'app_delete_attment'
// 附件删除
let
param
=
{
'picturelist'
:
delete_list
,
}
hlsPopup
.
showLoading
(
'请稍候'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
hlsPopup
.
hideLoading
()
if
(
res
.
result
===
'S'
)
{
hlsPopup
.
showLongCenter
(
'删除成功!'
)
vm
.
remove_upload_list
(
attachment_id
,
index
,
code
)
}
else
if
(
res
.
result
===
'E'
)
{
hlsPopup
.
showShortCenter
(
res
.
message
)
}
})
},
remove_upload_list
(
attachment_id
,
index
,
code
)
{
let
vm
=
this
if
(
code
===
'report'
)
{
vm
.
upload_list_report
.
remove
(
index
)
vm
.
upload_list_report
.
sort
()
}
else
if
(
code
===
'mining'
)
{
vm
.
upload_list_mining
.
remove
(
index
)
vm
.
upload_list_mining
.
sort
()
}
},
// 删除图片
delete_pic
(
attachment_id
,
code
)
{
let
vm
=
this
let
delete_list
=
[]
let
obj
=
{
'attachment_id'
:
attachment_id
}
delete_list
.
push
(
obj
)
let
url
=
process
.
env
.
basePath
+
'app_delete_attment'
// 附件删除
let
param
=
{
'picturelist'
:
delete_list
,
}
hlsPopup
.
showLoading
(
'请稍候'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
hlsPopup
.
hideLoading
()
if
(
res
.
result
===
'S'
)
{
hlsPopup
.
showLongCenter
(
'删除成功!'
)
vm
.
remove_dowload_list
(
attachment_id
,
code
)
}
else
if
(
res
.
result
===
'E'
)
{
hlsPopup
.
showShortCenter
(
res
.
message
)
}
})
},
remove_dowload_list
(
attachment_id
,
code
)
{
console
.
log
(
'attachment_id'
,
attachment_id
)
let
vm
=
this
if
(
code
===
'report'
)
{
vm
.
dowload_list_report
=
vm
.
dowload_list_report
.
filter
(
item
=>
{
return
item
.
attachment_id
!==
attachment_id
})
}
else
if
(
code
===
'mining'
)
{
vm
.
dowload_list_mining
=
vm
.
dowload_list_mining
.
filter
(
item
=>
{
return
item
.
attachment_id
!==
attachment_id
})
}
},
// 还款周期查询
repayPeriod
()
{
let
vm
=
this
let
url
=
$config
.
basePath
+
'annual_pay_times_query'
let
param
=
{
product_plan_id
:
vm
.
product_plan_id
,
}
vm
.
hlsPopup
.
showLoading
(
'数据加载中'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
if
(
res
.
result
===
'S'
)
{
vm
.
periodLists
=
res
.
lists
.
map
(
item
=>
{
return
{
code
:
item
.
annual_pay_times
,
code_name
:
item
.
annual_pay_times_n
,
}
})
}
else
{
hlsPopup
.
showLongCenter
(
res
.
message
)
}
})
},
// 还款周期选择
periodPull
()
{
let
vm
=
this
vm
.
hlsPopup
.
selectList
({
list
:
vm
.
periodLists
,
// 下拉列表
code
:
'bp_type'
,
object
:
{},
returnItem
:
function
(
index
,
obj
)
{
vm
.
$set
(
vm
.
quotationInfo
,
'annual_pay_times_n'
,
obj
.
bp_type_n
)
vm
.
$set
(
vm
.
quotationInfo
,
'annual_pay_times'
,
obj
.
bp_type
)
},
})
},
// 时间选择
showTime
(
format
)
{
let
vm
=
this
hlsPopup
.
showTime
({
nowDate
:
(
new
Date
()).
format
(
'yyyy-MM-dd'
),
format
:
format
,
callback
:
(
date
)
=>
{
vm
.
$set
(
vm
.
quotationInfo
,
'lease_start_date'
,
date
)
},
})
},
// handleSave
handleSave
()
{
if
(
this
.
num
===
0
)
{
this
.
prjBaseInfoSave
()
}
else
{
this
.
calculationSave
()
}
},
// 保存融租方案接口
prjBaseInfoSave
()
{
let
vm
=
this
let
url
=
$config
.
basePath
+
'zm_prj_base_info_save'
let
param
=
{
'project_id'
:
vm
.
project_id
,
'operator_id'
:
''
,
...
vm
.
baseInfo
,
}
vm
.
hlsPopup
.
showLoading
(
'请稍候'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
if
(
res
.
result
===
'S'
)
{
}
else
{
hlsPopup
.
showLongCenter
(
res
.
message
)
}
})
},
// 方案信息保存&更新接口
calculationSave
()
{
let
vm
=
this
let
url
=
$config
.
basePath
+
'zm_prj_quotation_save'
let
param
=
{
'project_id'
:
vm
.
project_id
,
'quotation_id'
:
vm
.
quotationInfo
.
quotation_id
,
'equip_price'
:
vm
.
quotationInfo
.
equip_price
,
'down_payment'
:
vm
.
quotationInfo
.
down_payment
,
'deposit'
:
vm
.
quotationInfo
.
deposit
,
'lease_charge'
:
vm
.
quotationInfo
.
lease_charge
,
'due_date'
:
vm
.
quotationInfo
.
due_date
,
'lease_times'
:
vm
.
quotationInfo
.
lease_times
,
'insurance_fee'
:
vm
.
quotationInfo
.
insurance_fee
,
'gps_fee'
:
vm
.
quotationInfo
.
gps_fee
,
'annual_pay_times'
:
vm
.
quotationInfo
.
annual_pay_times
,
'finance_amount'
:
vm
.
quotationInfo
.
finance_amount
,
'deposit_ratio'
:
vm
.
quotationInfo
.
deposit_ratio
,
'lease_charge_ratio'
:
vm
.
quotationInfo
.
lease_charge_ratio
,
'lease_start_date'
:
vm
.
quotationInfo
.
lease_start_date
,
'int_rate'
:
vm
.
quotationInfo
.
int_rate
,
}
vm
.
hlsPopup
.
showLoading
(
'请稍候'
)
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
hlsPopup
.
hideLoading
()
if
(
res
.
result
===
'S'
)
{
vm
.
quotationInfo
.
quotation_id
=
res
.
quotation_id
}
else
{
hlsPopup
.
showLongCenter
(
res
.
message
)
}
})
},
},
}
</
script
>
<
style
lang=
"less"
rel=
"stylesheet"
>
#contract-details {
.outer {
width: 259px;
height: 370px;
background-color: #fff;
overflow-y: scroll;
overflow-x: hidden;
.canvas {
position: relative;
z-index: 0;
}
}
.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.172rem;
height: 0.88rem;
background: #1d3fff;
border-radius: 0.08rem;
color: #fff;
font-family: PingFangSC-Semibold;
font-size: 0.3rem;
line-height: 0.88rem;
letter-spacing: 0.2rem;
}
}
.footer-button {
.approve {
width: 358.6px;
height: 44px;
background: @headerColor;
border-radius: 4px;
color: #fff;
font-family: PingFangSC-Semibold;
font-size: 15px;
line-height: 20px;
letter-spacing: 10px;
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: 30px;
width: 100%;
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 {
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: #656464;
letter-spacing: 0;
}
.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;
}
}
.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 {
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;
.top {
height: 105px;
border-bottom: 1px solid #f1f0f5;
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;
}
}
.bottom {
text-align: center;
font-family: PingFangSC-Regular;
font-size: 14px;
color: #00469c;
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);
}
.hls-item {
margin-top: 8px;
background-color: #fff;
}
.contents {
padding: 0;
}
.in-detail {
background-color: rgba(0, 70, 156, 0.08);
width: 48px;
height: 56px;
text-align: center;
line-height: 65px;
img {
width: 16px;
}
}
.in-all {
//width: 96px;
display: flex;
img {
width: 16px;
}
div {
width: 48px;
height: 56px;
text-align: center;
line-height: 65px;
}
div:first-child {
background-color: rgba(252, 200, 0, 0.1);
}
div:nth-child(2) {
background-color: rgba(0, 70, 156, 0.08);
}
}
}
}
.business-condition {
.equipment-list {
height: 40px;
line-height: 40px;
background-color: #fafafa;
color: #00469c;
font-size: 15px;
margin-left: 16px;
position: relative;
}
.equipment-list::before {
content: "";
display: block;
width: 4px;
height: 20px;
background-color: #00469c;
position: absolute;
left: -15px;
top: 10px;
}
div {
font-family: PingFangSC-Regular;
color: #656464;
letter-spacing: 0;
}
section {
font-family: PingFangSC-Regular;
color: rgba(56, 63, 69, 0.6);
letter-spacing: 0;
}
}
.aguremrnt-list {
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
width: 100%;
height: 100%;
.unread {
width: 34px;
height: 20px;
margin: 0 10px;
}
.wrap-img {
width: 12%;
height: 100%;
display: flex;
display: -webkit-flex;
align-items: center;
-webkit-align-items: center;
justify-content: center;
-webkit-justify-content: center;
background: rgb(254, 251, 233);
img {
width: 22px;
height: 20px;
}
}
.pic {
margin-left: -3px;
}
.pics {
// width: 21px;
height: 30px;
}
.read {
height: 16px;
margin-top: 8px;
margin-left: 6px;
}
.second {
// height: 32px;
// line-height: 32px;
font-family: PingFangSC-Regular;
font-size: 14px;
margin-left: 16px;
color: #383f45;
letter-spacing: 0.43px;
}
.first {
margin-left: 13px;
width: 60%;
}
}
.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;
top: -67px;
background: url("../../assets/intoApproval/top.png") no-repeat;
background-size: 301px 24.7px;
background-color: #fff;
img {
position: absolute;
z-index: 999;
width: 301px;
}
button {
width: 240px;
height: 40px;
position: absolute;
color: #fff;
bottom: 16px;
left: 30.5px;
background-color: rgba(56, 63, 69, 0.5);
}
.title-box {
width: 100%;
display: block;
text-align: center;
margin-top: 37px;
font-family: PingFangSC-Semibold;
font-size: 16px;
color: #00469c;
}
.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;
}
}
.confirm {
width: 240px;
height: 20px;
background-color: #fff;
// 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;
position: relative;
margin-top: 15px;
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;
}
}
.reject,
.same {
width: 175px;
height: 40px;
border-radius: 4px;
font-family: PingFangSC-Semibold;
font-size: 15px;
img {
width: 13px;
height: 13px;
}
}
.reject {
color: #656464;
border: 1px solid #656464;
}
.same {
color: #ffffff;
background: #00469c;
border: 1px solid #00469c;
}
.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;
}
}
}
input::placeholder {
color: #B4B4B5;
}
.font-color {
color: #656464;
}
textarea::placeholder {
color: #b4b4b5;
}
textarea {
text-align: right;
color: #666;
resize: none;
}
.footer-button {
padding-top: 15px;
padding-bottom: 15px;
}
.save {
width: 100%;
height: 45px;
color: #fff;
border-radius: 4px;
background-color: @headerColor;
}
.house {
background: #fff;
margin-top: 10px;
padding-bottom: 10px;
.plus {
display: flex;
justify-content: center;
align-items: center;
}
.card-upload {
position: relative;
width: 80px;
height: 80px;
border: 1px dashed #dcdcdd;
// display: flex;
// justify-content: center;
// align-items: center;
margin-top: 12px;
margin-left: 16px;
// float: left;
.close {
/* position: relative;
color: #F96F68;
margin-top: -100%;
margin-left: -10%;*/
position: absolute;
color: #F96F68;
top: -6px;
right: -6px;
img {
width: 14px;
height: 14px;
}
}
img {
/*width: 88px;
height: 88px;*/
width: 100%;
height: 100%;
}
.upload-btn {
width: 24px;
height: 24px;
}
}
}
.house:last-child, .house:nth-last-child(2) {
// margin-top: 0;
div {
float: left;
}
}
.upload-box {
display: flex;
justify-content: center;
margin-top: 15px;
div {
width: 172px;
height: 120px;
border: 1px dashed #dcdcdd;
text-align: center;
font-size: 14px;
color: #b4b4b5;
.front,
.back {
width: 172px;
height: 120px;
}
}
div:nth-of-type(2) {
margin-left: 7px;
}
img {
margin-top: 32px;
width: 58px;
height: 45px;
}
p {
margin-top: 12px;
font-size: 13px;
}
}
}
.modal {
background-color: rgba(0, 0, 0, 0) !important;
}
.trans-enter-active,
.trans-leave-active {
transition: opacity 0.5s;
}
.trans-enter,
.trans-leave-active {
opacity: 0;
}
.hide {
display: flex;
justify-content: flex-start;
align-items: center;
img {
width: 30px;
height: 30px;
margin-left: 65%;
}
}
.wrap {
padding-top: 92px;
}
.modal-show {
width: 100%;
height: 100%;
position: absolute;
display: flex;
z-index: 900;
background-color: rgba(56, 63, 69, 0.3);
justify-content: center;
align-items: center;
.down {
position: relative;
width: 314px;
height: 516px;
z-index: 999;
background-size: 301px 24.7px;
background-color: #fff;
}
.top {
width: 100%;
height: 44px;
font-family: PingFangSC-Semibold;
font-size: 16px;
letter-spacing: 0;
text-align: center;
line-height: 44px;
color: #fff;
background: #0041c4;
img {
width: 16px;
height: 16px;
float: right;
margin-top: 13px;
margin-right: 20px;
}
}
.down-content {
margin-top: 8px;
span:first-child {
font-family: PingFangSC-Regular;
font-size: 13px;
color: #656464;
letter-spacing: 0;
margin-left: 15px;
}
.photo {
width: 172px;
height: 120px;
border: 1px solid #dcdcdd;
border-radius: 2px;
margin: 0 auto;
margin-top: 12px;
background: url("../../assets/contractStart/photo.png") 70px no-repeat;
background-size: 24px 20px;
img {
width: 100%;
height: 100%;
}
}
}
button {
width: 240px;
height: 40px;
position: absolute;
color: #fff;
bottom: 10px;
left: 30.5px;
background-color: #0041c4;
border-radius: 4px;
}
}
</
style
>
src/pages/contractSigning/contract-signing.vue
100755 → 100644
View file @
acf90b99
<
template
>
<h-view
id=
"contract-signing"
>
<h-header
:proportion=
"[5, 1,
1
]"
class=
"bar-custom"
>
<h-header
:proportion=
"[5, 1,
3
]"
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=
"$routeGo()"
>
<span>
融租方案确认
</span>
</div>
<div
slot=
"right"
class=
"h-header-btn"
@
click=
"addNew()"
><span>
新增
</span></div>
</h-header>
<!--
<div
class=
"tab-style has-header"
>
<div
:class=
"
{ 'done': num === 1, 'undone': num !== 1 }" @click="num = 1; isRadio = false">
...
...
@@ -18,21 +20,22 @@
</div>
-->
<!-- 搜索 -->
<div
class=
"search"
>
<input
v-model=
"searchInput"
type=
"text"
placeholder=
"请输入承租人名称"
/
>
<input
v-model=
"searchInput"
type=
"text"
placeholder=
"请输入承租人名称"
>
</div>
<scroll
ref=
"scroll"
:updateData=
"[showLists]"
:pullUp=
"true"
@
pullingUp=
"loadMore"
>
<div
class=
"wrap"
>
<div
v-for=
"(item,index) in showLists"
:key=
"index"
class=
"contract-lists"
>
<div
class=
"pro-code"
@
click=
"goDetails(item)"
>
<img
src=
"@/assets/distributorSign/fileIcon.png"
alt
class=
"file-icon"
/
>
<img
src=
"@/assets/distributorSign/fileIcon.png"
alt
class=
"file-icon"
>
<p>
<span>
合同编号
</span>
<span>
{{
item
.
project_number
}}
</span>
</p>
<img
v-if=
"item.read_check === 'N'"
src=
"@/assets/constractSigning/unread.png"
alt
class=
"unread"
/
>
<img
v-if=
"item.read_check === 'Y'"
src=
"@/assets/constractSigning/read.png"
alt
class=
"unread"
/
>
<img
src=
"@/assets/constractSigning/righticon.png"
alt
class=
"arrow"
/
>
<img
v-if=
"item.read_check === 'N'"
src=
"@/assets/constractSigning/unread.png"
alt
class=
"unread"
>
<img
v-if=
"item.read_check === 'Y'"
src=
"@/assets/constractSigning/read.png"
alt
class=
"unread"
>
<img
src=
"@/assets/constractSigning/righticon.png"
alt
class=
"arrow"
>
</div>
<div
class=
"box"
>
<div
...
...
@@ -41,13 +44,13 @@
class=
"check-box"
@
click
.
stop=
"clickRadio(item)"
>
<div
v-show=
"!item.checked"
></div
>
<img
v-show=
"item.checked"
src=
"@/assets/contractCreate/selected.png"
alt=
"已选择"
/
>
<div
v-show=
"!item.checked"
/
>
<img
v-show=
"item.checked"
src=
"@/assets/contractCreate/selected.png"
alt=
"已选择"
>
</div>
<div
:style=
"
{ marginLeft: !isRadio ? '50px' : '0' }"
class="text"
style="flex: 0 1 calc(100vw - 55px)"
:style=
"
{ marginLeft: !isRadio ? '50px' : '0' }"
>
<div>
<p>
承租人
</p>
...
...
@@ -65,6 +68,7 @@
<!--
<p>
产品名称
</p>
-->
<!--
<p>
{{
item
.
division_n
}}
</p>
-->
<!--
</div>
-->
<div>
<p>
申请时间
</p>
<p>
{{
dateConverse
(
item
.
sale_date
)
}}
</p>
...
...
@@ -74,27 +78,27 @@
</div>
</div>
</scroll>
<!--
<div
class=
"check-bottom"
>
-->
<!--
<div
class=
"choose"
v-show=
"isRadio"
>
-->
<!--
<div
class=
"radio"
@
click=
"allChoose(!chooseAll)"
>
-->
<!--
<img
v-show=
"chooseAll"
src=
"@/assets/login/radio.png"
alt=
"radio"
/>
-->
<!--
<div
class=
"no-check"
v-show=
"!chooseAll"
></div>
-->
<!--
<span
:style=
"
{ color: chooseAll ? '#1d3fff' : 'rgb(212,214,212)' }">全选
</span>
-->
<!--
</div>
-->
<!--
<button
class=
"cancel"
@
click=
"cancelRadio"
>
× 取消批量
</button>
-->
<!--
<button
class=
"sign"
@
click=
"signContract"
>
签订征信授权书
</button>
-->
<!--
</div>
-->
<!--
<div
class=
"check-bottom"
>
-->
<!--
<div
class=
"choose"
v-show=
"isRadio"
>
-->
<!--
<div
class=
"radio"
@
click=
"allChoose(!chooseAll)"
>
-->
<!--
<img
v-show=
"chooseAll"
src=
"@/assets/login/radio.png"
alt=
"radio"
/>
-->
<!--
<div
class=
"no-check"
v-show=
"!chooseAll"
></div>
-->
<!--
<span
:style=
"
{ color: chooseAll ? '#1d3fff' : 'rgb(212,214,212)' }">全选
</span>
-->
<!--
</div>
-->
<!--
<button
class=
"cancel"
@
click=
"cancelRadio"
>
× 取消批量
</button>
-->
<!--
<button
class=
"sign"
@
click=
"signContract"
>
签订征信授权书
</button>
-->
<!--
</div>
-->
<!--
<div
class=
"button-box"
v-show=
"num == 1 && !isRadio"
>
-->
<!--
<div
class=
"go-radio"
@
click=
"isRadio = true"
>
-->
<!--
<img
src=
"@/assets/login/write.png"
alt=
"icon"
/>
-->
<!--
<span>
批量签署
</span>
-->
<!--
</div>
-->
<!--
</div>
-->
<!--
</div>
-->
<!--
<div
class=
"button-box"
v-show=
"num == 1 && !isRadio"
>
-->
<!--
<div
class=
"go-radio"
@
click=
"isRadio = true"
>
-->
<!--
<img
src=
"@/assets/login/write.png"
alt=
"icon"
/>
-->
<!--
<span>
批量签署
</span>
-->
<!--
</div>
-->
<!--
</div>
-->
<!--
</div>
-->
<div
v-if=
"showLists.length === 0"
>
<div
class=
"display"
>
<img
src=
"@/assets/messageCenter/noMsg.png"
alt
/
>
<img
src=
"@/assets/messageCenter/noMsg.png"
alt
>
</div>
</div>
</h-view>
...
...
@@ -107,7 +111,7 @@ import unCheck1 from '@/assets/constractSigning/no-undone.png'
import
unCheck2
from
'@/assets/constractSigning/yes-undone.png'
export
default
{
data
()
{
data
()
{
return
{
num
:
1
,
pagenum
:
1
,
...
...
@@ -131,7 +135,7 @@ export default {
},
watch
:
{
'num'
:
{
handler
(
newVal
,
oldVal
)
{
handler
(
newVal
,
oldVal
)
{
// this.$refs.scroll.update(false)
if
(
newVal
===
2
)
{
if
(
!
this
.
approvedFlag
)
{
...
...
@@ -145,7 +149,7 @@ export default {
}
},
},
searchInput
()
{
searchInput
()
{
let
vm
=
this
if
(
vm
.
timeout
)
{
clearTimeout
(
vm
.
timeout
)
...
...
@@ -155,13 +159,13 @@ export default {
},
1000
)
},
},
activated
()
{
activated
()
{
},
created
()
{
created
()
{
},
beforeRouteEnter
(
to
,
from
,
next
)
{
beforeRouteEnter
(
to
,
from
,
next
)
{
next
(
vm
=>
{
if
(
from
.
name
===
'MyInfo'
||
from
.
name
===
'MyContract'
)
{
vm
.
num
=
1
...
...
@@ -187,37 +191,37 @@ export default {
})
},
methods
:
{
signContract
()
{
let
list
=
this
.
showLists
.
filter
(
item
=>
item
.
checked
)
;
if
(
!
list
.
length
)
return
hlsPopup
.
showLongCenter
(
'请选择合同'
)
;
if
(
list
.
findIndex
(
item
=>
item
.
read_check
===
'N'
)
>
-
1
)
return
hlsPopup
.
showLongCenter
(
'您有授权书未阅读,请阅读后再签署'
);
list
=
list
.
map
(
item
=>
{
item
.
checked
=
false
;
return
item
});
window
.
localStorage
.
setItem
(
'handleContact'
,
JSON
.
stringify
(
list
))
;
this
.
$router
.
push
({
path
:
'/batchSign'
,
query
:
{
name
:
'contract'
}
})
;
signContract
()
{
let
list
=
this
.
showLists
.
filter
(
item
=>
item
.
checked
)
if
(
!
list
.
length
)
return
hlsPopup
.
showLongCenter
(
'请选择合同'
)
if
(
list
.
findIndex
(
item
=>
item
.
read_check
===
'N'
)
>
-
1
)
return
hlsPopup
.
showLongCenter
(
'您有授权书未阅读,请阅读后再签署'
)
list
=
list
.
map
(
item
=>
{
item
.
checked
=
false
;
return
item
})
window
.
localStorage
.
setItem
(
'handleContact'
,
JSON
.
stringify
(
list
))
this
.
$router
.
push
({
path
:
'/batchSign'
,
query
:
{
name
:
'contract'
}
})
},
clickRadio
(
item
)
{
item
.
checked
=
!
item
.
checked
;
clickRadio
(
item
)
{
item
.
checked
=
!
item
.
checked
this
.
chooseAll
=
this
.
showLists
.
every
(
item
=>
item
.
checked
)
;
this
.
$forceUpdate
()
;
this
.
chooseAll
=
this
.
showLists
.
every
(
item
=>
item
.
checked
)
this
.
$forceUpdate
()
},
allChoose
(
status
)
{
this
.
chooseAll
=
status
;
allChoose
(
status
)
{
this
.
chooseAll
=
status
this
.
showLists
=
this
.
showLists
.
map
(
item
=>
{
item
.
checked
=
status
;
return
item
;
})
;
item
.
checked
=
status
return
item
})
},
cancelRadio
()
{
this
.
isRadio
=
false
;
// 关闭多选菜单
this
.
allChoose
(
false
)
;
// 关闭全选按钮
cancelRadio
()
{
this
.
isRadio
=
false
// 关闭多选菜单
this
.
allChoose
(
false
)
// 关闭全选按钮
},
dateConverse
(
date
)
{
dateConverse
(
date
)
{
return
date
.
replace
(
/
\/
/g
,
'-'
)
},
// 合同查询
contractList
()
{
contractList
()
{
let
vm
=
this
if
(
vm
.
num
===
1
)
{
let
url
=
$config
.
basePath
+
'zm_prj_list_query'
...
...
@@ -234,8 +238,8 @@ export default {
vm
.
hlsPopup
.
hideLoading
()
if
(
res
.
result
===
'S'
)
{
vm
.
submitLists
=
res
.
lists
.
map
(
item
=>
{
item
.
checked
=
false
;
return
item
;
item
.
checked
=
false
return
item
})
vm
.
showLists
=
vm
.
submitLists
if
(
res
.
lists
.
length
>
0
&&
res
.
lists
.
length
<
10
)
{
...
...
@@ -263,8 +267,8 @@ export default {
if
(
res
.
result
===
'S'
)
{
console
.
log
(
res
.
lists
)
vm
.
approvedLists
=
res
.
lists
.
map
(
item
=>
{
item
.
checked
=
false
;
return
item
;
item
.
checked
=
false
return
item
})
vm
.
approvedFlag
=
true
vm
.
showLists
=
vm
.
approvedLists
...
...
@@ -280,7 +284,7 @@ export default {
}
},
loadMore
()
{
loadMore
()
{
let
vm
=
this
if
(
vm
.
num
===
1
)
{
vm
.
submitPagenum
++
...
...
@@ -358,7 +362,7 @@ export default {
})
}
},
async
submitSearch
()
{
async
submitSearch
()
{
let
vm
=
this
vm
.
submitPagenum
=
1
let
url
=
$config
.
basePath
+
'zm_prj_list_query'
...
...
@@ -376,8 +380,8 @@ export default {
if
(
res
.
result
===
'S'
)
{
vm
.
hlsPopup
.
hideLoading
()
vm
.
submitLists
=
res
.
lists
.
map
(
item
=>
{
item
.
checked
=
false
;
return
item
;
item
.
checked
=
false
return
item
})
if
(
vm
.
num
===
1
)
{
vm
.
showLists
=
vm
.
submitLists
...
...
@@ -394,7 +398,7 @@ export default {
return
false
}
},
approvedearch
()
{
approvedearch
()
{
let
vm
=
this
let
url
=
$config
.
basePath
+
'zm_prj_list_query'
vm
.
approvedPagenum
=
1
...
...
@@ -409,8 +413,8 @@ export default {
}
vm
.
hlsHttp
.
post
(
url
,
param
).
then
(
function
(
res
)
{
vm
.
approvedLists
=
res
.
lists
.
map
(
item
=>
{
item
.
checked
=
false
;
return
item
;
item
.
checked
=
false
return
item
})
if
(
vm
.
num
===
2
)
{
vm
.
showLists
=
vm
.
approvedLists
...
...
@@ -423,14 +427,14 @@ export default {
}
})
},
async
search
()
{
async
search
()
{
let
res
=
await
this
.
submitSearch
()
if
(
res
)
{
this
.
approvedearch
()
}
},
goDetails
(
item
)
{
goDetails
(
item
)
{
this
.
$router
.
push
({
name
:
'ContractDetail'
,
params
:
{
...
...
@@ -441,6 +445,12 @@ export default {
},
})
},
addNew
()
{
this
.
$router
.
push
({
name
:
'ContractNew'
,
})
},
},
}
</
script
>
...
...
src/router/index.js
View file @
acf90b99
...
...
@@ -68,6 +68,7 @@ const EntryInfo = resolve => require.ensure([], () => { resolve(require('@/pages
const
ElectronicSign
=
resolve
=>
require
.
ensure
([],
()
=>
{
resolve
(
require
(
'@/pages/ContractSigning/electronic-sign'
))
},
'contractSigning'
)
/* const BodyCheck = resolve=>require.ensure([],()=>{resolve(require(@/pages/ContractSigning/body-check')) }, 'contractSigning') */
const
ContractRepayPlan
=
resolve
=>
require
.
ensure
([],
()
=>
{
resolve
(
require
(
'@/pages/ContractSigning/contract-repay-plan'
))
},
'contractSigning'
)
const
ContractNew
=
resolve
=>
require
.
ensure
([],
()
=>
{
resolve
(
require
(
'@/pages/ContractSigning/contract-new'
))
},
'contractSigning'
)
// 首付款支付
const
FirstPay
=
resolve
=>
require
.
ensure
([],
()
=>
{
resolve
(
require
(
'@/pages/pay/firstPay/first-pay'
))
},
'firstPay'
)
...
...
@@ -275,6 +276,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
:
false
}},
{
path
:
'/electronic-sign'
,
component
:
ElectronicSign
,
name
:
'ElectronicSign'
,
meta
:
{
keepAlive
:
false
}},
{
path
:
'/contract-new'
,
component
:
ContractNew
,
name
:
'ContractNew'
,
meta
:
{
keepAlive
:
false
}},
// 首付款支付
{
path
:
'/first-pay'
,
component
:
FirstPay
,
name
:
'FirstPay'
,
meta
:
{
keepAlive
:
true
}},
{
path
:
'/pay-entry'
,
component
:
PayEntry
,
name
:
'PayEntry'
,
meta
:
{
keepAlive
:
true
}},
...
...
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