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
fc669198
Commit
fc669198
authored
Jan 26, 2025
by
沈翠玲
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
业务审批添加折叠
parent
51aa3762
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
460 additions
and
90 deletions
+460
-90
platform.js
src/api/platform.js
+1
-1
index.vue
src/components/ProTable/index.vue
+3
-0
main.css
src/styles/main.css
+1
-1
index.vue
src/views/business-approval/by-stages-apply/index.vue
+167
-0
index.vue
src/views/business-approval/reduction-apply/index.vue
+132
-0
index.vue
src/views/property/audit-manage/index.vue
+9
-3
callDrawer.vue
src/views/property/case-detail/components/callDrawer.vue
+15
-9
reduceDrawer.vue
src/views/property/case-detail/components/reduceDrawer.vue
+42
-21
splitDrawer.vue
src/views/property/case-detail/components/splitDrawer.vue
+70
-48
index.vue
src/views/property/case-detail/index.vue
+10
-4
index.vue
src/views/property/case-manage/index.vue
+10
-3
No files found.
src/api/platform.js
View file @
fc669198
src/components/ProTable/index.vue
View file @
fc669198
...
@@ -22,6 +22,9 @@
...
@@ -22,6 +22,9 @@
<
template
#
toolbar_tools
>
<
template
#
toolbar_tools
>
<slot
name=
"right_tools"
></slot>
<slot
name=
"right_tools"
></slot>
</
template
>
</
template
>
<
template
#
expand_content=
"{ row }"
>
<slot
name=
"expand_content"
:row=
"row"
></slot>
</
template
>
</vxe-grid>
</vxe-grid>
</div>
</div>
<!-- 分页组件 -->
<!-- 分页组件 -->
...
...
src/styles/main.css
View file @
fc669198
src/views/business-approval/by-stages-apply/index.vue
View file @
fc669198
...
@@ -12,6 +12,113 @@
...
@@ -12,6 +12,113 @@
<!--
<el-button
type=
"primary"
>
下载
</el-button>
<!--
<el-button
type=
"primary"
>
下载
</el-button>
<el-button
type=
"primary"
>
批量修复上传
</el-button>
-->
<el-button
type=
"primary"
>
批量修复上传
</el-button>
-->
</
template
>
</
template
>
<
template
#
expand_content=
"{ row }"
>
<div
class=
"expand-box"
>
<div
class=
"flex"
>
<div
class=
"w-2/3 pr-2"
>
<div>
案件明细
</div>
<div
class=
"expand-table"
>
<table
v-for=
"(item, index) in row.loans"
:key=
"index"
><tbody>
<tr>
<td
class=
"label"
>
案件ID:
</td>
<td>
{{
item
?.
caseId
}}
</td>
<td
class=
"label"
>
借款机构:
</td>
<td>
{{
item
?.
loanPlatform
?.
name
}}
</td>
</tr>
<tr>
<td
class=
"label"
>
资管公司:
</td>
<td>
{{
item
?.
manageOrg
.
orgName
}}
</td>
<td
class=
"label"
>
身份证:
</td>
<td>
{{
item
?.
borrower
?.
idCard
}}
</td>
</tr>
<tr>
<td
class=
"label"
>
手机号:
</td>
<td>
{{
item
?.
borrower
?.
phone
}}
</td>
<td
class=
"label"
>
折扣:
</td>
<td>
{{
item
?.
discount
}}
</td>
</tr>
<tr>
<td
class=
"label"
>
累计还款金额:
</td>
<td>
{{
item
?.
sumRepayAmount
}}
</td>
<td
class=
"label"
>
累计减免金额:
</td>
<td>
{{
item
?.
sumReductionAmount
}}
</td>
</tr>
<tr>
<td
class=
"label"
>
剩余待还金额:
</td>
<td>
{{
item
?.
remainingAmount
}}
</td>
<td
class=
"label"
>
CPE:
</td>
<td>
{{
item
?.
cpe
.
username
}}
</td>
</tr>
<tr>
<td
class=
"label"
>
分配CPE日期:
</td>
<td>
{{
item
?.
cpeDate
}}
</td>
<td
class=
"label"
>
本金余额:
</td>
<td>
{{
item
?.
principalBalance
}}
</td>
</tr>
<tr>
<td
class=
"label"
>
欠息额:
</td>
<td>
{{
item
?.
debitInterest
}}
</td>
<td
class=
"label"
>
手续费:
</td>
<td>
{{
item
?.
commission
}}
</td>
</tr>
<tr>
<td
class=
"label"
>
委案金额:
</td>
<td>
{{
item
?.
commissionAmount
}}
</td>
<td
class=
"label"
>
案件状态:
</td>
<td>
{{
item
?.
caseStatus
?
caseStatusOpt
.
find
((
v
)
=>
v
.
value
===
item
?.
caseStatus
).
label
:
''
}}
</td
>
</tr>
<tr>
<td
class=
"label"
>
跟进结果:
</td>
<td>
{{
item
?.
followStatus
?
followStatusOpt
.
find
((
v
)
=>
v
.
value
===
item
?.
followStatus
).
label
:
''
}}
</td>
<td
class=
"label"
>
跟进状态:
</td>
<td>
{{
item
?.
phoneResultStatus
?
phoneResultStatusOpt
.
find
((
v
)
=>
v
.
value
===
item
?.
phoneResultStatus
)
.
label
:
''
}}
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div
class=
"flex-1"
>
<div>
分期明细
</div>
<div
class=
"expand-table"
>
<table
v-for=
"(item, index) in row.byStagesRecords"
:key=
"index"
><tbody>
<tr>
<td
class=
"label"
>
期次:
</td>
<td>
{{
item
?.
period
}}
</td>
<td
class=
"label"
>
期次还款到期日:
</td>
<td>
{{
item
?.
playApplyDate
}}
</td>
</tr>
<tr>
<td
class=
"label"
>
期次还款状态:
</td>
<td>
{{
item
.
repayStatus
?
(
item
.
repayStatus
===
'over'
?
'已还款'
:
'待还款'
)
:
''
}}
</td>
<td
class=
"label"
>
期次应还金额:
</td>
<td>
{{
item
.
applyAmount
}}
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</
template
>
</ProTable>
</ProTable>
<vxe-modal
<vxe-modal
v-model=
"showModal"
v-model=
"showModal"
...
@@ -92,10 +199,47 @@
...
@@ -92,10 +199,47 @@
query
();
query
();
};
};
const
followStatusOpt
=
[
{
label
:
'接通后挂断'
,
value
:
'hang_up'
},
{
label
:
'接通有实质进展'
,
value
:
'progress'
},
{
label
:
'接通有效转告'
,
value
:
'pass_on'
},
{
label
:
'接通拒绝转告'
,
value
:
'no_pass'
},
{
label
:
'接听后挂断'
,
value
:
'Hang_up_after_answering'
},
{
label
:
'接通无应答'
,
value
:
'No_response_when_connected'
},
{
label
:
'称与债人无关'
,
value
:
'Claims_unrelated_to_creditors'
},
{
label
:
'称非本人'
,
value
:
'Claiming_not_to_be_myself'
},
{
label
:
'无人接听'
,
value
:
'no_answer'
},
{
label
:
'关机'
,
value
:
'Shutdown'
},
{
label
:
'空号'
,
value
:
'dead_number'
},
{
label
:
'占线/忙音/正在通话中'
,
value
:
'Busy'
},
{
label
:
'停机'
,
value
:
'closing_down'
},
{
label
:
'机器人回复'
,
value
:
'Robot_reply'
},
{
label
:
'微信'
,
value
:
'WeChat'
},
{
label
:
'短信'
,
value
:
'short_message'
},
{
label
:
'QQ'
,
value
:
'QQ'
},
{
label
:
'飞书'
,
value
:
'fly'
},
{
label
:
'钉钉'
,
value
:
'DING'
},
];
const
phoneResultStatusOpt
=
[
{
label
:
'后续再跟进'
,
value
:
'later'
},
{
label
:
'承诺还款'
,
value
:
'Promise_Repayment'
},
{
label
:
'暂无还款意愿'
,
value
:
'No_Repay'
},
{
label
:
'要求停催'
,
value
:
'Stop_Urging'
},
{
label
:
'情绪激动抗拒'
,
value
:
'resistance'
},
{
label
:
'拒绝还款'
,
value
:
'Refuse_Repayment'
},
{
label
:
'已还款'
,
value
:
'Repaired'
},
{
label
:
'代履行还款'
,
value
:
'repayment_others'
},
];
const
caseStatusOpt
=
[
{
label
:
'正常'
,
value
:
'normal'
},
{
label
:
'撤案'
,
value
:
'withdraw'
},
{
label
:
'留案'
,
value
:
'stay'
},
];
const
config
=
computed
(()
=>
{
const
config
=
computed
(()
=>
{
return
{
return
{
columns
:
[
columns
:
[
{
type
:
'checkbox'
,
width
:
50
},
{
type
:
'checkbox'
,
width
:
50
},
{
type
:
'expand'
,
width
:
80
,
slots
:
{
content
:
'expand_content'
}
},
{
{
field
:
'caseId'
,
field
:
'caseId'
,
title
:
'案件ID'
,
title
:
'案件ID'
,
...
@@ -197,3 +341,26 @@
...
@@ -197,3 +341,26 @@
query
();
query
();
});
});
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
.expand-box
{
background
:
#fff
;
padding
:
10px
;
.expand-table
{
color
:
#000
;
table
{
width
:
100%
;
margin-top
:
10px
;
border-collapse
:
collapse
;
}
td
{
border
:
1px
solid
rgba
(
5
,
5
,
5
,
0
.06
);
background
:
#fff
;
padding
:
8px
;
width
:
240px
;
&
.label
{
background
:
#f5f7f9
;
}
}
}
}
</
style
>
src/views/business-approval/reduction-apply/index.vue
View file @
fc669198
...
@@ -12,6 +12,78 @@
...
@@ -12,6 +12,78 @@
<!--
<el-button
type=
"primary"
>
下载
</el-button>
<!--
<el-button
type=
"primary"
>
下载
</el-button>
<el-button
type=
"primary"
>
批量修复上传
</el-button>
-->
<el-button
type=
"primary"
>
批量修复上传
</el-button>
-->
</
template
>
</
template
>
<
template
#
expand_content=
"{ row }"
>
<div
class=
"expand-box"
>
<div>
案件明细
</div>
<div
class=
"expand-table"
>
<table
v-for=
"(item, index) in row.reduceRecords"
:key=
"index"
><tbody>
<tr>
<td
class=
"label"
>
案件ID:
</td>
<td>
{{
item
?.
loan
?.
caseId
}}
</td>
<td
class=
"label"
>
借款机构:
</td>
<td>
{{
item
?.
loan
?.
loanPlatform
?.
name
}}
</td>
<td
class=
"label"
>
资管公司:
</td>
<td>
{{
item
?.
loan
?.
manageOrg
.
orgName
}}
</td>
</tr>
<tr>
<td
class=
"label"
>
身份证:
</td>
<td>
{{
item
?.
loan
?.
borrower
?.
idCard
}}
</td>
<td
class=
"label"
>
手机号:
</td>
<td>
{{
item
?.
loan
?.
borrower
?.
phone
}}
</td>
<td
class=
"label"
>
折扣:
</td>
<td>
{{
item
?.
loan
?.
discount
}}
</td>
<td
class=
"label"
>
委案金额:
</td>
<td>
{{
item
?.
loan
?.
commissionAmount
}}
</td>
</tr>
<tr>
<td
class=
"label"
>
累计还款金额:
</td>
<td>
{{
item
?.
loan
?.
sumRepayAmount
}}
</td>
<td
class=
"label"
>
累计减免金额:
</td>
<td>
{{
item
?.
loan
?.
sumReductionAmount
}}
</td>
<td
class=
"label"
>
剩余待还金额:
</td>
<td>
{{
item
?.
loan
?.
remainingAmount
}}
</td>
</tr>
<tr>
<td
class=
"label"
>
CPE:
</td>
<td>
{{
item
?.
loan
?.
cpe
.
username
}}
</td>
<td
class=
"label"
>
分配CPE日期:
</td>
<td>
{{
item
?.
loan
?.
cpeDate
}}
</td>
<td
class=
"label"
>
本金余额:
</td>
<td>
{{
item
?.
loan
?.
principalBalance
}}
</td>
<td
class=
"label"
>
案件状态:
</td>
<td>
{{
item
?.
loan
?.
caseStatus
?
caseStatusOpt
.
find
((
v
)
=>
v
.
value
===
item
?.
loan
?.
caseStatus
).
label
:
''
}}
</td
>
</tr>
<tr>
<td
class=
"label"
>
欠息额:
</td>
<td>
{{
item
?.
loan
?.
debitInterest
}}
</td>
<td
class=
"label"
>
手续费:
</td>
<td>
{{
item
?.
loan
?.
commission
}}
</td>
<td
class=
"label"
>
跟进结果:
</td>
<td>
{{
item
?.
loan
?.
followStatus
?
followStatusOpt
.
find
((
v
)
=>
v
.
value
===
item
?.
loan
?.
followStatus
).
label
:
''
}}
</td>
<td
class=
"label"
>
跟进状态:
</td>
<td>
{{
item
?.
loan
?.
phoneResultStatus
?
phoneResultStatusOpt
.
find
((
v
)
=>
v
.
value
===
item
?.
loan
?.
phoneResultStatus
)
.
label
:
''
}}
</td>
</tr>
</tbody>
</table>
</div>
</div>
</
template
>
</ProTable>
</ProTable>
<vxe-modal
<vxe-modal
v-model=
"showModal"
v-model=
"showModal"
...
@@ -74,10 +146,47 @@
...
@@ -74,10 +146,47 @@
query
();
query
();
};
};
const
followStatusOpt
=
[
{
label
:
'接通后挂断'
,
value
:
'hang_up'
},
{
label
:
'接通有实质进展'
,
value
:
'progress'
},
{
label
:
'接通有效转告'
,
value
:
'pass_on'
},
{
label
:
'接通拒绝转告'
,
value
:
'no_pass'
},
{
label
:
'接听后挂断'
,
value
:
'Hang_up_after_answering'
},
{
label
:
'接通无应答'
,
value
:
'No_response_when_connected'
},
{
label
:
'称与债人无关'
,
value
:
'Claims_unrelated_to_creditors'
},
{
label
:
'称非本人'
,
value
:
'Claiming_not_to_be_myself'
},
{
label
:
'无人接听'
,
value
:
'no_answer'
},
{
label
:
'关机'
,
value
:
'Shutdown'
},
{
label
:
'空号'
,
value
:
'dead_number'
},
{
label
:
'占线/忙音/正在通话中'
,
value
:
'Busy'
},
{
label
:
'停机'
,
value
:
'closing_down'
},
{
label
:
'机器人回复'
,
value
:
'Robot_reply'
},
{
label
:
'微信'
,
value
:
'WeChat'
},
{
label
:
'短信'
,
value
:
'short_message'
},
{
label
:
'QQ'
,
value
:
'QQ'
},
{
label
:
'飞书'
,
value
:
'fly'
},
{
label
:
'钉钉'
,
value
:
'DING'
},
];
const
phoneResultStatusOpt
=
[
{
label
:
'后续再跟进'
,
value
:
'later'
},
{
label
:
'承诺还款'
,
value
:
'Promise_Repayment'
},
{
label
:
'暂无还款意愿'
,
value
:
'No_Repay'
},
{
label
:
'要求停催'
,
value
:
'Stop_Urging'
},
{
label
:
'情绪激动抗拒'
,
value
:
'resistance'
},
{
label
:
'拒绝还款'
,
value
:
'Refuse_Repayment'
},
{
label
:
'已还款'
,
value
:
'Repaired'
},
{
label
:
'代履行还款'
,
value
:
'repayment_others'
},
];
const
caseStatusOpt
=
[
{
label
:
'正常'
,
value
:
'normal'
},
{
label
:
'撤案'
,
value
:
'withdraw'
},
{
label
:
'留案'
,
value
:
'stay'
},
];
const
config
=
computed
(()
=>
{
const
config
=
computed
(()
=>
{
return
{
return
{
columns
:
[
columns
:
[
{
type
:
'checkbox'
,
width
:
50
},
{
type
:
'checkbox'
,
width
:
50
},
{
type
:
'expand'
,
width
:
80
,
slots
:
{
content
:
'expand_content'
}
},
{
{
field
:
'caseId'
,
field
:
'caseId'
,
title
:
'案件ID'
,
title
:
'案件ID'
,
...
@@ -183,3 +292,26 @@
...
@@ -183,3 +292,26 @@
query
();
query
();
});
});
</
script
>
</
script
>
<
style
lang=
"scss"
scoped
>
.expand-box
{
background
:
#fff
;
padding
:
10px
;
.expand-table
{
color
:
#000
;
table
{
width
:
100%
;
margin-top
:
10px
;
border-collapse
:
collapse
;
}
td
{
border
:
1px
solid
rgba
(
5
,
5
,
5
,
0
.06
);
background
:
#fff
;
padding
:
8px
;
width
:
240px
;
&
.label
{
background
:
#f5f7f9
;
}
}
}
}
</
style
>
src/views/property/audit-manage/index.vue
View file @
fc669198
...
@@ -282,7 +282,9 @@
...
@@ -282,7 +282,9 @@
return
(
return
(
<>
<>
<
div
className
=
"flex justify-center"
>
<
div
className
=
"flex justify-center"
>
<
ElButton
onClick
=
{()
=>
preview
(
row
,
'images'
)}
link
type
=
"primary"
>
查看
<
/ElButton
>
<
ElButton
onClick
=
{()
=>
preview
(
row
,
'images'
)}
link
type
=
"primary"
>
查看
<
/ElButton
>
<
/div
>
<
/div
>
<
/
>
<
/
>
);
);
...
@@ -300,7 +302,9 @@
...
@@ -300,7 +302,9 @@
return
(
return
(
<>
<>
<
div
className
=
"flex justify-center"
>
<
div
className
=
"flex justify-center"
>
<
ElButton
onClick
=
{()
=>
preview
(
row
,
'notes'
)}
link
type
=
"primary"
>
查看
<
/ElButton
>
<
ElButton
onClick
=
{()
=>
preview
(
row
,
'notes'
)}
link
type
=
"primary"
>
查看
<
/ElButton
>
<
/div
>
<
/div
>
<
/
>
<
/
>
);
);
...
@@ -318,7 +322,9 @@
...
@@ -318,7 +322,9 @@
return
(
return
(
<>
<>
<
div
className
=
"flex justify-center"
>
<
div
className
=
"flex justify-center"
>
<
ElButton
onClick
=
{()
=>
preview
(
row
,
'others'
)}
link
type
=
"primary"
>
查看
<
/ElButton
>
<
ElButton
onClick
=
{()
=>
preview
(
row
,
'others'
)}
link
type
=
"primary"
>
查看
<
/ElButton
>
<
/div
>
<
/div
>
<
/
>
<
/
>
);
);
...
...
src/views/property/case-detail/components/callDrawer.vue
View file @
fc669198
...
@@ -35,7 +35,13 @@
...
@@ -35,7 +35,13 @@
</div>
</div>
</div>
</div>
<div>
<div>
<ProTable
:config=
"config"
:data=
"tabledata"
ref=
"ProTableRef"
:showPagination=
"false"
:showToolBar=
"false"
>
<ProTable
:config=
"config"
:data=
"tabledata"
ref=
"ProTableRef"
:showPagination=
"false"
:showToolBar=
"false"
>
<template
#
table_top
>
<template
#
table_top
>
<p
class=
"font-bold"
>
关联案件:
</p>
<p
class=
"font-bold"
>
关联案件:
</p>
</
template
>
</
template
>
...
@@ -394,12 +400,12 @@
...
@@ -394,12 +400,12 @@
form
.
others
.
splice
(
index
,
1
);
form
.
others
.
splice
(
index
,
1
);
};
};
const
onCheckboxAll
=
(
flag
)
=>
{
const
onCheckboxAll
=
(
flag
)
=>
{
if
(
flag
.
checked
)
{
if
(
flag
.
checked
)
{
selectdList
.
value
=
flag
.
records
selectdList
.
value
=
flag
.
records
;
}
else
{
}
else
{
selectdList
.
value
=
[]
selectdList
.
value
=
[];
}
}
}
};
const
config
=
reactive
({
const
config
=
reactive
({
minHeight
:
200
,
minHeight
:
200
,
columns
:
[
columns
:
[
...
@@ -454,12 +460,12 @@
...
@@ -454,12 +460,12 @@
resuleObj
.
label
=
'本人可联'
;
resuleObj
.
label
=
'本人可联'
;
resuleObj
.
childrenlabel
=
null
;
resuleObj
.
childrenlabel
=
null
;
tabledata
.
value
=
caselist
;
tabledata
.
value
=
caselist
;
setTimeout
(()
=>
{
setTimeout
(()
=>
{
if
(
ProTableRef
.
value
.
element
)
{
if
(
ProTableRef
.
value
.
element
)
{
ProTableRef
.
value
.
element
.
setAllCheckboxRow
(
true
)
ProTableRef
.
value
.
element
.
setAllCheckboxRow
(
true
)
;
selectdList
.
value
=
caselist
selectdList
.
value
=
caselist
;
}
}
},
500
)
},
500
)
;
};
};
const
submitForm
=
()
=>
{
const
submitForm
=
()
=>
{
if
(
!
form
.
phoneResultStatus
)
if
(
!
form
.
phoneResultStatus
)
...
...
src/views/property/case-detail/components/reduceDrawer.vue
View file @
fc669198
...
@@ -61,7 +61,14 @@
...
@@ -61,7 +61,14 @@
</el-form>
</el-form>
<div>
<div>
<ProTable
:config=
"config"
ref=
"ProTableRef"
:data=
"tabledata"
:showPagination=
"false"
:dataCallback=
"dataCallback"
:showToolBar=
"false"
>
<ProTable
:config=
"config"
ref=
"ProTableRef"
:data=
"tabledata"
:showPagination=
"false"
:dataCallback=
"dataCallback"
:showToolBar=
"false"
>
<template
#
table_top
>
<template
#
table_top
>
<p
class=
"font-bold"
>
关联案件:
</p>
<p
class=
"font-bold"
>
关联案件:
</p>
</
template
>
</
template
>
...
@@ -84,7 +91,7 @@
...
@@ -84,7 +91,7 @@
import
{
ElMessage
}
from
'element-plus'
;
import
{
ElMessage
}
from
'element-plus'
;
import
{
onMounted
}
from
'vue'
;
import
{
onMounted
}
from
'vue'
;
import
{
watch
}
from
'vue'
;
import
{
watch
}
from
'vue'
;
import
Decimal
from
"decimal.js"
import
Decimal
from
'decimal.js'
;
const
emits
=
defineEmits
([
'success'
]);
const
emits
=
defineEmits
([
'success'
]);
const
showModal
=
ref
(
false
);
const
showModal
=
ref
(
false
);
const
tabledata
=
ref
([]);
const
tabledata
=
ref
([]);
...
@@ -103,25 +110,33 @@
...
@@ -103,25 +110,33 @@
form
.
totalReduceAmount
=
0
;
form
.
totalReduceAmount
=
0
;
form
.
remainingAmount
=
0
;
form
.
remainingAmount
=
0
;
selectdList
.
value
.
forEach
((
item
)
=>
{
selectdList
.
value
.
forEach
((
item
)
=>
{
form
.
totalReduceAmount
=
Decimal
(
form
.
totalReduceAmount
).
add
(
Decimal
(
Number
(
item
.
reduceAmount
)
||
0
))
form
.
totalReduceAmount
=
Decimal
(
form
.
totalReduceAmount
).
add
(
form
.
remainingAmount
=
Decimal
(
form
.
remainingAmount
).
add
(
Decimal
(
Number
(
item
.
payAmount
)
||
0
))
Decimal
(
Number
(
item
.
reduceAmount
)
||
0
)
);
form
.
remainingAmount
=
Decimal
(
form
.
remainingAmount
).
add
(
Decimal
(
Number
(
item
.
payAmount
)
||
0
)
);
});
});
};
};
const
onCheckboxAll
=
(
flag
)
=>
{
const
onCheckboxAll
=
(
flag
)
=>
{
if
(
flag
.
checked
)
{
if
(
flag
.
checked
)
{
selectdList
.
value
=
flag
.
records
selectdList
.
value
=
flag
.
records
;
form
.
totalNumber
=
flag
.
records
.
length
form
.
totalNumber
=
flag
.
records
.
length
;
}
else
{
}
else
{
selectdList
.
value
=
[]
selectdList
.
value
=
[]
;
form
.
totalNumber
=
0
form
.
totalNumber
=
0
;
}
}
form
.
totalReduceAmount
=
0
;
form
.
totalReduceAmount
=
0
;
form
.
remainingAmount
=
0
;
form
.
remainingAmount
=
0
;
selectdList
.
value
.
forEach
((
item
)
=>
{
selectdList
.
value
.
forEach
((
item
)
=>
{
form
.
totalReduceAmount
=
Decimal
(
form
.
totalReduceAmount
).
add
(
Decimal
(
Number
(
item
.
reduceAmount
)
||
0
))
form
.
totalReduceAmount
=
Decimal
(
form
.
totalReduceAmount
).
add
(
form
.
remainingAmount
=
Decimal
(
form
.
remainingAmount
).
add
(
Decimal
(
Number
(
item
.
payAmount
)
||
0
))
Decimal
(
Number
(
item
.
reduceAmount
)
||
0
)
);
form
.
remainingAmount
=
Decimal
(
form
.
remainingAmount
).
add
(
Decimal
(
Number
(
item
.
payAmount
)
||
0
)
);
});
});
}
}
;
const
currentDetail
=
ref
({});
const
currentDetail
=
ref
({});
const
onHide
=
(
done
)
=>
{
const
onHide
=
(
done
)
=>
{
done
();
done
();
...
@@ -192,12 +207,16 @@
...
@@ -192,12 +207,16 @@
toolbarConfig
:
{
enabled
:
false
},
toolbarConfig
:
{
enabled
:
false
},
});
});
const
changeNum
=
(
row
)
=>
{
const
changeNum
=
(
row
)
=>
{
row
.
payAmount
=
Decimal
(
row
.
loan
.
remainingAmount
).
sub
(
Decimal
(
row
.
reduceAmount
))
row
.
payAmount
=
Decimal
(
row
.
loan
.
remainingAmount
).
sub
(
Decimal
(
row
.
reduceAmount
))
;
form
.
totalReduceAmount
=
0
;
form
.
totalReduceAmount
=
0
;
form
.
remainingAmount
=
0
;
form
.
remainingAmount
=
0
;
selectdList
.
value
.
forEach
((
item
)
=>
{
selectdList
.
value
.
forEach
((
item
)
=>
{
form
.
totalReduceAmount
=
Decimal
(
form
.
totalReduceAmount
).
add
(
Decimal
(
Number
(
item
.
reduceAmount
)
||
0
))
form
.
totalReduceAmount
=
Decimal
(
form
.
totalReduceAmount
).
add
(
form
.
remainingAmount
=
Decimal
(
form
.
remainingAmount
).
add
(
Decimal
(
Number
(
item
.
payAmount
)
||
0
))
Decimal
(
Number
(
item
.
reduceAmount
)
||
0
)
);
form
.
remainingAmount
=
Decimal
(
form
.
remainingAmount
).
add
(
Decimal
(
Number
(
item
.
payAmount
)
||
0
)
);
});
});
};
};
const
openModal
=
(
detail
,
caselist
)
=>
{
const
openModal
=
(
detail
,
caselist
)
=>
{
...
@@ -210,17 +229,19 @@
...
@@ -210,17 +229,19 @@
caselist
.
forEach
((
item
)
=>
{
caselist
.
forEach
((
item
)
=>
{
const
payAmount
=
Number
(
item
.
remainingAmount
)
||
0
;
const
payAmount
=
Number
(
item
.
remainingAmount
)
||
0
;
list
.
push
({
reduceAmount
:
Number
(
item
.
reduceAmount
)
||
0
,
payAmount
:
payAmount
,
loan
:
item
});
list
.
push
({
reduceAmount
:
Number
(
item
.
reduceAmount
)
||
0
,
payAmount
:
payAmount
,
loan
:
item
});
form
.
totalReduceAmount
=
Decimal
(
form
.
totalReduceAmount
).
add
(
Decimal
(
Number
(
item
.
reduceAmount
)
||
0
))
form
.
totalReduceAmount
=
Decimal
(
form
.
totalReduceAmount
).
add
(
form
.
remainingAmount
=
Decimal
(
form
.
remainingAmount
).
add
(
Decimal
(
payAmount
))
Decimal
(
Number
(
item
.
reduceAmount
)
||
0
)
);
form
.
remainingAmount
=
Decimal
(
form
.
remainingAmount
).
add
(
Decimal
(
payAmount
));
});
});
tabledata
.
value
=
list
;
tabledata
.
value
=
list
;
form
.
totalNumber
=
caselist
.
length
;
form
.
totalNumber
=
caselist
.
length
;
setTimeout
(()
=>
{
setTimeout
(()
=>
{
if
(
ProTableRef
.
value
.
element
)
{
if
(
ProTableRef
.
value
.
element
)
{
ProTableRef
.
value
.
element
.
setAllCheckboxRow
(
true
)
ProTableRef
.
value
.
element
.
setAllCheckboxRow
(
true
)
;
selectdList
.
value
=
list
selectdList
.
value
=
list
;
}
}
},
500
)
},
500
)
;
};
};
const
submitForm
=
()
=>
{
const
submitForm
=
()
=>
{
const
list
=
JSON
.
parse
(
JSON
.
stringify
(
selectdList
.
value
));
const
list
=
JSON
.
parse
(
JSON
.
stringify
(
selectdList
.
value
));
...
...
src/views/property/case-detail/components/splitDrawer.vue
View file @
fc669198
...
@@ -9,7 +9,13 @@
...
@@ -9,7 +9,13 @@
>
>
<div
class=
"h-full flex-col flex mydrawer pb-2"
>
<div
class=
"h-full flex-col flex mydrawer pb-2"
>
<div>
<div>
<ProTable
:config=
"config"
ref=
"ProTableRef"
:data=
"tabledata"
:showPagination=
"false"
:showToolBar=
"false"
>
<ProTable
:config=
"config"
ref=
"ProTableRef"
:data=
"tabledata"
:showPagination=
"false"
:showToolBar=
"false"
>
<template
#
table_top
>
<template
#
table_top
>
<p
class=
"font-bold"
>
关联案件:
</p>
<p
class=
"font-bold"
>
关联案件:
</p>
</
template
>
</
template
>
...
@@ -135,10 +141,9 @@
...
@@ -135,10 +141,9 @@
import
{
computed
}
from
'vue'
;
import
{
computed
}
from
'vue'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
ElInputNumber
,
ElMessage
}
from
'element-plus'
;
import
{
ElInputNumber
,
ElMessage
}
from
'element-plus'
;
import
{
savebyStages
}
from
'@/api/property'
import
{
savebyStages
}
from
'@/api/property'
;
import
{
getByIdPlatforms
}
from
'@/api/platform'
import
{
getByIdPlatforms
}
from
'@/api/platform'
;
;
import
Decimal
from
'decimal.js'
;
import
Decimal
from
"decimal.js"
const
ProTableRef
=
ref
();
const
ProTableRef
=
ref
();
const
showModal
=
ref
(
false
);
const
showModal
=
ref
(
false
);
...
@@ -154,7 +159,7 @@
...
@@ -154,7 +159,7 @@
firstApplyDate
:
dayjs
().
format
(
'YYYY-MM-DD'
),
firstApplyDate
:
dayjs
().
format
(
'YYYY-MM-DD'
),
effectiveTime
:
dayjs
().
format
(
'YYYY-MM-DD HH:mm:ss'
),
effectiveTime
:
dayjs
().
format
(
'YYYY-MM-DD HH:mm:ss'
),
});
});
const
minAmount
=
ref
(
0
)
const
minAmount
=
ref
(
0
)
;
const
currentDetail
=
ref
({});
const
currentDetail
=
ref
({});
const
onHide
=
(
done
)
=>
{
const
onHide
=
(
done
)
=>
{
done
();
done
();
...
@@ -170,7 +175,9 @@
...
@@ -170,7 +175,9 @@
const
otherNum
=
form
.
totalRepayAmount
-
Number
(
splitdata
.
value
[
0
].
applyAmount
);
const
otherNum
=
form
.
totalRepayAmount
-
Number
(
splitdata
.
value
[
0
].
applyAmount
);
const
list
=
[
splitdata
.
value
[
0
]];
const
list
=
[
splitdata
.
value
[
0
]];
const
crash
=
Decimal
(
Decimal
(
otherNum
).
div
(
Decimal
(
form
.
totalPeriod
-
1
))).
toSignificantDigits
(
2
)
const
crash
=
Decimal
(
Decimal
(
otherNum
).
div
(
Decimal
(
form
.
totalPeriod
-
1
))
).
toSignificantDigits
(
2
);
for
(
let
i
=
0
;
i
<
form
.
totalPeriod
-
1
;
i
++
)
{
for
(
let
i
=
0
;
i
<
form
.
totalPeriod
-
1
;
i
++
)
{
console
.
log
(
'i'
,
i
);
console
.
log
(
'i'
,
i
);
const
playApplyDate
=
dayjs
(
form
.
firstApplyDate
)
const
playApplyDate
=
dayjs
(
form
.
firstApplyDate
)
...
@@ -178,7 +185,7 @@
...
@@ -178,7 +185,7 @@
.
format
(
'YYYY-MM-DD'
);
.
format
(
'YYYY-MM-DD'
);
if
(
i
===
form
.
totalPeriod
-
2
)
{
if
(
i
===
form
.
totalPeriod
-
2
)
{
const
other
=
list
.
reduce
((
pre
,
cur
)
=>
{
const
other
=
list
.
reduce
((
pre
,
cur
)
=>
{
return
Decimal
(
pre
).
add
(
Decimal
(
cur
.
applyAmount
))
return
Decimal
(
pre
).
add
(
Decimal
(
cur
.
applyAmount
))
;
},
0
);
},
0
);
list
.
push
({
list
.
push
({
period
:
i
+
1
,
period
:
i
+
1
,
...
@@ -202,7 +209,9 @@
...
@@ -202,7 +209,9 @@
const
changePeriod
=
()
=>
{
const
changePeriod
=
()
=>
{
const
list
=
[];
const
list
=
[];
const
crash
=
Decimal
(
Decimal
(
form
.
totalRepayAmount
).
div
(
Decimal
(
form
.
totalPeriod
))).
toSignificantDigits
(
2
)
const
crash
=
Decimal
(
Decimal
(
form
.
totalRepayAmount
).
div
(
Decimal
(
form
.
totalPeriod
))
).
toSignificantDigits
(
2
);
for
(
let
i
=
0
;
i
<
form
.
totalPeriod
;
i
++
)
{
for
(
let
i
=
0
;
i
<
form
.
totalPeriod
;
i
++
)
{
console
.
log
(
'i'
,
i
);
console
.
log
(
'i'
,
i
);
const
playApplyDate
=
dayjs
(
form
.
firstApplyDate
)
const
playApplyDate
=
dayjs
(
form
.
firstApplyDate
)
...
@@ -216,7 +225,7 @@
...
@@ -216,7 +225,7 @@
period
:
i
+
1
,
period
:
i
+
1
,
playApplyDate
:
playApplyDate
,
playApplyDate
:
playApplyDate
,
repayStatus
:
'pending'
,
repayStatus
:
'pending'
,
applyAmount
:
Decimal
(
form
.
totalRepayAmount
).
sub
(
Decimal
(
other
))
applyAmount
:
Decimal
(
form
.
totalRepayAmount
).
sub
(
Decimal
(
other
))
,
});
});
}
else
{
}
else
{
list
.
push
({
list
.
push
({
...
@@ -273,23 +282,23 @@
...
@@ -273,23 +282,23 @@
value
:
6
,
value
:
6
,
label
:
'6'
,
label
:
'6'
,
},
},
]
]
;
getByIdPlatforms
(
id
).
then
(
res
=>
{
getByIdPlatforms
(
id
).
then
(
(
res
)
=>
{
console
.
log
(
'resres'
,
res
)
console
.
log
(
'resres'
,
res
)
;
if
(
res
.
success
)
{
if
(
res
.
success
)
{
if
(
res
.
result
.
maxStagesNum
){
if
(
res
.
result
.
maxStagesNum
)
{
const
list
=
options
.
value
.
filter
(
v
=>
v
.
value
>
res
.
result
.
maxStagesNum
)
const
list
=
options
.
value
.
filter
(
(
v
)
=>
v
.
value
>
res
.
result
.
maxStagesNum
);
list
.
forEach
(
e
=>
{
list
.
forEach
(
(
e
)
=>
{
e
[
'disabled'
]
=
true
e
[
'disabled'
]
=
true
;
})
})
;
}
}
if
(
res
.
result
.
minAmount
){
if
(
res
.
result
.
minAmount
)
{
minAmount
.
value
=
res
.
result
.
minAmount
minAmount
.
value
=
res
.
result
.
minAmount
;
}
}
}
}
//
//
})
})
;
}
}
;
const
repayStatusOpt
=
[
const
repayStatusOpt
=
[
{
{
value
:
'pending'
,
value
:
'pending'
,
...
@@ -306,31 +315,39 @@
...
@@ -306,31 +315,39 @@
form
.
totalRepayAmount
=
0
;
form
.
totalRepayAmount
=
0
;
form
.
remainingAmount
=
0
;
form
.
remainingAmount
=
0
;
selectdList
.
value
.
forEach
((
item
)
=>
{
selectdList
.
value
.
forEach
((
item
)
=>
{
form
.
totalRepayAmount
=
Decimal
(
form
.
totalRepayAmount
).
add
(
Decimal
(
Number
(
item
.
remainingAmount
)
||
0
));
form
.
totalRepayAmount
=
Decimal
(
form
.
totalRepayAmount
).
add
(
form
.
remainingAmount
=
Decimal
(
form
.
remainingAmount
).
add
(
Decimal
(
Number
(
item
.
remainingAmount
)
||
0
));
Decimal
(
Number
(
item
.
remainingAmount
)
||
0
)
);
form
.
remainingAmount
=
Decimal
(
form
.
remainingAmount
).
add
(
Decimal
(
Number
(
item
.
remainingAmount
)
||
0
)
);
});
});
if
(
selectdList
.
value
.
length
>
0
)
{
if
(
selectdList
.
value
.
length
>
0
)
{
getPlatforms
(
selectdList
.
value
[
0
].
loanPlatform
.
id
)
getPlatforms
(
selectdList
.
value
[
0
].
loanPlatform
.
id
)
;
}
}
changePeriod
()
changePeriod
()
;
};
};
const
onCheckboxAll
=
(
flag
)
=>
{
const
onCheckboxAll
=
(
flag
)
=>
{
if
(
flag
.
checked
)
{
if
(
flag
.
checked
)
{
selectdList
.
value
=
flag
.
records
selectdList
.
value
=
flag
.
records
;
}
else
{
}
else
{
selectdList
.
value
=
[]
selectdList
.
value
=
[]
;
}
}
form
.
totalRepayAmount
=
0
;
form
.
totalRepayAmount
=
0
;
form
.
remainingAmount
=
0
;
form
.
remainingAmount
=
0
;
selectdList
.
value
.
forEach
((
item
)
=>
{
selectdList
.
value
.
forEach
((
item
)
=>
{
form
.
totalRepayAmount
=
Decimal
(
form
.
totalRepayAmount
).
add
(
Decimal
(
Number
(
item
.
remainingAmount
)
||
0
));
form
.
totalRepayAmount
=
Decimal
(
form
.
totalRepayAmount
).
add
(
form
.
remainingAmount
=
Decimal
(
form
.
remainingAmount
).
add
(
Decimal
(
Number
(
item
.
remainingAmount
)
||
0
));
Decimal
(
Number
(
item
.
remainingAmount
)
||
0
)
);
form
.
remainingAmount
=
Decimal
(
form
.
remainingAmount
).
add
(
Decimal
(
Number
(
item
.
remainingAmount
)
||
0
)
);
});
});
if
(
selectdList
.
value
.
length
>
0
)
{
if
(
selectdList
.
value
.
length
>
0
)
{
getPlatforms
(
selectdList
.
value
[
0
].
loanPlatform
.
id
)
getPlatforms
(
selectdList
.
value
[
0
].
loanPlatform
.
id
);
}
changePeriod
()
}
}
changePeriod
();
};
const
config
=
reactive
({
const
config
=
reactive
({
minHeight
:
200
,
minHeight
:
200
,
columns
:
[
columns
:
[
...
@@ -423,20 +440,24 @@
...
@@ -423,20 +440,24 @@
form
.
totalRepayAmount
=
0
;
form
.
totalRepayAmount
=
0
;
form
.
remainingAmount
=
0
;
form
.
remainingAmount
=
0
;
caselist
.
forEach
((
item
)
=>
{
caselist
.
forEach
((
item
)
=>
{
form
.
totalRepayAmount
=
Decimal
(
form
.
totalRepayAmount
).
add
(
Decimal
(
Number
(
item
.
remainingAmount
)
||
0
));
form
.
totalRepayAmount
=
Decimal
(
form
.
totalRepayAmount
).
add
(
form
.
remainingAmount
=
Decimal
(
form
.
remainingAmount
).
add
(
Decimal
(
Number
(
item
.
remainingAmount
)
||
0
));
Decimal
(
Number
(
item
.
remainingAmount
)
||
0
)
);
form
.
remainingAmount
=
Decimal
(
form
.
remainingAmount
).
add
(
Decimal
(
Number
(
item
.
remainingAmount
)
||
0
)
);
});
});
tabledata
.
value
=
caselist
;
tabledata
.
value
=
caselist
;
setTimeout
(()
=>
{
setTimeout
(()
=>
{
if
(
ProTableRef
.
value
.
element
)
{
if
(
ProTableRef
.
value
.
element
)
{
ProTableRef
.
value
.
element
.
setAllCheckboxRow
(
true
)
ProTableRef
.
value
.
element
.
setAllCheckboxRow
(
true
)
;
selectdList
.
value
=
caselist
selectdList
.
value
=
caselist
;
// 获取最大分期数
// 获取最大分期数
if
(
selectdList
.
value
.
length
>
0
)
{
if
(
selectdList
.
value
.
length
>
0
)
{
getPlatforms
(
selectdList
.
value
[
0
].
loanPlatform
.
id
)
getPlatforms
(
selectdList
.
value
[
0
].
loanPlatform
.
id
)
;
}
}
}
}
},
500
)
},
500
)
;
changePeriod
();
changePeriod
();
};
};
const
emits
=
defineEmits
([
'success'
]);
const
emits
=
defineEmits
([
'success'
]);
...
@@ -446,8 +467,9 @@
...
@@ -446,8 +467,9 @@
message
:
'修改分期数值后要确认'
,
message
:
'修改分期数值后要确认'
,
plain
:
true
,
plain
:
true
,
});
});
const
arr
=
splitdata
.
value
.
filter
(
v
=>
v
.
applyAmount
<
minAmount
.
value
)
const
arr
=
splitdata
.
value
.
filter
((
v
)
=>
v
.
applyAmount
<
minAmount
.
value
);
if
(
arr
.
length
>
0
)
return
ElMessage
.
warning
({
if
(
arr
.
length
>
0
)
return
ElMessage
.
warning
({
message
:
'分期金额要大于借款平台的分期最低金额'
,
message
:
'分期金额要大于借款平台的分期最低金额'
,
plain
:
true
,
plain
:
true
,
});
});
...
...
src/views/property/case-detail/index.vue
View file @
fc669198
...
@@ -440,7 +440,9 @@
...
@@ -440,7 +440,9 @@
return
(
return
(
<>
<>
<
div
className
=
"flex justify-center"
>
<
div
className
=
"flex justify-center"
>
<
ElButton
onClick
=
{()
=>
preview
(
row
,
'images'
)}
link
type
=
"primary"
>
查看
<
/ElButton
>
<
ElButton
onClick
=
{()
=>
preview
(
row
,
'images'
)}
link
type
=
"primary"
>
查看
<
/ElButton
>
<
/div
>
<
/div
>
<
/
>
<
/
>
);
);
...
@@ -457,7 +459,9 @@
...
@@ -457,7 +459,9 @@
return
(
return
(
<>
<>
<
div
className
=
"flex justify-center"
>
<
div
className
=
"flex justify-center"
>
<
ElButton
onClick
=
{()
=>
preview
(
row
,
'notes'
)}
link
type
=
"primary"
>
查看
<
/ElButton
>
<
ElButton
onClick
=
{()
=>
preview
(
row
,
'notes'
)}
link
type
=
"primary"
>
查看
<
/ElButton
>
<
/div
>
<
/div
>
<
/
>
<
/
>
);
);
...
@@ -474,7 +478,9 @@
...
@@ -474,7 +478,9 @@
return
(
return
(
<>
<>
<
div
className
=
"flex justify-center"
>
<
div
className
=
"flex justify-center"
>
<
ElButton
onClick
=
{()
=>
preview
(
row
,
'others'
)}
link
type
=
"primary"
>
查看
<
/ElButton
>
<
ElButton
onClick
=
{()
=>
preview
(
row
,
'others'
)}
link
type
=
"primary"
>
查看
<
/ElButton
>
<
/div
>
<
/div
>
<
/
>
<
/
>
);
);
...
...
src/views/property/case-manage/index.vue
View file @
fc669198
...
@@ -73,12 +73,19 @@
...
@@ -73,12 +73,19 @@
];
];
const
config
=
reactive
({
const
config
=
reactive
({
columns
:
[
columns
:
[
{
field
:
'caseId'
,
title
:
'案件ID'
,
search
:
{
el
:
'input'
,
labelWidth
:
80
},
width
:
190
,
{
field
:
'caseId'
,
title
:
'案件ID'
,
search
:
{
el
:
'input'
,
labelWidth
:
80
},
width
:
190
,
slots
:
{
slots
:
{
default
:
({
row
,
rowIndex
})
=>
{
default
:
({
row
,
rowIndex
})
=>
{
return
(
return
(
<>
<>
<
div
onClick
=
{()
=>
onCellClick
(
row
)}
className
=
" text-blue-400 underline cursor-pointer"
>
<
div
onClick
=
{()
=>
onCellClick
(
row
)}
className
=
" text-blue-400 underline cursor-pointer"
>
{
row
.
caseId
}
{
row
.
caseId
}
<
/div
>
<
/div
>
<
/
>
<
/
>
...
@@ -250,7 +257,7 @@
...
@@ -250,7 +257,7 @@
},
},
},
},
},
},
]
]
,
});
});
const
query
=
()
=>
caseLRef
.
value
?.
search
();
const
query
=
()
=>
caseLRef
.
value
?.
search
();
...
...
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