Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yd-csf-front
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yuzhenWang
yd-csf-front
Commits
38137acd
Commit
38137acd
authored
Jan 14, 2026
by
yuzhenWang
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'test' into 'feature-20250827wyz-写业务'
Test See merge request
!40
parents
574b9891
a22e899f
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
442 additions
and
177 deletions
+442
-177
src/api/financial/commission.js
+18
-0
src/views/financialCenter/payables.vue
+221
-101
src/views/financialCenter/receivables.vue
+203
-76
No files found.
src/api/financial/commission.js
View file @
38137acd
...
...
@@ -412,3 +412,21 @@ export function exportPayRecord(data) {
responseType
:
'blob'
})
}
// 应付款报表
export
function
payableReport
(
data
)
{
return
request
({
url
:
'/csf/api/expectedFortune/payable_report'
,
method
:
'post'
,
data
:
data
,
})
}
// 应收款报表
export
function
receivableReport
(
data
)
{
return
request
({
url
:
'/csf/api/CommissionExpected/receivable_report'
,
method
:
'post'
,
data
:
data
,
})
}
src/views/financialCenter/payables.vue
View file @
38137acd
<
template
>
<div>
<CommonPage
:operationBtnList=
"operationBtnList"
:visibleDefaultButtons=
"visibleDefaultButtons"
:showSearchForm=
"true"
:show-pagination=
"true"
:total=
"pageTotal
"
:
current-page=
"currentPage"
:page-size=
"pageSize"
@
size-change=
"handleSizeChan
ge"
@
current-change=
"handleCurrentChange"
>
<CommonPage
:operationBtnList=
"operationBtnList"
:visibleDefaultButtons=
"visibleDefaultButtons
"
:
showSearchForm=
"true"
:show-pagination=
"true"
:total=
"pageTotal"
:current-page=
"currentPa
ge"
:page-size=
"pageSize"
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
>
<!-- 搜索区域 -->
<template
#
searchForm
>
<SearchForm
ref=
"searchFormRef"
:config=
"searchConfig"
/>
...
...
@@ -40,7 +40,7 @@
<el-card
shadow=
"hover"
class=
"statistics-card"
>
<div
class=
"card-content"
>
<div
class=
"card-label"
>
已出账比例
</div>
<div
class=
"card-value"
>
{{
statisticsData
.
paidAmountRatio
}}
</div>
<div
class=
"card-value"
>
{{
statisticsData
.
paidAmountRatio
}}
%
</div>
</div>
</el-card>
</el-col>
...
...
@@ -64,88 +64,98 @@
</div>
<!-- 应付款管理列表 -->
<el-table
:data=
"tableData"
height=
"400"
border
highlight-current-row
style=
"width: 100%"
v-loading=
"loading"
>
<el-table-column
prop=
"fortuneBizType"
label=
"应付款类型"
width=
"120"
fixed=
"left"
sortable
>
<template
#
default=
"
{ row }">
{{
getFortuneBizTypeLabel
(
row
.
fortuneBizType
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"payableNo"
label=
"应付款编号"
width=
"120"
sortable
/>
<el-table-column
prop=
"policyNo"
label=
"保单号"
width=
"120"
sortable
/>
<el-table-column
prop=
"broker"
label=
"转介人"
width=
"120"
sortable
/>
<el-table-column
prop=
"status"
label=
"出账状态"
width=
"120"
sortable
>
<
template
#
default=
"{ row }"
>
{{
getDictLabel
(
'csf_expected_fortune_status'
,
row
.
status
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"currency"
label=
"出账币种"
width=
"120"
sortable
/>
<el-table-column
prop=
"fortunePeriod"
label=
"出账期数"
width=
"120"
sortable
/>
<el-table-column
prop=
"fortuneTotalPeriod"
label=
"出账总期数"
width=
"120"
sortable
/>
<el-table-column
prop=
"fortuneName"
label=
"出账项目"
width=
"120"
sortable
/>
<el-table-column
prop=
"payoutDate"
label=
"出账日(估)"
width=
"120"
sortable
/>
<el-table-column
prop=
"actualPayoutDate"
label=
"出账日(实)"
width=
"120"
sortable
/>
<el-table-column
prop=
"commissionRatio"
label=
"出账比例(估)"
width=
"140"
sortable
>
<
template
#
default=
"{ row }"
>
{{
(
row
.
commissionRatio
||
0
)
+
'%'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"amount"
label=
"出账金额(估)"
width=
"140"
sortable
>
<
template
#
default=
"{ row }"
>
{{
formatCurrency
(
row
.
amount
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"paidRatio"
label=
"已出账比例"
width=
"120"
sortable
>
<
template
#
default=
"{ row }"
>
{{
(
row
.
paidRatio
||
0
)
+
'%'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"paidAmount"
label=
"已出账金额"
width=
"120"
sortable
>
<
template
#
default=
"{ row }"
>
{{
formatCurrency
(
row
.
paidAmount
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"pendingRatio"
label=
"待出账比例"
width=
"120"
sortable
>
<
template
#
default=
"{ row }"
>
{{
(
row
.
pendingRatio
||
0
)
+
'%'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"unpaidAmount"
label=
"待出账金额(估)"
width=
"160"
sortable
>
<
template
#
default=
"{ row }"
>
{{
formatCurrency
(
row
.
unpaidAmount
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"brokerRatio"
label=
"持有比例"
width=
"120"
sortable
>
<
template
#
default=
"{ row }"
>
{{
(
row
.
brokerRatio
||
0
)
+
'%'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"insuranceCompany"
label=
"保险公司"
width=
"120"
sortable
/>
<el-table-column
prop=
"productName"
label=
"产品计划"
width=
"120"
sortable
/>
<el-table-column
prop=
"premium"
label=
"期交保费"
width=
"120"
sortable
>
<
template
#
default=
"{ row }"
>
{{
formatCurrency
(
row
.
premium
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"statusDesc"
label=
"修改理由"
width=
"150"
/>
<el-table-column
prop=
"remark"
label=
"备注"
width=
"150"
/>
<el-table-column
v-for=
"(column, index) in payableReportTableColumns"
:key=
"index"
:prop=
"column.prop"
:label=
"column.label"
:width=
"column.width"
:sortable=
"column.sortable"
:formatter=
"column.formatter"
/>
<el-table-column
fixed=
"right"
label=
"操作"
min-width=
"120"
>
<
template
#
default=
"{ row }"
>
<el-popover
placement=
"right"
:width=
"200"
trigger=
"click"
>
<template
#
reference
>
<el-icon>
<MoreFilled
/>
</el-icon>
</
template
>
<el-menu
@
select=
"handleSelect($event, row)"
popper-class=
"custom-menu"
>
<el-menu-item
:index=
"item.value"
v-for=
"item in dropdownItems"
:key=
"item.value"
>
{{
item.label
}}
</el-menu-item>
</el-menu>
</el-popover>
<template
#
default=
"scope"
>
<el-button
link
type=
"primary"
size=
"small"
@
click=
"viewDetail(scope.row)"
>
查看明细
</el-button>
</
template
>
</el-table-column>
</el-table>
</template>
</CommonPage>
<!-- 查看明细列表 -->
<CommonDialog
dialogTitle=
"应付明细"
dialogWidth=
"80%"
:openDialog=
"detailDialogVisible"
:showAction=
"true"
:showClose=
"true"
@
close=
"detailDialogVisible = false"
>
<div
class=
"statistics-container"
v-if=
"detailRecordStatistics.totalPolicyCount > 0"
>
<el-row
:gutter=
"20"
>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"4"
:lg=
"4"
>
<el-card
shadow=
"hover"
class=
"statistics-card"
>
<div
class=
"card-content"
>
<div
class=
"card-label"
>
应出账总金额
</div>
<div
class=
"card-value"
>
{{ formatCurrency(detailRecordStatistics.totalExpectedAmount) }}
</div>
</div>
</el-card>
</el-col>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"4"
:lg=
"4"
>
<el-card
shadow=
"hover"
class=
"statistics-card"
>
<div
class=
"card-content"
>
<div
class=
"card-label"
>
已出账金额
</div>
<div
class=
"card-value"
>
{{ formatCurrency(detailRecordStatistics.totalPaidAmount) }}
</div>
</div>
</el-card>
</el-col>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"4"
:lg=
"4"
>
<el-card
shadow=
"hover"
class=
"statistics-card"
>
<div
class=
"card-content"
>
<div
class=
"card-label"
>
待出账金额
</div>
<div
class=
"card-value"
>
{{ formatCurrency(detailRecordStatistics.totalUnpaidAmount) }}
</div>
</div>
</el-card>
</el-col>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"4"
:lg=
"4"
>
<el-card
shadow=
"hover"
class=
"statistics-card"
>
<div
class=
"card-content"
>
<div
class=
"card-label"
>
已出账比例
</div>
<div
class=
"card-value"
>
{{ detailRecordStatistics.paidAmountRatio }}%
</div>
</div>
</el-card>
</el-col>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"4"
:lg=
"4"
>
<el-card
shadow=
"hover"
class=
"statistics-card"
>
<div
class=
"card-content"
>
<div
class=
"card-label"
>
总保单数
</div>
<div
class=
"card-value"
>
{{ detailRecordStatistics.totalPolicyCount }}
</div>
</div>
</el-card>
</el-col>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"4"
:lg=
"4"
>
<el-card
shadow=
"hover"
class=
"statistics-card"
>
<div
class=
"card-content"
>
<div
class=
"card-label"
>
总保费
</div>
<div
class=
"card-value"
>
{{ formatCurrency(detailRecordStatistics.totalPremiumAmount) }}
</div>
</div>
</el-card>
</el-col>
</el-row>
</div>
<el-table
:data=
"payableReportTableData"
border
style=
"width: 100%;margin-bottom: 10px;"
>
<el-table-column
v-for=
"item in payableReportListTableColumns"
:key=
"item.property"
:property=
"item.property"
:label=
"item.label"
:width=
"item.width"
:formatter=
"item.formatter"
/>
<el-table-column
fixed=
"right"
label=
"操作"
min-width=
"120"
>
<
template
#
default=
"{ row }"
>
<el-popover
placement=
"right"
:width=
"200"
trigger=
"click"
>
<template
#
reference
>
<el-icon>
<MoreFilled
/>
</el-icon>
</
template
>
<el-menu
@
select=
"handleSelect($event, row)"
popper-class=
"custom-menu"
>
<el-menu-item
:index=
"item.value"
v-for=
"item in dropdownItems"
:key=
"item.value"
>
{{ item.label }}
</el-menu-item>
</el-menu>
</el-popover>
</template>
</el-table-column>
</el-table>
<el-pagination
v-model:current-page=
"detailPageInfo.currentPage"
v-model:page-size=
"detailPageInfo.pageSize"
:page-sizes=
"[50, 100, 200, 300]"
size=
"default"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"detailPageInfo.total"
@
size-change=
"handleSizeChangeDetailRecord"
@
current-change=
"handleCurrentChangeDetailRecord"
/>
</CommonDialog>
<!-- 出账记录表格弹窗-->
<CommonDialog
dialogTitle=
"出账记录"
dialogWidth=
"80%"
:openDialog=
"payRecordDialogTableVisible"
:showAction=
"true"
:showClose=
"true"
@
close=
"payRecordDialogTableVisible = false"
>
...
...
@@ -156,13 +166,13 @@
</CommonDialog>
<!-- 新增出账记录 -->
<CommonDialog
:dialogTitle=
"editStatus === 'add' ? '新增出账记录' : '修改出账记录'"
dialogWidth=
"80%"
:openDialog=
"addPayRecordDialogVisible"
:showAction=
"true"
:showClose=
"true"
@
c
lose=
"resetAddPayRecordForm"
@
c
onfirm=
"handleConfirmAddPayRecord"
>
:openDialog=
"addPayRecordDialogVisible"
:showAction=
"true"
:showClose=
"true"
@
close=
"resetAddPayRecordForm"
@
confirm=
"handleConfirmAddPayRecord"
>
<SearchForm
ref=
"addPayRecordFormRef"
:config=
"addPayRecordFormConfig"
v-model=
"addPayRecordFormModel"
/>
</CommonDialog>
<!-- 设置出账状态 -->
<CommonDialog
dialogTitle=
"设置出账状态"
dialogWidth=
"80%"
:openDialog=
"setPayRecordStatusDialogVisible"
:showAction=
"
fals
e"
:showClose=
"true"
@
close=
"setPayRecordStatusDialogVisible = false"
:showAction=
"
tru
e"
:showClose=
"true"
@
close=
"setPayRecordStatusDialogVisible = false"
@
confirm=
"handleConfirmSetPayRecordStatus"
>
<SearchForm
ref=
"setPayRecordStatusFormRef"
:config=
"setPayRecordStatusFormConfig"
/>
</CommonDialog>
...
...
@@ -175,12 +185,63 @@ import CommonPage from '@/components/commonPage'
import
{
ref
,
reactive
}
from
'vue'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
{
formatCurrency
}
from
'@/utils/number'
import
{
expectedFortuneList
,
payRecordList
,
addPayRecord
,
updatePayRecord
,
exportPayRecord
}
from
'@/api/financial/commission'
import
{
expectedFortuneList
,
payRecordList
,
addPayRecord
,
updatePayRecord
,
exportPayRecord
,
payableReport
}
from
'@/api/financial/commission'
import
SearchForm
from
'@/components/SearchForm/SearchForm.vue'
import
CommonDialog
from
'@/components/commonDialog'
import
{
loadDicts
,
getDictLabel
}
from
'@/utils/useDict'
import
useUserStore
from
'@/store/modules/user'
import
{
safeDownload
}
from
'@/utils/safeDownload'
const
payableReportTableData
=
ref
([])
const
payableReportTableColumns
=
ref
([
{
prop
:
'policyNo'
,
label
:
'保单号'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
policyNo
||
'-'
},
{
prop
:
'broker'
,
label
:
'转介人(主)'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
broker
||
'-'
},
{
prop
:
'fortunePeriod'
,
label
:
'出账期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
fortunePeriod
||
'-'
},
{
prop
:
'fortuneTotalPeriod'
,
label
:
'出账总期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
fortuneTotalPeriod
||
'-'
},
{
prop
:
'payoutDate'
,
label
:
'出账日(估)'
,
sortable
:
true
,
width
:
'130'
,
},
{
prop
:
'paidRatio'
,
label
:
'已出账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
paidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'unpaidRatio'
,
label
:
'待出账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
unpaidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'paidAmount'
,
label
:
'已出账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
paidAmount
||
0
)
},
{
prop
:
'unpaidAmount'
,
label
:
'待出账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
unpaidAmount
||
0
)
},
{
prop
:
'amount'
,
label
:
'应出账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
amount
||
0
)
},
{
prop
:
'currency'
,
label
:
'出账币种'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
currency
||
'-'
},
{
prop
:
'premium'
,
label
:
'期交保费'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
premium
||
0
)
},
{
prop
:
'insuranceCompany'
,
label
:
'保险公司'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
insuranceCompany
||
'-'
},
{
prop
:
'productName'
,
label
:
'产品计划'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
productName
||
'-'
},
{
prop
:
'policyCurrency'
,
label
:
'保单币种'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
policyCurrency
||
'-'
}
])
const
detailDialogVisible
=
ref
(
false
)
// 应付明细列表
const
payableReportListTableColumns
=
ref
([
{
prop
:
'fortuneBizType'
,
label
:
'应付款类型'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
getFortuneBizTypeLabel
(
row
.
fortuneBizType
)
||
'-'
},
{
prop
:
'payableNo'
,
label
:
'应付账款编号'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
payableNo
||
'-'
},
{
prop
:
'policyNo'
,
label
:
'保单号'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
policyNo
||
'-'
},
{
prop
:
'broker'
,
label
:
'转介人'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
broker
||
'-'
},
{
prop
:
'status'
,
label
:
'出账状态'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
getDictLabel
(
'csf_expected_fortune_status'
,
row
.
status
)
||
'-'
},
{
prop
:
'currency'
,
label
:
'出账币种'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
currency
||
'-'
},
{
prop
:
'fortunePeriod'
,
label
:
'出账期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
fortunePeriod
||
'-'
},
{
prop
:
'fortuneTotalPeriod'
,
label
:
'出账总期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
fortuneTotalPeriod
||
'-'
},
{
prop
:
'payoutDate'
,
label
:
'出账日(估)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
payoutDate
||
'-'
},
{
prop
:
'actualPayoutDate'
,
label
:
'出账日(实)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
actualPayoutDate
||
'-'
},
{
prop
:
'commissionRatio'
,
label
:
'出账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
commissionRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'amount'
,
label
:
'应出账金额(估)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
amount
||
0
)
},
{
prop
:
'paidRatio'
,
label
:
'已出账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
paidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'paidAmount'
,
label
:
'已出账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
paidAmount
||
0
)
},
{
prop
:
'unpaidRatio'
,
label
:
'待出账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
unpaidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'unpaidAmount'
,
label
:
'待出账金额(估)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
unpaidAmount
||
0
)
},
{
prop
:
'brokerRatio'
,
label
:
'持有比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
brokerRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'premium'
,
label
:
'期交保费'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
premium
||
0
)
},
{
prop
:
'insuranceCompany'
,
label
:
'保险公司'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
insuranceCompany
||
'-'
},
{
prop
:
'productName'
,
label
:
'产品计划'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
productName
||
'-'
},
{
prop
:
'statusDesc'
,
label
:
'修改理由'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
statusDesc
||
'-'
},
{
prop
:
'remark'
,
label
:
'备注'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
remark
||
'-'
},
])
// 设置出账状态
const
setPayRecordStatusDialogVisible
=
ref
(
false
)
const
selectedRow
=
ref
(
null
)
...
...
@@ -198,7 +259,7 @@ const setPayRecordStatusFormConfig = ref([
},
])
const
visibleDefaultButtons
=
ref
([
'add'
,
'export'
,
'reset'
,
'query'
'add'
,
'export'
,
'reset'
,
'query'
])
const
userStore
=
useUserStore
()
// 应收单类型
...
...
@@ -430,9 +491,9 @@ const handleConfirmAddPayRecord = async () => {
}
// 弹窗表单重置
const
resetAddPayRecordForm
=
()
=>
{
addPayRecordFormRef
.
value
.
resetForm
()
editStatus
.
value
=
'add'
addPayRecordDialogVisible
.
value
=
false
addPayRecordFormRef
.
value
.
resetForm
()
editStatus
.
value
=
'add'
addPayRecordDialogVisible
.
value
=
false
}
...
...
@@ -450,8 +511,8 @@ const handleSelect = async (e, row) => {
{
property
:
'fortuneName'
,
label
:
'出账项目'
,
width
:
'150'
},
{
property
:
'currentPaymentAmount'
,
label
:
'出账金额'
,
width
:
'150'
},
{
property
:
'currency'
,
label
:
'出账币种'
,
width
:
'150'
},
{
property
:
'currentPaymentRatio'
,
label
:
'出账比例'
,
width
:
'150'
,
formatter
:
(
row
)
=>
`
${
row
.
currentPaymentRatio
}
%`
},
{
property
:
'fortuneUnpaidRatio'
,
label
:
'待出账比例'
,
width
:
'150'
,
formatter
:
(
row
)
=>
`
${
row
.
fortuneUnpaidRatio
}
%`
},
{
property
:
'currentPaymentRatio'
,
label
:
'出账比例'
,
width
:
'150'
,
formatter
:
(
row
)
=>
`
${
row
.
currentPaymentRatio
}
%`
},
{
property
:
'fortuneUnpaidRatio'
,
label
:
'待出账比例'
,
width
:
'150'
,
formatter
:
(
row
)
=>
`
${
row
.
fortuneUnpaidRatio
}
%`
},
{
property
:
'fortunePeriod'
,
label
:
'佣金期数'
,
width
:
'150'
},
{
property
:
'fortuneTotalPeriod'
,
label
:
'总期数'
,
width
:
'150'
},
{
property
:
'reconciliationOperator'
,
label
:
'操作人'
,
width
:
'150'
},
...
...
@@ -517,16 +578,16 @@ const handleImport = () => {
}
const
handleExport
=
async
()
=>
{
// 获取搜索参数
const
params
=
searchFormRef
.
value
?.
getFormData
()
||
{}
const
response
=
await
exportPayRecord
(
params
)
// 文件名设置为应收款导出_yyyy-MM-dd hh:mm:ss.xlsx,不需要-,用字符串
const
fileName
=
`应付款导出_
${
new
Date
().
toLocaleString
().
replace
(
/
\/
/g
,
''
).
replace
(
/:/g
,
''
).
replace
(
/
\s
/g
,
''
)}
.xlsx`
await
safeDownload
(
response
,
fileName
,
'application/vnd.ms-excel;charset=utf-8'
)
// 获取搜索参数
const
params
=
searchFormRef
.
value
?.
getFormData
()
||
{}
const
response
=
await
exportPayRecord
(
params
)
// 文件名设置为应收款导出_yyyy-MM-dd hh:mm:ss.xlsx,不需要-,用字符串
const
fileName
=
`应付款导出_
${
new
Date
().
toLocaleString
().
replace
(
/
\/
/g
,
''
).
replace
(
/:/g
,
''
).
replace
(
/
\s
/g
,
''
)}
.xlsx`
await
safeDownload
(
response
,
fileName
,
'application/vnd.ms-excel;charset=utf-8'
)
}
const
handleReset
=
()
=>
{
...
...
@@ -595,7 +656,7 @@ const loadTableData = async () => {
pageNo
:
currentPage
.
value
,
pageSize
:
pageSize
.
value
}
const
response
=
await
expectedFortuneLis
t
(
params
)
const
response
=
await
payableRepor
t
(
params
)
tableData
.
value
=
response
.
data
.
page
.
records
pageTotal
.
value
=
response
.
data
.
page
.
total
pageSize
.
value
=
response
.
data
.
page
.
size
...
...
@@ -675,6 +736,63 @@ onMounted(async () => {
const
formatStatus
=
(
row
,
column
)
=>
{
return
getDictLabel
(
'csf_expected_fortune_status'
,
row
.
status
)
// 实时查缓存
}
const
detailRecordStatistics
=
ref
({})
const
detailPageInfo
=
ref
({
pageNo
:
1
,
pageSize
:
10
,
currentPage
:
1
,
total
:
0
})
const
selectedDetailRecordRow
=
ref
({})
// 应付款管理列表查询
const
expectedFortuneListData
=
async
()
=>
{
loading
.
value
=
true
try
{
const
params
=
{
policyNo
:
selectedDetailRecordRow
.
value
.
policyNo
,
fortunePeriod
:
selectedDetailRecordRow
.
value
.
fortunePeriod
,
fortuneBizType
:
selectedDetailRecordRow
.
value
.
fortuneBizType
,
payableNo
:
selectedDetailRecordRow
.
value
.
payableNo
,
pageNo
:
detailPageInfo
.
value
.
currentPage
,
pageSize
:
detailPageInfo
.
value
.
pageSize
}
const
response
=
await
expectedFortuneList
(
params
)
payableReportTableData
.
value
=
response
.
data
.
page
.
records
detailPageInfo
.
value
.
total
=
response
.
data
.
page
.
total
detailPageInfo
.
value
.
pageSize
=
response
.
data
.
page
.
size
// 统计信息
detailRecordStatistics
.
value
=
{
totalExpectedAmount
:
response
.
data
.
statisticsVO
.
totalExpectedAmount
,
totalPaidAmount
:
response
.
data
.
statisticsVO
.
totalPaidAmount
,
totalUnpaidAmount
:
response
.
data
.
statisticsVO
.
totalUnpaidAmount
,
paidAmountRatio
:
response
.
data
.
statisticsVO
.
paidAmountRatio
,
totalPolicyCount
:
response
.
data
.
statisticsVO
.
totalPolicyCount
,
totalPremiumAmount
:
response
.
data
.
statisticsVO
.
totalPremiumAmount
}
}
catch
(
error
)
{
console
.
error
(
'加载数据失败:'
,
error
)
// ElMessage.error('加载数据失败')
}
finally
{
loading
.
value
=
false
}
}
const
viewDetail
=
(
row
)
=>
{
selectedDetailRecordRow
.
value
=
row
detailDialogVisible
.
value
=
true
expectedFortuneListData
()
}
// 分页事件
const
handleSizeChangeDetailRecord
=
(
val
)
=>
{
detailPageInfo
.
value
.
pageSize
=
val
expectedFortuneListData
()
}
// 分页事件
const
handleCurrentChangeDetailRecord
=
(
val
)
=>
{
detailPageInfo
.
value
.
currentPage
=
val
expectedFortuneListData
()
}
</
script
>
...
...
@@ -692,4 +810,5 @@ const formatStatus = (row, column) => {
border-top
:
1px
solid
#ebeef5
;
text-align
:
right
;
}
</
style
>
\ No newline at end of file
src/views/financialCenter/receivables.vue
View file @
38137acd
...
...
@@ -29,83 +29,106 @@
</el-col>
</el-row>
</div>
<!-- 应收款管理列表 -->
<el-table
:data=
"tableData"
height=
"400"
border
highlight-current-row
style=
"width: 100%"
v-loading=
"loading"
>
<el-table-column
prop=
"commissionBizType"
label=
"应收单类型"
width=
"130"
sortable
>
<template
#
default=
"
{ row }">
{{
getCommissionBizTypeLabel
(
row
.
commissionBizType
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"receivableNo"
label=
"应收款编号"
width=
"150"
sortable
/>
<el-table-column
prop=
"policyNo"
label=
"保单号"
width=
"120"
fixed=
"left"
sortable
/>
<el-table-column
prop=
"reconciliationCompany"
label=
"对账公司"
width=
"120"
sortable
/>
<el-table-column
prop=
"status"
label=
"入账状态"
width=
"120"
sortable
:formatter=
"formatStatus"
/>
<el-table-column
prop=
"commissionPeriod"
label=
"入账期数"
width=
"120"
sortable
/>
<el-table-column
prop=
"totalPeriod"
label=
"入账总期数"
width=
"120"
sortable
/>
<el-table-column
prop=
"commissionName"
label=
"入账项目"
width=
"120"
sortable
/>
<el-table-column
prop=
"commissionDate"
label=
"入账日(估)"
width=
"120"
sortable
/>
<el-table-column
prop=
"commissionRatio"
label=
"入账比例(估)"
width=
"140"
sortable
>
<
template
#
default=
"{ row }"
>
{{
(
row
.
commissionRatio
||
0
)
+
'%'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"expectedAmount"
label=
"入账金额(估)"
width=
"140"
sortable
>
<
template
#
default=
"{ row }"
>
{{
numberWithCommas
(
row
.
expectedAmount
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"paidRatio"
label=
"已入账比例"
width=
"120"
sortable
>
<
template
#
default=
"{ row }"
>
{{
(
row
.
paidRatio
||
0
)
+
'%'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"paidAmount"
label=
"已入账金额"
width=
"120"
sortable
>
<
template
#
default=
"{ row }"
>
{{
numberWithCommas
(
row
.
paidAmount
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"pendingRatio"
label=
"待入账比例"
width=
"120"
sortable
>
<
template
#
default=
"{ row }"
>
{{
(
row
.
pendingRatio
||
0
)
+
'%'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"pendingAmount"
label=
"待入账金额(估)"
width=
"160"
sortable
>
<
template
#
default=
"{ row }"
>
{{
numberWithCommas
(
row
.
pendingAmount
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"currency"
label=
"入账币种"
width=
"100"
/>
<el-table-column
prop=
"defaultExchangeRate"
label=
"结算汇率(估)"
width=
"120"
/>
<el-table-column
prop=
"insuranceCompany"
label=
"保险公司"
width=
"120"
sortable
/>
<el-table-column
prop=
"productName"
label=
"产品计划"
width=
"120"
sortable
/>
<el-table-column
prop=
"premium"
label=
"期交保费"
width=
"120"
sortable
>
<
template
#
default=
"{ row }"
>
{{
numberWithCommas
(
row
.
premium
)
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"statusDesc"
label=
"入账状态修改理由"
width=
"150"
/>
<el-table-column
prop=
"remark"
label=
"备注"
width=
"150"
/>
<el-table-column
v-for=
"(column, index) in receivableReportTableColumns"
:key=
"index"
:prop=
"column.prop"
:label=
"column.label"
:width=
"column.width"
:sortable=
"column.sortable"
:formatter=
"column.formatter"
/>
<el-table-column
fixed=
"right"
label=
"操作"
min-width=
"120"
>
<
template
#
default=
"{ row }"
>
<el-popover
placement=
"right"
:width=
"200"
trigger=
"click"
>
<template
#
reference
>
<el-icon>
<MoreFilled
/>
</el-icon>
</
template
>
<el-menu
@
select=
"handleSelect($event, row)"
popper-class=
"custom-menu"
>
<el-menu-item
:index=
"item.value"
v-for=
"item in dropdownItems"
:key=
"item.value"
>
{{ item.label }}
</el-menu-item>
</el-menu>
</el-popover>
<template
#
default=
"scope"
>
<el-button
link
type=
"primary"
size=
"small"
@
click=
"viewDetail(scope.row)"
>
查看明细
</el-button>
</
template
>
</el-table-column>
</el-table>
</template>
</CommonPage>
<!-- 原有弹窗(不变) -->
<CommonDialog
dialogTitle=
"应收明细"
dialogWidth=
"80%"
:openDialog=
"detailDialogVisible"
:showAction=
"false"
:showClose=
"true"
@
close=
"detailDialogVisible = false"
>
<div
class=
"statistics-container"
v-if=
"detailRecordStatistics.totalPolicyCount > 0"
>
<el-row
:gutter=
"20"
>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"4"
:lg=
"4"
>
<el-card
shadow=
"hover"
class=
"statistics-card"
>
<div
class=
"card-content"
>
<div
class=
"card-label"
>
应出账总金额
</div>
<div
class=
"card-value"
>
{{ formatCurrency(detailRecordStatistics.totalExpectedAmount) }}
</div>
</div>
</el-card>
</el-col>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"4"
:lg=
"4"
>
<el-card
shadow=
"hover"
class=
"statistics-card"
>
<div
class=
"card-content"
>
<div
class=
"card-label"
>
已出账金额
</div>
<div
class=
"card-value"
>
{{ formatCurrency(detailRecordStatistics.totalPaidAmount) }}
</div>
</div>
</el-card>
</el-col>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"4"
:lg=
"4"
>
<el-card
shadow=
"hover"
class=
"statistics-card"
>
<div
class=
"card-content"
>
<div
class=
"card-label"
>
待出账金额
</div>
<div
class=
"card-value"
>
{{ formatCurrency(detailRecordStatistics.totalUnpaidAmount) }}
</div>
</div>
</el-card>
</el-col>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"4"
:lg=
"4"
>
<el-card
shadow=
"hover"
class=
"statistics-card"
>
<div
class=
"card-content"
>
<div
class=
"card-label"
>
已出账比例
</div>
<div
class=
"card-value"
>
{{ detailRecordStatistics.paidAmountRatio }}%
</div>
</div>
</el-card>
</el-col>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"4"
:lg=
"4"
>
<el-card
shadow=
"hover"
class=
"statistics-card"
>
<div
class=
"card-content"
>
<div
class=
"card-label"
>
总保单数
</div>
<div
class=
"card-value"
>
{{ detailRecordStatistics.totalPolicyCount }}
</div>
</div>
</el-card>
</el-col>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"4"
:lg=
"4"
>
<el-card
shadow=
"hover"
class=
"statistics-card"
>
<div
class=
"card-content"
>
<div
class=
"card-label"
>
总保费
</div>
<div
class=
"card-value"
>
{{ formatCurrency(detailRecordStatistics.totalPremiumAmount) }}
</div>
</div>
</el-card>
</el-col>
</el-row>
</div>
<el-table
:data=
"receivableReportTableData"
border
style=
"width: 100%;margin-bottom: 10px;min-height: 300px;"
>
<el-table-column
v-for=
"item in receivableReportItemTableColumns"
:key=
"item.property"
:prop=
"item.prop"
:label=
"item.label"
:width=
"item.width"
/>
<el-table-column
fixed=
"right"
label=
"操作"
min-width=
"120"
>
<
template
#
default=
"{ row }"
>
<el-popover
placement=
"right"
:width=
"200"
trigger=
"click"
>
<template
#
reference
>
<el-icon>
<MoreFilled
/>
</el-icon>
</
template
>
<el-menu
@
select=
"handleSelect($event, row)"
popper-class=
"custom-menu"
>
<el-menu-item
:index=
"item.value"
v-for=
"item in dropdownItems"
:key=
"item.value"
>
{{ item.label }}
</el-menu-item>
</el-menu>
</el-popover>
</template>
</el-table-column>
</el-table>
<el-pagination
v-model:current-page=
"detailPageInfo.currentPage"
v-model:page-size=
"detailPageInfo.pageSize"
:page-sizes=
"[50, 100, 200, 300]"
size=
"default"
layout=
"total, sizes, prev, pager, next, jumper"
:total=
"detailPageInfo.total"
@
size-change=
"handleSizeChangeDetailRecord"
@
current-change=
"handleCurrentChangeDetailRecord"
/>
</CommonDialog>
<CommonDialog
dialogTitle=
"入账记录"
dialogWidth=
"80%"
:openDialog=
"entryRecordDialogTableVisible"
:showAction=
"false"
:showClose=
"true"
@
close=
"entryRecordDialogTableVisible = false"
>
<el-table
:data=
"entryRecordDialogTableData"
border
style=
"width: 100%"
>
...
...
@@ -150,12 +173,16 @@ import CommonDialog from '@/components/commonDialog'
import
{
ref
,
reactive
,
onMounted
,
computed
}
from
'vue'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
{
MoreFilled
}
from
'@element-plus/icons-vue'
import
{
receivedFortuneList
,
updateCommissionExpected
,
commissionEntryEditRecords
,
exportReceivedFortune
,
commissionExpectedRecord
,
addReceivedFortune
}
from
'@/api/financial/commission'
import
{
receivedFortuneList
,
updateCommissionExpected
,
commissionEntryEditRecords
,
exportReceivedFortune
,
commissionExpectedRecord
,
addReceivedFortune
,
receivableReport
}
from
'@/api/financial/commission'
import
{
numberWithCommas
}
from
'@/utils/index'
import
SearchForm
from
'@/components/SearchForm/SearchForm.vue'
import
{
loadDicts
,
getDictLabel
}
from
'@/utils/useDict'
import
{
safeDownload
}
from
'@/utils/safeDownload'
import
useUserStore
from
'@/store/modules/user'
import
{
formatCurrency
}
from
'@/utils/number'
const
userStore
=
useUserStore
()
// 应收单类型
...
...
@@ -551,18 +578,18 @@ const loadTableData = async () => {
pageNo
:
currentPage
.
value
,
pageSize
:
pageSize
.
value
}
const
response
=
await
receiv
edFortuneLis
t
(
params
)
const
response
=
await
receiv
ableRepor
t
(
params
)
tableData
.
value
=
response
.
data
.
page
.
records
||
[]
pageTotal
.
value
=
response
.
data
.
page
.
total
||
0
pageSize
.
value
=
response
.
data
.
page
.
size
||
1
0
pageSize
.
value
=
response
.
data
.
page
.
size
||
5
0
// 统计信息
statisticsData
.
value
=
{
totalAmount
:
response
.
data
.
expectedS
tatisticsVO
.
totalAmount
,
totalPaidAmount
:
response
.
data
.
expectedS
tatisticsVO
.
totalPaidAmount
,
pendingPaidAmount
:
response
.
data
.
expectedS
tatisticsVO
.
pendingPaidAmount
,
paidAmountRatio
:
response
.
data
.
expectedS
tatisticsVO
.
paidAmountRatio
,
totalPolicyCount
:
response
.
data
.
expectedS
tatisticsVO
.
totalPolicyCount
totalAmount
:
response
.
data
.
s
tatisticsVO
.
totalAmount
,
totalPaidAmount
:
response
.
data
.
s
tatisticsVO
.
totalPaidAmount
,
pendingPaidAmount
:
response
.
data
.
s
tatisticsVO
.
pendingPaidAmount
,
paidAmountRatio
:
response
.
data
.
s
tatisticsVO
.
paidAmountRatio
,
totalPolicyCount
:
response
.
data
.
s
tatisticsVO
.
totalPolicyCount
}
}
catch
(
error
)
{
console
.
error
(
'加载数据失败:'
,
error
)
...
...
@@ -719,7 +746,106 @@ onMounted(async () => {
const
formatStatus
=
(
row
,
column
)
=>
{
return
getDictLabel
(
'csf_expected_commission_status'
,
row
.
status
)
// 实时查缓存
}
const
detailDialogVisible
=
ref
(
false
)
const
receivableReportTableData
=
ref
([])
const
receivableReportTableColumns
=
ref
([
{
prop
:
'policyNo'
,
label
:
'保单号'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
policyNo
||
'-'
},
{
prop
:
'reconciliationCompany'
,
label
:
'对账公司'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
reconciliationCompany
||
'-'
},
{
prop
:
'commissionPeriod'
,
label
:
'入账期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
commissionPeriod
||
'-'
},
{
prop
:
'totalPeriod'
,
label
:
'入账总期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
totalPeriod
||
'-'
},
{
prop
:
'commissionDate'
,
label
:
'入账日(估)'
,
sortable
:
true
,
width
:
'130'
,
},
{
prop
:
'commissionRatio'
,
label
:
'预估入账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
commissionRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'hkdAmount'
,
label
:
'预估入账金额HKD'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
hkdAmount
||
0
)
},
{
prop
:
'paidRatio'
,
label
:
'已入账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
paidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'paidAmount'
,
label
:
'已入账金额HKD'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
paidAmount
||
0
)
},
{
prop
:
'unpaidRatio'
,
label
:
'待入账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
unpaidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'unpaidAmount'
,
label
:
'待入账金额HKD'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
unpaidAmount
||
0
)
},
{
prop
:
'exchangeRate'
,
label
:
'结算汇率(估)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
exchangeRate
||
0
)
},
{
prop
:
'insuranceCompany'
,
label
:
'保险公司'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
insuranceCompany
||
'-'
},
{
prop
:
'productName'
,
label
:
'产品计划'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
productName
||
'-'
},
{
prop
:
'premium'
,
label
:
'期交保费'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
productName
||
'-'
},
{
prop
:
'policyCurrency'
,
label
:
'保单币种'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
policyCurrency
||
'-'
},
])
const
receivableReportItemTableColumns
=
ref
([
{
prop
:
'commissionBizType'
,
label
:
'应收单类型'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
getCommissionBizTypeLabel
(
row
.
commissionBizType
)
||
'-'
},
{
prop
:
'receivableNo'
,
label
:
'应收款编号'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
receivableNo
||
'-'
},
{
prop
:
'policyNo'
,
label
:
'保单号'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
policyNo
||
'-'
},
{
prop
:
'reconciliationCompany'
,
label
:
'对账公司'
,
sortable
:
true
,
width
:
'150'
,
formatter
:
(
row
)
=>
row
.
reconciliationCompany
||
'-'
},
{
prop
:
'status'
,
label
:
'入账状态'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatStatus
(
row
.
status
)
||
'-'
},
{
prop
:
'commissionPeriod'
,
label
:
'入账期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
commissionPeriod
||
'-'
},
{
prop
:
'totalPeriod'
,
label
:
'入账总期数'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
totalPeriod
||
'-'
},
{
prop
:
'commissionName'
,
label
:
'入账项目'
,
sortable
:
true
,
width
:
'130'
,
formatter
:
(
row
)
=>
row
.
commissionName
||
'-'
},
{
prop
:
'commissionDate'
,
label
:
'入账日(估)'
,
sortable
:
true
,
width
:
'130'
,
formatter
:
(
row
)
=>
row
.
commissionDate
||
'-'
},
{
prop
:
'commissionRatio'
,
label
:
'预估入账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
commissionRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'expectedAmount'
,
label
:
'预估入账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
expectedAmount
||
0
)
},
{
prop
:
'paidRatio'
,
label
:
'已入账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
paidRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'paidAmount'
,
label
:
'已入账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
paidAmount
||
0
)
},
{
prop
:
'pendingRatio'
,
label
:
'待入账比例'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
(
row
.
pendingRatio
||
0
)
+
'%'
||
'-'
},
{
prop
:
'pendingAmount'
,
label
:
'待入账金额'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
pendingAmount
||
0
)
},
{
prop
:
'defaultExchangeRate'
,
label
:
'结算汇率(估)'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
defaultExchangeRate
||
0
)
},
{
prop
:
'insuranceCompany'
,
label
:
'保险公司'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
insuranceCompany
||
'-'
},
{
prop
:
'productName'
,
label
:
'产品计划'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
productName
||
'-'
},
{
prop
:
'premium'
,
label
:
'期交保费'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
formatCurrency
(
row
.
premium
||
0
)
},
{
prop
:
'policyCurrency'
,
label
:
'保单币种'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
policyCurrency
||
'-'
},
{
prop
:
'currency'
,
label
:
'入账币种'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
currency
||
'-'
},
{
prop
:
'statusDesc'
,
label
:
'入账状态修改理由'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
statusDesc
||
'-'
},
{
prop
:
'remark'
,
label
:
'备注'
,
sortable
:
true
,
width
:
'120'
,
formatter
:
(
row
)
=>
row
.
remark
||
'-'
},
])
const
detailRecordStatistics
=
ref
({})
const
detailPageInfo
=
ref
({
pageNo
:
1
,
pageSize
:
10
,
currentPage
:
1
,
total
:
0
})
// 获取入账报告
const
receivedFortuneListData
=
async
()
=>
{
loading
.
value
=
true
try
{
const
params
=
{
policyNo
:
selectedDetailRecordRow
.
value
.
policyNo
,
commissionPeriod
:
selectedDetailRecordRow
.
value
.
commissionPeriod
,
receivableNo
:
selectedDetailRecordRow
.
value
.
receivableNo
,
pageNo
:
detailPageInfo
.
value
.
currentPage
,
pageSize
:
detailPageInfo
.
value
.
pageSize
}
const
response
=
await
receivedFortuneList
(
params
)
receivableReportTableData
.
value
=
response
.
data
.
page
.
records
||
[]
detailPageInfo
.
value
.
total
=
response
.
data
.
page
.
total
||
0
detailPageInfo
.
value
.
pageSize
=
response
.
data
.
page
.
size
||
50
// 统计信息
detailRecordStatistics
.
value
=
{
totalAmount
:
response
.
data
.
expectedStatisticsVO
.
totalAmount
,
totalPaidAmount
:
response
.
data
.
expectedStatisticsVO
.
totalPaidAmount
,
pendingPaidAmount
:
response
.
data
.
expectedStatisticsVO
.
pendingPaidAmount
,
paidAmountRatio
:
response
.
data
.
expectedStatisticsVO
.
paidAmountRatio
,
totalPolicyCount
:
response
.
data
.
expectedStatisticsVO
.
totalPolicyCount
}
}
catch
(
error
)
{
console
.
error
(
'加载数据失败:'
,
error
)
ElMessage
.
error
(
'加载数据失败'
)
}
finally
{
loading
.
value
=
false
}
}
const
selectedDetailRecordRow
=
ref
({})
const
viewDetail
=
(
row
)
=>
{
selectedDetailRecordRow
.
value
=
row
detailDialogVisible
.
value
=
true
receivedFortuneListData
()
}
// 分页事件
const
handleSizeChangeDetailRecord
=
(
val
)
=>
{
detailPageInfo
.
value
.
pageSize
=
val
receivedFortuneListData
()
}
// 分页事件
const
handleCurrentChangeDetailRecord
=
(
val
)
=>
{
detailPageInfo
.
value
.
currentPage
=
val
receivedFortuneListData
()
}
</
script
>
<
style
scoped
lang=
"scss"
></
style
>
\ No newline at end of file
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