Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
丽
丽人贷管理后台
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
百灵美选
丽人贷管理后台
Commits
d9f9e863
Commit
d9f9e863
authored
May 24, 2023
by
caimeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
小商户相关的需求
parent
17ce7176
Changes
23
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
5096 additions
and
6 deletions
+5096
-6
README.md
README.md
+1
-1
index.js
src/router/index.js
+126
-0
api.js
src/server/api.js
+194
-2
request.js
src/utils/request.js
+0
-1
localDetail.vue
src/views/approval/localDetail.vue
+76
-0
localFirstList.vue
src/views/approval/localFirstList.vue
+325
-0
localPreDetail.vue
src/views/approval/localPreDetail.vue
+105
-0
localPreList.vue
src/views/approval/localPreList.vue
+282
-0
localSecondList.vue
src/views/approval/localSecondList.vue
+326
-0
clientDetail.vue
src/views/customer/clientDetail.vue
+507
-0
clientList.vue
src/views/customer/clientList.vue
+212
-0
clientMine.vue
src/views/customer/clientMine.vue
+235
-0
Assets.vue
src/views/customer/components/Assets.vue
+178
-0
Borrow.vue
src/views/customer/components/Borrow.vue
+206
-0
CreditCard.vue
src/views/customer/components/CreditCard.vue
+190
-0
DataUpload.vue
src/views/customer/components/DataUpload.vue
+190
-0
Family.vue
src/views/customer/components/Family.vue
+190
-0
Lawsuit.vue
src/views/customer/components/Lawsuit.vue
+190
-0
Warrant.vue
src/views/customer/components/Warrant.vue
+191
-0
detail.vue
src/views/customer/detail.vue
+2
-2
localAudit.vue
src/views/loan/localAudit.vue
+318
-0
localDetail.vue
src/views/loan/localDetail.vue
+659
-0
localList.vue
src/views/loan/localList.vue
+393
-0
No files found.
README.md
View file @
d9f9e863
...
...
@@ -5,7 +5,7 @@
-
密码:123456
-
手机:135 8832 2792
### 开发环境
### 开发环境
w
-
接口地址:http://47.99.245.36:8785
-
访问地址:本机IP地址
...
...
src/router/index.js
View file @
d9f9e863
...
...
@@ -190,6 +190,7 @@ export const asyncRoutes = [
]
},
// 审批管理
{
path
:
'/approval'
,
name
:
'approval'
,
...
...
@@ -210,9 +211,58 @@ export const asyncRoutes = [
noKeepAlive
:
true
,
title
:
'我的订单'
}
},
// 小商户
{
path
:
'pre'
,
name
:
'LocalPreList'
,
component
:
()
=>
import
(
'@/views/approval/localPreList'
),
meta
:
{
noKeepAlive
:
true
,
title
:
'预授信列表(小商户)'
}
},
{
path
:
'first'
,
name
:
'LocalFirstList'
,
component
:
()
=>
import
(
'@/views/approval/localFirstList'
),
meta
:
{
noKeepAlive
:
true
,
title
:
'初审授信(小商户)'
}
},
{
path
:
'second'
,
name
:
'LocalSecondList'
,
component
:
()
=>
import
(
'@/views/approval/localSecondList'
),
meta
:
{
noKeepAlive
:
true
,
title
:
'复审授信(小商户)'
}
},
{
path
:
'localPreDetail'
,
name
:
'LocalPreDetail'
,
component
:
()
=>
import
(
'@/views/approval/localPreDetail'
),
hidden
:
true
,
meta
:
{
noKeepAlive
:
true
,
title
:
'预授信详情'
}
},
{
path
:
'localDetail'
,
name
:
'LocalDetail'
,
component
:
()
=>
import
(
'@/views/approval/localDetail'
),
hidden
:
true
,
meta
:
{
noKeepAlive
:
true
,
title
:
'授信详情'
}
}
]
},
// 借款管理
{
path
:
'/loan'
,
name
:
'loan'
,
...
...
@@ -251,9 +301,40 @@ export const asyncRoutes = [
noKeepAlive
:
true
,
title
:
'放款确认'
}
},
// 小商户相关
{
path
:
'localLoanDetail'
,
name
:
'LocalLoanDetail'
,
component
:
()
=>
import
(
'@/views/loan/localDetail'
),
meta
:
{
noKeepAlive
:
true
,
title
:
'稽核详情(小商户)'
},
hidden
:
true
},
{
path
:
'localLoanAudit'
,
name
:
'LocalLoanAudit'
,
component
:
()
=>
import
(
'@/views/loan/localAudit'
),
meta
:
{
noKeepAlive
:
true
,
title
:
'稽核审批(小商户)'
}
},
{
path
:
'localLoanList'
,
name
:
'LocalLoanList'
,
component
:
()
=>
import
(
'@/views/loan/localList'
),
meta
:
{
noKeepAlive
:
true
,
title
:
'放款确认(小商户)'
}
}
]
},
// 商户管理
{
path
:
'/merchant'
,
name
:
'merchant'
,
...
...
@@ -299,6 +380,51 @@ export const asyncRoutes = [
}
]
},
// 小商户相关
{
path
:
'/client'
,
name
:
'client'
,
component
:
Layout
,
redirect
:
'/client/list'
,
alwaysShow
:
true
,
meta
:
{
noKeepAlive
:
true
,
title
:
'客户管理'
,
remixIcon
:
'home-4-line'
},
children
:
[
{
path
:
'list'
,
name
:
'ClientList'
,
component
:
()
=>
import
(
'@/views/customer/clientList'
),
meta
:
{
noKeepAlive
:
true
,
title
:
'客户列表'
}
},
{
path
:
'mine'
,
name
:
'ClientMine'
,
component
:
()
=>
import
(
'@/views/customer/clientMine'
),
meta
:
{
noKeepAlive
:
true
,
title
:
'我的客户'
}
},
{
path
:
'detail'
,
name
:
'ClientDetail'
,
component
:
()
=>
import
(
'@/views/customer/clientDetail'
),
hidden
:
true
,
meta
:
{
noKeepAlive
:
true
,
title
:
'客户详情'
}
}
]
},
{
path
:
'/local'
,
name
:
'local'
,
...
...
src/server/api.js
View file @
d9f9e863
...
...
@@ -492,7 +492,6 @@ export default {
},
// 客户认证信息
CustomerAuthInfo
(
data
)
{
return
request
({
...
...
@@ -533,7 +532,7 @@ export default {
return
request
({
url
:
'/xdCredit/xinHuCreditDetail'
,
method
:
'get'
,
params
:
data
params
:
data
})
},
// 信狐授信跟进
...
...
@@ -546,5 +545,198 @@ export default {
},
/**
* 小商户相关接口
* 客户管理
* 授信管理
* 借款管理
* **/
// 客户列表
LocalClientList
(
data
)
{
return
request
({
url
:
'/xshClient/list'
,
method
:
'post'
,
data
})
},
// 我的客户
LocalClientMine
(
data
)
{
return
request
({
url
:
'/xshClient/listByBd'
,
method
:
'post'
,
data
})
},
// 客户详情
LocalClientDetail
(
data
)
{
return
request
({
url
:
'/xshClient/detailed'
,
method
:
'get'
,
params
:
data
})
},
// 客户操作日志
LocalClientLog
(
data
)
{
return
request
({
url
:
'/xshClient/listOperLog'
,
method
:
'get'
,
params
:
data
})
},
// 客户信息保存
LocalClientSave
(
data
)
{
return
request
({
url
:
'/xshClient/saveUserDetailed'
,
method
:
'post'
,
data
})
},
// 客户提交授信
LocalClientSubmit
(
data
)
{
return
request
({
url
:
'/xshClient/submit'
,
method
:
'get'
,
params
:
data
})
},
// 小商户预授信列表
LocalPreCreditList
(
data
)
{
return
request
({
url
:
'/xshCredit/preList'
,
method
:
'post'
,
data
})
},
// 小商户预授信详情
LocalPreCreditDetail
(
data
)
{
return
request
({
url
:
'/xshCredit/preDetail'
,
method
:
'get'
,
params
:
data
})
},
// 小商户预授信捞回
LocalPreCreditRescue
(
data
)
{
return
request
({
url
:
'/xshCredit/getBack'
,
method
:
'post'
,
data
})
},
// 小商户初审列表
LocalFirstCreditList
(
data
)
{
return
request
({
url
:
'/xshCredit/creditList'
,
method
:
'post'
,
data
})
},
// 小商户初审详情
LocalFirstCreditDetail
(
data
)
{
return
request
({
url
:
'/xshCredit/creditDetail'
,
method
:
'get'
,
params
:
data
})
},
// 小商户初审提交
LocalFirstCreditSubmit
(
data
)
{
return
request
({
url
:
'/xshCredit/ratify'
,
method
:
'post'
,
data
})
},
// 小商户二审列表
LocalSecondCreditList
(
data
)
{
return
request
({
url
:
'/xshCredit/rpdCreditList'
,
method
:
'post'
,
data
})
},
// 小商户二审详情
LocalSecondCreditDetail
(
data
)
{
return
request
({
url
:
'/xshCredit/rpdCreditDetail'
,
method
:
'get'
,
params
:
data
})
},
// 小商户二审提交
LocalSecondCreditSubmit
(
data
)
{
return
request
({
url
:
'/xshCredit/rpdRatify'
,
method
:
'post'
,
data
})
},
// 授信报告数据
LocalCreditReport
(
data
)
{
return
request
({
url
:
'/xshCredit/thirdPartyReport'
,
method
:
'get'
,
params
:
data
})
},
// 稽核审批列表
LocalLoanAuditList
(
data
)
{
return
request
({
url
:
'/xshLoan/auditRaiseList'
,
method
:
'post'
,
data
})
},
// 稽核审批详情
LocalLoanAuditDetail
(
data
)
{
return
request
({
url
:
'/xshLoan/auditRaiseDetail'
,
method
:
'get'
,
params
:
data
})
},
// 稽核审批提交
LocalLoanAuditSubmit
(
data
)
{
return
request
({
url
:
'/xshLoan/auditAllot'
,
method
:
'post'
,
data
})
},
// 放款确认列表
LocalLoanList
(
data
)
{
return
request
({
url
:
'/xshLoan/loanConfirmList'
,
method
:
'post'
,
data
})
},
// 放款确认
LocalLoanConfirm
(
data
)
{
return
request
({
url
:
'/xshLoan/confirmLoan'
,
method
:
'post'
,
data
})
},
// 放款取消
LocalLoanCancel
(
data
)
{
return
request
({
url
:
'/xshLoan/cancelLoan'
,
method
:
'post'
,
data
})
},
}
src/utils/request.js
View file @
d9f9e863
...
...
@@ -151,7 +151,6 @@ instance.interceptors.request.use(
*/
instance
.
interceptors
.
response
.
use
(
(
response
)
=>
{
console
.
log
(
response
,
'返回结果'
);
const
token
=
response
.
headers
[
'x-auth-token'
]
token
&&
Cookies
.
set
(
'x-token'
,
token
);
return
handleData
(
response
)
...
...
src/views/approval/localDetail.vue
0 → 100644
View file @
d9f9e863
<
template
>
<div
v-if=
'detail!==null'
class=
'page'
>
<!--用户基础信息-->
<template
v-if=
'detail.clientDetail!==null'
>
<user-base-info
:contacts=
'detail.linkPhoneList'
:base-info=
'detail.clientDetail'
/>
</
template
>
<!--用户项目信息-->
<
template
v-if=
'detail.projectInfoResponse!==null'
>
<user-project-info
:project-info=
'detail.projectInfoResponse'
/>
</
template
>
<!--其它信息-->
<user-other-info
:info=
'detail'
/>
<!--操作日志-->
<block-header
title=
'操作日志'
/>
<
template
v-if=
'detail.operationLogResponse!==null'
>
<operation-log
:log=
'detail.operationLogResponse'
/>
</
template
>
<no-data
v-else
/>
<!--申述操作-->
<
template
v-if=
'false'
>
<pre-plead
/>
</
template
>
</div>
</template>
<
script
>
import
API
from
'@/server/api'
export
default
{
name
:
'PreDetail'
,
data
()
{
return
{
isIncrease
:
false
,
creditNo
:
''
,
creditType
:
''
,
detail
:
null
}
},
async
created
()
{
const
{
query
}
=
this
.
$route
if
(
query
&&
query
.
creditNo
)
{
this
.
creditNo
=
query
.
creditNo
this
.
creditType
=
query
.
creditType
await
this
.
init
()
}
},
methods
:
{
async
init
()
{
const
creditNo
=
this
.
creditNo
const
creditType
=
this
.
creditType
const
result
=
await
API
.
creditDetail
({
creditNo
,
creditType
})
this
.
detail
=
result
.
result
;
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
increase
){
this
.
isIncrease
=
true
;
}
}
}
}
</
script
>
<
style
lang=
'scss'
src=
'./index.scss'
></
style
>
src/views/approval/localFirstList.vue
0 → 100644
View file @
d9f9e863
<
template
>
<div
class=
'page-fence'
>
<!--搜索-->
<block-header
title=
'搜索'
/>
<div
class=
'search'
>
<el-form
label-suffix=
':'
:inline=
'true'
ref=
'form'
:model=
'queryForm'
class=
'form-inline'
>
<el-form-item
prop=
'creditNo'
label=
'授信编号'
>
<el-input
v-model=
'queryForm.creditNo'
clearable
placeholder=
'请输入授信编号'
/>
</el-form-item>
<el-form-item
prop=
'clientName'
label=
'客户姓名'
>
<el-input
v-model=
'queryForm.clientName'
clearable
placeholder=
'请输入客户姓名'
/>
</el-form-item>
<el-form-item
prop=
'mobile'
label=
'手机号码'
>
<el-input
v-model=
'queryForm.mobile'
clearable
placeholder=
'请输入手机号码'
/>
</el-form-item>
<template
v-if=
'searchData!==null'
>
<el-form-item
prop=
'creditType'
label=
'初审授信结果'
>
<el-select
:popper-append-to-body=
'false'
v-model=
'queryForm.creditType'
clearable
placeholder=
'请选择授信类型'
>
<el-option
v-for=
'(item,index) in searchData.xshcreditStatusResponseList'
:key=
'index'
:label=
'item.creditStatusStr'
:value=
'item.creditStatus'
></el-option>
</el-select>
</el-form-item>
</
template
>
<el-form-item
v-if=
"false"
prop=
'certNo'
label=
'身份证号'
>
<el-input
v-model=
'queryForm.certNo'
clearable
placeholder=
'请输入'
/>
</el-form-item>
<el-form-item
prop=
'time'
label=
'申请时间'
>
<el-date-picker
v-model=
'queryForm.time'
type=
'datetimerange'
:picker-options=
'pickerConfig'
:default-time=
"['00:00:00', '23:59:59']"
value-format=
'yyyy-MM-dd HH:mm:ss'
range-separator=
'至'
start-placeholder=
'开始时间'
end-placeholder=
'结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
icon=
'el-icon-search'
type=
'primary'
@
click=
'onSearch'
>
搜 索
</el-button>
<el-button
icon=
'el-icon-delete'
type=
'default'
@
click=
"onReset('form')"
>
重置
</el-button>
</el-form-item>
</el-form>
</div>
<!--操作菜单栏-->
<block-header
title=
'初审授信列表'
/>
<!--表格-->
<el-table
ref=
'tableSort'
v-loading=
'listLoading'
border
size=
'small'
:data=
'list'
style=
'width: 100%'
>
<el-table-column
v-for=
'(item, index) in finallyColumns'
:key=
'index'
align=
'center'
:label=
'item.label'
:sortable=
'item.sortable'
:width=
'item.width'
:fixed=
'!!item.fixed'
:show-overflow-tooltip=
'!!item.overflow'
>
<
template
#
default=
'{ row }'
>
<span
v-if=
'item.label==="授信额度"'
>
{{
money
(
row
[
item
.
prop
])
}}
</span>
<span
v-else-if=
'item.label==="授信类型"'
>
<el-tag
v-if=
'row.creditTypeStr==="提额授信"'
effect=
'plain'
size=
'mini'
>
{{
row
.
creditTypeStr
}}
</el-tag>
<el-tag
v-else
size=
'mini'
>
{{
row
.
creditTypeStr
}}
</el-tag>
</span>
<span
v-else-if=
'item.label==="授信状态"'
>
<el-tag
v-if=
'row.creditState==="CREATED"'
size=
'mini'
>
{{
row
.
creditStatusStr
}}
</el-tag>
<el-tag
v-if=
'row.creditState==="授信中"'
type=
'warning'
size=
'mini'
>
{{
row
.
creditStatusStr
}}
</el-tag>
<el-tag
v-if=
'row.creditState==="授信通过"'
type=
'success'
size=
'mini'
>
{{
row
.
creditStatusStr
}}
</el-tag>
</span>
<span
v-else
>
{{
row
[
item
.
prop
]
}}
</span>
</
template
>
</el-table-column>
<
template
>
<el-table-column
fixed=
'right'
align=
'center'
label=
'操作'
>
<template
#
default=
'
{ row }'>
<el-button
size=
'mini'
type=
'text'
@
click=
'handleView(row)'
>
详情
</el-button>
</
template
>
</el-table-column>
</template>
</el-table>
<!--分页-->
<el-pagination
:current-page=
'queryForm.current'
layout=
'total,sizes, prev, pager, next'
:page-sizes=
'[10,20,30,40,50,100]'
:page-size=
'queryForm.size'
:total=
'total'
background
@
size-change=
'handleSizeChange'
@
current-change=
'handleCurrentChange'
/>
</div>
</template>
<
script
>
import
_
from
'lodash'
import
API
from
'@/server/api'
import
Reassignment
from
'./components/reassignment'
import
{
mapGetters
}
from
'vuex'
import
Vue
from
'vue'
export
default
{
name
:
'LocalFirstList'
,
data
()
{
return
{
checkList
:
[
'授信编号'
,
'客户姓名'
,
'手机号码'
,
'对应BD'
,
'申请时间'
,
'初审授信结果'
,
'授信额度'
],
columns
:
[
{
order
:
1
,
width
:
260
,
label
:
'授信编号'
,
prop
:
'creditNo'
},
{
order
:
2
,
label
:
'客户姓名'
,
prop
:
'clientName'
},
{
order
:
2
,
label
:
'手机号码'
,
prop
:
'mobile'
},
{
order
:
3
,
label
:
'对应BD'
,
prop
:
'bd'
},
{
order
:
4
,
label
:
'申请时间'
,
prop
:
'applyTime'
},
{
order
:
5
,
label
:
'初审授信结果'
,
prop
:
'creditState'
},
{
order
:
6
,
label
:
'授信额度'
,
prop
:
'creditLimit'
}
],
list
:
[],
listLoading
:
true
,
total
:
0
,
pickerConfig
:
this
.
datePickerOptions
,
queryForm
:
{
current
:
1
,
size
:
10
,
certNo
:
''
,
creditNo
:
''
,
clientName
:
''
,
mobile
:
''
,
state
:
''
,
creditResult
:
''
,
creditType
:
''
,
time
:
''
,
startTime
:
''
,
endTime
:
''
}
}
},
computed
:
{
finallyColumns
()
{
let
finallyArray
=
[]
this
.
checkList
.
forEach
((
checkItem
)
=>
{
finallyArray
.
push
(
this
.
columns
.
filter
((
item
)
=>
item
.
label
===
checkItem
)[
0
]
)
})
return
_
.
sortBy
(
finallyArray
,
(
item
)
=>
item
.
order
)
},
...
mapGetters
([
'searchData'
,
'user'
])
},
async
mounted
()
{
await
this
.
fetchData
()
},
methods
:
{
onSearch
()
{
const
{
time
}
=
this
.
queryForm
this
.
queryForm
.
current
=
1
if
(
time
)
{
this
.
queryForm
.
startTime
=
time
[
0
]
this
.
queryForm
.
endTime
=
time
[
1
]
}
else
{
this
.
queryForm
.
startTime
=
''
this
.
queryForm
.
endTime
=
''
}
this
.
fetchData
()
},
handleView
(
row
)
{
const
{
creditNo
}
=
row
let
routeUrl
=
this
.
$router
.
resolve
({
path
:
'/approval/localDetail'
,
query
:
{
creditNo
}
})
window
.
open
(
routeUrl
.
href
,
'_blank'
)
},
// 页码变更
handleSizeChange
(
val
)
{
this
.
queryForm
.
size
=
val
this
.
queryForm
.
current
=
1
this
.
fetchData
()
},
handleCurrentChange
(
val
)
{
this
.
queryForm
.
current
=
val
this
.
fetchData
()
},
// 初始化列表数据
async
fetchData
()
{
this
.
listLoading
=
true
const
form
=
this
.
queryForm
const
params
=
Object
.
assign
({},
form
)
delete
params
.
time
params
.
userId
=
this
.
user
.
userId
const
result
=
await
API
.
LocalFirstCreditList
({
...
params
})
const
{
records
,
total
}
=
result
.
result
this
.
list
=
records
this
.
total
=
total
this
.
listLoading
=
false
},
// 修改上下线状态
async
handleChangeOnLineStatus
(
e
)
{
const
userId
=
this
.
user
.
userId
const
userDutyState
=
e
?
'ONLINE'
:
'OFFLINE'
const
result
=
await
API
.
approveOnOff
({
userId
,
userDutyState
})
if
(
result
.
success
)
{
const
msg
=
userDutyState
===
'ONLINE'
?
'已上线'
:
'已下线'
Vue
.
prototype
.
$baseMessage
(
msg
,
'success'
)
}
},
// 审批
handleApproval
(
row
)
{
const
{
creditNo
}
=
row
let
routeUrl
=
this
.
$router
.
resolve
({
path
:
'/approvalDetail'
,
query
:
{
creditNo
,
approval
:
'approval'
}
})
window
.
open
(
routeUrl
.
href
,
'_blank'
)
},
// 转派
handleReassignment
(
row
)
{
this
.
visible
=
true
this
.
item
=
row
}
}
}
</
script
>
<
style
lang=
'scss'
scoped
>
.page-fence
{
::v-deep
{
i
{
cursor
:
pointer
;
}
}
box-sizing
:
border-box
;
padding
:
20px
;
}
</
style
>
<
style
lang=
'scss'
>
.custom-table-checkbox
{
.el-checkbox
{
display
:
block
!
important
;
margin
:
0
0
$base-padding
/
4
0
;
}
}
.action-bar
{
margin-bottom
:
15px
;
}
</
style
>
src/views/approval/localPreDetail.vue
0 → 100644
View file @
d9f9e863
<
template
>
<div
v-if=
'detail!==null'
class=
'page'
>
<block-header
title=
'基础信息'
/>
<el-descriptions
v-if=
'detail.preBasisInfoResponse!==null'
style=
'margin-bottom: 20px;'
border
size=
'small'
:column=
'3'
>
<el-descriptions-item
label-class-name=
'labelCls'
label=
'客户姓名'
>
{{
detail
.
preBasisInfoResponse
.
realName
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
'labelCls'
label=
'手机号码'
>
{{
detail
.
preBasisInfoResponse
.
mobile
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
'labelCls'
label=
'身份证号'
>
{{
detail
.
preBasisInfoResponse
.
idCard
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
'labelCls'
label=
'户籍地址'
>
{{
detail
.
preBasisInfoResponse
.
address
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
'labelCls'
label=
'申请时间'
>
{{
detail
.
preBasisInfoResponse
.
applyDate
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
'labelCls'
label=
'授信类型'
>
{{
detail
.
preBasisInfoResponse
.
creditTypeStr
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
'labelCls'
label=
'授信状态'
>
{{
detail
.
preBasisInfoResponse
.
preStateStr
}}
<template
v-if=
'detail.preBasisInfoResponse.preState === "PRE_CREDIT_REFUSE"'
>
<el-button
@
click=
'handlePlead'
size=
'mini'
style=
'margin-left: 10px'
type=
'primary'
>
申诉
</el-button>
</
template
>
</el-descriptions-item>
<el-descriptions-item
label-class-name=
'labelCls'
label=
'商户区域'
>
{{ detail.preBasisInfoResponse.regionName }}
</el-descriptions-item>
<!--<el-descriptions-item label-class-name='labelCls' label='首次授信'></el-descriptions-item>-->
</el-descriptions>
<!--操作日志-->
<block-header
title=
'第三方报告'
/>
<div
v-if=
'operationLogResponse && operationLogResponse.length'
>
<operation-log
:log=
'operationLogResponse'
/>
</div>
<no-data
v-else
/>
<!--申述弹框-->
<
template
v-if=
'visible'
>
<pre-plead
:dialog-visible=
'visible'
:item=
'item'
@
handleClose=
'visible = false'
@
callback=
'init'
/>
</
template
>
</div>
</template>
<
script
>
import
API
from
'@/server/api'
import
PreOperationLog
from
'@/components/operation-log'
export
default
{
name
:
'PreDetail'
,
components
:
{
PreOperationLog
},
data
()
{
return
{
visible
:
false
,
item
:
null
,
preCreditNo
:
''
,
detail
:
null
,
reportResponse
:[],
operationLogResponse
:[]
}
},
async
created
()
{
const
{
query
}
=
this
.
$route
if
(
query
&&
query
.
preCreditNo
)
{
this
.
preCreditNo
=
query
.
preCreditNo
await
this
.
init
()
}
},
methods
:
{
async
init
()
{
const
preCreditNo
=
this
.
preCreditNo
const
result
=
await
API
.
preCreditDetail
({
preCreditNo
})
const
data
=
result
.
result
const
{
reportResponse
,
operationLogResponse
}
=
data
;
console
.
log
(
data
,
'返回数据'
)
this
.
reportResponse
=
reportResponse
;
this
.
operationLogResponse
=
operationLogResponse
;
this
.
detail
=
data
;
},
// 申述
handlePlead
()
{
this
.
item
=
this
.
detail
this
.
item
.
preCreditNo
=
this
.
preCreditNo
this
.
visible
=
true
}
}
}
</
script
>
<
style
lang=
'scss'
src=
'./index.scss'
></
style
>
src/views/approval/localPreList.vue
0 → 100644
View file @
d9f9e863
<
template
>
<div
class=
'page-fence'
>
<!--搜索-->
<block-header
title=
'搜索'
/>
<div
class=
'search'
>
<el-form
ref=
'form'
label-suffix=
':'
:inline=
'true'
:model=
'queryForm'
class=
'form-inline'
>
<el-form-item
prop=
'mobile'
label=
'手机号码'
>
<el-input
v-model=
'queryForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
<el-form-item
prop=
'clientName'
label=
'客户姓名'
>
<el-input
v-model=
'queryForm.clientName'
clearable
placeholder=
'请输入'
/>
</el-form-item>
<el-form-item
prop=
'preCreditNo'
label=
'授信编号'
>
<el-input
v-model=
'queryForm.preCreditNo'
clearable
placeholder=
'请输入'
/>
</el-form-item>
<el-form-item
v-if=
'searchData!==null'
prop=
'preStatus'
label=
'授信状态'
>
<el-select
v-model=
'queryForm.preStatus'
:popper-append-to-body=
'false'
clearable
placeholder=
'请选择授信状态'
>
<el-option
v-for=
'(item,index) in searchData.xshPreStatusList'
:key=
'index'
:label=
'item.preStatusStr'
:value=
'item.preStatus'
></el-option>
</el-select>
</el-form-item>
<!--
<el-form-item
prop=
'certNo'
label=
'身份证号'
>
-->
<!--
<el-input
v-model=
'queryForm.certNo'
clearable
placeholder=
'请输入'
/>
-->
<!--
</el-form-item>
-->
<el-form-item
prop=
'time'
label=
'申请时间'
>
<el-date-picker
v-model=
'queryForm.time'
type=
'datetimerange'
:picker-options=
'pickerConfig'
:default-time=
"['00:00:00', '23:59:59']"
value-format=
'yyyy-MM-dd HH:mm:ss'
range-separator=
'至'
start-placeholder=
'开始时间'
end-placeholder=
'结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
icon=
'el-icon-search'
type=
'primary'
@
click=
'onSubmit'
>
搜 索
</el-button>
<el-button
icon=
'el-icon-delete'
type=
'default'
@
click=
"onReset('form')"
>
重置
</el-button>
</el-form-item>
</el-form>
</div>
<block-header
title=
'预授信列表'
/>
<!--表格-->
<el-table
ref=
'tableSort'
v-loading=
'listLoading'
border
:data=
'list'
style=
'width: 100%'
>
<el-table-column
v-for=
'(item, index) in finallyColumns'
:key=
'index'
align=
'center'
:label=
'item.label'
:sortable=
'item.sortable'
:width=
'item.width'
:fixed=
'!!item.fixed'
:show-overflow-tooltip=
'!!item.overflow'
>
<template
#
default=
'
{ row }'>
<div
v-if=
"item.prop==='preCreditState'"
>
<el-tag
v-if=
'row[item.prop]==="审核中"'
type=
'warning'
>
{{
row
[
item
.
prop
]
}}
</el-tag>
<el-tag
v-else-if=
'row[item.prop]==="审核通过"'
type=
'success'
>
{{
row
[
item
.
prop
]
}}
</el-tag>
<el-tag
v-else-if=
'row[item.prop]==="审核拒绝"'
type=
'danger'
>
{{
row
[
item
.
prop
]
}}
</el-tag>
<el-tag
v-else
size=
'mini'
>
{{
row
[
item
.
prop
]
}}
</el-tag>
</div>
<span
v-else
>
{{
row
[
item
.
prop
]
}}
</span>
</
template
>
</el-table-column>
<el-table-column
fixed=
'right'
align=
'center'
label=
'操作'
>
<
template
#
default=
'{ row }'
>
<el-button
type=
'text'
@
click=
'handleDetail(row)'
>
详情
</el-button>
</
template
>
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
:current-page=
'queryForm.current'
layout=
'total,sizes, prev, pager, next'
:page-sizes=
'[10,20,30,40,50,100]'
background
:page-size=
'queryForm.size'
:total=
'total'
@
size-change=
'handleSizeChange'
@
current-change=
'handleCurrentChange'
/>
<!-- 申述 -->
<!--申述弹框-->
<
template
v-if=
'visible'
>
<pre-plead
:dialog-visible=
'visible'
:item=
'item'
@
handleClose=
'visible = false'
@
callback=
'fetchData'
/>
</
template
>
</div>
</template>
<
script
>
import
_
from
'lodash'
import
API
from
'@/server/api'
import
moment
from
'moment'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'CreditPre'
,
data
()
{
return
{
visible
:
false
,
item
:
null
,
checkList
:
[
'授信编号'
,
'客户姓名'
,
'手机号码'
,
'对应BD'
,
'申请时间'
,
'授信状态'
],
columns
:
[
{
order
:
1
,
width
:
250
,
label
:
'授信编号'
,
prop
:
'preCreditNo'
},
{
order
:
2
,
label
:
'客户姓名'
,
prop
:
'clientName'
},
{
order
:
3
,
label
:
'手机号码'
,
prop
:
'mobile'
},
{
order
:
4
,
label
:
'对应BD'
,
prop
:
'bd'
},
{
order
:
7
,
label
:
'申请时间'
,
prop
:
'applyTime'
},
{
order
:
8
,
label
:
'授信状态'
,
prop
:
'preCreditState'
}
],
list
:
[],
listLoading
:
true
,
pickerConfig
:
this
.
datePickerOptions
,
total
:
1
,
queryForm
:
{
current
:
1
,
size
:
10
,
mobile
:
''
,
clientName
:
''
,
preCreditNo
:
''
,
certNo
:
''
,
// 身份证号码
preStatus
:
''
,
time
:
''
,
startTime
:
''
,
endTime
:
''
}
}
},
computed
:
{
finallyColumns
()
{
let
finallyArray
=
[]
this
.
checkList
.
forEach
((
checkItem
)
=>
{
finallyArray
.
push
(
this
.
columns
.
filter
((
item
)
=>
item
.
label
===
checkItem
)[
0
]
)
})
return
_
.
sortBy
(
finallyArray
,
(
item
)
=>
item
.
order
)
},
...
mapGetters
([
'searchData'
])
},
mounted
()
{
this
.
fetchData
()
},
methods
:
{
// 申诉弹框
handlePlead
(
row
)
{
this
.
item
=
row
console
.
log
(
row
,
'当前行信息'
)
this
.
visible
=
true
},
// 搜索
onSubmit
()
{
const
{
time
}
=
this
.
queryForm
this
.
queryForm
.
current
=
1
if
(
time
)
{
this
.
queryForm
.
startTime
=
time
[
0
]
this
.
queryForm
.
endTime
=
time
[
1
]
}
else
{
this
.
queryForm
.
startTime
=
''
this
.
queryForm
.
endTime
=
''
}
this
.
fetchData
()
},
// 预授信详情
handleDetail
(
row
)
{
const
{
preCreditNo
}
=
row
this
.
$router
.
push
({
path
:
'/approval/localPreDetail'
,
query
:
{
preCreditNo
}
})
},
handleCurrentChange
(
val
)
{
this
.
queryForm
.
current
=
val
this
.
fetchData
()
},
// 页码变更
handleSizeChange
(
val
)
{
this
.
queryForm
.
size
=
val
this
.
queryForm
.
current
=
1
this
.
fetchData
()
},
async
fetchData
()
{
try
{
this
.
listLoading
=
true
const
form
=
this
.
queryForm
const
params
=
Object
.
assign
({},
form
)
delete
params
.
time
const
result
=
await
API
.
LocalPreCreditList
({
...
params
})
const
{
records
,
total
}
=
result
.
result
this
.
list
=
records
this
.
total
=
total
}
catch
(
err
){
console
.
log
(
'初始化预授信列表报错'
,
err
);
}
this
.
listLoading
=
false
}
}
}
</
script
>
<
style
lang=
'scss'
scoped
>
.page-fence
{
::v-deep
{
i
{
cursor
:
pointer
;
}
}
box-sizing
:
border-box
;
padding
:
20px
;
}
</
style
>
<
style
lang=
'scss'
>
.custom-table-checkbox
{
.el-checkbox
{
display
:
block
!
important
;
margin
:
0
0
$base-padding
/
4
0
;
}
}
.action-bar
{
margin-bottom
:
15px
;
}
</
style
>
src/views/approval/localSecondList.vue
0 → 100644
View file @
d9f9e863
<
template
>
<div
class=
'page-fence'
>
<!--搜索-->
<block-header
title=
'搜索'
/>
<div
class=
'search'
>
<el-form
label-suffix=
':'
:inline=
'true'
ref=
'form'
:model=
'queryForm'
class=
'form-inline'
>
<el-form-item
prop=
'creditNo'
label=
'授信编号'
>
<el-input
v-model=
'queryForm.creditNo'
clearable
placeholder=
'请输入授信编号'
/>
</el-form-item>
<el-form-item
prop=
'clientName'
label=
'客户姓名'
>
<el-input
v-model=
'queryForm.clientName'
clearable
placeholder=
'请输入客户姓名'
/>
</el-form-item>
<el-form-item
prop=
'mobile'
label=
'手机号码'
>
<el-input
v-model=
'queryForm.mobile'
clearable
placeholder=
'请输入手机号码'
/>
</el-form-item>
<template
v-if=
'searchData!==null'
>
<el-form-item
prop=
'state'
label=
'复审授信结果'
>
<el-select
:popper-append-to-body=
'false'
v-model=
'queryForm.state'
clearable
placeholder=
'请选择授信类型'
>
<el-option
v-for=
'(item,index) in searchData.xshcreditStatusResponseList'
:key=
'index'
:label=
'item.creditStatusStr'
:value=
'item.creditStatus'
></el-option>
</el-select>
</el-form-item>
</
template
>
<el-form-item
v-if=
"false"
prop=
'certNo'
label=
'身份证号'
>
<el-input
v-model=
'queryForm.certNo'
clearable
placeholder=
'请输入'
/>
</el-form-item>
<el-form-item
prop=
'time'
label=
'申请时间'
>
<el-date-picker
v-model=
'queryForm.time'
type=
'datetimerange'
:picker-options=
'pickerConfig'
:default-time=
"['00:00:00', '23:59:59']"
value-format=
'yyyy-MM-dd HH:mm:ss'
range-separator=
'至'
start-placeholder=
'开始时间'
end-placeholder=
'结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
icon=
'el-icon-search'
type=
'primary'
@
click=
'onSearch'
>
搜 索
</el-button>
<el-button
icon=
'el-icon-delete'
type=
'default'
@
click=
"onReset('form')"
>
重置
</el-button>
</el-form-item>
</el-form>
</div>
<!--操作菜单栏-->
<block-header
title=
'复审授信列表'
/>
<!--表格-->
<el-table
ref=
'tableSort'
v-loading=
'listLoading'
border
size=
'small'
:data=
'list'
style=
'width: 100%'
>
<el-table-column
v-for=
'(item, index) in finallyColumns'
:key=
'index'
align=
'center'
:label=
'item.label'
:sortable=
'item.sortable'
:width=
'item.width'
:fixed=
'!!item.fixed'
:show-overflow-tooltip=
'!!item.overflow'
>
<
template
#
default=
'{ row }'
>
<span
v-if=
'item.label==="授信额度"'
>
{{
money
(
row
[
item
.
prop
])
}}
</span>
<span
v-else-if=
'item.label==="客户信息"'
>
{{
row
.
realName
}}
<br
/>
{{
row
.
mobile
}}
</span>
<span
v-else-if=
'item.label==="授信类型"'
>
<el-tag
v-if=
'row.creditTypeStr==="提额授信"'
effect=
'plain'
size=
'mini'
>
{{
row
.
creditTypeStr
}}
</el-tag>
<el-tag
v-else
size=
'mini'
>
{{
row
.
creditTypeStr
}}
</el-tag>
</span>
<span
v-else-if=
'item.label==="授信状态"'
>
<el-tag
v-if=
'row.creditStatus==="CREATED"'
size=
'mini'
>
{{
row
.
creditStatusStr
}}
</el-tag>
<el-tag
v-if=
'row.creditStatus==="CREDIT_ING"'
type=
'warning'
size=
'mini'
>
{{
row
.
creditStatusStr
}}
</el-tag>
<el-tag
v-if=
'row.creditStatus==="FINISHED"'
type=
'success'
size=
'mini'
>
{{
row
.
creditStatusStr
}}
</el-tag>
</span>
<span
v-else
>
{{
row
[
item
.
prop
]
}}
</span>
</
template
>
</el-table-column>
<
template
>
<el-table-column
fixed=
'right'
align=
'center'
label=
'操作'
>
<template
#
default=
'
{ row }'>
<el-button
size=
'mini'
type=
'text'
@
click=
'handleView(row)'
>
详情
</el-button>
</
template
>
</el-table-column>
</template>
</el-table>
<!--分页-->
<el-pagination
:current-page=
'queryForm.current'
layout=
'total,sizes, prev, pager, next'
:page-sizes=
'[10,20,30,40,50,100]'
:page-size=
'queryForm.size'
:total=
'total'
background
@
size-change=
'handleSizeChange'
@
current-change=
'handleCurrentChange'
/>
</div>
</template>
<
script
>
import
_
from
'lodash'
import
API
from
'@/server/api'
import
Reassignment
from
'./components/reassignment'
import
{
mapGetters
}
from
'vuex'
import
Vue
from
'vue'
export
default
{
name
:
'LocalFirstList'
,
data
()
{
return
{
checkList
:
[
'授信编号'
,
'客户姓名'
,
'手机号码'
,
'对应BD'
,
'申请时间'
,
'复审授信结果'
,
'授信额度'
],
columns
:
[
{
order
:
1
,
width
:
260
,
label
:
'授信编号'
,
prop
:
'creditNo'
},
{
order
:
2
,
label
:
'客户姓名'
,
prop
:
'clientName'
},
{
order
:
2
,
label
:
'手机号码'
,
prop
:
'mobile'
},
{
order
:
3
,
label
:
'对应BD'
,
prop
:
'bd'
},
{
order
:
4
,
label
:
'申请时间'
,
prop
:
'applyTime'
},
{
order
:
5
,
label
:
'复审授信结果'
,
prop
:
'creditState'
},
{
order
:
6
,
label
:
'授信额度'
,
prop
:
'creditLimit'
}
],
list
:
[],
listLoading
:
true
,
total
:
0
,
pickerConfig
:
this
.
datePickerOptions
,
queryForm
:
{
current
:
1
,
size
:
10
,
certNo
:
''
,
creditNo
:
''
,
clientName
:
''
,
mobile
:
''
,
state
:
''
,
time
:
''
,
startTime
:
''
,
endTime
:
''
}
}
},
computed
:
{
finallyColumns
()
{
let
finallyArray
=
[]
this
.
checkList
.
forEach
((
checkItem
)
=>
{
finallyArray
.
push
(
this
.
columns
.
filter
((
item
)
=>
item
.
label
===
checkItem
)[
0
]
)
})
return
_
.
sortBy
(
finallyArray
,
(
item
)
=>
item
.
order
)
},
...
mapGetters
([
'searchData'
,
'user'
])
},
async
mounted
()
{
await
this
.
fetchData
()
},
methods
:
{
onSearch
()
{
const
{
time
}
=
this
.
queryForm
this
.
queryForm
.
current
=
1
if
(
time
)
{
this
.
queryForm
.
startTime
=
time
[
0
]
this
.
queryForm
.
endTime
=
time
[
1
]
}
else
{
this
.
queryForm
.
startTime
=
''
this
.
queryForm
.
endTime
=
''
}
this
.
fetchData
()
},
handleView
(
row
)
{
const
{
creditNo
}
=
row
let
routeUrl
=
this
.
$router
.
resolve
({
path
:
'/approval/localDetail'
,
query
:
{
creditNo
}
})
window
.
open
(
routeUrl
.
href
,
'_blank'
)
},
// 页码变更
handleSizeChange
(
val
)
{
this
.
queryForm
.
size
=
val
this
.
queryForm
.
current
=
1
this
.
fetchData
()
},
handleCurrentChange
(
val
)
{
this
.
queryForm
.
current
=
val
this
.
fetchData
()
},
// 初始化列表数据
async
fetchData
()
{
this
.
listLoading
=
true
const
form
=
this
.
queryForm
const
params
=
Object
.
assign
({},
form
)
delete
params
.
time
params
.
userId
=
this
.
user
.
userId
const
result
=
await
API
.
LocalSecondCreditList
({
...
params
})
const
{
records
,
total
}
=
result
.
result
this
.
list
=
records
this
.
total
=
total
this
.
listLoading
=
false
},
// 修改上下线状态
async
handleChangeOnLineStatus
(
e
)
{
const
userId
=
this
.
user
.
userId
const
userDutyState
=
e
?
'ONLINE'
:
'OFFLINE'
const
result
=
await
API
.
approveOnOff
({
userId
,
userDutyState
})
if
(
result
.
success
)
{
const
msg
=
userDutyState
===
'ONLINE'
?
'已上线'
:
'已下线'
Vue
.
prototype
.
$baseMessage
(
msg
,
'success'
)
}
},
// 审批
handleApproval
(
row
)
{
const
{
creditNo
}
=
row
let
routeUrl
=
this
.
$router
.
resolve
({
path
:
'/approvalDetail'
,
query
:
{
creditNo
,
approval
:
'approval'
}
})
window
.
open
(
routeUrl
.
href
,
'_blank'
)
},
// 转派
handleReassignment
(
row
)
{
this
.
visible
=
true
this
.
item
=
row
}
}
}
</
script
>
<
style
lang=
'scss'
scoped
>
.page-fence
{
::v-deep
{
i
{
cursor
:
pointer
;
}
}
box-sizing
:
border-box
;
padding
:
20px
;
}
</
style
>
<
style
lang=
'scss'
>
.custom-table-checkbox
{
.el-checkbox
{
display
:
block
!
important
;
margin
:
0
0
$base-padding
/
4
0
;
}
}
.action-bar
{
margin-bottom
:
15px
;
}
</
style
>
src/views/customer/clientDetail.vue
0 → 100644
View file @
d9f9e863
<
template
>
<!-- v-if='detail!==null'-->
<div
class=
'page'
>
<block-header
title=
"操作日志"
/>
<el-table
border
:data=
'list'
style=
'width: 100%;margin-bottom: 20px'
>
<el-table-column
align=
'center'
label=
'操作类型'
prop=
"operationType"
></el-table-column>
<el-table-column
align=
'center'
label=
'操作结果'
prop=
"operationResult"
></el-table-column>
<el-table-column
align=
'center'
label=
'操作时间'
prop=
"operationTime"
></el-table-column>
<el-table-column
align=
'center'
label=
'操作人'
prop=
"operationName"
></el-table-column>
<el-table-column
align=
'center'
label=
'备注'
prop=
"memo"
></el-table-column>
</el-table>
<block-header
title=
"项目情况"
/>
<el-descriptions
class=
"table"
:column=
"3"
size=
"small"
border
>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"借款人"
>
{{
detail
.
name
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"申请金额"
>
{{
detail
.
name
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"借款期限"
>
{{
detail
.
name
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"借款利率"
>
{{
detail
.
name
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"服务费率"
>
{{
detail
.
name
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"还款方式"
>
{{
detail
.
name
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"担保方式"
>
{{
detail
.
name
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"客户来源"
>
{{
detail
.
name
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"是否续贷"
>
{{
detail
.
name
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"尽调人员"
>
{{
detail
.
name
}}
</el-descriptions-item>
</el-descriptions>
<!--家庭情况-->
<family
:data=
"list"
:visible=
"false"
></family>
<!--资产情况-->
<assets></assets>
<block-header
title=
"负债情况"
/>
<!--银行借贷-->
<borrow></borrow>
<!--信用卡-->
<credit-card></credit-card>
<!--担保-->
<warrant></warrant>
<!--法律诉讼-->
<lawsuit></lawsuit>
<!--资产负债表-->
<block-header
title=
"资产负债表"
/>
<el-form
ref=
'form'
label-suffix=
':'
label-width=
"160px"
label-position=
"left"
:model=
'debtForm'
class=
'form-inline'
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'预付账款'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'按照总计'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'应付账款'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'按照总计'
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'应收账款'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'按照总计'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'预收账款'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'按照总计'
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'现金及银行存款合计'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'短期贷款'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'1年以内贷款'
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'现金'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'信用卡使用总额'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'银行存款'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'商铺抵押'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'存货'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'住房抵押'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'流动资产合计'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'汽车抵押'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'固定资产合计'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'短期负债合计'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'商铺'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'长期贷款'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'住房'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'长期负债合计'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'汽车'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'其他负债'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'其他'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'其他经营资产合计'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'机器设备'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'总资产合计'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'总负债合计'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'所有者权益合计'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'流动比率'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'流动资产/总资产'
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'资产负债比率'
>
<el-input
v-model=
'debtForm.mobile'
clearable
placeholder=
'总负债/总资产'
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-form-item
prop=
'mobile'
label=
'资产负债表备注'
>
<el-input
v-model=
'debtForm.mobile'
type=
"textarea"
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
</el-row>
<el-row
:gutter=
"20"
>
<el-col
:span=
"24"
>
<el-form-item
prop=
'mobile'
label=
'总体情况文字说明'
>
<el-input
v-model=
'debtForm.mobile'
type=
"textarea"
clearable
placeholder=
'请输入'
/>
</el-form-item>
</el-col>
</el-row>
<el-form-item>
<el-button
icon=
'el-icon-search'
type=
'primary'
@
click=
'onSubmit'
>
保 存
</el-button>
<el-button
icon=
'el-icon-delete'
type=
'default'
@
click=
"onReset('form')"
>
重置
</el-button>
</el-form-item>
</el-form>
<block-header
title=
"企业基本情况"
/>
<el-descriptions
class=
"table"
:column=
"1"
size=
"small"
border
>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"企业历史沿革"
>
{{
detail
.
name
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"具体经营情况"
>
{{
detail
.
name
}}
</el-descriptions-item>
</el-descriptions>
<block-header
title=
"风险点以及最终审批结论"
/>
<el-descriptions
class=
"table"
:column=
"1"
size=
"small"
border
>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"风险点以及贷后预防措施"
>
{{
detail
.
name
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"最终审批结果(时间利率还款方式)"
>
{{
detail
.
name
}}
</el-descriptions-item>
</el-descriptions>
<block-header
title=
"资料附件"
/>
<el-row
:gutter=
'20'
>
<el-col
v-for=
'(o, index) in temp'
:key=
'index'
:span=
'4'
>
<el-card
:body-style=
"
{ padding: '10px' }">
<el-image
class=
'el-card-image'
:src=
'o.img'
@
click
.
native=
'handleShow(o)'
></el-image>
<div
class=
'el-card-intro'
>
<span>
{{
o
.
title
}}
</span>
</div>
</el-card>
</el-col>
</el-row>
<!--上传-->
<template
v-if=
"item!==null"
>
<data-upload
:visible=
"visible"
:item=
"item"
@
handleClose=
'visible = false'
></data-upload>
</
template
>
</div>
</template>
<
script
>
import
API
from
'@/server/api'
import
{
mapGetters
}
from
'vuex'
import
Family
from
"@/views/customer/components/Family"
;
import
Assets
from
"@/views/customer/components/Assets"
;
import
Borrow
from
"@/views/customer/components/Borrow"
;
import
CreditCard
from
"@/views/customer/components/CreditCard"
;
import
Lawsuit
from
"@/views/customer/components/Lawsuit"
;
import
Warrant
from
"@/views/customer/components/Warrant"
;
import
DataUpload
from
"@/views/customer/components/DataUpload"
;
export
default
{
name
:
'ClientDetail'
,
components
:
{
Family
,
Assets
,
Borrow
,
CreditCard
,
Lawsuit
,
Warrant
,
DataUpload
},
data
()
{
return
{
clientNo
:
''
,
params
:
{
clientNo
:
''
,
current
:
1
,
size
:
10
},
detail
:
{
name
:
1
},
list
:
[],
temp
:
[
{
title
:
"身份信息"
,
type
:
""
,
img
:
'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg'
,
data
:
[
'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg'
,
'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg'
]
},
{
title
:
"放款银行卡"
,
type
:
""
,
img
:
''
,
data
:
[]
},
{
title
:
"征信报告"
,
type
:
""
,
img
:
''
,
data
:
[]
},
{
title
:
"经营信息"
,
type
:
""
,
data
:
[]
},
{
title
:
"资产凭证"
,
type
:
""
,
img
:
''
,
data
:
[]
},
{
title
:
"银行流水(PDF)"
,
type
:
""
,
img
:
''
,
data
:
[]
},
{
title
:
"其他资料凭证"
,
type
:
""
,
img
:
''
,
data
:
[]
}
],
// 资料上传相关
item
:
null
,
visible
:
false
,
// 负债
debtForm
:
{
mobile
:
''
}
}
},
async
created
()
{
const
{
query
}
=
this
.
$route
if
(
query
&&
query
.
clientNo
)
{
this
.
clientNo
=
query
.
clientNo
this
.
params
.
clientNo
=
query
.
clientNo
await
this
.
initOperationLog
();
await
this
.
init
()
}
},
computed
:
{
...
mapGetters
([
'searchData'
,
'user'
])
},
methods
:
{
// 初始化详情信息
async
init
()
{
try
{
const
clientNo
=
this
.
clientNo
const
result
=
await
API
.
LocalClientDetail
({
clientNo
})
console
.
log
(
result
,
'详情'
);
}
catch
(
err
)
{
this
.
$message
({
message
:
'初始化授信详情失败'
,
type
:
'error'
})
}
},
// 初始化操作日志
async
initOperationLog
()
{
try
{
const
params
=
this
.
params
const
result
=
await
API
.
LocalClientLog
({...
params
})
console
.
log
(
result
,
'操作日志结果'
)
}
catch
(
err
)
{
this
.
$message
({
message
:
'初始化客户操作日志失败'
,
type
:
'error'
})
}
},
handleResult
()
{
this
.
visible
=
true
;
},
handleClose
()
{
this
.
visible
=
false
;
},
async
handleConfirm
(
formName
)
{
this
.
$refs
[
formName
].
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
// 提交变更
this
.
params
.
userId
=
this
.
user
.
userId
;
this
.
params
.
followId
=
this
.
user
.
userId
;
this
.
params
.
followUser
=
this
.
user
.
userName
;
const
params
=
this
.
params
;
const
res
=
await
API
.
CreditFollowXinHu
({...
params
});
if
(
res
.
code
===
'200'
&&
res
.
success
)
{
this
.
$message
({
type
:
'success'
,
message
:
res
.
message
})
this
.
handleClose
();
await
this
.
init
();
}
else
{
this
.
$message
({
type
:
'error'
,
message
:
res
.
message
})
}
}
else
{
console
.
log
(
'error submit!!'
);
return
false
;
}
});
},
// 资料附件点击文件夹
handleShow
(
o
)
{
this
.
item
=
o
;
this
.
visible
=
true
;
}
}
}
</
script
>
<
style
lang=
'scss'
scoped
>
.table
{
margin-bottom
:
20px
;
}
</
style
>
src/views/customer/clientList.vue
0 → 100644
View file @
d9f9e863
<
template
>
<div
class=
'page-list'
>
<!--搜索-->
<block-header
title=
'搜索'
/>
<div
class=
'search'
>
<el-form
ref=
'form'
label-suffix=
':'
:inline=
'true'
:model=
'queryForm'
class=
'form-inline'
>
<el-form-item
prop=
'mobile'
label=
'手机号码'
>
<el-input
v-model=
'queryForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
<el-form-item
prop=
'clientName'
label=
'客户姓名'
>
<el-input
v-model=
'queryForm.clientName'
clearable
placeholder=
'请输入'
/>
</el-form-item>
<el-form-item
prop=
'clientNo'
label=
'客户编号'
>
<el-input
v-model=
'queryForm.clientNo'
clearable
placeholder=
'请输入'
/>
</el-form-item>
<!--
<el-form-item
prop=
'certNo'
label=
'身份证号'
>
-->
<!--
<el-input
v-model=
'queryForm.certNo'
clearable
placeholder=
'请输入'
/>
-->
<!--
</el-form-item>
-->
<el-form-item
prop=
'time'
label=
'申请时间'
>
<el-date-picker
v-model=
'queryForm.time'
type=
'datetimerange'
:picker-options=
'pickerConfig'
:default-time=
"['00:00:00', '23:59:59']"
value-format=
'yyyy-MM-dd HH:mm:ss'
range-separator=
'至'
start-placeholder=
'开始时间'
end-placeholder=
'结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
icon=
'el-icon-search'
type=
'primary'
@
click=
'onSubmit'
>
搜 索
</el-button>
<el-button
icon=
'el-icon-delete'
type=
'default'
@
click=
"onReset('form')"
>
重置
</el-button>
</el-form-item>
</el-form>
</div>
<!--表格-->
<block-header
title=
'授信列表'
/>
<el-table
ref=
'tableSort'
v-loading=
'listLoading'
border
:data=
'list'
style=
'width: 100%'
>
<el-table-column
v-for=
'(item, index) in finallyColumns'
:key=
'index'
align=
'center'
:label=
'item.label'
:sortable=
'item.sortable'
:width=
'item.width'
:fixed=
'!!item.fixed'
:show-overflow-tooltip=
'!!item.overflow'
>
<template
#
default=
'
{ row }'>
<span>
{{
row
[
item
.
prop
]
}}
</span>
</
template
>
</el-table-column>
</el-table>
<el-pagination
:current-page=
'queryForm.current'
layout=
'total,sizes, prev, pager, next'
:page-sizes=
'[10,20,30,40,50,100]'
:page-size=
'queryForm.size'
:total=
'total'
background
@
size-change=
'handleSizeChange'
@
current-change=
'handleCurrentChange'
/>
</div>
</template>
<
script
>
import
_
from
'lodash'
import
API
from
'@/server/api'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'LocalClientList'
,
data
()
{
return
{
checkList
:
[
'客户编号'
,
'客户姓名'
,
'手机号码'
,
'对应BD'
,
'申请时间'
,
'用户状态'
],
columns
:
[
{
order
:
1
,
label
:
'客户编号'
,
prop
:
'clientNo'
},
{
order
:
2
,
label
:
'客户姓名'
,
prop
:
'clientName'
},
{
order
:
3
,
label
:
'手机号码'
,
prop
:
'mobile'
},
{
order
:
4
,
label
:
'对应BD'
,
prop
:
'bd'
},
{
order
:
5
,
label
:
'申请时间'
,
prop
:
'applyTime'
},
{
order
:
6
,
label
:
'用户状态'
,
prop
:
'userState'
}
],
list
:
[],
listLoading
:
true
,
total
:
1
,
pickerConfig
:
this
.
datePickerOptions
,
queryForm
:
{
current
:
1
,
size
:
10
,
time
:
''
,
startTime
:
''
,
endTime
:
''
,
certNo
:
''
,
clientName
:
''
,
clientNo
:
''
,
mobile
:
''
}
}
},
computed
:
{
finallyColumns
()
{
let
finallyArray
=
[]
this
.
checkList
.
forEach
((
checkItem
)
=>
{
finallyArray
.
push
(
this
.
columns
.
filter
((
item
)
=>
item
.
label
===
checkItem
)[
0
]
)
})
return
_
.
sortBy
(
finallyArray
,
(
item
)
=>
item
.
order
)
},
...
mapGetters
([
'searchData'
,
'user'
])
},
mounted
()
{
this
.
fetchData
()
},
methods
:
{
onSubmit
()
{
this
.
queryForm
.
current
=
1
this
.
queryForm
.
startTime
=
''
this
.
queryForm
.
endTime
=
''
const
{
time
}
=
this
.
queryForm
this
.
queryForm
.
current
=
1
if
(
time
)
{
this
.
queryForm
.
startTime
=
time
[
0
]
this
.
queryForm
.
endTime
=
time
[
1
]
}
this
.
fetchData
()
},
// 页码变更
handleCurrentChange
(
val
)
{
this
.
queryForm
.
current
=
val
this
.
fetchData
()
},
// 页码变更
handleSizeChange
(
val
)
{
this
.
queryForm
.
current
=
1
this
.
queryForm
.
size
=
val
this
.
fetchData
()
},
async
fetchData
()
{
this
.
listLoading
=
true
try
{
const
form
=
this
.
queryForm
const
params
=
Object
.
assign
({},
form
)
delete
params
.
time
const
result
=
await
API
.
LocalClientList
({
...
params
})
const
{
records
,
total
}
=
result
.
result
this
.
list
=
records
this
.
total
=
total
}
catch
(
err
){
console
.
log
(
'初始化客户列表失败'
,
err
)
}
this
.
listLoading
=
false
}
}
}
</
script
>
<
style
lang=
'scss'
scoped
>
.page-list
{
box-sizing
:
border-box
;
padding
:
20px
;
}
</
style
>
src/views/customer/clientMine.vue
0 → 100644
View file @
d9f9e863
<
template
>
<div
class=
'page-list'
>
<!--搜索-->
<block-header
title=
'搜索'
/>
<div
class=
'search'
>
<el-form
ref=
'form'
label-suffix=
':'
:inline=
'true'
:model=
'queryForm'
class=
'form-inline'
>
<el-form-item
prop=
'mobile'
label=
'手机号码'
>
<el-input
v-model=
'queryForm.mobile'
clearable
placeholder=
'请输入'
/>
</el-form-item>
<el-form-item
prop=
'clientName'
label=
'客户姓名'
>
<el-input
v-model=
'queryForm.clientName'
clearable
placeholder=
'请输入'
/>
</el-form-item>
<el-form-item
prop=
'clientNo'
label=
'客户编号'
>
<el-input
v-model=
'queryForm.clientNo'
clearable
placeholder=
'请输入'
/>
</el-form-item>
<el-form-item
prop=
'certNo'
label=
'身份证号'
>
<el-input
v-model=
'queryForm.certNo'
clearable
placeholder=
'请输入'
/>
</el-form-item>
<el-form-item
prop=
'time'
label=
'申请时间'
>
<el-date-picker
v-model=
'queryForm.time'
type=
'datetimerange'
:picker-options=
'pickerConfig'
:default-time=
"['00:00:00', '23:59:59']"
value-format=
'yyyy-MM-dd HH:mm:ss'
range-separator=
'至'
start-placeholder=
'开始时间'
end-placeholder=
'结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
icon=
'el-icon-search'
type=
'primary'
@
click=
'onSubmit'
>
搜 索
</el-button>
<el-button
icon=
'el-icon-delete'
type=
'default'
@
click=
"onReset('form')"
>
重置
</el-button>
</el-form-item>
</el-form>
</div>
<!--表格-->
<block-header
title=
'授信列表'
/>
<el-table
ref=
'tableSort'
v-loading=
'listLoading'
border
:data=
'list'
style=
'width: 100%'
>
<el-table-column
v-for=
'(item, index) in finallyColumns'
:key=
'index'
align=
'center'
:label=
'item.label'
:sortable=
'item.sortable'
:width=
'item.width'
:fixed=
'!!item.fixed'
:show-overflow-tooltip=
'!!item.overflow'
>
<template
#
default=
'
{ row }'>
<div
v-if=
'item.label==="商户状态"'
>
<el-tag
v-if=
'row.isShelves!==0'
type=
'danger'
>
{{
row
.
isShelvesStr
}}
</el-tag>
<el-tag
v-else
type=
'success'
>
{{
row
.
isShelvesStr
}}
</el-tag>
</div>
<span
v-else
>
{{
row
[
item
.
prop
]
}}
</span>
</
template
>
</el-table-column>
<el-table-column
fixed=
'right'
align=
'center'
label=
'操作'
>
<
template
#
default=
'{ row }'
>
<el-button
type=
'text'
@
click=
'handleDetail(row)'
>
详情
</el-button>
</
template
>
</el-table-column>
</el-table>
<el-pagination
:current-page=
'queryForm.current'
layout=
'total,sizes, prev, pager, next'
:page-sizes=
'[10,20,30,40,50,100]'
:page-size=
'queryForm.size'
:total=
'total'
background
@
size-change=
'handleSizeChange'
@
current-change=
'handleCurrentChange'
/>
</div>
</template>
<
script
>
import
_
from
'lodash'
import
API
from
'@/server/api'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'MerchantList'
,
data
()
{
return
{
checkList
:
[
'客户编号'
,
'客户姓名'
,
'手机号码'
,
'对应BD'
,
'申请时间'
,
'用户状态'
],
columns
:
[
{
order
:
1
,
label
:
'客户编号'
,
prop
:
'clientNo'
},
{
order
:
2
,
label
:
'客户姓名'
,
prop
:
'clientName'
},
{
order
:
3
,
label
:
'手机号码'
,
prop
:
'mobile'
},
{
order
:
4
,
label
:
'对应BD'
,
prop
:
'bd'
},
{
order
:
5
,
label
:
'申请时间'
,
prop
:
'applyTime'
},
{
order
:
6
,
label
:
'用户状态'
,
prop
:
'userState'
}
],
list
:
[],
listLoading
:
true
,
total
:
1
,
pickerConfig
:
this
.
datePickerOptions
,
queryForm
:
{
current
:
1
,
size
:
10
,
time
:
''
,
startTime
:
''
,
endTime
:
''
,
certNo
:
''
,
clientName
:
''
,
clientNo
:
''
,
mobile
:
''
}
}
},
computed
:
{
finallyColumns
()
{
let
finallyArray
=
[]
this
.
checkList
.
forEach
((
checkItem
)
=>
{
finallyArray
.
push
(
this
.
columns
.
filter
((
item
)
=>
item
.
label
===
checkItem
)[
0
]
)
})
return
_
.
sortBy
(
finallyArray
,
(
item
)
=>
item
.
order
)
},
...
mapGetters
([
'searchData'
,
'user'
])
},
mounted
()
{
this
.
fetchData
()
},
methods
:
{
onSubmit
()
{
this
.
queryForm
.
current
=
1
this
.
queryForm
.
startTime
=
''
this
.
queryForm
.
endTime
=
''
const
{
time
}
=
this
.
queryForm
this
.
queryForm
.
current
=
1
if
(
time
)
{
this
.
queryForm
.
startTime
=
time
[
0
]
this
.
queryForm
.
endTime
=
time
[
1
]
}
this
.
fetchData
()
},
// 页码变更
handleCurrentChange
(
val
)
{
this
.
queryForm
.
current
=
val
this
.
fetchData
()
},
// 页码变更
handleSizeChange
(
val
)
{
this
.
queryForm
.
current
=
1
this
.
queryForm
.
size
=
val
this
.
fetchData
()
},
async
fetchData
()
{
this
.
listLoading
=
true
try
{
const
form
=
this
.
queryForm
const
params
=
Object
.
assign
({},
form
)
delete
params
.
time
const
result
=
await
API
.
LocalClientMine
({
...
params
})
const
{
records
,
total
}
=
result
.
result
this
.
list
=
records
this
.
total
=
total
}
catch
(
err
){
console
.
log
(
'初始化我的客户列表失败'
,
err
)
}
this
.
listLoading
=
false
},
// 详情
handleDetail
(
row
){
const
{
clientNo
}
=
row
const
route
=
{
path
:
'/client/detail'
,
query
:
{
clientNo
}
}
this
.
$router
.
push
(
route
)
}
}
}
</
script
>
<
style
lang=
'scss'
scoped
>
.page-list
{
box-sizing
:
border-box
;
padding
:
20px
;
}
</
style
>
src/views/customer/components/Assets.vue
0 → 100644
View file @
d9f9e863
<!-- 用户基础信息 -->
<
template
>
<div
class=
"com-family"
>
<block-header
title=
"资产情况"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"handleCreate"
>
新增
</el-button>
</block-header>
<el-table
border
:data=
'list'
style=
'width: 100%;margin-bottom: 20px'
>
<el-table-column
align=
'center'
label=
'资产'
prop=
"property"
></el-table-column>
<el-table-column
align=
'center'
label=
'购入时间'
prop=
"purchaseTime"
></el-table-column>
<el-table-column
align=
'center'
label=
'面积&牌子'
prop=
"brand"
></el-table-column>
<el-table-column
align=
'center'
label=
'购入金额'
prop=
"purchaseAmt"
></el-table-column>
<el-table-column
align=
'center'
label=
'地址'
prop=
"address"
></el-table-column>
<el-table-column
align=
'center'
label=
'市价'
prop=
"marketAmt"
></el-table-column>
<el-table-column
align=
'center'
label=
'备注'
prop=
"memo"
></el-table-column>
<el-table-column
align=
'center'
label=
'操作'
>
<template
#
default=
'
{ row }'>
<el-button
type=
"default"
@
click=
"handleEdit(row)"
>
编辑
</el-button>
<el-button
type=
"danger"
@
click=
"handleDelete"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<!--新增弹框-->
<el-dialog
v-drag
title=
'新增家庭成员'
:visible
.
sync=
'visible'
:destroy-on-close=
'true'
:close-on-click-modal=
'false'
:append-to-body=
'false'
width=
'800px'
:before-close=
'handleClose'
>
<el-form
ref=
'form'
label-suffix=
':'
label-width=
"110px"
:rules=
'rules'
:model=
'form'
>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'name'
label=
'资产'
>
<el-input
v-model=
"form.name"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'workAddress'
label=
'市价'
>
<el-input
v-model=
"form.workAddress"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'familyAddress'
label=
'地址'
>
<el-input
v-model=
"form.familyAddress"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'certNo'
label=
'面积&牌子'
>
<el-input
v-model=
"form.certNo"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'relation'
label=
'购入时间'
>
<el-input
v-model=
"form.relation"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'购入金额'
>
<el-input
v-model=
"form.mobile"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'memo'
label=
'备注'
>
<el-input
v-model=
"form.memo"
type=
"textarea"
:rows=
"3"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div
slot=
'footer'
class=
'dialog-footer'
>
<el-button
type=
'default'
@
click=
'handleClose'
>
取 消
</el-button>
<el-button
type=
'primary'
@
click=
'onSubmit("form")'
>
确 定
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
API
from
'@/server/api'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'ComFamily'
,
data
()
{
return
{
data
:
null
,
list
:
[],
visible
:
false
,
rules
:
{
user
:
[
{
required
:
true
,
trigger
:
'change'
,
message
:
'请选择转派人员'
}
]
},
form
:
{
property
:
''
,
address
:
''
,
brand
:
''
,
purchaseTime
:
''
,
purchaseAmt
:
''
,
marketAmt
:
''
,
memo
:
''
}
}
},
computed
:
{
...
mapGetters
([
'user'
])
},
async
created
()
{
},
methods
:
{
// 新增
async
handleCreate
()
{
this
.
visible
=
true
;
},
// 编辑
async
handleEdit
(
row
)
{
this
.
visible
=
true
;
this
.
form
=
row
;
},
// 删除
async
handleDelete
()
{
this
.
$confirm
(
'是否确认删除?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
async
(
res
)
=>
{
// 删除的代码
}).
catch
((
e
)
=>
{
console
.
log
(
e
,
'取消申述了'
)
})
},
async
onSubmit
(
formName
)
{
this
.
$refs
[
formName
].
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
const
form
=
this
.
form
;
const
result
=
await
API
.
approveReassignment
({...
form
});
if
(
result
.
success
)
{
this
.
$message
({
type
:
'success'
,
message
:
'转派成功'
})
this
.
$emit
(
'callback'
)
this
.
$emit
(
'handleClose'
)
}
}
})
},
handleClose
()
{
this
.
visible
=
false
}
}
}
</
script
>
<
style
lang=
'scss'
>
</
style
>
src/views/customer/components/Borrow.vue
0 → 100644
View file @
d9f9e863
<!-- 用户基础信息 -->
<
template
>
<div
class=
"com-family"
>
<block-header
title=
"银行借款"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"handleCreate"
>
新增
</el-button>
</block-header>
<el-table
border
:data=
'list'
style=
'width: 100%;margin-bottom: 20px'
>
<el-table-column
align=
'center'
width=
"50px"
type=
"index"
label=
"编号"
></el-table-column>
<el-table-column
align=
'center'
label=
'借款人'
prop=
"clientName"
></el-table-column>
<el-table-column
align=
'center'
label=
'银行'
prop=
"bank"
></el-table-column>
<el-table-column
align=
'center'
label=
'借款金额'
prop=
"loanAmt"
></el-table-column>
<el-table-column
align=
'center'
label=
'借款余额'
prop=
"loanBalance"
></el-table-column>
<el-table-column
align=
'center'
label=
'开始时间'
prop=
"startTime"
></el-table-column>
<el-table-column
align=
'center'
label=
'到期时间'
prop=
"endTime"
></el-table-column>
<el-table-column
align=
'center'
label=
'还款方式'
prop=
"backedWay"
></el-table-column>
<el-table-column
align=
'center'
label=
'逾期次数'
prop=
"overduedNumber"
></el-table-column>
<el-table-column
align=
'center'
label=
'月还金额'
prop=
"moonAmt"
></el-table-column>
<el-table-column
align=
'center'
label=
'备注'
prop=
"memo"
></el-table-column>
<el-table-column
align=
'center'
label=
'操作'
>
<template
#
default=
'
{ row }'>
<el-button
type=
"default"
@
click=
"handleEdit(row)"
>
编辑
</el-button>
<el-button
type=
"danger"
@
click=
"handleDelete"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<!--新增弹框-->
<el-dialog
v-drag
title=
'新增银行借款记录'
:visible
.
sync=
'visible'
:destroy-on-close=
'true'
:close-on-click-modal=
'false'
:append-to-body=
'false'
width=
'800px'
:before-close=
'handleClose'
>
<el-form
ref=
'form'
label-suffix=
':'
label-width=
"110px"
:rules=
'rules'
:model=
'form'
>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'clientName'
label=
'借款人'
>
<el-input
v-model=
"form.clientName"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'bank'
label=
'银行'
>
<el-input
v-model=
"form.bank"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'loanAmt'
label=
'借款金额'
>
<el-input
v-model=
"form.loanAmt"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'loanBalance'
label=
'借款余额'
>
<el-input
v-model=
"form.loanBalance"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'startTime'
label=
'开始时间'
>
<el-input
v-model=
"form.startTime"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'endTime'
label=
'到期时间'
>
<el-input
v-model=
"form.endTime"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'backedWay'
label=
'还款方式'
>
<el-input
v-model=
"form.backedWay"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'overduedNumber'
label=
'逾期次数'
>
<el-input
v-model=
"form.overduedNumber"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'moonAmt'
label=
'月还金额'
>
<el-input
v-model=
"form.moonAmt"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'memo'
label=
'备注'
>
<el-input
v-model=
"form.memo"
type=
"textarea"
:rows=
"3"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div
slot=
'footer'
class=
'dialog-footer'
>
<el-button
type=
'default'
@
click=
'handleClose'
>
取 消
</el-button>
<el-button
type=
'primary'
@
click=
'onSubmit("form")'
>
确 定
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
API
from
'@/server/api'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'ComFamily'
,
data
()
{
return
{
data
:
null
,
list
:
[],
visible
:
false
,
rules
:
{
user
:
[
{
required
:
true
,
trigger
:
'change'
,
message
:
'请选择转派人员'
}
]
},
form
:
{
clientName
:
''
,
bank
:
''
,
loanAmt
:
''
,
loanBalance
:
''
,
startTime
:
''
,
endTime
:
''
,
moonAmt
:
''
,
memo
:
''
,
overduedNumber
:
''
,
backedWay
:
''
}
}
},
computed
:
{
...
mapGetters
([
'user'
])
},
async
created
()
{
},
methods
:
{
// 新增
async
handleCreate
()
{
this
.
visible
=
true
;
},
// 编辑
async
handleEdit
(
row
)
{
this
.
visible
=
true
;
this
.
form
=
row
;
},
// 删除
async
handleDelete
()
{
this
.
$confirm
(
'是否确认删除?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
async
(
res
)
=>
{
// 删除的代码
}).
catch
((
e
)
=>
{
console
.
log
(
e
,
'取消申述了'
)
})
},
async
onSubmit
(
formName
)
{
this
.
$refs
[
formName
].
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
const
form
=
this
.
form
;
const
result
=
await
API
.
approveReassignment
({...
form
});
if
(
result
.
success
)
{
this
.
$message
({
type
:
'success'
,
message
:
'转派成功'
})
this
.
$emit
(
'callback'
)
this
.
$emit
(
'handleClose'
)
}
}
})
},
handleClose
()
{
this
.
visible
=
false
}
}
}
</
script
>
<
style
lang=
'scss'
>
</
style
>
src/views/customer/components/CreditCard.vue
0 → 100644
View file @
d9f9e863
<!-- 用户基础信息 -->
<
template
>
<div
class=
"com-family"
>
<block-header
title=
"信用卡"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"handleCreate"
>
新增
</el-button>
</block-header>
<el-table
border
:data=
'list'
style=
'width: 100%;margin-bottom: 20px'
>
<el-table-column
align=
'center'
width=
"50px"
type=
"index"
label=
"编号"
></el-table-column>
<el-table-column
align=
'center'
label=
'持卡人'
prop=
"clientName"
></el-table-column>
<el-table-column
align=
'center'
label=
'银行'
prop=
"bank"
></el-table-column>
<el-table-column
align=
'center'
label=
'信用卡额度'
prop=
"totalAmt"
></el-table-column>
<el-table-column
align=
'center'
label=
'已使用额度'
prop=
"usedAmt"
></el-table-column>
<el-table-column
align=
'center'
label=
'信用卡使用率'
prop=
"usedrate"
></el-table-column>
<el-table-column
align=
'center'
label=
'逾期次数'
prop=
"overduedNumber"
></el-table-column>
<el-table-column
align=
'center'
label=
'月还金额'
prop=
"moonAmt"
></el-table-column>
<el-table-column
align=
'center'
label=
'备注'
prop=
"memo"
></el-table-column>
<el-table-column
align=
'center'
label=
'操作'
>
<template
#
default=
'
{ row }'>
<el-button
type=
"default"
@
click=
"handleEdit(row)"
>
编辑
</el-button>
<el-button
type=
"danger"
@
click=
"handleDelete"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<!--新增弹框-->
<el-dialog
v-drag
title=
'新增银行借款记录'
:visible
.
sync=
'visible'
:destroy-on-close=
'true'
:close-on-click-modal=
'false'
:append-to-body=
'false'
width=
'800px'
:before-close=
'handleClose'
>
<el-form
ref=
'form'
label-suffix=
':'
label-width=
"110px"
:rules=
'rules'
:model=
'form'
>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'clientName'
label=
'持卡人'
>
<el-input
v-model=
"form.clientName"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'bank'
label=
'银行'
>
<el-input
v-model=
"form.bank"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'totalAmt'
label=
'信用卡额度'
>
<el-input
v-model=
"form.totalAmt"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'usedAmt'
label=
'已使用额度'
>
<el-input
v-model=
"form.usedAmt"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'usedrate'
label=
'信用卡使用率'
>
<el-input
v-model=
"form.usedrate"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'overduedNumber'
label=
'逾期次数'
>
<el-input
v-model=
"form.overduedNumber"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'moonAmt'
label=
'月还金额'
>
<el-input
v-model=
"form.moonAmt"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'memo'
label=
'备注'
>
<el-input
v-model=
"form.memo"
type=
"textarea"
:rows=
"3"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div
slot=
'footer'
class=
'dialog-footer'
>
<el-button
type=
'default'
@
click=
'handleClose'
>
取 消
</el-button>
<el-button
type=
'primary'
@
click=
'onSubmit("form")'
>
确 定
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
API
from
'@/server/api'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'ComFamily'
,
data
()
{
return
{
data
:
null
,
list
:
[],
visible
:
false
,
rules
:
{
user
:
[
{
required
:
true
,
trigger
:
'change'
,
message
:
'请选择转派人员'
}
]
},
form
:
{
clientName
:
''
,
bank
:
''
,
totalAmt
:
''
,
usedAmt
:
''
,
usedrate
:
''
,
overduedNumber
:
''
,
moonAmt
:
''
,
memo
:
''
,
}
}
},
computed
:
{
...
mapGetters
([
'user'
])
},
async
created
()
{
},
methods
:
{
// 新增
async
handleCreate
()
{
this
.
visible
=
true
;
},
// 编辑
async
handleEdit
(
row
)
{
this
.
visible
=
true
;
this
.
form
=
row
;
},
// 删除
async
handleDelete
()
{
this
.
$confirm
(
'是否确认删除?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
async
(
res
)
=>
{
// 删除的代码
}).
catch
((
e
)
=>
{
console
.
log
(
e
,
'取消申述了'
)
})
},
async
onSubmit
(
formName
)
{
this
.
$refs
[
formName
].
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
const
form
=
this
.
form
;
const
result
=
await
API
.
approveReassignment
({...
form
});
if
(
result
.
success
)
{
this
.
$message
({
type
:
'success'
,
message
:
'转派成功'
})
this
.
$emit
(
'callback'
)
this
.
$emit
(
'handleClose'
)
}
}
})
},
handleClose
()
{
this
.
visible
=
false
}
}
}
</
script
>
<
style
lang=
'scss'
>
</
style
>
src/views/customer/components/DataUpload.vue
0 → 100644
View file @
d9f9e863
<!-- 用户基础信息 -->
<
template
>
<el-dialog
v-drag
:title=
'item.title'
:visible
.
sync=
'visible'
:destroy-on-close=
'true'
:close-on-click-modal=
'false'
:append-to-body=
'false'
width=
'60%'
:before-close=
'handleClose'
>
<!-- 原来如果有图片-->
<div
class=
"data-upload-box"
>
<div>
<el-row
:gutter=
'20'
>
<template
v-if=
"item.data.length"
>
<el-col
v-for=
'(o, index) in item.data'
:key=
'index'
:span=
'4'
>
<el-image
class=
'local-card-image'
:src=
'o'
:preview-src-list=
"preview"
>
<div
slot=
"error"
class=
"image-slot"
>
<i
class=
"el-icon-picture-outline"
></i>
</div>
</el-image>
</el-col>
</
template
>
<el-col
:span=
'4'
>
<el-upload
class=
'auditUpload'
:action=
'UploadUrl'
:data=
'uploadParams'
:multiple=
'true'
:headers=
'headers'
list-type=
"picture-card"
:with-credentials=
'true'
:disabled=
'false'
:http-request=
'handleUpload'
>
<i
class=
"el-icon-plus"
></i>
</el-upload>
</el-col>
</el-row>
</div>
</div>
<div
slot=
'footer'
class=
'dialog-footer'
>
<el-button
type=
'default'
@
click=
'handleClose'
>
取 消
</el-button>
<el-button
type=
'primary'
@
click=
'onSubmit("form")'
>
确 定
</el-button>
</div>
</el-dialog>
</template>
<
script
>
import
API
from
'@/server/api'
import
_
from
'lodash'
import
Axios
from
'axios'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'DataUpload'
,
props
:
{
visible
:
{
type
:
Boolean
,
required
:
true
},
//eslint-disable-next-line vue/require-default-prop
item
:
{
type
:
Object
,
require
:
true
}
},
data
()
{
return
{
// 图片上传相关
headers
:
{},
uploadParams
:
{},
UploadUrl
:
process
.
env
.
VUE_APP_API_PATH
,
type
:
''
,
preview
:
[],
list
:
[],
rules
:
{
user
:
[
{
required
:
true
,
trigger
:
'change'
,
message
:
'请选择转派人员'
}
]
},
form
:
{
user
:
''
}
}
},
computed
:
{
...
mapGetters
([
'user'
])
},
async
created
()
{
if
(
this
.
item
!==
null
)
{
const
{
type
,
data
}
=
this
.
item
;
this
.
preview
=
data
;
this
.
type
=
type
}
},
methods
:
{
// 上传
async
handleUpload
(
obj
)
{
const
{
file
}
=
obj
let
fileName
=
'jpg'
let
fileType
=
'LRD-ADMIN/local'
const
resOssSign
=
await
API
.
initOssSign
({
fileName
,
fileType
})
console
.
log
(
resOssSign
,
'oss返回信息'
)
if
(
resOssSign
.
success
)
{
const
{
accessId
,
dir
,
expire
,
host
,
policy
,
signature
}
=
resOssSign
.
result
const
data
=
new
FormData
()
data
.
append
(
'key'
,
dir
)
data
.
append
(
'OSSAccessKeyId'
,
accessId
)
data
.
append
(
'policy'
,
policy
)
data
.
append
(
'Signature'
,
signature
)
data
.
append
(
'success_action_status'
,
'200'
)
data
.
append
(
'file'
,
file
)
try
{
Axios
({
url
:
host
,
method
:
'post'
,
data
:
data
,
headers
:
{
'Content-Type'
:
'multipart/form-data'
}
}).
then
(
async
(
res
)
=>
{
console
.
log
(
res
,
'w'
)
this
.
form
.
natureUrl
=
host
+
dir
;
this
.
result
.
natureUrl
=
host
+
dir
;
this
.
$message
.
success
(
'上传成功'
)
}).
catch
(
e
=>
{
throw
new
Error
(
e
)
})
}
catch
(
e
)
{
this
.
$message
.
error
(
'上传报错'
)
}
}
},
async
onSubmit
(
formName
)
{
this
.
$refs
[
formName
].
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
console
.
log
(
this
.
data
,
'数据'
)
const
{
creditNo
}
=
this
.
data
const
oldAllotId
=
this
.
user
.
userId
;
const
curAllotId
=
this
.
form
.
user
;
const
result
=
await
API
.
approveReassignment
({
creditNo
,
curAllotId
,
oldAllotId
});
if
(
result
.
success
)
{
this
.
$message
({
type
:
'success'
,
message
:
'转派成功'
})
this
.
$emit
(
'callback'
)
this
.
$emit
(
'handleClose'
)
}
}
})
},
handleClose
()
{
this
.
$emit
(
'handleClose'
)
}
}
}
</
script
>
<
style
lang=
'scss'
>
.local-card-image
{
width
:
148px
;
height
:
148px
;
img
{
width
:
100%
;
height
:
100%
;
}
}
</
style
>
src/views/customer/components/Family.vue
0 → 100644
View file @
d9f9e863
<!-- 用户基础信息 -->
<
template
>
<div
class=
"com-family"
>
<block-header
title=
"家庭情况"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"handleCreate"
>
新增
</el-button>
</block-header>
<el-table
border
:data=
'list'
style=
'width: 100%;margin-bottom: 20px'
>
<el-table-column
align=
'center'
label=
'姓名'
prop=
"name"
></el-table-column>
<el-table-column
align=
'center'
label=
'关系'
prop=
"relation"
></el-table-column>
<el-table-column
align=
'center'
label=
'身份证号码'
prop=
"certNo"
></el-table-column>
<el-table-column
align=
'center'
label=
'家庭地址'
prop=
"familyAddress"
></el-table-column>
<el-table-column
align=
'center'
label=
'联系电话'
prop=
"mobile"
></el-table-column>
<el-table-column
align=
'center'
label=
'单位/经营地址'
prop=
"workAddress"
></el-table-column>
<el-table-column
align=
'center'
label=
'主要资产'
prop=
"property"
></el-table-column>
<el-table-column
align=
'center'
label=
'月收入'
prop=
"income"
></el-table-column>
<el-table-column
align=
'center'
label=
'备注'
prop=
"memo"
></el-table-column>
<el-table-column
align=
'center'
label=
'操作'
>
<template
#
default=
'
{ row }'>
<el-button
type=
"default"
@
click=
"handleEdit(row)"
>
编辑
</el-button>
<el-button
type=
"danger"
@
click=
"handleDelete"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<!--新增弹框-->
<el-dialog
v-drag
title=
'新增家庭成员'
:visible
.
sync=
'visible'
:destroy-on-close=
'true'
:close-on-click-modal=
'false'
:append-to-body=
'false'
width=
'800px'
:before-close=
'handleClose'
>
<el-form
ref=
'form'
label-suffix=
':'
label-width=
"110px"
:rules=
'rules'
:model=
'form'
>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'name'
label=
'姓名'
>
<el-input
v-model=
"form.name"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'relation'
label=
'关系'
>
<el-input
v-model=
"form.relation"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'certNo'
label=
'身份证号'
>
<el-input
v-model=
"form.certNo"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'mobile'
label=
'联系电话'
>
<el-input
v-model=
"form.mobile"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'familyAddress'
label=
'家庭地址'
>
<el-input
v-model=
"form.familyAddress"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'workAddress'
label=
'单位/经营地址'
>
<el-input
v-model=
"form.workAddress"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'property'
label=
'主要资产'
>
<el-input
v-model=
"form.property"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'income'
label=
'月收入'
>
<el-input
v-model=
"form.income"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-form-item
prop=
'memo'
label=
'备注'
>
<el-input
v-model=
"form.memo"
type=
"textarea"
:rows=
"3"
placeholder=
"请输入"
/>
</el-form-item>
</el-form>
<div
slot=
'footer'
class=
'dialog-footer'
>
<el-button
type=
'default'
@
click=
'handleClose'
>
取 消
</el-button>
<el-button
type=
'primary'
@
click=
'onSubmit("form")'
>
确 定
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
API
from
'@/server/api'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'ComFamily'
,
data
()
{
return
{
data
:
null
,
list
:
[],
visible
:
false
,
rules
:
{
user
:
[
{
required
:
true
,
trigger
:
'change'
,
message
:
'请选择转派人员'
}
]
},
form
:
{
name
:
''
,
certNo
:
''
,
familyAddress
:
''
,
income
:
''
,
memo
:
''
,
mobile
:
''
,
property
:
''
,
relation
:
''
,
workAddress
:
''
,
}
}
},
computed
:
{
...
mapGetters
([
'user'
])
},
async
created
()
{
},
methods
:
{
// 新增
async
handleCreate
()
{
this
.
visible
=
true
;
},
// 编辑
async
handleEdit
(
row
)
{
this
.
visible
=
true
;
this
.
form
=
row
;
},
// 删除
async
handleDelete
()
{
this
.
$confirm
(
'是否确认删除?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
async
(
res
)
=>
{
// 删除的代码
}).
catch
((
e
)
=>
{
console
.
log
(
e
,
'取消申述了'
)
})
},
async
onSubmit
(
formName
)
{
this
.
$refs
[
formName
].
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
const
form
=
this
.
form
;
const
result
=
await
API
.
approveReassignment
({...
form
});
if
(
result
.
success
)
{
this
.
$message
({
type
:
'success'
,
message
:
'转派成功'
})
this
.
$emit
(
'callback'
)
this
.
$emit
(
'handleClose'
)
}
}
})
},
handleClose
()
{
this
.
visible
=
false
}
}
}
</
script
>
<
style
lang=
'scss'
>
</
style
>
src/views/customer/components/Lawsuit.vue
0 → 100644
View file @
d9f9e863
<!-- 用户基础信息 -->
<
template
>
<div
class=
"com-family"
>
<block-header
title=
"诉讼以及其他不良信息(被执行网,中国裁判文书网,百度查询)"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"handleCreate"
>
新增
</el-button>
</block-header>
<el-table
border
:data=
'list'
style=
'width: 100%;margin-bottom: 20px'
>
<el-table-column
align=
'center'
width=
"50px"
type=
"index"
label=
"编号"
></el-table-column>
<el-table-column
align=
'center'
label=
'涉诉人'
prop=
"involvePeople"
></el-table-column>
<el-table-column
align=
'center'
label=
'原/被告'
prop=
"defendantOrPlaintiff"
></el-table-column>
<el-table-column
align=
'center'
label=
'涉诉文件名称及编号'
prop=
"document"
></el-table-column>
<el-table-column
align=
'center'
label=
'涉诉事项'
prop=
""
></el-table-column>
<el-table-column
align=
'center'
label=
'涉诉进展'
prop=
"evolve"
></el-table-column>
<el-table-column
align=
'center'
label=
'涉诉金额'
prop=
"involveamt"
></el-table-column>
<el-table-column
align=
'center'
label=
'涉诉结论'
prop=
""
></el-table-column>
<el-table-column
align=
'center'
label=
'备注'
prop=
"memo"
></el-table-column>
<el-table-column
align=
'center'
label=
'操作'
>
<template
#
default=
'
{ row }'>
<el-button
type=
"default"
@
click=
"handleEdit(row)"
>
编辑
</el-button>
<el-button
type=
"danger"
@
click=
"handleDelete"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<!--新增弹框-->
<el-dialog
v-drag
title=
'新增银行借款记录'
:visible
.
sync=
'visible'
:destroy-on-close=
'true'
:close-on-click-modal=
'false'
:append-to-body=
'false'
width=
'800px'
:before-close=
'handleClose'
>
<el-form
ref=
'form'
label-suffix=
':'
label-width=
"110px"
:rules=
'rules'
:model=
'form'
>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'clientName'
label=
'持卡人'
>
<el-input
v-model=
"form.clientName"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'bank'
label=
'银行'
>
<el-input
v-model=
"form.bank"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'totalAmt'
label=
'信用卡额度'
>
<el-input
v-model=
"form.totalAmt"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'usedAmt'
label=
'已使用额度'
>
<el-input
v-model=
"form.usedAmt"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'usedrate'
label=
'信用卡使用率'
>
<el-input
v-model=
"form.usedrate"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'overduedNumber'
label=
'逾期次数'
>
<el-input
v-model=
"form.overduedNumber"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'moonAmt'
label=
'月还金额'
>
<el-input
v-model=
"form.moonAmt"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'memo'
label=
'备注'
>
<el-input
v-model=
"form.memo"
type=
"textarea"
:rows=
"3"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div
slot=
'footer'
class=
'dialog-footer'
>
<el-button
type=
'default'
@
click=
'handleClose'
>
取 消
</el-button>
<el-button
type=
'primary'
@
click=
'onSubmit("form")'
>
确 定
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
API
from
'@/server/api'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'ComFamily'
,
data
()
{
return
{
data
:
null
,
list
:
[],
visible
:
false
,
rules
:
{
user
:
[
{
required
:
true
,
trigger
:
'change'
,
message
:
'请选择转派人员'
}
]
},
form
:
{
clientName
:
''
,
bank
:
''
,
totalAmt
:
''
,
usedAmt
:
''
,
usedrate
:
''
,
overduedNumber
:
''
,
moonAmt
:
''
,
memo
:
''
,
}
}
},
computed
:
{
...
mapGetters
([
'user'
])
},
async
created
()
{
},
methods
:
{
// 新增
async
handleCreate
()
{
this
.
visible
=
true
;
},
// 编辑
async
handleEdit
(
row
)
{
this
.
visible
=
true
;
this
.
form
=
row
;
},
// 删除
async
handleDelete
()
{
this
.
$confirm
(
'是否确认删除?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
async
(
res
)
=>
{
// 删除的代码
}).
catch
((
e
)
=>
{
console
.
log
(
e
,
'取消申述了'
)
})
},
async
onSubmit
(
formName
)
{
this
.
$refs
[
formName
].
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
const
form
=
this
.
form
;
const
result
=
await
API
.
approveReassignment
({...
form
});
if
(
result
.
success
)
{
this
.
$message
({
type
:
'success'
,
message
:
'转派成功'
})
this
.
$emit
(
'callback'
)
this
.
$emit
(
'handleClose'
)
}
}
})
},
handleClose
()
{
this
.
visible
=
false
}
}
}
</
script
>
<
style
lang=
'scss'
>
</
style
>
src/views/customer/components/Warrant.vue
0 → 100644
View file @
d9f9e863
<!-- 用户基础信息 -->
<
template
>
<div
class=
"com-family"
>
<block-header
title=
"信用卡"
>
<el-button
type=
"primary"
size=
"small"
@
click=
"handleCreate"
>
新增
</el-button>
</block-header>
<el-table
border
:data=
'list'
style=
'width: 100%;margin-bottom: 20px'
>
<el-table-column
align=
'center'
width=
"50px"
type=
"index"
label=
"编号"
></el-table-column>
<el-table-column
align=
'center'
label=
'担保人'
prop=
"security"
></el-table-column>
<el-table-column
align=
'center'
label=
'被担保人'
prop=
"vouchee"
></el-table-column>
<el-table-column
align=
'center'
label=
'银行'
prop=
"bank"
></el-table-column>
<el-table-column
align=
'center'
label=
'借款金额'
prop=
"loanAmt"
></el-table-column>
<el-table-column
align=
'center'
label=
'借款余额'
prop=
"loanBalance"
></el-table-column>
<el-table-column
align=
'center'
label=
'开始日'
prop=
"startTime"
></el-table-column>
<el-table-column
align=
'center'
label=
'到期日'
prop=
"endTime"
></el-table-column>
<el-table-column
align=
'center'
label=
'还款方式'
prop=
"backedWay"
></el-table-column>
<el-table-column
align=
'center'
label=
'备注'
prop=
"memo"
></el-table-column>
<el-table-column
align=
'center'
label=
'操作'
>
<template
#
default=
'
{ row }'>
<el-button
type=
"default"
@
click=
"handleEdit(row)"
>
编辑
</el-button>
<el-button
type=
"danger"
@
click=
"handleDelete"
>
删除
</el-button>
</
template
>
</el-table-column>
</el-table>
<!--新增弹框-->
<el-dialog
v-drag
title=
'新增银行借款记录'
:visible
.
sync=
'visible'
:destroy-on-close=
'true'
:close-on-click-modal=
'false'
:append-to-body=
'false'
width=
'800px'
:before-close=
'handleClose'
>
<el-form
ref=
'form'
label-suffix=
':'
label-width=
"110px"
:rules=
'rules'
:model=
'form'
>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'clientName'
label=
'持卡人'
>
<el-input
v-model=
"form.clientName"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'bank'
label=
'银行'
>
<el-input
v-model=
"form.bank"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'totalAmt'
label=
'信用卡额度'
>
<el-input
v-model=
"form.totalAmt"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'usedAmt'
label=
'已使用额度'
>
<el-input
v-model=
"form.usedAmt"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'usedrate'
label=
'信用卡使用率'
>
<el-input
v-model=
"form.usedrate"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'overduedNumber'
label=
'逾期次数'
>
<el-input
v-model=
"form.overduedNumber"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col
:span=
"12"
>
<el-form-item
prop=
'moonAmt'
label=
'月还金额'
>
<el-input
v-model=
"form.moonAmt"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-form-item
prop=
'memo'
label=
'备注'
>
<el-input
v-model=
"form.memo"
type=
"textarea"
:rows=
"3"
placeholder=
"请输入"
/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div
slot=
'footer'
class=
'dialog-footer'
>
<el-button
type=
'default'
@
click=
'handleClose'
>
取 消
</el-button>
<el-button
type=
'primary'
@
click=
'onSubmit("form")'
>
确 定
</el-button>
</div>
</el-dialog>
</div>
</template>
<
script
>
import
API
from
'@/server/api'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'ComFamily'
,
data
()
{
return
{
data
:
null
,
list
:
[],
visible
:
false
,
rules
:
{
user
:
[
{
required
:
true
,
trigger
:
'change'
,
message
:
'请选择转派人员'
}
]
},
form
:
{
clientName
:
''
,
bank
:
''
,
totalAmt
:
''
,
usedAmt
:
''
,
usedrate
:
''
,
overduedNumber
:
''
,
moonAmt
:
''
,
memo
:
''
,
}
}
},
computed
:
{
...
mapGetters
([
'user'
])
},
async
created
()
{
},
methods
:
{
// 新增
async
handleCreate
()
{
this
.
visible
=
true
;
},
// 编辑
async
handleEdit
(
row
)
{
this
.
visible
=
true
;
this
.
form
=
row
;
},
// 删除
async
handleDelete
()
{
this
.
$confirm
(
'是否确认删除?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
async
(
res
)
=>
{
// 删除的代码
}).
catch
((
e
)
=>
{
console
.
log
(
e
,
'取消申述了'
)
})
},
async
onSubmit
(
formName
)
{
this
.
$refs
[
formName
].
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
const
form
=
this
.
form
;
const
result
=
await
API
.
approveReassignment
({...
form
});
if
(
result
.
success
)
{
this
.
$message
({
type
:
'success'
,
message
:
'转派成功'
})
this
.
$emit
(
'callback'
)
this
.
$emit
(
'handleClose'
)
}
}
})
},
handleClose
()
{
this
.
visible
=
false
}
}
}
</
script
>
<
style
lang=
'scss'
>
</
style
>
src/views/customer/detail.vue
View file @
d9f9e863
...
...
@@ -15,7 +15,7 @@
<el-descriptions-item
label-class-name=
"labelCls"
label=
"公积金"
>
{{
detail
.
gjj
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"社保"
>
{{
detail
.
shebao
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"职业"
>
{{
detail
.
occupation
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"车产信息"
>
{{
detail
.
carValu
e
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"车产信息"
>
{{
detail
.
vehicl
e
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"房产信息"
>
{{
detail
.
house
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
:span=
"2"
label=
"投保信息"
>
{{
detail
.
insurance
}}
</el-descriptions-item>
...
...
@@ -43,7 +43,7 @@
<el-descriptions-item
label-class-name=
"labelCls"
label=
"姓名"
>
{{
detail
.
name
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
:span=
"2"
label=
"手机号"
>
{{
detail
.
phone
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"车辆类型"
>
{{
detail
.
carTypeStr
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"车辆品牌与型号"
>
{{
detail
.
car
Valu
e
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"车辆品牌与型号"
>
{{
detail
.
car
Nam
e
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"人员所在城市"
>
{{
detail
.
carCity
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"贷款额度"
>
{{
detail
.
loanAmount
}}
</el-descriptions-item>
<el-descriptions-item
label-class-name=
"labelCls"
label=
"贷款期限"
>
{{
detail
.
loanPeriod
}}
</el-descriptions-item>
...
...
src/views/loan/localAudit.vue
0 → 100644
View file @
d9f9e863
<
template
>
<div
class=
'page-fence'
>
<!--搜索-->
<block-header
title=
'搜索'
/>
<div
class=
'search'
>
<el-form
ref=
'form'
label-suffix=
':'
:inline=
'true'
:model=
'queryForm'
class=
'form-inline'
>
<el-form-item
prop=
'orderNo'
label=
'订单编号'
>
<el-input
v-model=
'queryForm.orderNo'
clearable
placeholder=
'请输入订单编号'
/>
</el-form-item>
<el-form-item
prop=
'clientName'
label=
'客户姓名'
>
<el-input
v-model=
'queryForm.clientName'
clearable
placeholder=
'请输入客户姓名'
/>
</el-form-item>
<el-form-item
prop=
'mobile'
label=
'手机号码'
>
<el-input
v-model=
'queryForm.mobile'
clearable
placeholder=
'请输入客户手机号码'
/>
</el-form-item>
<template
v-if=
'searchData!==null'
>
<el-form-item
prop=
'state'
label=
'审批结果'
>
<el-select
v-model=
'queryForm.state'
:popper-append-to-body=
'false'
style=
'width: 100%;'
clearable
>
<el-option
v-for=
'(item,index) in searchData.xshApprovalResultResponseList'
:key=
'index'
:value=
'item.approvalResult'
:label=
'item.approvalResultStr'
>
</el-option>
</el-select>
</el-form-item>
</
template
>
<el-form-item
v-if=
"false"
prop=
'certNo'
label=
'身份证号'
>
<el-input
v-model=
'queryForm.certNo'
clearable
placeholder=
'请输入'
/>
</el-form-item>
<el-form-item
prop=
'time'
label=
'申请时间'
>
<el-date-picker
v-model=
'queryForm.time'
type=
'datetimerange'
:picker-options=
'pickerConfig'
:default-time=
"['00:00:00', '23:59:59']"
value-format=
'yyyy-MM-dd HH:mm:ss'
range-separator=
'至'
start-placeholder=
'开始时间'
end-placeholder=
'结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
icon=
'el-icon-search'
type=
'primary'
@
click=
'onSearch'
>
搜 索
</el-button>
<el-button
icon=
'el-icon-delete'
type=
'default'
@
click=
"onReset('form')"
>
重 置
</el-button>
</el-form-item>
</el-form>
</div>
<!--表格-->
<block-header
title=
'借款列表'
/>
<el-table
ref=
'tableSort'
v-loading=
'listLoading'
border
:data=
'list'
style=
'width: 100%'
>
<el-table-column
v-for=
'(item, index) in finallyColumns'
:key=
'index'
align=
'center'
:label=
'item.label'
:sortable=
'item.sortable'
:width=
'item.width'
:fixed=
'!!item.fixed'
:show-overflow-tooltip=
'!!item.overflow'
>
<
template
#
default=
'{ row }'
>
<div
v-if=
'item.label==="客户信息"'
>
{{
row
.
realName
}}
<br
/>
{{
row
.
mobile
}}
</div>
<div
v-else-if=
'item.label==="借款金额"'
>
{{
money
(
row
[
item
.
prop
])
}}
</div>
<!--
<div
v-else-if=
'item.label==="借款状态"'
>
-->
<!--
<el-tag
v-if=
'row.loanStatus==="CANCELED"'
type=
'info'
>
{{
row
.
loanStatusStr
}}
</el-tag>
-->
<!--
<el-tag
v-else-if=
'row.loanStatus==="SETTLED"'
>
{{
row
.
loanStatusStr
}}
</el-tag>
-->
<!--
<el-tag
v-else-if=
'row.loanStatus==="SUBMITED"'
type=
'warning'
>
{{
row
.
loanStatusStr
}}
</el-tag>
-->
<!--
<el-tag
v-else
type=
'success'
>
{{
row
.
loanStatusStr
}}
</el-tag>
-->
<!--
</div>
-->
<span
v-else
>
{{
row
[
item
.
prop
]
}}
</span>
</
template
>
</el-table-column>
<el-table-column
fixed=
'right'
align=
'center'
label=
'操作'
>
<
template
#
default=
'{ row }'
>
<template
v-if=
'row.loanStatus==="SUBMITED" && row.stepsNo==="002"'
>
<el-button
size=
'mini'
type=
'text'
@
click=
'handleAudit(row)'
>
稽核审批
</el-button>
</
template
>
<el-button
size=
'mini'
type=
'text'
@
click=
'handleDetail(row)'
>
详情
</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page=
'queryForm.current'
layout=
'total,sizes, prev, pager, next'
:page-sizes=
'[10,20,30,40,50,100]'
:page-size=
'queryForm.size'
:total=
'total'
background
@
size-change=
'handleSizeChange'
@
current-change=
'handleCurrentChange'
/>
<!--稽核弹框-->
<
template
v-if=
'visible'
>
<loan-audit
:dialog-visible=
'visible'
:item=
'item'
@
handleClose=
'visible = false'
@
callback=
'fetchData'
/>
</
template
>
</div>
</template>
<
script
>
import
_
from
'lodash'
import
{
doDelete
,
getList
}
from
'@/api/table'
import
API
from
'@/server/api'
import
{
mapGetters
}
from
'vuex'
export
default
{
name
:
'Audit'
,
data
()
{
return
{
visible
:
false
,
item
:
null
,
checkList
:
[
'订单编号'
,
'客户姓名'
,
'手机号码'
,
'借款金额'
,
'BD姓名'
,
'借款时间'
,
'借款状态'
,
'资金渠道'
,
'审批结果'
],
columns
:
[
{
order
:
1
,
label
:
'订单编号'
,
prop
:
'orderNo'
},
{
order
:
3
,
label
:
'客户姓名'
,
prop
:
'clientName'
},
{
order
:
3
,
label
:
'手机号码'
,
prop
:
'mobile'
},
{
order
:
5
,
label
:
'借款金额'
,
prop
:
'loanAmt'
},
{
order
:
7
,
label
:
'BD姓名'
,
prop
:
'bd'
},
{
order
:
9
,
label
:
'借款时间'
,
prop
:
'applyTime'
},
{
order
:
10
,
label
:
'借款状态'
,
prop
:
'loanState'
},
{
order
:
11
,
label
:
'资金渠道'
,
prop
:
'capitalCode'
},
{
order
:
12
,
label
:
'审批结果'
,
prop
:
'auditState'
}
],
list
:
[],
listLoading
:
true
,
pickerConfig
:
this
.
datePickerOptions
,
total
:
1
,
queryForm
:
{
current
:
1
,
size
:
10
,
certNo
:
''
,
mobile
:
''
,
orderNo
:
''
,
clientName
:
''
,
state
:
''
,
clientNo
:
''
,
time
:
''
,
startTime
:
''
,
endTime
:
''
}
}
},
computed
:
{
finallyColumns
()
{
let
finallyArray
=
[]
this
.
checkList
.
forEach
((
checkItem
)
=>
{
finallyArray
.
push
(
this
.
columns
.
filter
((
item
)
=>
item
.
label
===
checkItem
)[
0
]
)
})
return
_
.
sortBy
(
finallyArray
,
(
item
)
=>
item
.
order
)
//return finallyArray
},
...
mapGetters
([
'searchData'
,
'user'
])
},
mounted
()
{
this
.
fetchData
()
},
methods
:
{
onSearch
()
{
const
{
time
}
=
this
.
queryForm
this
.
queryForm
.
current
=
1
if
(
time
)
{
this
.
queryForm
.
startTime
=
time
[
0
]
this
.
queryForm
.
endTime
=
time
[
1
]
}
else
{
this
.
queryForm
.
startTime
=
''
this
.
queryForm
.
endTime
=
''
}
this
.
fetchData
()
},
handleDetail
(
row
)
{
const
{
orderNo
}
=
row
this
.
$router
.
push
({
path
:
'/loan/detail'
,
query
:
{
orderNo
}
})
},
// 页码变更
handleSizeChange
(
val
)
{
this
.
queryForm
.
size
=
val
this
.
queryForm
.
current
=
1
this
.
fetchData
()
},
handleCurrentChange
(
val
)
{
this
.
queryForm
.
current
=
val
this
.
fetchData
()
},
async
fetchData
()
{
try
{
this
.
listLoading
=
true
const
form
=
this
.
queryForm
const
params
=
Object
.
assign
({},
form
)
delete
params
.
time
const
result
=
await
API
.
LocalLoanAuditList
({
...
params
})
const
{
records
,
total
}
=
result
.
result
this
.
list
=
records
this
.
total
=
total
}
catch
(
err
){
console
.
log
(
err
,
'初始化稽核审批列表失败'
)
}
this
.
listLoading
=
false
},
// 稽核审批
handleAudit
(
row
)
{
const
{
orderNo
}
=
row
this
.
$router
.
push
({
path
:
'/loan/detail'
,
query
:
{
orderNo
,
type
:
"audit"
}
})
}
}
}
</
script
>
<
style
lang=
'scss'
scoped
>
.page-fence
{
::v-deep
{
i
{
cursor
:
pointer
;
}
}
box-sizing
:
border-box
;
padding
:
20px
;
}
</
style
>
<
style
lang=
'scss'
>
.custom-table-checkbox
{
.el-checkbox
{
display
:
block
!
important
;
margin
:
0
0
$base-padding
/
4
0
;
}
}
.action-bar
{
margin-bottom
:
15px
;
}
</
style
>
src/views/loan/localDetail.vue
0 → 100644
View file @
d9f9e863
<
template
>
<div
v-if=
'detail!==null'
class=
'page'
>
<!--用户项目信息-->
<template
v-if=
'project!==null'
>
<block-header
title=
'项目信息'
/>
<el-descriptions
style=
'margin-bottom: 20px;'
:content-style=
'CS'
:label-style=
'LS'
border
size=
'small'
:column=
'3'
>
<el-descriptions-item
project
label=
'订单编号'
>
{{
orderNo
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'项目名称'
>
{{
project
.
loanName
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'申请时间'
>
{{
project
.
loanApplyDate
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'借款状态'
>
<span>
{{
project
.
loanStatusStr
}}
</span>
</el-descriptions-item>
<el-descriptions-item
project
label=
'医院名称'
>
{{
project
.
regName
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'项目金额(元)'
>
{{
money
(
project
.
projectAmount
)
}}
元
</el-descriptions-item>
<el-descriptions-item
project
label=
'借款金额(元)'
>
{{
money
(
project
.
loanIntentionAmount
)
}}
元
</el-descriptions-item>
<el-descriptions-item
project
label=
'申请期数'
>
{{
project
.
loanIntentionNum
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'申请项目'
>
{{
project
.
projectName
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'还款方式'
>
{{
project
.
repaymentMode
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'手术时间'
>
{{
project
.
projectTime
}}
</el-descriptions-item>
</el-descriptions>
</
template
>
<!--用户基础信息-->
<
template
v-if=
'client!==null'
>
<block-header
title=
'客户信息'
>
<el-button
type=
"primary"
@
click=
"handleEditUserInfo"
size=
"small"
>
编辑
</el-button>
</block-header>
<el-descriptions
style=
'margin-bottom: 20px;'
:content-style=
'CS'
:label-style=
'LS'
border
size=
'small'
:column=
'3'
>
<el-descriptions-item
project
label=
'客户姓名'
>
{{
client
.
realName
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'身份证号'
>
{{
client
.
idCard
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'手机号码'
>
{{
client
.
mobile
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'学历'
>
{{
client
.
educationCodeStr
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'婚姻状况'
>
{{
client
.
marriageStr
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'工作行业'
>
{{
client
.
workIndustryStr
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'工作城市'
>
{{
client
.
companyAddress
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'公司全称'
>
{{
client
.
companyName
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'QQ/微信'
>
{{
client
.
qqWechar
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'合同展示地址'
>
{{
client
.
address
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'月收入'
>
{{
client
.
selfMonthIncomeStr
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'紧急联系人姓名'
>
{{
client
.
firstName
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'紧急联系人关系'
>
{{
client
.
firstRelationStr
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'紧急联系人电话'
>
{{
client
.
firstPhone
}}
</el-descriptions-item>
</el-descriptions>
</
template
>
<!--客户身份证-->
<block-header
title=
'客户身份证信息'
/>
<
template
v-if=
'clientIdCardInfoResponse.length'
>
<el-row
:gutter=
'20'
>
<el-col
v-for=
'(o, index) in clientIdCardInfoResponse'
:key=
'index'
:span=
'4'
>
<el-card
:body-style=
"
{ padding: '10px' }">
<el-image
class=
'el-card-image'
:src=
'o[1]'
@
click
.
native=
'showImgViewer(o[1])'
></el-image>
<div
class=
'el-card-intro'
>
<span
v-if=
'o[0]==="frontImgPath"'
>
身份证正面
</span>
<span
v-else
>
身份证反面
</span>
</div>
</el-card>
</el-col>
</el-row>
</
template
>
<no-data
v-else
/>
<!--补充附件信息-->
<block-header
title=
'补充附件信息'
/>
<
template
v-if=
'xcxSupplAttachInfo!==null && xcxSupplAttachInfo.length'
>
<el-row
:gutter=
'20'
>
<el-col
v-for=
'(o, index) in xcxSupplAttachInfo'
:key=
'index'
:span=
'4'
>
<el-card
:body-style=
"
{ padding: '10px' }">
<el-image
class=
'el-card-image'
:src=
'o.screenList[0]'
@
click
.
native=
'showImgViewer(o.screenList[0])'
>
<div
slot=
'error'
class=
'image-slot'
>
<span>
未上传
</span>
</div>
</el-image>
<div
class=
'el-card-intro'
>
<span>
{{
o
.
attachTypeStr
}}
</span>
</div>
</el-card>
</el-col>
</el-row>
</
template
>
<no-data
v-else
/>
<!--资金方-->
<
template
v-if=
'capitalName!==null'
>
<block-header
title=
'资方信息'
/>
<el-descriptions
style=
'margin-bottom: 20px;'
:content-style=
'CS'
:label-style=
'LS'
border
size=
'small'
:column=
'3'
>
<el-descriptions-item
project
label=
'资金方'
>
{{
capitalName
}}
</el-descriptions-item>
</el-descriptions>
</
template
>
<!--BD信息-->
<
template
v-if=
'bdInfoResponse!==null'
>
<block-header
title=
'BD信息'
/>
<el-descriptions
style=
'margin-bottom: 20px;'
direction=
'vertical'
:content-style=
'CS'
:label-style=
'LS'
border
size=
'small'
:column=
'4'
>
<el-descriptions-item
project
label=
'BD编号'
>
{{
bdInfoResponse
.
bdNo
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'BD名称'
>
{{
bdInfoResponse
.
bdName
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'部门信息'
>
{{
bdInfoResponse
.
regionName
}}
</el-descriptions-item>
<el-descriptions-item
project
label=
'BD用户名'
>
{{
bdInfoResponse
.
loginName
}}
</el-descriptions-item>
</el-descriptions>
</
template
>
<el-collapse
v-model=
'activeNames'
style=
'margin: 15px 0'
@
change=
'handleChange'
>
<el-collapse-item
title=
'人脸信息'
name=
'1'
>
<!--人脸 默认折叠-->
<
template
>
<block-header
title=
'人脸信息'
/>
<template
v-if=
'faceInfoResponse.length'
>
<el-row
:gutter=
'20'
>
<el-col
v-for=
'(o, index) in faceInfoResponse'
:key=
'index'
:span=
'4'
>
<el-card
:body-style=
"
{ padding: '10px' }">
<el-image
class=
'el-card-image'
:src=
'o[1]'
@
click
.
native=
'showImgViewer(o[1])'
></el-image>
<div
class=
'el-card-intro'
>
<span
v-if=
'o[0]==="panoramaImgPath"'
>
全景照
</span>
<span
v-else-if=
'o[0]==="randomImgPath"'
>
随机照
</span>
<span
v-else
>
最佳人脸照
</span>
</div>
</el-card>
</el-col>
</el-row>
</
template
>
<no-data
v-else
/>
</template>
</el-collapse-item>
<el-collapse-item
title=
'授信附件信息'
name=
'2'
>
<!--授信附件 默认折叠 -->
<
template
>
<block-header
title=
'授信附件信息'
/>
<template
v-if=
'creditAttachInfo.length'
>
<el-row
:gutter=
'20'
>
<el-col
v-for=
'(o, index) in creditAttachInfo'
:key=
'index'
:span=
'4'
>
<el-card
:body-style=
"
{ padding: '10px' }">
<el-image
class=
'el-card-image'
:src=
'o.screenList[0]'
@
click
.
native=
'showImgViewer(o.screenList[0])'
>
<div
slot=
'error'
class=
'image-slot'
>
<span>
未上传
</span>
</div>
</el-image>
<div
class=
'el-card-intro'
>
<span>
{{
o
.
attachTypeStr
}}
</span>
</div>
</el-card>
</el-col>
</el-row>
</
template
>
<no-data
v-else
/>
</template>
</el-collapse-item>
<el-collapse-item
title=
'客户附件信息'
name=
'3'
>
<!--客户附件 默认折叠 -->
<
template
>
<block-header
title=
'客户附件信息'
/>
<template
v-if=
'supplAttachInfo && supplAttachInfo.length'
>
<el-row
:gutter=
'20'
>
<el-col
v-for=
'(o, index) in supplAttachInfo'
:key=
'index'
:span=
'4'
>
<el-card
:body-style=
"
{ padding: '10px' }">
<el-image
class=
'el-card-image'
:src=
'o.screenList[0]'
@
click
.
native=
'showImgViewer(o.screenList[0])'
>
<div
slot=
'error'
class=
'image-slot'
>
<span>
未上传
</span>
</div>
</el-image>
<div
class=
'el-card-intro'
>
<span>
{{
o
.
attachTypeStr
}}
</span>
</div>
</el-card>
</el-col>
</el-row>
</
template
>
<no-data
v-else
/>
</template>
</el-collapse-item>
</el-collapse>
<!--操作日志-->
<block-header
title=
'操作日志'
/>
<
template
v-if=
'detail.operationLogResponse!==null'
>
<operation-log
:log=
'detail.operationLogResponse'
/>
</
template
>
<!--稽核弹框-->
<
template
v-if=
'visible'
>
<div
style=
'margin-top: 15px'
>
<block-header
title=
'稽核审批'
/>
<!--搜索-->
<el-form
ref=
'dForm'
label-suffix=
':'
label-width=
'90px'
:rules=
'dRules'
:model=
'dForm'
class=
'form-inline'
>
<el-form-item
prop=
'approveOpinion'
label=
'审批意见'
>
<template
v-if=
'searchData!==null'
>
<el-radio-group
v-model=
'dForm.approveOpinion'
>
<el-radio
v-for=
'(item,index) in searchData.opinionEnumResponses'
:key=
'index'
:label=
'item.code'
>
{{
item
.
desc
}}
</el-radio>
</el-radio-group>
</
template
>
</el-form-item>
<el-form-item
prop=
'memo'
label=
'备注'
>
<el-input
v-model=
'dForm.memo'
type=
'textarea'
clearable
placeholder=
'请输入备注'
/>
</el-form-item>
<el-form-item>
<el-button
type=
'primary'
@
click=
'onSubmit("dForm")'
>
确 定
</el-button>
<el-button
type=
'default'
@
click=
'onBack'
>
取 消
</el-button>
</el-form-item>
</el-form>
</div>
</template>
<!--额外附件-->
<block-header
title=
'额外附件资料'
/>
<
template
v-if=
'addAttachInfo!==null && addAttachInfo.length'
>
<el-row
:gutter=
'20'
>
<el-col
v-for=
'(o, index) in addAttachInfo'
:key=
'index'
:span=
'4'
>
<el-card
:body-style=
"
{ padding: '10px' }">
<el-image
class=
'el-card-image'
:src=
'o'
@
click
.
native=
'showImgViewer(o)'
>
<div
slot=
'error'
class=
'image-slot'
>
<span>
未上传
</span>
</div>
</el-image>
</el-card>
</el-col>
</el-row>
</
template
>
<no-data
v-else
/>
<el-form
label-suffix=
':'
label-width=
'80px'
label-position=
'left'
>
<el-form-item
label=
'附件图片'
>
<el-upload
class=
'auditUpload'
:action=
'UploadUrl'
:data=
'uploadParams'
:multiple=
'true'
:headers=
'headers'
:show-file-list=
'false'
:with-credentials=
'true'
:disabled=
'false'
:http-request=
'handleUpload'
>
<el-button
size=
'mini'
type=
'primary'
>
点击上传
</el-button>
</el-upload>
</el-form-item>
</el-form>
<!-- 图片预览-->
<el-image-viewer
v-if=
'imgViewerVisible'
:on-close=
'closeImgViewer'
:url-list=
'imgList'
/>
<!--编辑用户信息-->
<el-dialog
title=
"编辑用户信息"
:destroy-on-close=
"true"
:visible
.
sync=
"dialogVisible"
width=
"50%"
:before-close=
"handleDialogClose"
>
<el-form
ref=
"userForm"
:model=
'userForm'
label-suffix=
':'
label-width=
'120px'
label-position=
'left'
>
<el-form-item
prop=
"address"
label=
'合同展示地址'
>
<el-input
v-model=
"userForm.address"
></el-input>
</el-form-item>
<el-form-item>
<el-button
type=
'primary'
@
click=
'onUpdate'
>
更 新
</el-button>
<el-button
type=
'default'
@
click=
"handleDialogClose"
>
取 消
</el-button>
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<
script
>
import
API
from
'@/server/api'
import
{
mapGetters
}
from
'vuex'
import
Cookies
from
'js-cookie'
import
Axios
from
'axios'
export
default
{
name
:
'LoanDetail'
,
data
()
{
return
{
// 编辑信息
dialogVisible
:
false
,
// 图片上传相关
headers
:
{},
uploadParams
:
{},
UploadUrl
:
process
.
env
.
VUE_APP_API_PATH
,
dRules
:
{
memo
:
[
{
required
:
true
,
trigger
:
'blur'
,
message
:
'请输入备注'
}
],
approveOpinion
:
[
{
required
:
true
,
trigger
:
'blur'
,
message
:
'请选择审批意见'
}
]
},
dForm
:
{
memo
:
''
,
approveOpinion
:
''
,
currentAction
:
''
,
orderNo
:
''
,
stepsNo
:
''
,
userId
:
''
},
activeNames
:
''
,
// 稽核审批
visible
:
false
,
isLoan
:
true
,
orderNo
:
''
,
detail
:
null
,
project
:
null
,
client
:
null
,
bdInfoResponse
:
null
,
collectionAccountResponse
:
null
,
// 收款方
capitalName
:
null
,
// 资金方
userForm
:
{
address
:
''
,
userId
:
''
,
},
approvalResultResponse
:
null
,
faceInfoResponse
:
[],
creditAttachInfo
:
[],
clientIdCardInfoResponse
:
[],
reportResponse
:
null
,
thirdPartyReport
:
null
,
supplAttachInfo
:
[],
imgViewerVisible
:
false
,
imgList
:
[],
xcxSupplAttachInfo
:
null
,
addAttachInfo
:
null
,
}
},
computed
:
{
...
mapGetters
([
'searchData'
,
'user'
])
},
async
created
()
{
const
{
query
}
=
this
.
$route
if
(
query
&&
query
.
orderNo
)
{
this
.
orderNo
=
query
.
orderNo
await
this
.
init
()
}
},
methods
:
{
// 上传
async
handleUpload
(
obj
)
{
const
{
clientDetail
,
addAttachInfo
}
=
this
.
detail
const
{
file
}
=
obj
let
fileName
=
'jpg'
let
fileType
=
'LRD-ADMIN/audit'
const
resOssSign
=
await
API
.
initOssSign
({
fileName
,
fileType
})
console
.
log
(
resOssSign
,
'oss返回信息'
)
if
(
resOssSign
.
success
)
{
const
{
accessId
,
dir
,
expire
,
host
,
policy
,
signature
}
=
resOssSign
.
result
const
data
=
new
FormData
()
data
.
append
(
'key'
,
dir
)
data
.
append
(
'OSSAccessKeyId'
,
accessId
)
data
.
append
(
'policy'
,
policy
)
data
.
append
(
'Signature'
,
signature
)
data
.
append
(
'success_action_status'
,
'200'
)
data
.
append
(
'file'
,
file
)
try
{
Axios
({
url
:
host
,
method
:
'post'
,
data
:
data
,
headers
:
{
'Content-Type'
:
'multipart/form-data'
}
}).
then
(
async
(
res
)
=>
{
console
.
log
(
res
,
'w'
)
const
uploadFileUrl
=
host
+
dir
const
annexList
=
[
uploadFileUrl
]
const
result
=
await
API
.
saveExtraImg
({
annexList
,
creditNo
:
clientDetail
.
creditNo
})
if
(
result
.
success
)
{
this
.
$message
.
success
(
'上传成功'
)
addAttachInfo
.
push
(
uploadFileUrl
)
this
.
detail
.
addAttachInfo
=
addAttachInfo
}
}).
catch
(
e
=>
{
throw
new
Error
(
e
)
})
}
catch
(
e
)
{
this
.
$message
.
error
(
'上传报错'
)
}
}
},
// 初始化详情
async
init
()
{
const
orderNo
=
this
.
orderNo
const
result
=
await
API
.
loanDetail
({
orderNo
})
const
data
=
result
.
result
const
{
bdInfoResponse
,
clientDetail
,
capitalName
,
clientIdCardInfoResponse
,
collectionAccountResponse
,
creditAttachInfo
,
faceInfoResponse
,
approvalResultResponse
,
projectInfoResponse
,
repayAccountResponse
,
reportResponse
,
supplAttachInfo
,
thirdPartyReport
,
xcxSupplAttachInfo
,
addAttachInfo
}
=
data
this
.
project
=
projectInfoResponse
this
.
client
=
clientDetail
this
.
capitalName
=
capitalName
// 资金方
this
.
collectionAccountResponse
=
collectionAccountResponse
// 收款方信息
this
.
repayAccountResponse
=
repayAccountResponse
// 还款方信息
this
.
bdInfoResponse
=
bdInfoResponse
// 还款方信息
this
.
userForm
.
address
=
clientDetail
.
address
;
this
.
userForm
.
userId
=
clientDetail
.
userId
;
this
.
approvalResultResponse
=
approvalResultResponse
this
.
clientIdCardInfoResponse
=
Object
.
entries
(
clientIdCardInfoResponse
)
this
.
faceInfoResponse
=
Object
.
entries
(
faceInfoResponse
)
this
.
creditAttachInfo
=
creditAttachInfo
// 授信图片信息
this
.
reportResponse
=
reportResponse
this
.
thirdPartyReport
=
JSON
.
parse
(
thirdPartyReport
)
this
.
supplAttachInfo
=
supplAttachInfo
// 附件信息
this
.
addAttachInfo
=
addAttachInfo
if
(
xcxSupplAttachInfo
&&
xcxSupplAttachInfo
.
length
>
0
)
{
this
.
xcxSupplAttachInfo
=
xcxSupplAttachInfo
}
this
.
detail
=
data
if
(
this
.
$route
.
query
&&
this
.
$route
.
query
.
type
)
{
this
.
visible
=
true
this
.
dForm
.
orderNo
=
this
.
orderNo
this
.
dForm
.
stepsNo
=
projectInfoResponse
.
stepsNo
this
.
dForm
.
currentAction
=
projectInfoResponse
.
currentAction
}
},
// 手风琴折叠那啥
handleChange
(
val
)
{
this
.
activeNames
=
val
},
// 稽核审批提交
onSubmit
(
formName
)
{
this
.
$refs
[
formName
].
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
this
.
$confirm
(
'是否确认提交?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
async
(
res
)
=>
{
console
.
log
(
res
,
'是啥'
)
const
form
=
this
.
dForm
form
.
userId
=
this
.
user
.
userId
console
.
log
(
form
,
'表单数据'
)
const
result
=
await
API
.
loanAuditSubmit
({
...
form
})
if
(
result
.
success
)
{
this
.
$message
({
type
:
'success'
,
message
:
'操作成功!'
})
}
this
.
onBack
()
}).
catch
((
e
)
=>
{
console
.
log
(
e
,
'取消申述了'
)
})
}
})
},
// 返回
onBack
()
{
this
.
$router
.
back
()
},
// 图片上传
arraySplice
(
obj
,
result
)
{
if
(
Array
.
isArray
(
obj
))
{
obj
.
forEach
(
item
=>
{
result
=
result
.
concat
(
item
.
screenList
)
})
}
else
{
const
{
values
}
=
Object
for
(
let
val
of
values
(
obj
))
{
if
(
val
)
result
.
push
(
val
)
}
}
return
result
},
showImgViewer
(
firstImg
)
{
const
{
clientIdCardInfoResponse
,
creditAttachInfo
,
faceInfoResponse
,
supplAttachInfo
,
xcxSupplAttachInfo
,
addAttachInfo
}
=
this
.
detail
let
imgArray
=
[]
// 客户身份证
if
(
clientIdCardInfoResponse
)
{
imgArray
=
this
.
arraySplice
(
clientIdCardInfoResponse
,
imgArray
)
}
// 补充图片
if
(
xcxSupplAttachInfo
&&
xcxSupplAttachInfo
.
length
)
{
imgArray
=
this
.
arraySplice
(
xcxSupplAttachInfo
,
imgArray
)
}
// 活体
if
(
faceInfoResponse
)
{
imgArray
=
this
.
arraySplice
(
faceInfoResponse
,
imgArray
)
}
// 授信图片
if
(
creditAttachInfo
&&
creditAttachInfo
.
length
)
{
imgArray
=
this
.
arraySplice
(
creditAttachInfo
,
imgArray
)
}
// 附件图片
if
(
supplAttachInfo
&&
supplAttachInfo
.
length
)
{
imgArray
=
this
.
arraySplice
(
supplAttachInfo
,
imgArray
)
}
// 额外的图片
if
(
addAttachInfo
&&
addAttachInfo
.
length
)
{
addAttachInfo
.
forEach
(
item
=>
{
imgArray
.
push
(
item
)
})
}
// 获取当前点击图片的索引
const
curIndex
=
imgArray
.
findIndex
((
item
)
=>
item
===
firstImg
)
// 把索引之前的内容copy一份
const
ArrayHeader
=
imgArray
.
slice
(
0
,
curIndex
)
// 删除索引之前的内容
imgArray
.
splice
(
0
,
curIndex
)
console
.
log
(
ArrayHeader
,
imgArray
)
imgArray
=
imgArray
.
concat
(
ArrayHeader
)
console
.
log
(
imgArray
)
this
.
imgList
=
imgArray
this
.
imgList
=
imgArray
this
.
imgViewerVisible
=
true
const
m
=
(
e
)
=>
{
e
.
preventDefault
()
}
document
.
body
.
style
.
overflow
=
'hidden'
document
.
addEventListener
(
'touchmove'
,
m
,
false
)
// 禁止页面滑动
},
closeImgViewer
()
{
this
.
imgViewerVisible
=
false
const
m
=
(
e
)
=>
{
e
.
preventDefault
()
}
document
.
body
.
style
.
overflow
=
'auto'
document
.
removeEventListener
(
'touchmove'
,
m
,
true
)
},
// 编辑用户信息
handleEditUserInfo
()
{
this
.
dialogVisible
=
true
;
},
// 关闭弹框
handleDialogClose
()
{
this
.
dialogVisible
=
false
;
},
// 更新用户信息
onUpdate
()
{
this
.
$refs
[
'userForm'
].
validate
(
async
(
valid
)
=>
{
if
(
valid
)
{
this
.
$confirm
(
'是否确认更新?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(
async
(
res
)
=>
{
const
form
=
this
.
userForm
;
const
result
=
await
API
.
CustomerClientInfoUpdate
({
...
form
})
if
(
result
.
success
)
{
this
.
$message
({
type
:
'success'
,
message
:
'操作成功!'
})
await
this
.
init
();
}
this
.
dialogVisible
=
false
;
}).
catch
((
e
)
=>
{
console
.
log
(
e
,
'取消更新了'
)
})
}
})
}
}
}
</
script
>
<
style
lang=
'scss'
src=
'./index.scss'
></
style
>
src/views/loan/localList.vue
0 → 100644
View file @
d9f9e863
<
template
>
<div
class=
'page-fence'
>
<!--搜索-->
<block-header
title=
'搜索'
/>
<div
class=
'search'
>
<el-form
ref=
'form'
label-suffix=
':'
:inline=
'true'
:model=
'queryForm'
class=
'form-inline'
>
<el-form-item
prop=
'orderNo'
label=
'订单编号'
>
<el-input
v-model=
'queryForm.orderNo'
clearable
placeholder=
'请输入订单编号'
/>
</el-form-item>
<el-form-item
prop=
'clientName'
label=
'客户姓名'
>
<el-input
v-model=
'queryForm.clientName'
clearable
placeholder=
'请输入客户姓名'
/>
</el-form-item>
<el-form-item
prop=
'mobile'
label=
'手机号码'
>
<el-input
v-model=
'queryForm.mobile'
clearable
placeholder=
'请输入客户手机号码'
/>
</el-form-item>
<el-form-item
prop=
'loanName'
label=
'项目名称'
>
<el-input
v-model=
'queryForm.loanName'
clearable
placeholder=
'请输入客户手机号码'
/>
</el-form-item>
<template
v-if=
'searchData!==null'
>
<el-form-item
prop=
'capitalCodeLoanSign'
label=
'资金渠道'
>
<el-select
v-model=
'queryForm.capitalCodeLoanSign'
:popper-append-to-body=
'false'
style=
'width: 100%;'
clearable
>
<el-option
v-for=
'(item,index) in searchData.financierResponseList'
:key=
'index'
:value=
'item.capitalCodeLoanSign'
:label=
'item.message'
@
click
.
native=
'handleCapitalChange(item)'
>
</el-option>
</el-select>
</el-form-item>
</
template
>
<
template
v-if=
'searchData!==null'
>
<el-form-item
prop=
'loanResult'
label=
'放款确认结果'
>
<el-select
v-model=
'queryForm.loanResult'
:popper-append-to-body=
'false'
style=
'width: 100%;'
clearable
>
<el-option
v-for=
'(item,index) in searchData.loanConfirmResultResponseList'
:key=
'index'
:value=
'item.loanConfirmResult'
:label=
'item.loanConfirmResultStr'
>
</el-option>
</el-select>
</el-form-item>
</
template
>
<el-form-item
prop=
'certNo'
label=
'身份证号'
>
<el-input
v-model=
'queryForm.certNo'
clearable
placeholder=
'请输入'
/>
</el-form-item>
<el-form-item
prop=
'time'
label=
'申请时间'
>
<el-date-picker
v-model=
'queryForm.time'
type=
'datetimerange'
:picker-options=
'pickerConfig'
:default-time=
"['00:00:00', '23:59:59']"
value-format=
'yyyy-MM-dd HH:mm:ss'
range-separator=
'至'
start-placeholder=
'开始时间'
end-placeholder=
'结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
icon=
'el-icon-search'
type=
'primary'
@
click=
'onSearch'
>
搜 索
</el-button>
<el-button
icon=
'el-icon-delete'
type=
'default'
@
click=
"onReset('form')"
>
重 置
</el-button>
</el-form-item>
</el-form>
</div>
<!--表格-->
<block-header
title=
'借款列表'
/>
<el-table
ref=
'tableSort'
v-loading=
'listLoading'
border
:data=
'list'
style=
'width: 100%'
>
<el-table-column
v-for=
'(item, index) in finallyColumns'
:key=
'index'
align=
'center'
:label=
'item.label'
:sortable=
'item.sortable'
:width=
'item.width'
:fixed=
'!!item.fixed'
:show-overflow-tooltip=
'!!item.overflow'
>
<
template
#
default=
'{ row }'
>
<div
v-if=
'item.label==="客户信息"'
>
{{
row
.
realName
}}
<br
/>
{{
row
.
mobile
}}
</div>
<div
v-else-if=
'item.label==="借款金额"'
>
{{
money
(
row
.
loanAmount
)
}}
</div>
<div
v-else-if=
'item.label==="放款状态"'
>
<el-tag
v-if=
'row.loanStatus==="CANCELED"'
type=
'info'
>
{{
row
.
loanStatusStr
}}
</el-tag>
<el-tag
v-else-if=
'row.loanStatus==="SETTLED"'
>
{{
row
.
loanStatusStr
}}
</el-tag>
<el-tag
v-else-if=
'row.loanStatus==="SUBMITED"'
type=
'warning'
>
{{
row
.
loanStatusStr
}}
</el-tag>
<el-tag
v-else
type=
'success'
>
{{
row
.
loanStatusStr
}}
</el-tag>
</div>
<span
v-else
>
{{
row
[
item
.
prop
]
}}
</span>
</
template
>
</el-table-column>
<el-table-column
fixed=
'right'
align=
'center'
label=
'操作'
>
<
template
#
default=
'{ row }'
>
<template
v-if=
'row.loanStatus==="SUBMITED" && row.stepsNo==="004"'
>
<el-button
type=
'text'
@
click=
'handleDialog(row,"confirm")'
>
放款
</el-button>
<el-button
type=
'text'
@
click=
'handleDialog(row,"cancel")'
>
取消
</el-button>
</
template
>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page=
'queryForm.current'
layout=
'total,sizes, prev, pager, next'
:page-sizes=
'[10,20,30,40,50,100]'
:page-size=
'queryForm.size'
:total=
'total'
background
@
size-change=
'handleSizeChange'
@
current-change=
'handleCurrentChange'
/>
<!--放款确认,放款取消-->
<
template
v-if=
'DialogVisible'
>
<check
:title=
'DialogTitle'
:visible=
'DialogVisible'
:item=
'item'
@
handleClose=
'DialogVisible = false'
@
callback=
'fetchData'
/>
</
template
>
</div>
</template>
<
script
>
import
_
from
'lodash'
import
API
from
'@/server/api'
import
{
mapGetters
}
from
'vuex'
import
Check
from
'./components/check'
export
default
{
name
:
'LoanAudit'
,
components
:
{
'Check'
:
Check
},
data
()
{
return
{
DialogTitle
:
''
,
DialogVisible
:
false
,
dialogForm
:
{
loanAmount
:
''
,
clientName
:
''
,
currentAction
:
''
,
orderNo
:
''
,
memo
:
''
,
stepsNo
:
''
,
userId
:
''
,
payChannelApi
:
''
},
payChannelApiResponses
:
[],
checkList
:
[
'订单编号'
,
'项目名称'
,
'客户姓名'
,
'手机号码'
,
'借款金额'
,
'借款期数'
,
'BD姓名'
,
'商户区域'
,
'创建时间'
,
'放款状态'
,
'放款确认结果'
,
'资金渠道'
],
columns
:
[
{
order
:
1
,
label
:
'订单编号'
,
prop
:
'orderNo'
},
{
order
:
2
,
label
:
'项目名称'
,
prop
:
'loanName'
},
{
order
:
3
,
label
:
'客户姓名'
,
prop
:
'realName'
},
{
order
:
3
,
label
:
'手机号码'
,
prop
:
'mobile'
},
{
order
:
5
,
label
:
'借款金额'
,
prop
:
'loanAmount'
},
{
order
:
6
,
label
:
'借款期数'
,
prop
:
'loanNum'
},
{
order
:
7
,
label
:
'BD姓名'
,
prop
:
'bdName'
},
{
order
:
8
,
label
:
'商户区域'
,
prop
:
'regionName'
},
{
order
:
9
,
label
:
'创建时间'
,
width
:
110
,
prop
:
'gmtCreated'
},
{
order
:
10
,
label
:
'放款状态'
,
prop
:
'loanStatusStr'
},
{
order
:
11
,
label
:
'资金渠道'
,
prop
:
'loanSignStr'
},
{
order
:
12
,
label
:
'放款确认结果'
,
prop
:
'loanResultStr'
}
],
list
:
[],
listLoading
:
true
,
pickerConfig
:
this
.
datePickerOptions
,
total
:
1
,
rules
:
{
memo
:
[
{
required
:
true
,
trigger
:
'blur'
,
message
:
'请输入备注'
}
]
//payChannelApi: [
// {
// required: true,
// trigger: 'blur',
// message: '请选择放款渠道'
// }
//]
},
queryForm
:
{
current
:
1
,
size
:
10
,
certNo
:
''
,
loanResult
:
'TO_BE_CONFIRMED'
,
mobile
:
''
,
orderNo
:
''
,
loanName
:
''
,
clientName
:
''
,
time
:
''
,
startTime
:
''
,
endTime
:
''
,
userId
:
''
,
capitalCode
:
''
,
loanSign
:
''
,
capitalCodeLoanSign
:
''
}
}
},
computed
:
{
finallyColumns
()
{
let
finallyArray
=
[]
this
.
checkList
.
forEach
((
checkItem
)
=>
{
finallyArray
.
push
(
this
.
columns
.
filter
((
item
)
=>
item
.
label
===
checkItem
)[
0
]
)
})
return
_
.
sortBy
(
finallyArray
,
(
item
)
=>
item
.
order
)
//return finallyArray
},
...
mapGetters
([
'searchData'
,
'user'
])
},
mounted
()
{
this
.
fetchData
()
},
methods
:
{
handleClose
()
{
this
.
DialogVisible
=
false
this
.
$refs
[
'dialogForm'
].
resetFields
()
},
onReset
(
formName
)
{
if
(
formName
)
{
this
.
queryForm
.
capitalCode
=
''
this
.
queryForm
.
loanSign
=
''
this
.
$refs
[
formName
].
resetFields
()
}
},
// 资金方选择下拉
handleCapitalChange
(
item
)
{
if
(
item
)
{
const
{
capitalCode
,
loanSign
}
=
item
this
.
queryForm
.
capitalCode
=
capitalCode
this
.
queryForm
.
loanSign
=
loanSign
}
},
onSearch
()
{
const
{
time
}
=
this
.
queryForm
this
.
queryForm
.
current
=
1
if
(
time
)
{
this
.
queryForm
.
startTime
=
time
[
0
]
this
.
queryForm
.
endTime
=
time
[
1
]
}
else
{
this
.
queryForm
.
startTime
=
''
this
.
queryForm
.
endTime
=
''
}
this
.
fetchData
()
},
handleDialog
(
row
,
type
)
{
if
(
type
)
row
.
type
=
type
this
.
item
=
row
this
.
DialogVisible
=
true
this
.
DialogTitle
=
type
===
'confirm'
?
'确认放款'
:
'取消放款'
console
.
log
(
row
,
type
)
},
// 页码变更
handleCurrentChange
(
val
)
{
this
.
queryForm
.
current
=
val
this
.
fetchData
()
},
// 页码变更
handleSizeChange
(
val
)
{
this
.
queryForm
.
current
=
1
this
.
queryForm
.
size
=
val
this
.
fetchData
()
},
async
fetchData
()
{
this
.
listLoading
=
true
const
form
=
this
.
queryForm
const
params
=
Object
.
assign
({},
form
)
delete
params
.
time
const
result
=
await
API
.
LocalLoanList
({
...
params
})
const
{
records
,
total
}
=
result
.
result
this
.
list
=
records
this
.
total
=
total
this
.
listLoading
=
false
}
}
}
</
script
>
<
style
lang=
'scss'
scoped
>
.page-fence
{
::v-deep
{
i
{
cursor
:
pointer
;
}
}
box-sizing
:
border-box
;
padding
:
20px
;
}
</
style
>
<
style
lang=
'scss'
>
.custom-table-checkbox
{
.el-checkbox
{
display
:
block
!
important
;
margin
:
0
0
$base-padding
/
4
0
;
}
}
.action-bar
{
margin-bottom
:
15px
;
}
</
style
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment