Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
Y
yishuju-ui
Project
Project
Details
Activity
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
何远江
yishuju-ui
Commits
2647b21f
Commit
2647b21f
authored
Mar 14, 2025
by
沈翠玲
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
风控审核
parent
524a0269
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
101915 additions
and
25780 deletions
+101915
-25780
customer.js
src/api/customer.js
+4
-0
china.json
src/views/data-screen/assets/china.json
+101788
-25730
ChinaMapChart.vue
src/views/data-screen/components/ChinaMapChart.vue
+20
-26
dangerReportDetail.vue
...infoGather/dangerReport/components/dangerReportDetail.vue
+15
-9
index.vue
src/views/infoGather/dangerReport/index.vue
+62
-15
TenantFormModal.vue
src/views/system/tenantManage/components/TenantFormModal.vue
+16
-0
index.vue
src/views/system/tenantManage/index.vue
+10
-0
No files found.
src/api/customer.js
View file @
2647b21f
...
...
@@ -47,3 +47,7 @@ export const getcustomerReportPage = (params) => {
export
const
getlegalPage
=
(
params
)
=>
{
return
request
.
get
(
'/customerReport/legalPage'
,
params
);
};
// 审核风控
export
const
savecustomerReport
=
(
data
)
=>
{
return
request
.
post
(
'/customerReport/save'
,
data
);
};
\ No newline at end of file
src/views/data-screen/assets/china.json
View file @
2647b21f
This diff is collapsed.
Click to expand it.
src/views/data-screen/components/ChinaMapChart.vue
View file @
2647b21f
...
...
@@ -11,7 +11,7 @@ import echarts, { ECOption } from "@/components/ECharts/config";
import
ECharts
from
"@/components/ECharts/index.vue"
;
import
mapJson
from
"../assets/china.json"
;
//
echarts.registerMap("china", mapJson as Parameters
<
typeof
echarts
.
registerMap
>
[
1
]);
echarts
.
registerMap
(
"china"
,
mapJson
as
Parameters
<
typeof
echarts
.
registerMap
>
[
1
]);
// var geoCoordMap = {
// 台湾: [121.5135, 25.0308],
...
...
@@ -352,12 +352,15 @@ const option: ECOption = {
bottom
:
40
,
showLabel
:
!
0
,
text
:
[
"高"
,
"低"
],
textStyle
:
{
color
:
'#fff'
},
pieces
:
[{
gt
:
200
,
label
:
"1 - 9 人"
,
color
:
"#8616fe"
},
{
gt
:
10
0
,
gt
:
0
,
lt
:
200
,
label
:
"疑似"
,
color
:
"#6b1dfd"
...
...
@@ -369,7 +372,7 @@ const option: ECOption = {
},
geo
:
{
map
:
'china'
,
show
:
tru
e
,
show
:
fals
e
,
roam
:
false
,
label
:
{
emphasis
:
{
...
...
@@ -391,41 +394,32 @@ const option: ECOption = {
type
:
"map"
,
map
:
'china'
,
aspectScale
:
0.75
,
top
:
100
,
zoom
:
1.3
,
label
:
{
normal
:
{
formatter
:
function
(
para
)
{
return
'{name|'
+
para
.
name
+
'}'
},
rich
:
{
cnNum
:
{
fontSize
:
11
,
color
:
'#333333'
,
align
:
'center'
,
},
name
:
{
fontSize
:
11
,
color
:
'#333333'
,
align
:
'center'
,
lineHeight
:
20
,
},
},
//formatter: '{b}',
color
:
'#333333'
,
show
:
true
show
:
false
,
fontSize
:
"14"
,
color
:
"rgba(0,0,0,0.7)"
},
emphasis
:
{
show
:
true
,
fontSize
:
"14"
,
color
:
"rgba(0,0,0,0.7)"
}
},
itemStyle
:
{
normal
:
{
areaColor
:
'#D9EEFF'
,
borderColor
:
'#fff'
,
borderWidth
:
1
,
areaColor
:
'rgba(255,255,255,0.1)'
,
borderWidth
:
2
,
//shadowColor: 'rgba(0, 0, 0, 0.2)',
borderColor
:
"rgba(255,255,255,0.3)"
},
emphasis
:
{
areaColor
:
'#FFAE00'
,
areaColor
:
"#29f5fa"
,
// shadowOffsetX: 0,
// shadowOffsetY: 0,
// borderWidth: 0
}
},
data
:
mapData
...
...
src/views/infoGather/dangerReport/components/dangerReportDetail.vue
View file @
2647b21f
...
...
@@ -161,7 +161,7 @@
import
{
useDict
}
from
'@/hooks/useDict'
;
import
{
useRoute
}
from
'vue-router'
;
import
{
useRouter
}
from
'vue-router'
;
import
{
getByIdcustomerReport
}
from
'@/api/customer'
;
import
{
getByIdcustomerReport
,
savecustomerReport
}
from
'@/api/customer'
;
import
{
ref
,
reactive
,
onBeforeMount
,
computed
}
from
'vue'
;
const
{
LoanStatus
,
Marriage
,
RiskType
}
=
useDict
(
"LoanStatus"
,
"Marriage"
,
"RiskType"
);
const
form
=
ref
({
...
...
@@ -184,15 +184,7 @@ const roleType = computed(() => {
return
'legal'
}
});
const
submit
=
(
type
)
=>
{
tabStore
.
removeTabs
(
route
.
fullPath
).
then
(
res
=>
{
router
.
push
({
path
:
'/infoGather/dangerReport'
});
});
}
const
cancel
=
()
=>
{
console
.
log
(
'roleType'
,
roleType
)
if
(
roleType
.
value
===
'view'
)
{
tabStore
.
removeTabs
(
route
.
fullPath
).
then
(
res
=>
{
router
.
push
({
...
...
@@ -213,6 +205,20 @@ const cancel = () => {
});
}
}
const
submit
=
(
type
)
=>
{
const
param
=
JSON
.
parse
(
JSON
.
stringify
({...
form
.
value
}))
if
(
roleType
.
value
===
'risk'
)
{
param
[
'riskControlStatus'
]
=
type
}
else
{
param
[
'legalAffairStatus'
]
=
type
}
savecustomerReport
(
param
).
then
(
res
=>
{
if
(
res
.
success
)
{
cancel
()
}
})
}
const
query
=
async
(
type
)
=>
{
getByIdcustomerReport
(
route
.
query
.
id
).
then
(
res
=>
{
if
(
res
.
success
)
{
...
...
src/views/infoGather/dangerReport/index.vue
View file @
2647b21f
...
...
@@ -36,18 +36,20 @@
const
route
=
useRoute
();
const
proTable
=
ref
(
null
);
const
paramObj
=
ref
();
const
selectdList
=
ref
([]);
const
onCheckboxChange
=
(
row
)
=>
{
selectdList
.
value
=
row
.
records
;
};
const
router
=
useRouter
();
const
func
=
()
=>
{
if
(
route
.
fullPath
.
includes
(
'infoGather/dangerReport'
))
{
return
getcustomerReportPage
return
getcustomerReportPage
(
paramObj
.
value
)
}
else
if
(
route
.
fullPath
.
includes
(
'/business-approval/riskManager'
))
{
return
getriskPage
return
getriskPage
(
paramObj
.
value
)
}
else
if
(
route
.
fullPath
.
includes
(
'/business-approval/legalManager'
))
{
return
getlegalPage
return
getlegalPage
(
paramObj
.
value
)
}
}
const
activeName
=
ref
(
'pending'
);
...
...
@@ -58,6 +60,7 @@
if
(
obj
[
'createTime'
][
1
])
obj
[
'createTimeEnd'
]
=
obj
[
'createTime'
][
1
];
delete
obj
[
'createTime'
];
}
paramObj
.
value
=
obj
return
obj
;
};
const
onCheckboxAll
=
(
flag
)
=>
{
...
...
@@ -74,7 +77,6 @@
});
};
const
onCellClick
=
({
row
,
rowIndex
})
=>
{
if
(
route
.
fullPath
.
includes
(
'infoGather/dangerReport'
))
{
router
.
push
({
name
:
'dangerReportDetail'
,
...
...
@@ -97,8 +99,9 @@
onCheckboxAll
:
onCheckboxAll
,
onCellClick
:
onCellClick
,
columns
:
[
{
field
:
'customer.name'
,
title
:
'客户名称'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'createTime'
,
field
:
'c
ustomer.c
reateTime'
,
title
:
'创建日期'
,
search
:
{
el
:
'date-picker'
,
...
...
@@ -107,19 +110,63 @@
},
},
{
field
:
'c
reateBy
'
,
field
:
'c
ustomer.inputUserName
'
,
title
:
'创建人'
,
search
:
{
el
:
'input'
,
labelWidth
:
85
,
props
:
{
clearable
:
true
}
},
},
{
field
:
'name'
,
title
:
'客户名称'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'name'
,
title
:
'身份证号'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'name'
,
title
:
'手机'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'name'
,
title
:
'电子邮箱'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'maxStagesNum'
,
title
:
'信用卡数量'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'maxStagesNum'
,
title
:
'网贷&信用贷数量'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'remark'
,
title
:
'欠款总额'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'remark'
,
title
:
'备注'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'remark'
,
title
:
'风控审核状态'
},
{
field
:
'customer.idCard'
,
title
:
'身份证号'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'customer.phone'
,
title
:
'手机'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'customer.email'
,
title
:
'电子邮箱'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'maxStagesNum'
,
title
:
'信用卡数量'
,
slots
:
{
default
:
({
row
,
rowIndex
})
=>
{
return
(
<>
{
row
.
customer
?.
creditCard
.
length
}
<
/
>
);
},
},
},
{
field
:
'maxStagesNum'
,
title
:
'网贷&信用贷数量'
,
slots
:
{
default
:
({
row
,
rowIndex
})
=>
{
return
(
<>
{
row
.
customer
?.
lending
.
length
}
<
/
>
);
},
},
},
{
field
:
'remark'
,
title
:
'欠款总额'
,
slots
:
{
default
:
({
row
,
rowIndex
})
=>
{
return
(
<>
{[...
row
.
customer
?.
creditCard
,
...
row
.
customer
?.
lending
].
reduce
((
pre
,
cur
)
=>
pre
+
Number
(
cur
.
debt
),
0
)}
<
/
>
);
},
},
},
{
field
:
'legalAffairRemark'
,
title
:
'备注'
,
search
:
{
labelWidth
:
85
,
el
:
'input'
}
},
{
field
:
'riskControlStatus'
,
slots
:
{
default
:
({
row
})
=>
{
return
(
<>
{
row
.
riskControlStatus
?
FlowStatus
.
value
?.
find
((
v
)
=>
v
.
value
===
row
.
riskControlStatus
)?.
label
:
''
}
<
/
>
);
},
},
title
:
'风控审核状态'
},
{
field
:
'legalAffairStatus'
,
slots
:
{
default
:
({
row
})
=>
{
return
(
<>
{
row
.
legalAffairStatus
?
FlowStatus
.
value
?.
find
((
v
)
=>
v
.
value
===
row
.
legalAffairStatus
)?.
label
:
''
}
<
/
>
);
},
},
title
:
'法务审核状态'
},
],
});
...
...
src/views/system/tenantManage/components/TenantFormModal.vue
View file @
2647b21f
...
...
@@ -11,6 +11,7 @@
>
<el-form
ref=
"formRef"
:model=
"form"
:rules=
"rules"
inline
label-width=
"110px"
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"24"
>
<el-form-item
class=
"w-full"
label=
"调解中心名称"
prop=
"name"
>
<el-input
v-model=
"form.name"
placeholder=
"请输入调解中心名称"
/>
...
...
@@ -21,6 +22,18 @@
<el-input
v-model=
"form.code"
placeholder=
"调解中心编码"
/>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
class=
"w-full"
label=
"省份"
prop=
"name"
>
<el-select
v-model=
"form.province"
placeholder=
"请选择"
>
<el-option
v-for=
"item in citydata"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:span=
"24"
>
<el-form-item
class=
"w-full"
label=
"负责人"
prop=
"adminUser"
>
<el-input
v-model=
"form.adminUser"
placeholder=
"负责人"
/>
...
...
@@ -53,6 +66,7 @@
import
{
ref
,
computed
}
from
'vue'
;
import
{
saveTenant
}
from
'@/api/tenant'
;
import
{
ElMessage
}
from
'element-plus'
;
import
citydata
from
'../../../../assets/citydata'
;
const
emits
=
defineEmits
([
'success'
]);
const
currentTenant
=
ref
(
null
);
...
...
@@ -66,6 +80,7 @@
name
:
''
,
code
:
''
,
adminUser
:
''
,
province
:
''
,
phone
:
''
,
status
:
'enable'
,
});
...
...
@@ -109,6 +124,7 @@
const
onHide
=
()
=>
{
form
.
value
=
{
name
:
''
,
province
:
''
,
code
:
''
,
adminUser
:
''
,
phone
:
''
,
...
...
src/views/system/tenantManage/index.vue
View file @
2647b21f
...
...
@@ -19,6 +19,7 @@
import
TenantFormModal
from
'./components/TenantFormModal.vue'
;
import
AllocationUserModal
from
'./components/AllocationUserModal.vue'
;
import
{
ElMessageBox
,
ElMessage
,
ElButton
,
ElTag
}
from
'element-plus'
;
import
citydata
from
'../../../assets/citydata'
;
const
proTable
=
ref
(
null
);
const
tenatModalRef
=
ref
(
null
);
...
...
@@ -28,6 +29,15 @@
{
type
:
'checkbox'
,
width
:
60
,
fixed
:
'left'
},
{
field
:
'name'
,
title
:
'调解中心名称'
,
search
:
{
el
:
'input'
}
},
{
field
:
'code'
,
title
:
'调解中心编码'
,
search
:
{
el
:
'input'
}
},
{
field
:
'province'
,
enum
:
citydata
,
showOverflow
:
'tooltip'
,
title
:
'省份'
,
fieldNames
:
{
label
:
'label'
,
value
:
'value'
},
showOverflow
:
'tooltip'
,
// search: { el: 'select', props: { clearable: true } },
},
{
field
:
'adminUser'
,
title
:
'负责人'
},
{
field
:
'phone'
,
title
:
'负责人手机'
},
{
...
...
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