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) {
...
@@ -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 @@
...
@@ -17,7 +17,7 @@
v-if=
"!disabled"
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"
>
<div
class=
"el-upload__tip"
v-if=
"showTip"
>
请上传
请上传
...
@@ -102,7 +102,12 @@ export default {
...
@@ -102,7 +102,12 @@ export default {
multiple
:{
multiple
:{
type
:
Boolean
,
type
:
Boolean
,
default
:
true
default
:
true
}
},
// 禁用上传按钮
isDisabled
:
{
type
:
Boolean
,
default
:
false
},
},
},
data
()
{
data
()
{
return
{
return
{
...
...
src/components/PolicyDetailDialog/index.vue
View file @
4f4b0e06
...
@@ -64,15 +64,19 @@
...
@@ -64,15 +64,19 @@
<!-- 出账信息 -->
<!-- 出账信息 -->
<el-tab-pane
label=
"出账信息"
name=
"expense"
>
<el-tab-pane
label=
"出账信息"
name=
"expense"
>
<el-descriptions
:column=
"2"
border
>
<el-table
:data=
"policyFortuneList"
border
size=
"small"
>
<el-descriptions-item
label=
"出账状态"
>
{{ detailData.expenseStatus || '-' }}
</el-descriptions-item>
<el-table-column
type=
"index"
width=
"30"
/>
<el-descriptions-item
label=
"出账金额"
>
{{ numberWithCommas(detailData.expenseAmount || 0) }}
</el-descriptions-item>
<el-table-column
prop=
"fortunePeriod"
label=
"佣金期数"
align=
"center"
/>
<el-descriptions-item
label=
"出账日期"
>
{{ detailData.expenseDate || '-' }}
</el-descriptions-item>
<el-table-column
prop=
"fortuneTotalPeriod"
label=
"总佣金期数"
align=
"center"
/>
<el-descriptions-item
label=
"出账银行"
>
{{ detailData.expenseBank || '-' }}
</el-descriptions-item>
<el-table-column
prop=
"broker"
label=
"转介人"
align=
"center"
/>
<el-descriptions-item
label=
"出账账号"
>
{{ detailData.expenseAccount || '-' }}
</el-descriptions-item>
<el-table-column
prop=
"team"
label=
"所属团队"
align=
"center"
/>
<el-descriptions-item
label=
"出账凭证号"
>
{{ detailData.expenseVoucherNo || '-' }}
</el-descriptions-item>
<el-table-column
prop=
"fortuneName"
label=
"出账名称"
align=
"center"
/>
<el-descriptions-item
label=
"出账备注"
>
{{ detailData.expenseRemark || '-' }}
</el-descriptions-item>
<el-table-column
prop=
"amount"
label=
"金额"
align=
"center"
/>
</el-descriptions>
<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>
<!-- 转介人信息 -->
<!-- 转介人信息 -->
<el-tab-pane
label=
"转介人信息"
name=
"broker"
>
<el-tab-pane
label=
"转介人信息"
name=
"broker"
>
...
@@ -85,7 +89,7 @@
...
@@ -85,7 +89,7 @@
</el-tab-pane>
</el-tab-pane>
<!-- 其他信息 -->
<!-- 其他信息 -->
<el-tab-pane
label=
"其他信息"
name=
"other"
>
<
!-- <
el-tab-pane label="其他信息" name="other">
<el-descriptions :column="2" border>
<el-descriptions :column="2" border>
<el-descriptions-item label="创建时间">{{ detailData.createTime || '-' }}</el-descriptions-item>
<el-descriptions-item label="创建时间">{{ detailData.createTime || '-' }}</el-descriptions-item>
<el-descriptions-item label="更新时间">{{ detailData.updateTime || '-' }}</el-descriptions-item>
<el-descriptions-item label="更新时间">{{ detailData.updateTime || '-' }}</el-descriptions-item>
...
@@ -93,7 +97,7 @@
...
@@ -93,7 +97,7 @@
<el-descriptions-item label="更新人">{{ detailData.updateBy || '-' }}</el-descriptions-item>
<el-descriptions-item label="更新人">{{ detailData.updateBy || '-' }}</el-descriptions-item>
<el-descriptions-item label="备注信息" :span="2">{{ detailData.remark || '-' }}</el-descriptions-item>
<el-descriptions-item label="备注信息" :span="2">{{ detailData.remark || '-' }}</el-descriptions-item>
</el-descriptions>
</el-descriptions>
</el-tab-pane>
</el-tab-pane>
-->
</el-tabs>
</el-tabs>
<
template
#
footer
>
<
template
#
footer
>
...
@@ -130,6 +134,10 @@ const props = defineProps({
...
@@ -130,6 +134,10 @@ const props = defineProps({
type
:
Array
,
type
:
Array
,
default
:
()
=>
[]
default
:
()
=>
[]
},
},
policyFortuneList
:
{
type
:
Array
,
default
:
()
=>
[]
},
})
})
// 定义emits
// 定义emits
...
...
src/views/financialCenter/financialBilling.vue
View file @
4f4b0e06
...
@@ -14,22 +14,6 @@
...
@@ -14,22 +14,6 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
<el-col
:xs=
"24"
:sm=
"12"
:md=
"8"
:lg=
"6"
>
<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-form-item
label=
"出账日期"
>
<el-date-picker
<el-date-picker
v-model=
"queryParams.billingDate"
v-model=
"queryParams.billingDate"
...
@@ -51,19 +35,27 @@
...
@@ -51,19 +35,27 @@
</el-form>
</el-form>
</el-card>
</el-card>
<!-- 操作区域 -->
<!-- 数据表格 -->
<el-card
class=
"operation-card"
>
<el-card>
<el-row
:gutter=
"10"
>
<el-row
:gutter=
"20"
>
<el-col
:span=
"12"
>
<el-text
class=
"mx-1"
type=
"danger"
style=
"margin-right: 20px;"
>
勾选出账记录,点击“下载选中项”按钮,下载导入模版
</el-text>
<!--
<el-button
type=
"primary"
@
click=
"handleCreate"
>
新建出账记录
</el-button>
-->
</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']"
<FileUpload
:fileType=
"['xlsx', 'xls']"
:action=
"'/csf/api/fortune/upload/excel'"
:action=
"'/csf/api/fortune/upload/excel'"
:uploadBtnText=
"'批量导入'"
:uploadBtnText=
"'批量导入'"
@
input =
'getUploadFileFunc'
:isShowTip=
"false"
@
uploadEnd =
'getUploadFileFunc'
:responseType=
"'onlyStatus'"
:responseType=
"'onlyStatus'"
/>
/>
</el-col>
<el-col
:span=
"12"
style=
"text-align: right;"
>
<el-button
<el-button
type=
"success"
type=
"success"
:disabled=
"selectedRows.length === 0"
:disabled=
"selectedRows.length === 0"
...
@@ -71,23 +63,7 @@
...
@@ -71,23 +63,7 @@
>
>
生成出账清单
生成出账清单
</el-button>
</el-button>
</el-col>
</div>
</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>
<el-table
<el-table
:data=
"tableData"
:data=
"tableData"
@
selection-change=
"handleSelectionChange"
@
selection-change=
"handleSelectionChange"
...
@@ -109,7 +85,7 @@
...
@@ -109,7 +85,7 @@
<el-table-column
prop=
"status"
label=
"出账状态"
width=
"100"
>
<el-table-column
prop=
"status"
label=
"出账状态"
width=
"100"
>
<
template
#
default=
"{ row }"
>
<
template
#
default=
"{ row }"
>
<el-tag
:type=
"getStatusType(row.status)"
>
<el-tag
:type=
"getStatusType(row.status)"
>
{{
row
.
status
}}
{{
convertStatusToDict
(
row
.
status
)
}}
</el-tag>
</el-tag>
</
template
>
</
template
>
</el-table-column>
</el-table-column>
...
@@ -208,7 +184,6 @@ import { ref, reactive, onMounted } from 'vue'
...
@@ -208,7 +184,6 @@ import { ref, reactive, onMounted } from 'vue'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
import
{
ElMessage
,
ElMessageBox
}
from
'element-plus'
// 引入API
// 引入API
import
{
getPolicyFortuneList
,
downloadPolicyFortune
,
downloadPolicyFortuneAccount
}
from
"@/api/financial/commission"
import
{
getPolicyFortuneList
,
downloadPolicyFortune
,
downloadPolicyFortuneAccount
}
from
"@/api/financial/commission"
import
{
download
}
from
'@/utils/request'
// 直接导入下载函数
// 查询参数
// 查询参数
const
queryParams
=
reactive
({
const
queryParams
=
reactive
({
...
@@ -242,12 +217,6 @@ const formData = reactive({
...
@@ -242,12 +217,6 @@ const formData = reactive({
remark
:
''
remark
:
''
})
})
// 对账公司选项
const
companyOptions
=
[
{
label
:
'公司A'
,
value
:
'company_a'
},
{
label
:
'公司B'
,
value
:
'company_b'
},
{
label
:
'公司C'
,
value
:
'company_c'
}
]
// 下载选中项
// 下载选中项
const
downloadSelected
=
async
()
=>
{
const
downloadSelected
=
async
()
=>
{
...
@@ -455,15 +424,44 @@ const formatCurrency = (amount) => {
...
@@ -455,15 +424,44 @@ const formatCurrency = (amount) => {
// 获取状态标签类型
// 获取状态标签类型
const
getStatusType
=
(
status
)
=>
{
const
getStatusType
=
(
status
)
=>
{
const
types
=
{
const
types
=
{
pending
:
'warning'
,
0
:
'warning'
,
completed
:
'success'
,
1
:
'success'
,
cancelled
:
'danger
'
2
:
'info
'
}
}
return
types
[
status
]
||
'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
(()
=>
{
onMounted
(()
=>
{
getDictLists
()
getList
()
getList
()
})
})
</
script
>
</
script
>
...
...
src/views/financialCenter/financialIncome.vue
View file @
4f4b0e06
...
@@ -268,12 +268,29 @@ const searchForm = reactive({
...
@@ -268,12 +268,29 @@ const searchForm = reactive({
incomeDateRange
:
[]
incomeDateRange
:
[]
})
})
// 对账公司选项(示例数据)
// 对账公司选项
const
companyOptions
=
ref
([
{
label
:
'公司A'
,
value
:
'company_a'
},
const
companyOptions
=
ref
([])
{
label
:
'公司B'
,
value
:
'company_b'
},
// 获取对账公司列表
{
label
:
'公司C'
,
value
:
'company_c'
}
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
([])
const
tableData
=
ref
([])
...
@@ -299,6 +316,7 @@ onMounted(() => {
...
@@ -299,6 +316,7 @@ onMounted(() => {
const
initialData
=
async
()
=>
{
const
initialData
=
async
()
=>
{
await
getLists
();
await
getLists
();
fetchTableData
();
fetchTableData
();
fetchReconciliationCompanyList
()
}
}
...
...
src/views/financialCenter/financialSalary.vue
View file @
4f4b0e06
...
@@ -218,6 +218,14 @@ const referrerOptions = [
...
@@ -218,6 +218,14 @@ const referrerOptions = [
{
label
:
'赵六'
,
value
:
'zhaoliu'
}
{
label
:
'赵六'
,
value
:
'zhaoliu'
}
]
]
// 初始化
onMounted
(()
=>
{
getDictLists
()
getList
()
})
// 获取数据列表
// 获取数据列表
const
getList
=
async
()
=>
{
const
getList
=
async
()
=>
{
loading
.
value
=
true
loading
.
value
=
true
...
@@ -232,7 +240,7 @@ const getList = async () => {
...
@@ -232,7 +240,7 @@ const getList = async () => {
loading
.
value
=
false
loading
.
value
=
false
}
catch
(
error
)
{
}
catch
(
error
)
{
loading
.
value
=
false
loading
.
value
=
false
ElMessage
.
error
(
'获取数据失败'
)
//
ElMessage.error('获取数据失败')
}
}
}
}
...
@@ -325,7 +333,7 @@ const completeBilling = async () => {
...
@@ -325,7 +333,7 @@ const completeBilling = async () => {
const
arr
=
selectedRows
.
value
.
map
(
item
=>
item
.
fortuneAccountBizId
)
const
arr
=
selectedRows
.
value
.
map
(
item
=>
item
.
fortuneAccountBizId
)
// 调用出账API
// 调用出账API
await
updateStatus
(
arr
)
await
fetchCompletePolicyFortune
(
arr
)
}
catch
(
error
)
{
}
catch
(
error
)
{
...
@@ -428,11 +436,26 @@ const updateStatus = async (row) => {
...
@@ -428,11 +436,26 @@ const updateStatus = async (row) => {
}
}
}
}
// 初始化
// 完成出账
onMounted
(()
=>
{
import
{
completePolicyFortune
}
from
'@/api/financial/commission'
getDictLists
()
const
fetchCompletePolicyFortune
=
async
(
row
)
=>
{
try
{
const
res
=
await
completePolicyFortune
({
fortuneBizIdList
:
row
});
console
.
log
(
res
)
if
(
res
.
code
===
200
)
{
// 显示完成弹窗
billingCompleteDialogVisible
.
value
=
true
getList
()
getList
()
})
}
else
{
ElMessage
.
error
(
res
.
msg
)
}
}
catch
(
error
)
{
}
}
</
script
>
</
script
>
<
style
scoped
>
<
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