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
4f4b0e06
Commit
4f4b0e06
authored
Oct 13, 2025
by
Sweet Zhang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
出入账管理第一阶段完成
parent
5f1a210e
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
151 additions
and
77 deletions
+151
-77
src/api/financial/commission.js
+22
-0
src/components/FileUpload/index.vue
+7
-2
src/components/PolicyDetailDialog/index.vue
+19
-11
src/views/financialCenter/financialBilling.vue
+50
-52
src/views/financialCenter/financialIncome.vue
+24
-6
src/views/financialCenter/financialSalary.vue
+29
-6
src/views/sign/underwritingMain/index.vue
+0
-0
No files found.
src/api/financial/commission.js
View file @
4f4b0e06
...
...
@@ -97,4 +97,26 @@ export function updatePolicyFortuneStatus(data) {
})
}
// 完成出账
// /csf/api/fortune/complete
export
function
completePolicyFortune
(
data
)
{
return
request
({
url
:
'/csf/api/fortune/complete/fortuneAccount'
,
method
:
'post'
,
data
:
data
})
}
// 获取对账公司
// /csf/api/reconciliation_company/list/page
export
function
getReconciliationCompanyList
(
data
)
{
return
request
({
url
:
'/csf/api/reconciliation_company/list/page'
,
method
:
'post'
,
data
:
data
})
}
src/components/FileUpload/index.vue
View file @
4f4b0e06
...
...
@@ -17,7 +17,7 @@
v-if=
"!disabled"
>
<!-- 上传按钮 -->
<el-button
size=
"
small"
type=
"primary
"
>
{{
uploadBtnText
}}
</el-button>
<el-button
size=
"
default"
type=
"primary"
:disabled=
"isDisabled
"
>
{{
uploadBtnText
}}
</el-button>
<!-- 上传提示 -->
<div
class=
"el-upload__tip"
v-if=
"showTip"
>
请上传
...
...
@@ -102,7 +102,12 @@ export default {
multiple
:{
type
:
Boolean
,
default
:
true
}
},
// 禁用上传按钮
isDisabled
:
{
type
:
Boolean
,
default
:
false
},
},
data
()
{
return
{
...
...
src/components/PolicyDetailDialog/index.vue
View file @
4f4b0e06
...
...
@@ -64,15 +64,19 @@
<!-- 出账信息 -->
<el-tab-pane
label=
"出账信息"
name=
"expense"
>
<el-descriptions
:column=
"2"
border
>
<el-descriptions-item
label=
"出账状态"
>
{{ detailData.expenseStatus || '-' }}
</el-descriptions-item>
<el-descriptions-item
label=
"出账金额"
>
{{ numberWithCommas(detailData.expenseAmount || 0) }}
</el-descriptions-item>
<el-descriptions-item
label=
"出账日期"
>
{{ detailData.expenseDate || '-' }}
</el-descriptions-item>
<el-descriptions-item
label=
"出账银行"
>
{{ detailData.expenseBank || '-' }}
</el-descriptions-item>
<el-descriptions-item
label=
"出账账号"
>
{{ detailData.expenseAccount || '-' }}
</el-descriptions-item>
<el-descriptions-item
label=
"出账凭证号"
>
{{ detailData.expenseVoucherNo || '-' }}
</el-descriptions-item>
<el-descriptions-item
label=
"出账备注"
>
{{ detailData.expenseRemark || '-' }}
</el-descriptions-item>
</el-descriptions>
<el-table
:data=
"policyFortuneList"
border
size=
"small"
>
<el-table-column
type=
"index"
width=
"30"
/>
<el-table-column
prop=
"fortunePeriod"
label=
"佣金期数"
align=
"center"
/>
<el-table-column
prop=
"fortuneTotalPeriod"
label=
"总佣金期数"
align=
"center"
/>
<el-table-column
prop=
"broker"
label=
"转介人"
align=
"center"
/>
<el-table-column
prop=
"team"
label=
"所属团队"
align=
"center"
/>
<el-table-column
prop=
"fortuneName"
label=
"出账名称"
align=
"center"
/>
<el-table-column
prop=
"amount"
label=
"金额"
align=
"center"
/>
<el-table-column
prop=
"currency"
label=
"币种"
align=
"center"
/>
<el-table-column
prop=
"payoutDate"
label=
"出账日期"
align=
"center"
/>
<el-table-column
prop=
"fortuneStatusLabel"
label=
"出账状态"
align=
"center"
/>
<el-table-column
prop=
"remark"
label=
"备注"
align=
"center"
/>
</el-table>
</el-tab-pane>
<!-- 转介人信息 -->
<el-tab-pane
label=
"转介人信息"
name=
"broker"
>
...
...
@@ -85,7 +89,7 @@
</el-tab-pane>
<!-- 其他信息 -->
<el-tab-pane
label=
"其他信息"
name=
"other"
>
<
!-- <
el-tab-pane label="其他信息" name="other">
<el-descriptions :column="2" border>
<el-descriptions-item label="创建时间">{{ detailData.createTime || '-' }}</el-descriptions-item>
<el-descriptions-item label="更新时间">{{ detailData.updateTime || '-' }}</el-descriptions-item>
...
...
@@ -93,7 +97,7 @@
<el-descriptions-item label="更新人">{{ detailData.updateBy || '-' }}</el-descriptions-item>
<el-descriptions-item label="备注信息" :span="2">{{ detailData.remark || '-' }}</el-descriptions-item>
</el-descriptions>
</el-tab-pane>
</el-tab-pane>
-->
</el-tabs>
<
template
#
footer
>
...
...
@@ -130,6 +134,10 @@ const props = defineProps({
type
:
Array
,
default
:
()
=>
[]
},
policyFortuneList
:
{
type
:
Array
,
default
:
()
=>
[]
},
})
// 定义emits
...
...
src/views/financialCenter/financialBilling.vue
View file @
4f4b0e06
...
...
@@ -14,22 +14,6 @@
</el-form-item>
</el-col>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"8"
:lg=
"6"
>
<el-form-item
label=
"对账公司"
>
<el-select
v-model=
"queryParams.company"
placeholder=
"请选择对账公司"
clearable
>
<el-option
v-for=
"item in companyOptions"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"8"
:lg=
"6"
>
<el-form-item
label=
"出账日期"
>
<el-date-picker
v-model=
"queryParams.billingDate"
...
...
@@ -51,19 +35,27 @@
</el-form>
</el-card>
<!-- 操作区域 -->
<el-card
class=
"operation-card"
>
<el-row
:gutter=
"10"
>
<el-col
:span=
"12"
>
<!--
<el-button
type=
"primary"
@
click=
"handleCreate"
>
新建出账记录
</el-button>
-->
<!-- 数据表格 -->
<el-card>
<el-row
:gutter=
"20"
>
<el-text
class=
"mx-1"
type=
"danger"
style=
"margin-right: 20px;"
>
勾选出账记录,点击“下载选中项”按钮,下载导入模版
</el-text>
</el-row>
<div
class=
"button-row"
style=
"display: flex;gap: 1rem;justify-content: end;"
>
<el-button
type=
"primary"
:disabled=
"selectedRows.length === 0"
@
click=
"downloadSelected"
>
下载选中项
</el-button>
<FileUpload
:fileType=
"['xlsx', 'xls']"
:action=
"'/csf/api/fortune/upload/excel'"
:uploadBtnText=
"'批量导入'"
@
input =
'getUploadFileFunc'
:isShowTip=
"false"
@
uploadEnd =
'getUploadFileFunc'
:responseType=
"'onlyStatus'"
/>
</el-col>
<el-col
:span=
"12"
style=
"text-align: right;"
>
<el-button
type=
"success"
:disabled=
"selectedRows.length === 0"
...
...
@@ -71,23 +63,7 @@
>
生成出账清单
</el-button>
</el-col>
</el-row>
</el-card>
<!-- 数据表格 -->
<el-card>
<!-- 增加勾选后下载按钮 -->
<el-col
:span=
"24"
style=
"text-align: right;"
v-if=
"selectedRows.length > 0"
>
<el-button
type=
"primary"
@
click=
"downloadSelected"
>
下载选中项
</el-button>
</el-col>
</div>
<el-table
:data=
"tableData"
@
selection-change=
"handleSelectionChange"
...
...
@@ -109,7 +85,7 @@
<el-table-column
prop=
"status"
label=
"出账状态"
width=
"100"
>
<
template
#
default=
"{ row }"
>
<el-tag
:type=
"getStatusType(row.status)"
>
{{
row
.
status
}}
{{
convertStatusToDict
(
row
.
status
)
}}
</el-tag>
</
template
>
</el-table-column>
...
...
@@ -208,7 +184,6 @@ import { ref, reactive, onMounted } from 'vue'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
// 引入API
import
{
getPolicyFortuneList
,
downloadPolicyFortune
,
downloadPolicyFortuneAccount
}
from
"@/api/financial/commission"
import
{
download
}
from
'@/utils/request'
// 直接导入下载函数
// 查询参数
const
queryParams
=
reactive
({
...
...
@@ -242,12 +217,6 @@ const formData = reactive({
remark
:
''
})
// 对账公司选项
const
companyOptions
=
[
{
label
:
'公司A'
,
value
:
'company_a'
},
{
label
:
'公司B'
,
value
:
'company_b'
},
{
label
:
'公司C'
,
value
:
'company_c'
}
]
// 下载选中项
const
downloadSelected
=
async
()
=>
{
...
...
@@ -455,15 +424,44 @@ const formatCurrency = (amount) => {
// 获取状态标签类型
const
getStatusType
=
(
status
)
=>
{
const
types
=
{
pending
:
'warning'
,
completed
:
'success'
,
cancelled
:
'danger
'
0
:
'warning'
,
1
:
'success'
,
2
:
'info
'
}
return
types
[
status
]
||
'info'
}
import
{
listType
}
from
'@/api/system/dict/type'
const
dictLists
=
ref
([])
// 获取出账状态字典值
const
getDictLists
=
()
=>
{
return
new
Promise
((
resolve
,
reject
)
=>
{
listType
({
typeList
:
[
'csf_fortune_status'
]}).
then
(
res
=>
{
if
(
res
.
code
===
200
&&
res
.
data
)
{
const
dictData
=
res
.
data
.
find
(
item
=>
item
.
dictType
===
'csf_fortune_status'
);
dictLists
.
value
=
dictData
?.
dictItemList
||
[];
console
.
log
(
'获取到的字典数据:'
,
dictLists
.
value
);
resolve
(
dictLists
.
value
);
}
else
{
dictLists
.
value
=
[];
resolve
([]);
}
}).
catch
(
error
=>
{
console
.
error
(
'获取状态列表失败:'
,
error
);
dictLists
.
value
=
[];
reject
(
error
);
});
});
}
// 返回数据中状态需要转换为字典值
const
convertStatusToDict
=
(
status
)
=>
{
const
dictItem
=
dictLists
.
value
.
find
(
item
=>
item
.
itemValue
==
status
);
return
dictItem
?.
itemLabel
??
status
;
}
// 初始化
onMounted
(()
=>
{
getDictLists
()
getList
()
})
</
script
>
...
...
src/views/financialCenter/financialIncome.vue
View file @
4f4b0e06
...
...
@@ -268,12 +268,29 @@ const searchForm = reactive({
incomeDateRange
:
[]
})
// 对账公司选项(示例数据)
const
companyOptions
=
ref
([
{
label
:
'公司A'
,
value
:
'company_a'
},
{
label
:
'公司B'
,
value
:
'company_b'
},
{
label
:
'公司C'
,
value
:
'company_c'
}
])
// 对账公司选项
const
companyOptions
=
ref
([])
// 获取对账公司列表
import
{
getReconciliationCompanyList
}
from
'@/api/financial/commission'
const
fetchReconciliationCompanyList
=
async
()
=>
{
try
{
const
response
=
await
getReconciliationCompanyList
({
pageNo
:
1
,
pageSize
:
1000
})
if
(
response
.
code
===
200
)
{
companyOptions
.
value
=
response
.
data
.
records
.
map
(
item
=>
({
label
:
item
.
companyName
,
value
:
item
.
reconciliationCompanyBizId
}))
}
else
{
ElMessage
.
error
(
response
.
msg
)
}
}
catch
(
error
)
{
ElMessage
.
error
(
'获取对账公司列表失败'
)
}
}
// 表格数据
const
tableData
=
ref
([])
...
...
@@ -299,6 +316,7 @@ onMounted(() => {
const
initialData
=
async
()
=>
{
await
getLists
();
fetchTableData
();
fetchReconciliationCompanyList
()
}
...
...
src/views/financialCenter/financialSalary.vue
View file @
4f4b0e06
...
...
@@ -218,6 +218,14 @@ const referrerOptions = [
{
label
:
'赵六'
,
value
:
'zhaoliu'
}
]
// 初始化
onMounted
(()
=>
{
getDictLists
()
getList
()
})
// 获取数据列表
const
getList
=
async
()
=>
{
loading
.
value
=
true
...
...
@@ -232,7 +240,7 @@ const getList = async () => {
loading
.
value
=
false
}
catch
(
error
)
{
loading
.
value
=
false
ElMessage
.
error
(
'获取数据失败'
)
//
ElMessage.error('获取数据失败')
}
}
...
...
@@ -325,7 +333,7 @@ const completeBilling = async () => {
const
arr
=
selectedRows
.
value
.
map
(
item
=>
item
.
fortuneAccountBizId
)
// 调用出账API
await
updateStatus
(
arr
)
await
fetchCompletePolicyFortune
(
arr
)
}
catch
(
error
)
{
...
...
@@ -428,11 +436,26 @@ const updateStatus = async (row) => {
}
}
// 初始化
onMounted
(()
=>
{
getDictLists
()
// 完成出账
import
{
completePolicyFortune
}
from
'@/api/financial/commission'
const
fetchCompletePolicyFortune
=
async
(
row
)
=>
{
try
{
const
res
=
await
completePolicyFortune
({
fortuneBizIdList
:
row
});
console
.
log
(
res
)
if
(
res
.
code
===
200
)
{
// 显示完成弹窗
billingCompleteDialogVisible
.
value
=
true
getList
()
})
}
else
{
ElMessage
.
error
(
res
.
msg
)
}
}
catch
(
error
)
{
}
}
</
script
>
<
style
scoped
>
...
...
src/views/sign/underwritingMain/index.vue
View file @
4f4b0e06
This diff is collapsed.
Click to expand it.
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