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
ea82dbc6
Commit
ea82dbc6
authored
Feb 26, 2025
by
沈翠玲
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
业务审批
parent
dcf0ca7f
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
937 additions
and
397 deletions
+937
-397
splitDrawer.vue
...iness-approval/by-stages-apply/components/splitDrawer.vue
+270
-153
index.vue
src/views/business-approval/by-stages-apply/index.vue
+24
-122
reduceDrawer.vue
...ness-approval/reduction-apply/components/reduceDrawer.vue
+517
-0
index.vue
src/views/business-approval/reduction-apply/index.vue
+34
-97
index.vue
src/views/business-approval/repayment-approve/index.vue
+30
-6
index.vue
src/views/property/audit-manage/index.vue
+1
-0
callDrawer.vue
src/views/property/case-detail/components/callDrawer.vue
+15
-4
reduceDrawer.vue
src/views/property/case-detail/components/reduceDrawer.vue
+15
-4
returnModal.vue
src/views/property/case-detail/components/returnModal.vue
+4
-3
splitDrawer.vue
src/views/property/case-detail/components/splitDrawer.vue
+15
-4
index.vue
src/views/property/case-manage/index.vue
+1
-1
index.vue
src/views/property/import/index.vue
+10
-3
index.vue
src/views/workplace/audit/index.vue
+1
-0
No files found.
src/views/business-approval/by-stages-apply/components/splitDrawer.vue
View file @
ea82dbc6
This diff is collapsed.
Click to expand it.
src/views/business-approval/by-stages-apply/index.vue
View file @
ea82dbc6
...
@@ -17,116 +17,7 @@
...
@@ -17,116 +17,7 @@
</el-tab-pane>
</el-tab-pane>
</el-tabs>
</el-tabs>
</div>
</div>
<ProTable
:config=
"config"
ref=
"ProTableRef"
:api=
"getByStagesPage"
:selectdList=
"selectdList"
:paramCallback=
"paramCallback"
>
<ProTable
:config=
"config"
ref=
"ProTableRef"
:api=
"getByStagesPage"
:paramCallback=
"paramCallback"
>
<
template
#
left_buttons
>
<!--
<el-button
type=
"primary"
>
下载申请
</el-button>
-->
<el-button
type=
"primary"
@
click=
"changeStatus"
:disabled=
"!selectdList || !selectdList.length"
>
审批
</el-button>
<!--
<el-button
type=
"primary"
>
下载
</el-button>
<el-button
type=
"primary"
>
批量修复上传
</el-button>
-->
</
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"
>
<div
v-for=
"(item, index) in row.loans"
:key=
"index"
>
<div
class=
"public-header"
>
{{
item
?.
caseId
}}
</div>
<table
><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
?.
commission
}}
</td>
</tr>
<tr>
<td
class=
"label"
>
委案金额
</td>
<td>
{{
item
?.
commissionAmount
}}
</td>
<td
class=
"label"
>
案件状态
</td>
<td>
{{
item
?.
caseStatus
?
CaseStatus
.
find
((
v
)
=>
v
.
value
===
item
?.
caseStatus
)?.
label
:
''
}}
</td
>
</tr>
<tr>
<td
class=
"label"
>
跟进结果
</td>
<td>
{{
item
?.
followStatus
?
FollowStatus
.
find
((
v
)
=>
v
.
value
===
item
?.
followStatus
)?.
label
:
''
}}
</td>
<td
class=
"label"
>
跟进状态
</td>
<td>
{{
item
?.
phoneResultStatus
?
PhoneResultStatus
.
find
((
v
)
=>
v
.
value
===
item
?.
phoneResultStatus
)
.
label
:
''
}}
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div
class=
"flex-1"
>
<div>
分期明细
</div>
<div
class=
"expand-table"
>
<ProTable
:config=
"splitDeConfig"
:data=
"row.byStagesRecords"
:showPagination=
"false"
:showToolBar=
"false"
/>
</div>
</div>
</div>
</div>
</
template
>
</ProTable>
</ProTable>
<vxe-modal
<vxe-modal
resize
resize
...
@@ -263,15 +154,10 @@
...
@@ -263,15 +154,10 @@
],
],
toolbarConfig
:
{
enabled
:
false
},
toolbarConfig
:
{
enabled
:
false
},
});
});
const
changeStatus
=
async
()
=>
{
const
changeStatus
=
async
(
row
)
=>
{
if
(
selectdList
.
value
.
length
>
1
)
{
splitDrawerRef
.
value
.
openModal
(
showModal
.
value
=
true
;
JSON
.
parse
(
JSON
.
stringify
(
row
))
}
else
{
);
splitDrawerRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
selectdList
.
value
[
0
]))
);
}
};
};
const
submitForm
=
async
(
type
)
=>
{
const
submitForm
=
async
(
type
)
=>
{
const
ids
=
selectdList
.
value
.
map
((
v
)
=>
v
.
id
).
join
(
','
);
const
ids
=
selectdList
.
value
.
map
((
v
)
=>
v
.
id
).
join
(
','
);
...
@@ -299,8 +185,8 @@
...
@@ -299,8 +185,8 @@
const
config
=
computed
(()
=>
{
const
config
=
computed
(()
=>
{
return
{
return
{
columns
:
[
columns
:
[
{
type
:
'checkbox'
,
width
:
60
,
fixed
:
'left'
},
//
{ type: 'checkbox', width: 60, fixed: 'left' },
{
type
:
'expand'
,
width
:
80
,
slots
:
{
content
:
'expand_content'
}
},
//
{ type: 'expand', width: 80, slots: { content: 'expand_content' } },
{
{
field
:
'caseId'
,
field
:
'caseId'
,
title
:
'案件ID'
,
title
:
'案件ID'
,
...
@@ -334,7 +220,7 @@
...
@@ -334,7 +220,7 @@
width
:
90
,
width
:
90
,
},
},
{
{
title
:
'
CPE
'
,
title
:
'
发起人
'
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
width
:
60
,
width
:
60
,
slots
:
{
slots
:
{
...
@@ -469,6 +355,22 @@
...
@@ -469,6 +355,22 @@
},
},
},
},
},
},
{
field
:
'code'
,
title
:
'操作'
,
width
:
120
,
slots
:
{
default
:
({
row
,
rowIndex
})
=>
{
return
(
<>
<
ElButton
type
=
"primary"
onClick
=
{()
=>
changeStatus
(
row
)}
>
{
row
.
flowStatus
===
'pending'
?
'查看并审核'
:
'查看'
}
<
/ElButton
>
<
/
>
);
},
},
}
],
],
onCheckboxChange
:
onCheckboxChange
,
onCheckboxChange
:
onCheckboxChange
,
onCheckboxAll
:
onCheckboxAll
,
onCheckboxAll
:
onCheckboxAll
,
...
...
src/views/business-approval/reduction-apply/components/reduceDrawer.vue
0 → 100644
View file @
ea82dbc6
This diff is collapsed.
Click to expand it.
src/views/business-approval/reduction-apply/index.vue
View file @
ea82dbc6
...
@@ -17,96 +17,7 @@
...
@@ -17,96 +17,7 @@
</el-tab-pane>
</el-tab-pane>
</el-tabs>
</el-tabs>
</div>
</div>
<ProTable
:config=
"config"
ref=
"ProTableRef"
:api=
"getReducePage"
:selectdList=
"selectdList"
:paramCallback=
"paramCallback"
>
<ProTable
:config=
"config"
ref=
"ProTableRef"
:api=
"getReducePage"
:paramCallback=
"paramCallback"
>
<
template
#
left_buttons
>
<!--
<el-button
type=
"primary"
>
下载申请
</el-button>
-->
<el-button
type=
"primary"
@
click=
"changeStatus"
:disabled=
"!selectdList || !selectdList.length"
>
审批
</el-button>
<!--
<el-button
type=
"primary"
>
下载
</el-button>
<el-button
type=
"primary"
>
批量修复上传
</el-button>
-->
</
template
>
<
template
#
expand_content=
"{ row }"
>
<div
class=
"expand-box"
>
<div>
案件明细
</div>
<div
class=
"expand-table"
>
<div
v-for=
"(item, index) in row.reduceRecords"
:key=
"index"
>
<div
class=
"public-header"
>
{{
item
?.
loan
?.
caseId
}}
</div>
<table
><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
?.
reduceAmount
}}
</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
?
CaseStatus
?.
find
((
v
)
=>
v
.
value
===
item
?.
loan
?.
caseStatus
)?.
label
:
''
}}
</td
>
</tr>
<tr>
<td
class=
"label"
>
手续费
</td>
<td>
{{
item
?.
loan
?.
commission
}}
</td>
<td
class=
"label"
>
跟进结果
</td>
<td>
{{
item
?.
loan
?.
followStatus
?
FollowStatus
?.
find
((
v
)
=>
v
.
value
===
item
?.
loan
?.
followStatus
)?.
label
:
''
}}
</td>
<td
class=
"label"
>
跟进状态
</td>
<td>
{{
item
?.
loan
?.
phoneResultStatus
?
PhoneResultStatus
?.
find
(
(
v
)
=>
v
.
value
===
item
?.
loan
?.
phoneResultStatus
)?.
label
:
''
}}
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</
template
>
</ProTable>
</ProTable>
<vxe-modal
<vxe-modal
resize
resize
...
@@ -126,12 +37,17 @@
...
@@ -126,12 +37,17 @@
<el-button
type=
"primary"
@
click=
"submitForm('pass')"
>
通过
</el-button>
<el-button
type=
"primary"
@
click=
"submitForm('pass')"
>
通过
</el-button>
</
template
>
</
template
>
</vxe-modal>
</vxe-modal>
<reduceDrawer
ref=
"reduceDrawerRef"
@
success=
"query"
></reduceDrawer>
<el-image-viewer
:url-list=
"srcList"
v-if=
"RefImage"
@
close=
"RefImage = false"
/>
<el-image-viewer
:url-list=
"srcList"
v-if=
"RefImage"
@
close=
"RefImage = false"
/>
</div>
</div>
</template>
</template>
<
script
setup
name=
"systemLog"
lang=
"jsx"
>
<
script
setup
name=
"systemLog"
lang=
"jsx"
>
import
{
computed
}
from
'vue'
;
import
{
computed
}
from
'vue'
;
import
reduceDrawer
from
'./components/reduceDrawer.vue'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
getReducePage
,
getReduceTotal
,
flowStatusByIds
}
from
'@/api/property'
;
import
{
getReducePage
,
getReduceTotal
,
flowStatusByIds
}
from
'@/api/property'
;
import
{
onMounted
}
from
'vue'
;
import
{
onMounted
}
from
'vue'
;
...
@@ -142,6 +58,7 @@
...
@@ -142,6 +58,7 @@
import
{
Download
}
from
'@element-plus/icons-vue'
;
import
{
Download
}
from
'@element-plus/icons-vue'
;
import
{
getAppEnvConfig
}
from
'@/utils/env'
;
import
{
getAppEnvConfig
}
from
'@/utils/env'
;
const
envs
=
getAppEnvConfig
();
const
envs
=
getAppEnvConfig
();
const
reduceDrawerRef
=
ref
();
const
{
PhoneResultStatus
,
ReduceType
,
FlowStatus
,
FollowStatus
,
CaseStatus
}
=
useDict
(
"PhoneResultStatus"
,
"ReduceType"
,
"FlowStatus"
,
"FollowStatus"
,
"CaseStatus"
);
const
{
PhoneResultStatus
,
ReduceType
,
FlowStatus
,
FollowStatus
,
CaseStatus
}
=
useDict
(
"PhoneResultStatus"
,
"ReduceType"
,
"FlowStatus"
,
"FollowStatus"
,
"CaseStatus"
);
const
downloadfile
=
inject
(
'download'
);
const
downloadfile
=
inject
(
'download'
);
...
@@ -159,6 +76,11 @@
...
@@ -159,6 +76,11 @@
const
name
=
item
.
slice
(
item
.
lastIndexOf
(
'/'
)
+
1
,
item
.
length
);
const
name
=
item
.
slice
(
item
.
lastIndexOf
(
'/'
)
+
1
,
item
.
length
);
downloadfile
(
'/sys/static/'
+
item
,
{},
name
);
downloadfile
(
'/sys/static/'
+
item
,
{},
name
);
};
};
const
changeStatus
=
async
(
row
)
=>
{
reduceDrawerRef
.
value
.
openModal
(
JSON
.
parse
(
JSON
.
stringify
(
row
))
);
};
const
paramCallback
=
(
param
)
=>
{
const
paramCallback
=
(
param
)
=>
{
const
obj
=
JSON
.
parse
(
JSON
.
stringify
(
param
));
const
obj
=
JSON
.
parse
(
JSON
.
stringify
(
param
));
obj
[
'flowStatus'
]
=
activeName
.
value
;
obj
[
'flowStatus'
]
=
activeName
.
value
;
...
@@ -201,9 +123,6 @@
...
@@ -201,9 +123,6 @@
selectdList
.
value
=
[];
selectdList
.
value
=
[];
}
}
};
};
const
changeStatus
=
async
()
=>
{
showModal
.
value
=
true
;
};
const
handleClick
=
()
=>
{
const
handleClick
=
()
=>
{
setTimeout
(()
=>
{
setTimeout
(()
=>
{
query
();
query
();
...
@@ -235,8 +154,8 @@
...
@@ -235,8 +154,8 @@
const
config
=
computed
(()
=>
{
const
config
=
computed
(()
=>
{
return
{
return
{
columns
:
[
columns
:
[
{
type
:
'checkbox'
,
width
:
60
,
fixed
:
'left'
},
//
{ type: 'checkbox', width: 60, fixed: 'left' },
{
type
:
'expand'
,
width
:
40
,
slots
:
{
content
:
'expand_content'
}
},
//
{ type: 'expand', width: 40, slots: { content: 'expand_content' } },
{
{
field
:
'caseId'
,
field
:
'caseId'
,
title
:
'案件ID'
,
title
:
'案件ID'
,
...
@@ -287,9 +206,9 @@
...
@@ -287,9 +206,9 @@
width
:
120
,
width
:
120
,
},
},
{
{
title
:
'
CPE
'
,
title
:
'
发起人
'
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
width
:
6
0
,
width
:
7
0
,
slots
:
{
slots
:
{
default
:
({
row
})
=>
{
default
:
({
row
})
=>
{
if
(
row
.
cpe
?.
username
)
{
if
(
row
.
cpe
?.
username
)
{
...
@@ -372,6 +291,7 @@
...
@@ -372,6 +291,7 @@
field
:
'applyDate'
,
field
:
'applyDate'
,
title
:
'减免截止时间'
,
title
:
'减免截止时间'
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
width
:
120
,
search
:
{
search
:
{
el
:
'date-picker'
,
el
:
'date-picker'
,
labelWidth
:
90
,
labelWidth
:
90
,
...
@@ -381,6 +301,7 @@
...
@@ -381,6 +301,7 @@
{
{
field
:
'inEffectDate'
,
field
:
'inEffectDate'
,
title
:
'减免生效时间'
,
title
:
'减免生效时间'
,
width
:
120
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
search
:
{
search
:
{
el
:
'date-picker'
,
el
:
'date-picker'
,
...
@@ -388,6 +309,22 @@
...
@@ -388,6 +309,22 @@
props
:
{
type
:
'datetime'
,
valueFormat
:
'YYYY-MM-DD HH:mm:ss'
},
props
:
{
type
:
'datetime'
,
valueFormat
:
'YYYY-MM-DD HH:mm:ss'
},
},
},
},
},
{
field
:
'code'
,
title
:
'操作'
,
width
:
120
,
slots
:
{
default
:
({
row
,
rowIndex
})
=>
{
return
(
<>
<
ElButton
type
=
"primary"
onClick
=
{()
=>
changeStatus
(
row
)}
>
{
row
.
flowStatus
===
'pending'
?
'查看并审核'
:
'查看'
}
<
/ElButton
>
<
/
>
);
},
},
}
],
],
onCheckboxChange
:
onCheckboxChange
,
onCheckboxChange
:
onCheckboxChange
,
onCheckboxAll
:
onCheckboxAll
,
onCheckboxAll
:
onCheckboxAll
,
...
...
src/views/business-approval/repayment-approve/index.vue
View file @
ea82dbc6
...
@@ -40,7 +40,7 @@
...
@@ -40,7 +40,7 @@
esc-closable
esc-closable
>
>
<div
class=
"w-full px-3 h-full overflow-auto flex-col flex mytable"
>
<div
class=
"w-full px-3 h-full overflow-auto flex-col flex mytable"
>
是否审批通过
选中
的数据?
是否审批通过
{{currentRow ? `借款人${currentRow?.borrower?.name}, 还款金额${currentRow?.realRepayAmount}`: '选中'}}
的数据?
</div>
</div>
<
template
#
footer
>
<
template
#
footer
>
<el-button
type=
"default"
@
click=
"showModal = false"
>
取消
</el-button>
<el-button
type=
"default"
@
click=
"showModal = false"
>
取消
</el-button>
...
@@ -62,6 +62,7 @@
...
@@ -62,6 +62,7 @@
const
{
RepayType
,
FlowStatus
}
=
useDict
(
"RepayType"
,
"FlowStatus"
);
const
{
RepayType
,
FlowStatus
}
=
useDict
(
"RepayType"
,
"FlowStatus"
);
const
ProTableRef
=
ref
();
const
ProTableRef
=
ref
();
const
showModal
=
ref
(
false
);
const
showModal
=
ref
(
false
);
const
currentRow
=
ref
(
null
);
const
activeName
=
ref
(
'pending'
);
const
activeName
=
ref
(
'pending'
);
const
tabs
=
ref
([]);
const
tabs
=
ref
([]);
const
selectdList
=
ref
([]);
const
selectdList
=
ref
([]);
...
@@ -116,7 +117,12 @@
...
@@ -116,7 +117,12 @@
},
500
)
},
500
)
return
obj
;
return
obj
;
};
};
const
changeStatus
=
async
()
=>
{
const
changeStatus
=
async
(
row
)
=>
{
if
(
row
.
id
)
{
currentRow
.
value
=
row
}
else
{
currentRow
.
value
=
null
}
showModal
.
value
=
true
;
showModal
.
value
=
true
;
};
};
const
submitForm
=
async
(
type
)
=>
{
const
submitForm
=
async
(
type
)
=>
{
...
@@ -160,7 +166,7 @@
...
@@ -160,7 +166,7 @@
}
}
},
},
},
},
width
:
80
,
width
:
1
80
,
},
},
{
{
field
:
'borrower.name'
,
field
:
'borrower.name'
,
...
@@ -172,7 +178,7 @@
...
@@ -172,7 +178,7 @@
{
{
title
:
'CPE'
,
title
:
'CPE'
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
width
:
6
0
,
width
:
8
0
,
slots
:
{
slots
:
{
default
:
({
row
})
=>
{
default
:
({
row
})
=>
{
if
(
row
.
reduce
&&
row
.
reduce
.
reduceRecords
)
{
if
(
row
.
reduce
&&
row
.
reduce
.
reduceRecords
)
{
...
@@ -220,6 +226,7 @@
...
@@ -220,6 +226,7 @@
{
{
field
:
'realRepayAmount'
,
field
:
'realRepayAmount'
,
title
:
'实际还款金额'
,
title
:
'实际还款金额'
,
width
:
140
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
search
:
{
el
:
'input'
,
labelWidth
:
90
},
search
:
{
el
:
'input'
,
labelWidth
:
90
},
},
},
...
@@ -232,7 +239,7 @@
...
@@ -232,7 +239,7 @@
labelWidth
:
90
,
labelWidth
:
90
,
props
:
{
type
:
'datetime'
,
valueFormat
:
'YYYY-MM-DD HH:mm:ss'
},
props
:
{
type
:
'datetime'
,
valueFormat
:
'YYYY-MM-DD HH:mm:ss'
},
},
},
width
:
1
15
,
width
:
1
40
,
},
},
{
{
field
:
'reduce.totalPayAmount'
,
field
:
'reduce.totalPayAmount'
,
...
@@ -255,7 +262,7 @@
...
@@ -255,7 +262,7 @@
);
);
},
},
},
},
width
:
8
0
,
width
:
10
0
,
},
},
{
{
field
:
'loanPlatform'
,
field
:
'loanPlatform'
,
...
@@ -284,6 +291,23 @@
...
@@ -284,6 +291,23 @@
},
},
},
},
},
},
{
field
:
'code'
,
title
:
'操作'
,
width
:
120
,
visible
:
activeName
.
value
===
'pending'
?
true
:
false
,
slots
:
{
default
:
({
row
,
rowIndex
})
=>
{
return
(
<>
<
ElButton
type
=
"primary"
onClick
=
{()
=>
changeStatus
(
row
)}
>
审批
<
/ElButton
>
<
/
>
);
},
},
}
],
],
onCheckboxChange
:
onCheckboxChange
,
onCheckboxChange
:
onCheckboxChange
,
onCheckboxAll
:
onCheckboxAll
,
onCheckboxAll
:
onCheckboxAll
,
...
...
src/views/property/audit-manage/index.vue
View file @
ea82dbc6
...
@@ -29,6 +29,7 @@
...
@@ -29,6 +29,7 @@
<
template
#
left_buttons
>
<
template
#
left_buttons
>
<el-button
<el-button
type=
"primary"
type=
"primary"
v-if=
"activeName === 'un_audit'"
@
click=
"audit"
@
click=
"audit"
v-permission=
"'send_audio'"
v-permission=
"'send_audio'"
:disabled=
"!selectdList || selectdList.length === 0"
:disabled=
"!selectdList || selectdList.length === 0"
...
...
src/views/property/case-detail/components/callDrawer.vue
View file @
ea82dbc6
...
@@ -238,7 +238,7 @@
...
@@ -238,7 +238,7 @@
import
dayjs
from
'dayjs'
;
import
dayjs
from
'dayjs'
;
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
,
ElTag
}
from
'element-plus'
;
import
{
Upload
}
from
'@element-plus/icons-vue'
;
import
{
Upload
}
from
'@element-plus/icons-vue'
;
import
{
getAppEnvConfig
}
from
'@/utils/env'
;
import
{
getAppEnvConfig
}
from
'@/utils/env'
;
import
{
saveTrackRecord
}
from
'@/api/property'
;
import
{
saveTrackRecord
}
from
'@/api/property'
;
...
@@ -397,9 +397,9 @@
...
@@ -397,9 +397,9 @@
const
config
=
reactive
({
const
config
=
reactive
({
minHeight
:
200
,
minHeight
:
200
,
checkboxConfig
:
{
checkboxConfig
:
{
checkMethod
:
({
row
})
=>
{
//
checkMethod: ({ row }) => {
return
props
.
mergerCase
!==
'Y'
;
//
return props.mergerCase !== 'Y';
},
//
},
},
},
columns
:
[
columns
:
[
{
type
:
'checkbox'
,
width
:
60
,
fixed
:
'left'
},
{
type
:
'checkbox'
,
width
:
60
,
fixed
:
'left'
},
...
@@ -408,6 +408,17 @@
...
@@ -408,6 +408,17 @@
title
:
'案件ID'
,
title
:
'案件ID'
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
},
},
{
field
:
'mergerCase'
,
title
:
'是否共案处理'
,
showOverflow
:
'tooltip'
,
width
:
100
,
slots
:
{
default
:
({
row
})
=>
{
return
<
ElTag
>
{
row
.
mergerCase
==
'Y'
?
'是'
:
'否'
}
<
/ElTag>
;
},
},
},
{
{
field
:
'product'
,
field
:
'product'
,
title
:
'产品'
,
title
:
'产品'
,
...
...
src/views/property/case-detail/components/reduceDrawer.vue
View file @
ea82dbc6
...
@@ -125,7 +125,7 @@
...
@@ -125,7 +125,7 @@
import
{
computed
}
from
'vue'
;
import
{
computed
}
from
'vue'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
saveReduce
}
from
'@/api/property'
;
import
{
saveReduce
}
from
'@/api/property'
;
import
{
ElMessage
}
from
'element-plus'
;
import
{
ElMessage
,
ElTag
}
from
'element-plus'
;
import
{
Download
,
ZoomIn
}
from
'@element-plus/icons-vue'
;
import
{
Download
,
ZoomIn
}
from
'@element-plus/icons-vue'
;
import
{
onMounted
}
from
'vue'
;
import
{
onMounted
}
from
'vue'
;
import
{
watch
}
from
'vue'
;
import
{
watch
}
from
'vue'
;
...
@@ -233,9 +233,9 @@
...
@@ -233,9 +233,9 @@
};
};
const
config
=
reactive
({
const
config
=
reactive
({
checkboxConfig
:
{
checkboxConfig
:
{
checkMethod
:
({
row
})
=>
{
//
checkMethod: ({ row }) => {
return
props
.
mergerCase
!==
'Y'
;
//
return props.mergerCase !== 'Y';
},
//
},
},
},
minHeight
:
200
,
minHeight
:
200
,
columns
:
[
columns
:
[
...
@@ -246,6 +246,17 @@
...
@@ -246,6 +246,17 @@
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
title
:
'案件ID'
,
title
:
'案件ID'
,
},
},
{
field
:
'mergerCase'
,
title
:
'是否共案处理'
,
showOverflow
:
'tooltip'
,
width
:
100
,
slots
:
{
default
:
({
row
})
=>
{
return
<
ElTag
>
{
row
.
loan
.
mergerCase
==
'Y'
?
'是'
:
'否'
}
<
/ElTag>
;
},
},
},
{
{
field
:
'loan.product'
,
field
:
'loan.product'
,
width
:
100
,
width
:
100
,
...
...
src/views/property/case-detail/components/returnModal.vue
View file @
ea82dbc6
...
@@ -26,7 +26,7 @@
...
@@ -26,7 +26,7 @@
<td
class=
"label"
>
减免生效时间
</td>
<td
class=
"label"
>
减免生效时间
</td>
<td>
{{
currentInfo
.
inEffectDate
}}
</td>
<td>
{{
currentInfo
.
inEffectDate
}}
</td>
<td
class=
"label"
>
应还金额
</td>
<td
class=
"label"
>
应还金额
</td>
<td
colspan=
"5"
>
{{
currentInfo
.
totalPayAmount
}}
</td>
<td
colspan=
"5"
>
{{
Decimal
(
currentInfo
.
remainingAmount
).
sub
(
currentInfo
.
totalReduceAmount
)
}}
</td>
</tr>
</tr>
<!-- Add more rows as needed -->
<!-- Add more rows as needed -->
</table>
</table>
...
@@ -188,9 +188,10 @@
...
@@ -188,9 +188,10 @@
<
script
setup
lang=
"jsx"
name=
"allocationModal"
>
<
script
setup
lang=
"jsx"
name=
"allocationModal"
>
import
{
computed
}
from
'vue'
;
import
{
computed
}
from
'vue'
;
import
dayjs
from
'dayjs'
;
import
dayjs
from
'dayjs'
;
import
Decimal
from
'decimal.js'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
reactive
,
ref
}
from
'vue'
;
import
{
getAppEnvConfig
}
from
'@/utils/env'
;
import
{
getAppEnvConfig
}
from
'@/utils/env'
;
import
{
ElMessage
}
from
'element-plus'
;
import
{
ElMessage
,
ElTag
}
from
'element-plus'
;
import
{
useDict
}
from
'@/hooks/useDict'
;
import
{
useDict
}
from
'@/hooks/useDict'
;
const
{
PhoneResultStatus
,
RepayType
,
FlowStatus
,
FollowStatus
,
AuditStatus
,
CaseStatus
}
=
useDict
(
"PhoneResultStatus"
,
"RepayType"
,
"FlowStatus"
,
"FollowStatus"
,
"AuditStatus"
,
"CaseStatus"
);
const
{
PhoneResultStatus
,
RepayType
,
FlowStatus
,
FollowStatus
,
AuditStatus
,
CaseStatus
}
=
useDict
(
"PhoneResultStatus"
,
"RepayType"
,
"FlowStatus"
,
"FollowStatus"
,
"AuditStatus"
,
"CaseStatus"
);
import
{
saveRepayRecord
}
from
'@/api/property'
;
import
{
saveRepayRecord
}
from
'@/api/property'
;
...
@@ -216,7 +217,7 @@
...
@@ -216,7 +217,7 @@
const
radio
=
ref
(
0
);
const
radio
=
ref
(
0
);
const
validaterealRepayAmount
=
(
rule
,
value
,
callback
)
=>
{
const
validaterealRepayAmount
=
(
rule
,
value
,
callback
)
=>
{
if
(
if
(
Number
(
value
)
!==
Number
(
currentInfo
.
value
.
totalPayAmount
)
&&
Number
(
value
)
!==
Number
(
Decimal
(
currentInfo
.
value
.
remainingAmount
).
sub
(
currentInfo
.
value
.
totalReduceAmount
)
)
&&
currentType
.
value
===
'结清减免还款'
currentType
.
value
===
'结清减免还款'
)
{
)
{
callback
(
new
Error
(
'*金额必须等于应还金额'
));
callback
(
new
Error
(
'*金额必须等于应还金额'
));
...
...
src/views/property/case-detail/components/splitDrawer.vue
View file @
ea82dbc6
...
@@ -178,7 +178,7 @@
...
@@ -178,7 +178,7 @@
import
dayjs
from
'dayjs'
;
import
dayjs
from
'dayjs'
;
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
,
ElTag
}
from
'element-plus'
;
import
{
savebyStages
}
from
'@/api/property'
;
import
{
savebyStages
}
from
'@/api/property'
;
import
{
getByIdPlatforms
}
from
'@/api/platform'
;
import
{
getByIdPlatforms
}
from
'@/api/platform'
;
import
{
getAppEnvConfig
}
from
'@/utils/env'
;
import
{
getAppEnvConfig
}
from
'@/utils/env'
;
...
@@ -373,9 +373,9 @@
...
@@ -373,9 +373,9 @@
};
};
const
config
=
reactive
({
const
config
=
reactive
({
checkboxConfig
:
{
checkboxConfig
:
{
checkMethod
:
({
row
})
=>
{
//
checkMethod: ({ row }) => {
return
props
.
mergerCase
!==
'Y'
;
//
return props.mergerCase !== 'Y';
},
//
},
},
},
minHeight
:
200
,
minHeight
:
200
,
columns
:
[
columns
:
[
...
@@ -385,6 +385,17 @@
...
@@ -385,6 +385,17 @@
title
:
'案件ID'
,
title
:
'案件ID'
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
},
},
{
field
:
'mergerCase'
,
title
:
'是否共案处理'
,
showOverflow
:
'tooltip'
,
width
:
100
,
slots
:
{
default
:
({
row
})
=>
{
return
<
ElTag
>
{
row
.
mergerCase
==
'Y'
?
'是'
:
'否'
}
<
/ElTag>
;
},
},
},
{
{
field
:
'product'
,
field
:
'product'
,
title
:
'产品'
,
title
:
'产品'
,
...
...
src/views/property/case-manage/index.vue
View file @
ea82dbc6
...
@@ -378,7 +378,7 @@
...
@@ -378,7 +378,7 @@
},
},
},
},
enum
:
()
=>
getTenantPage
({
current
:
1
,
size
:
999999999
,
status
:
'enable'
}),
enum
:
()
=>
getTenantPage
({
current
:
1
,
size
:
999999999
,
status
:
'enable'
}),
search
:
authButtonListGet
.
includes
(
'allcation_for_tenant'
)
?
{
el
:
'select'
,
props
:
{
filterable
:
true
},
key
:
'tenant'
,
labelWidth
:
105
}
:
null
,
search
:
authButtonListGet
.
includes
(
'allcation_for_tenant'
)
?
{
el
:
'select'
,
props
:
{
filterable
:
true
},
key
:
'tenant'
,
labelWidth
:
90
}
:
null
,
fieldNames
:
{
label
:
'name'
,
value
:
'id'
},
fieldNames
:
{
label
:
'name'
,
value
:
'id'
},
title
:
'调解中心'
,
title
:
'调解中心'
,
width
:
100
,
width
:
100
,
...
...
src/views/property/import/index.vue
View file @
ea82dbc6
...
@@ -211,18 +211,21 @@
...
@@ -211,18 +211,21 @@
{
{
field
:
'code'
,
field
:
'code'
,
title
:
'导入批次'
,
title
:
'导入批次'
,
width
:
100
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
},
{
{
field
:
'maxStagesNum'
,
field
:
'maxStagesNum'
,
title
:
'分期最大期数'
,
title
:
'分期最大期数'
,
width
:
120
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
},
{
{
field
:
'minAmount'
,
field
:
'minAmount'
,
title
:
'最低分期金额'
,
title
:
'最低分期金额'
,
width
:
120
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
search
:
{
el
:
'input'
,
props
:
{
clearable
:
true
}
},
},
},
...
@@ -230,7 +233,7 @@
...
@@ -230,7 +233,7 @@
field
:
'mergerCase'
,
field
:
'mergerCase'
,
title
:
'是否共案处理'
,
title
:
'是否共案处理'
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
width
:
1
0
0
,
width
:
1
1
0
,
slots
:
{
slots
:
{
default
:
({
row
})
=>
{
default
:
({
row
})
=>
{
return
<
ElTag
>
{
row
.
mergerCase
==
'Y'
?
'是'
:
'否'
}
<
/ElTag>
;
return
<
ElTag
>
{
row
.
mergerCase
==
'Y'
?
'是'
:
'否'
}
<
/ElTag>
;
...
@@ -241,6 +244,7 @@
...
@@ -241,6 +244,7 @@
field
:
'code'
,
field
:
'code'
,
title
:
'资产类型'
,
title
:
'资产类型'
,
enum
:
options
,
enum
:
options
,
width
:
100
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
search
:
{
el
:
'select'
,
props
:
{
filterable
:
true
}
},
search
:
{
el
:
'select'
,
props
:
{
filterable
:
true
}
},
fieldNames
:
{
label
:
'genderLabel'
,
value
:
'genderValue'
},
fieldNames
:
{
label
:
'genderLabel'
,
value
:
'genderValue'
},
...
@@ -248,16 +252,19 @@
...
@@ -248,16 +252,19 @@
{
{
field
:
'totalCaseNum'
,
field
:
'totalCaseNum'
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
width
:
100
,
title
:
'案件总数'
,
title
:
'案件总数'
,
},
},
{
{
field
:
'totalAmount'
,
field
:
'totalAmount'
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
width
:
120
,
title
:
'案件总金额'
,
title
:
'案件总金额'
,
},
},
{
{
field
:
'totalBorrowerNum'
,
field
:
'totalBorrowerNum'
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
width
:
100
,
title
:
'客户总数'
,
title
:
'客户总数'
,
},
},
{
{
...
@@ -287,7 +294,7 @@
...
@@ -287,7 +294,7 @@
field
:
'action'
,
field
:
'action'
,
title
:
'文件地址'
,
title
:
'文件地址'
,
showOverflow
:
'tooltip'
,
showOverflow
:
'tooltip'
,
width
:
20
0
,
width
:
8
0
,
slots
:
{
slots
:
{
default
:
({
row
})
=>
{
default
:
({
row
})
=>
{
return
(
return
(
...
@@ -317,7 +324,7 @@
...
@@ -317,7 +324,7 @@
code
:
''
,
code
:
''
,
maxStagesNum
:
''
,
maxStagesNum
:
''
,
minAmount
:
''
,
minAmount
:
''
,
mergerCase
:
'
N
'
,
mergerCase
:
'
Y
'
,
discount
:
''
,
discount
:
''
,
});
});
const
upload
=
reactive
({
const
upload
=
reactive
({
...
...
src/views/workplace/audit/index.vue
View file @
ea82dbc6
...
@@ -29,6 +29,7 @@
...
@@ -29,6 +29,7 @@
<
template
#
left_buttons
>
<
template
#
left_buttons
>
<el-button
<el-button
type=
"primary"
type=
"primary"
v-if=
"activeName === 'un_audit'"
@
click=
"audit"
@
click=
"audit"
v-permission=
"'send_audio'"
v-permission=
"'send_audio'"
:disabled=
"!selectdList || selectdList.length === 0"
:disabled=
"!selectdList || selectdList.length === 0"
...
...
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