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
Expand all
Hide 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
This diff is collapsed.
Click to expand it.
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
This diff is collapsed.
Click to expand it.
src/views/loan/localList.vue
0 → 100644
View file @
d9f9e863
This diff is collapsed.
Click to expand it.
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