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
78eadc82
Commit
78eadc82
authored
Mar 07, 2025
by
沈翠玲
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
采集管理
parent
00571c88
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
1304 additions
and
222 deletions
+1304
-222
MoreButton.vue
src/layouts/components/Tabs/components/MoreButton.vue
+1
-0
element.scss
src/styles/element.scss
+7
-1
Credit.vue
src/views/infoGather/customerGather/components/Credit.vue
+168
-199
Creditcard.vue
...views/infoGather/customerGather/components/Creditcard.vue
+197
-4
Customer.vue
src/views/infoGather/customerGather/components/Customer.vue
+459
-0
index.vue
src/views/infoGather/customerGather/index.vue
+30
-15
dangerReportDetail.vue
...infoGather/dangerReport/components/dangerReportDetail.vue
+301
-0
index.vue
src/views/infoGather/dangerReport/index.vue
+141
-3
No files found.
src/layouts/components/Tabs/components/MoreButton.vue
View file @
78eadc82
...
...
@@ -80,6 +80,7 @@ const closeOthersTags = () => {
// Close Current
const
closeCurrentTab
=
()
=>
{
if
(
!
props
.
selectedTag
.
close
)
return
;
console
.
log
(
'props.selectedTag.path'
,
props
.
selectedTag
.
path
)
tabStore
.
removeTabs
(
props
.
selectedTag
.
path
);
};
...
...
src/styles/element.scss
View file @
78eadc82
...
...
@@ -302,7 +302,7 @@
height
:
30px
!
important
;
}
td
{
line-height
:
14
px
!
important
;
line-height
:
22
px
!
important
;
}
.public-header
{
position
:
relative
;
...
...
@@ -419,4 +419,10 @@ body {
.el-space__item
{
line-height
:
16px
;
}
}
.line-input
{
.el-input__wrapper
{
box-shadow
:
none
;
border-bottom
:
1px
solid
rgb
(
204
,
204
,
204
);
}
}
\ No newline at end of file
src/views/infoGather/customerGather/components/Credit.vue
View file @
78eadc82
This diff is collapsed.
Click to expand it.
src/views/infoGather/customerGather/components/Creditcard.vue
View file @
78eadc82
<
template
>
<div
class=
"card content-box"
>
<span
class=
"text"
>
客户信息统计表(待完善) 🍓🍇🍈🍉
</span>
</div>
<vxe-modal
resize
v-model=
"showModal"
title=
"信用卡详情"
height=
"512"
width=
"1303"
show-footer
esc-closable
>
<div
class=
"card content-box"
>
<div
class=
"mb-5 w-full flex justify-end"
>
<el-button
type=
"default"
@
click=
"showModal = false"
>
取消
</el-button>
<template
v-if=
"showEdit"
>
<el-button
type=
"primary"
@
click=
"submitForm"
>
保存
</el-button>
</
template
>
<el-button
type=
"primary"
@
click=
"showEdit = true"
v-if=
"currentRow"
>
修改
</el-button>
</div>
<div
class=
"w-full"
>
<table>
<tbody>
<tr>
<td
class=
"label"
>
发卡银行
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
<td
class=
"label"
>
开户时间
</td>
<td
colspan=
"2"
><el-date-picker
v-model=
"form.trackTime"
class=
"line-input"
style=
"width: 100%"
:disabled=
"!showEdit"
format=
"YYYY-MM-DD"
value-format=
"YYYY-MM-DD"
type=
"date"
/></td>
</tr>
<tr>
<td
class=
"label"
>
卡号
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
<td
class=
"label"
>
卡片状态(正常/逾期)
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
</tr>
<tr>
<td
class=
"label"
>
授信额度
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
<td
class=
"label"
>
已用额度
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
</tr>
<tr>
<td
class=
"label"
>
近6个月平均使用额度
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
<td
class=
"label"
>
当前欠款金额
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
</tr>
<tr>
<td
class=
"label"
>
逾期期数
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
<td
class=
"label"
>
逾期后是否有过协商
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
</tr>
<tr>
<td
class=
"label"
>
有无分期
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
<td
class=
"label"
>
有无协商方案
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
"请填写有/无"
:disabled=
"!showEdit"
/></td>
</tr>
<tr>
<td
class=
"label"
>
查询密码
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
<td
class=
"label"
>
最后一次还款时间
</td>
<td
colspan=
"2"
>
<el-date-picker
v-model=
"form.trackTime"
:disabled=
"!showEdit"
class=
"line-input"
style=
"width: 100%"
format=
"YYYY-MM-DD"
value-format=
"YYYY-MM-DD"
type=
"date"
/></td>
</tr>
<tr>
<td
class=
"label"
>
支付密码
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
<td
class=
"label"
>
最后一次还款金额
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
</tr>
<tr>
<td
class=
"label"
>
是否有大额专项分期额度
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
<td
class=
"label"
>
大额专项分期借款种类
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
</tr>
<tr>
<td
class=
"label"
>
大额专项分期额度
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
<td
class=
"label"
>
大额专项分期开立日期
</td>
<td
colspan=
"2"
><el-date-picker
v-model=
"form.trackTime"
:disabled=
"!showEdit"
class=
"line-input"
style=
"width: 100%"
format=
"YYYY-MM-DD"
value-format=
"YYYY-MM-DD"
type=
"date"
/></td>
</tr>
<tr>
<td
class=
"label"
>
大额专项分期到期日期
</td>
<td
colspan=
"2"
><el-date-picker
v-model=
"form.trackTime"
:disabled=
"!showEdit"
class=
"line-input"
style=
"width: 100%"
format=
"YYYY-MM-DD"
value-format=
"YYYY-MM-DD"
type=
"date"
/></td>
<td
class=
"label"
>
大额专项分期已还期数
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
</tr>
<tr>
<td
class=
"label"
>
银行预留手机号码
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
<td
class=
"label"
>
银行预留家庭地址
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
</tr>
<tr>
<td
class=
"label"
>
银行预留紧急联系人姓名
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
<td
class=
"label"
>
银行预留紧急联系人电话
</td>
<td
colspan=
"2"
><el-input
class=
"line-input"
v-model=
"form.roleDesc"
placeholder=
""
:disabled=
"!showEdit"
/></td>
</tr>
</tbody>
</table>
</div>
</div>
</vxe-modal>
</template>
<
script
setup
name=
"dictManage"
></
script
>
<
script
setup
name=
"credit"
>
import
{
ref
,
computed
}
from
'vue'
;
import
{
ElMessage
}
from
'element-plus'
;
const
showEdit
=
ref
(
false
);
const
showModal
=
ref
(
false
);
const
emits
=
defineEmits
([
'success'
]);
const
currentRow
=
ref
(
null
);
const
currentIndex
=
ref
(
null
);
const
props
=
defineProps
({
mergerCase
:
String
,
returnConfig
:
Array
,
returnData
:
Array
});
const
form
=
ref
({
roleName
:
''
,
roleCode
:
''
,
roleDesc
:
''
,
});
const
submitForm
=
async
()
=>
{
showEdit
.
value
=
false
emits
(
'success'
,
currentRow
.
value
,
currentIndex
.
value
);
};
const
openModal
=
(
row
,
index
)
=>
{
if
(
row
)
{
showEdit
.
value
=
false
form
.
value
=
JSON
.
parse
(
JSON
.
stringify
(
row
))
}
else
{
showEdit
.
value
=
true
form
.
value
=
{
roleName
:
''
,
roleCode
:
''
,
roleDesc
:
''
,
}
}
currentRow
.
value
=
row
currentIndex
.
value
=
index
showModal
.
value
=
true
;
};
defineExpose
({
openModal
,
});
</
script
>
<
style
lang=
"scss"
scoped
>
table
{
width
:
calc
(
100%
);
border-collapse
:
collapse
;
}
td
{
border
:
1px
solid
rgba
(
5
,
5
,
5
,
0
.06
);
background
:
#fff
;
color
:
#606268
;
// width: 240px;
line-height
:
11px
;
height
:
40px
;
font-size
:
14px
;
padding-left
:
5px
;
&
.label
{
text-align
:
center
;
background
:
#f6f8ff
;
font-weight
:
bold
;
width
:
175px
;
color
:
#909399
;
}
}
</
style
>
src/views/infoGather/customerGather/components/Customer.vue
0 → 100644
View file @
78eadc82
This diff is collapsed.
Click to expand it.
src/views/infoGather/customerGather/index.vue
View file @
78eadc82
...
...
@@ -3,13 +3,14 @@
<ProTable
ref=
"proTable"
:config=
"config"
:api=
"getPlatformPage"
:paramCallback=
"paramCallback"
:selectdList=
"selectdList"
>
<template
#
left_buttons
>
<!--
<el-button
type=
"primary"
:disabled=
"!selectdList || selectdList.length
<
1
"
@
click=
"pushCreditcard"
>
新建信用卡
</el-button>
-->
<el-button
type=
"primary"
@
click=
"pushCredit"
>
新建信用卡
</el-button>
<
!--
<
el-button
type=
"primary"
@
click=
"pushCredit"
>
新建信用卡
</el-button>
<el-button
type=
"primary"
:disabled=
"!selectdList || selectdList.length
<
1
"
@
click=
"pushCreditcard"
>
新建网贷
&
信用贷
</el-button
>
>
-->
<el-button
type=
"primary"
@
click=
"pushCustomer()"
>
新建客户
</el-button>
<el-button
type=
"primary"
>
发起风控审核
</el-button>
</
template
>
</ProTable>
...
...
@@ -46,10 +47,10 @@
selectdList
.
value
=
[];
}
};
const
pushC
reditcard
=
(
)
=>
{
const
pushC
ustomer
=
(
row
)
=>
{
router
.
push
({
path
:
'/infoGather/customerGather/C
reditcard
'
,
query
:
{
id
:
44
},
//这里不能直接写成 query: JSON.stringify(item)
path
:
'/infoGather/customerGather/C
ustomer
'
,
query
:
row
?
{
id
:
row
.
id
}:
{
},
//这里不能直接写成 query: JSON.stringify(item)
});
};
const
pushCredit
=
()
=>
{
...
...
@@ -63,28 +64,42 @@
onCheckboxAll
:
onCheckboxAll
,
columns
:
[
{
type
:
'checkbox'
,
width
:
60
,
fixed
:
'left'
},
{
field
:
'id'
,
title
:
'客户ID'
},
{
field
:
'id'
,
title
:
'客户ID'
,
slots
:
{
default
:
({
row
,
rowIndex
})
=>
{
return
(
<>
<
div
onClick
=
{()
=>
pushCustomer
(
row
)}
className
=
" text-blue-400 cursor-pointer inline-block"
>
{
row
.
id
}
<
/div
>
<
/
>
);
},
}
},
{
field
:
'createTime'
,
title
:
'创建日期'
,
search
:
{
el
:
'date-picker'
,
labelWidth
:
85
,
props
:
{
type
:
'daterange'
,
valueFormat
:
'YYYY-MM-DD'
},
span
:
1.5
,
},
},
{
field
:
'createBy'
,
title
:
'创建人'
,
search
:
{
el
:
'input'
,
span
:
1
,
props
:
{
clearable
:
true
}
},
search
:
{
el
:
'input'
,
labelWidth
:
85
,
props
:
{
clearable
:
true
}
},
},
{
field
:
'name'
,
title
:
'客户名称'
,
search
:
{
el
:
'input'
}
},
{
field
:
'name'
,
title
:
'身份证号'
,
search
:
{
el
:
'input'
}
},
{
field
:
'name'
,
title
:
'手机'
,
search
:
{
el
:
'input'
}
},
{
field
:
'name'
,
title
:
'电子邮箱'
,
search
:
{
el
:
'input'
}
},
{
field
:
'maxStagesNum'
,
title
:
'预留工作单位'
,
search
:
{
el
:
'input'
}
},
{
field
:
'maxStagesNum'
,
title
:
'预留家庭地址'
,
search
:
{
el
:
'input'
}
},
{
field
:
'remark'
,
title
:
'备注'
,
search
:
{
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
:
'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'
}
},
],
});
...
...
src/views/infoGather/dangerReport/components/dangerReportDetail.vue
0 → 100644
View file @
78eadc82
This diff is collapsed.
Click to expand it.
src/views/infoGather/dangerReport/index.vue
View file @
78eadc82
<
template
>
<div
class=
"card content-box"
>
<span
class=
"text"
>
风控审核报告(待完善) 🍓🍇🍈🍉
</span>
<div
class=
"table-box"
>
<div
class=
" bg-white pt-2 pl-2"
>
<el-tabs
v-model=
"activeName"
class=
"demo-tabs"
@
tab-click=
"handleClick"
>
<el-tab-pane
:label=
"item.label"
:name=
"item.value"
v-for=
"(item, index) in tabs"
:key=
"index"
>
<template
#
label
>
<div>
{{
item
.
label
}}
<span
style=
"font-size: 20px; font-weight: bold;"
>
{{
item
.
msg
}}
</span>
</div>
</
template
>
</el-tab-pane>
</el-tabs>
</div>
<ProTable
ref=
"proTable"
:config=
"config"
:api=
"getPlatformPage"
:paramCallback=
"paramCallback"
>
</ProTable>
</div>
</template>
<
script
setup
name=
"dictManage"
></
script
>
<
script
setup
lang=
"jsx"
name=
"platformManage"
>
import
{
ref
,
reactive
,
onMounted
}
from
'vue'
;
import
{
Plus
,
Delete
,
Edit
,
Setting
}
from
'@element-plus/icons-vue'
;
import
{
getPlatformPage
,
deletePlatforms
}
from
'@/api/platform'
;
import
{
getByStagesTotal
}
from
'@/api/property'
;
import
{
ElMessageBox
,
ElMessage
,
ElButton
,
ElTag
}
from
'element-plus'
;
import
{
useRouter
}
from
'vue-router'
;
const
tabs
=
ref
([]);
import
{
useDict
}
from
'@/hooks/useDict'
;
const
{
PhoneResultStatus
,
ReduceType
,
FlowStatus
,
FollowStatus
,
AuditStatus
,
CaseStatus
}
=
useDict
(
"PhoneResultStatus"
,
"ReduceType"
,
"FlowStatus"
,
"FollowStatus"
,
"AuditStatus"
,
"CaseStatus"
);
const
proTable
=
ref
(
null
);
const
selectdList
=
ref
([]);
const
onCheckboxChange
=
(
row
)
=>
{
selectdList
.
value
=
row
.
records
;
};
const
router
=
useRouter
();
const
activeName
=
ref
(
'pending'
);
const
paramCallback
=
(
param
)
=>
{
const
obj
=
JSON
.
parse
(
JSON
.
stringify
(
param
));
if
(
obj
[
'createTime'
])
{
if
(
obj
[
'createTime'
][
0
])
obj
[
'createTimeBegin'
]
=
obj
[
'createTime'
][
0
];
if
(
obj
[
'createTime'
][
1
])
obj
[
'createTimeEnd'
]
=
obj
[
'createTime'
][
1
];
delete
obj
[
'createTime'
];
}
setTimeout
(()
=>
{
const
arr
=
JSON
.
parse
(
JSON
.
stringify
(
FlowStatus
.
value
))
getByStagesTotal
({...
obj
,
flowStatus
:
null
}).
then
(
res
=>
{
if
(
res
.
success
)
{
arr
.
forEach
(
item
=>
{
const
tt
=
res
.
result
.
find
(
v
=>
v
.
flowStatus
===
item
.
value
)
if
(
tt
)
{
item
[
'msg'
]
=
tt
.
number
}
else
{
item
[
'msg'
]
=
0
}
})
tabs
.
value
=
arr
}
else
{
tabs
.
value
=
arr
}
}).
catch
(
e
=>
{
tabs
.
value
=
arr
})
},
(
FlowStatus
.
value
&&
FlowStatus
.
value
.
length
)
?
100
:
1000
)
return
obj
;
};
const
onCheckboxAll
=
(
flag
)
=>
{
if
(
flag
.
checked
)
{
selectdList
.
value
=
flag
.
records
;
}
else
{
selectdList
.
value
=
[];
}
};
const
pushCustomer
=
(
row
)
=>
{
router
.
push
({
path
:
'/infoGather/dangerReport/dangerReportDetail'
,
query
:
row
?
{
id
:
row
.
id
}:
{},
//这里不能直接写成 query: JSON.stringify(item)
});
};
const
pushCredit
=
()
=>
{
router
.
push
({
path
:
'/infoGather/customerGather/Credit'
,
query
:
{
id
:
44
},
//这里不能直接写成 query: JSON.stringify(item)
});
};
const
config
=
reactive
({
onCheckboxChange
:
onCheckboxChange
,
onCheckboxAll
:
onCheckboxAll
,
columns
:
[
{
field
:
'id'
,
title
:
'客户ID'
,
slots
:
{
default
:
({
row
,
rowIndex
})
=>
{
return
(
<>
<
div
onClick
=
{()
=>
pushCustomer
(
row
)}
className
=
" text-blue-400 cursor-pointer inline-block"
>
{
row
.
id
}
<
/div
>
<
/
>
);
},
}
},
{
field
:
'createTime'
,
title
:
'创建日期'
,
search
:
{
el
:
'date-picker'
,
labelWidth
:
85
,
props
:
{
type
:
'daterange'
,
valueFormat
:
'YYYY-MM-DD'
},
},
},
{
field
:
'createBy'
,
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
:
'风控审核状态'
},
],
});
const
query
=
()
=>
proTable
.
value
?.
search
();
const
handleClick
=
()
=>
{
setTimeout
(()
=>
{
query
();
},
300
);
};
onMounted
(()
=>
{
query
();
});
</
script
>
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