Commit 4f4b0e06 by Sweet Zhang

出入账管理第一阶段完成

parent 5f1a210e
......@@ -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
})
}
......@@ -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 {
......
......@@ -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
......
......@@ -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>
......
......@@ -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()
}
......
......@@ -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>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment