Commit feda043c by yuzhenWang

Merge branch 'test' into 'wyz'

Test

See merge request !139
parents dbfb2eaa 5fb8d958
...@@ -498,12 +498,20 @@ export function billCalculateToAmount(data) { ...@@ -498,12 +498,20 @@ export function billCalculateToAmount(data) {
data: data data: data
}) })
} }
// 应收款管理--明细列表
export function newQueryCommissionExpectedByPage(data) {
return request({
url: 'csf/api/CommissionExpected/queryCommissionExpectedByPage/new',
method: 'post',
data: data
})
}
// 应收款管理修改应收记录状态 // 应收款管理修改应收记录状态
export function CommissionExpectedChangeStatus(data) { export function CommissionExpectedChangeStatus(data) {
return request({ return request({
url: 'csf/api/CommissionExpected/change_status', url: 'csf/api/CommissionExpected/edit/status',
method: 'post', method: 'put',
data: data data: data
}) })
} }
......
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
export function copyToClipboard(text) { // 传统降级复制方法
// 方案1:使用现代 Clipboard API
if (navigator.clipboard && navigator.clipboard.writeText) {
return navigator.clipboard.writeText(text).catch((err) => {
console.error('Clipboard API 写入失败:', err);
ElMessage.error('复制失败')
// 降级到传统方案
fallbackCopyText(text);
});
}
// 方案2:降级使用传统方法
else {
fallbackCopyText(text);
}
}
// 传统复制方法
function fallbackCopyText(text, typeName = '内容') { function fallbackCopyText(text, typeName = '内容') {
const textarea = document.createElement('textarea'); const textarea = document.createElement('textarea');
textarea.value = text; textarea.value = text;
// 防止页面滚动或闪烁
textarea.style.position = 'fixed'; textarea.style.position = 'fixed';
textarea.style.opacity = '0'; textarea.style.opacity = '0';
textarea.style.left = '-9999px';
document.body.appendChild(textarea); document.body.appendChild(textarea);
try { try {
textarea.select(); textarea.select();
textarea.setSelectionRange(0, 99999); // 对于移动设备 textarea.setSelectionRange(0, 99999); // 兼容移动端
document.execCommand('copy'); const successful = document.execCommand('copy');
console.log('传统方法复制成功'); if (successful) {
ElMessage.success(`${typeName}已复制`) ElMessage.success(`${typeName}已复制`);
} else {
throw new Error('execCommand 返回失败');
}
} catch (err) { } catch (err) {
console.error('传统方法复制失败:', err) console.error('传统方法复制失败:', err);
ElMessage.error('复制失败'); ElMessage.error('复制失败,请手动复制');
} finally { } finally {
document.body.removeChild(textarea); document.body.removeChild(textarea);
} }
} }
export default { // 主导出函数,接收 text 和 typeName 两个参数
copyToClipboard export default function copyToClipboard(text, typeName = '内容') {
} // 1. 判断是否在安全上下文(HTTPS/localhost) 且 浏览器支持 Clipboard API
if (window.isSecureContext && navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(text).then(() => {
ElMessage.success(`${typeName}已复制`);
}).catch((err) => {
console.error('Clipboard API 写入失败,降级处理:', err);
// API 调用失败(如权限被拒),自动降级到传统方案
fallbackCopyText(text, typeName);
});
} else {
// 2. 非安全环境(如 HTTP)或不支持新 API,直接使用传统降级方案
fallbackCopyText(text, typeName);
}
}
\ No newline at end of file
...@@ -815,7 +815,8 @@ const getList = async (searchParams = {}) => { ...@@ -815,7 +815,8 @@ const getList = async (searchParams = {}) => {
accountDateEnd: searchParams.payoutDate?.[1] || undefined, accountDateEnd: searchParams.payoutDate?.[1] || undefined,
payoutDate: undefined, payoutDate: undefined,
pageNo: currentPage.value, pageNo: currentPage.value,
pageSize: pageSize.value pageSize: pageSize.value,
statusList:searchParams.statusList || ['6']
} }
const response = await getReferrerFortuneList(params) const response = await getReferrerFortuneList(params)
......
...@@ -726,7 +726,7 @@ const searchConfig = ref([ ...@@ -726,7 +726,7 @@ const searchConfig = ref([
const payRecordDialogTableVisible = ref(false) const payRecordDialogTableVisible = ref(false)
// 新增出账记录 // 新增出账记录
const addPayRecordFormModel = ref({ const addPayRecordFormModel = ref({
fortuneBizType: 'U' fortuneBizType: 'R',
}) })
const addPayRecordDialogVisible = ref(false) const addPayRecordDialogVisible = ref(false)
const addPayRecordFormRef = ref() const addPayRecordFormRef = ref()
...@@ -779,15 +779,26 @@ const addPayRecordFormConfig = [ ...@@ -779,15 +779,26 @@ const addPayRecordFormConfig = [
type: 'input', type: 'input',
prop: 'hkdAmount', prop: 'hkdAmount',
label: '出账金额', label: '出账金额',
rules: [{ pattern: /^-?\d+(\.\d{1,2})?$/, message: '小数(最多两位)', trigger: 'blur' }] rules: [
}, { required: true, message: '请输入', trigger: 'blur' },
{ { pattern: /^-?\d+(\.\d{1,2})?$/, message: '小数(最多两位)', trigger: 'blur' }
]
}, {
type: 'select', type: 'select',
prop: 'currency', prop: 'currency',
label: '出账币种', label: '出账币种',
dictType: 'bx_currency_type' dictType: 'bx_currency_type',
defaultValue:'HKD'
}, },
{ {
type: 'input',
prop: 'defaultExchangeRate',
label: '结算汇率(入账检核时的汇率)',
rules: [
{ required: true, message: '请输入', trigger: 'blur' },
{ pattern: /^-?\d+(\.\d{1,6})?$/, message: '小数(最多6位)', trigger: 'blur' }
]
},{
type: 'select', type: 'select',
prop: 'fortuneType', prop: 'fortuneType',
label: '出账项目', label: '出账项目',
......
...@@ -111,7 +111,7 @@ ...@@ -111,7 +111,7 @@
:formatter="value => formatCurrency(value)" :formatter="value => formatCurrency(value)"
> >
<template #title> <template #title>
<div style="display: inline-flex; align-items: center">应入账总金额</div> <div style="display: inline-flex; align-items: center">HKD$应入账总金额</div>
</template> </template>
</el-statistic> </el-statistic>
</el-col> </el-col>
...@@ -121,17 +121,17 @@ ...@@ -121,17 +121,17 @@
:formatter="value => formatCurrency(value)" :formatter="value => formatCurrency(value)"
> >
<template #title> <template #title>
<div style="display: inline-flex; align-items: center">已入账金额</div> <div style="display: inline-flex; align-items: center">HKD$已入账金额</div>
</template> </template>
</el-statistic> </el-statistic>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="4" class="text-center mb-4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-statistic <el-statistic
:value="detailRecordStatistics.totalUnpaidAmount" :value="detailRecordStatistics.pendingPaidAmount"
:formatter="value => formatCurrency(value)" :formatter="value => formatCurrency(value)"
> >
<template #title> <template #title>
<div style="display: inline-flex; align-items: center">待入账金额</div> <div style="display: inline-flex; align-items: center">HKD$待入账金额</div>
</template> </template>
</el-statistic> </el-statistic>
</el-col> </el-col>
...@@ -145,20 +145,30 @@ ...@@ -145,20 +145,30 @@
</template> </template>
</el-statistic> </el-statistic>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="4" class="text-center mb-4"> <!-- <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-statistic :value="detailRecordStatistics.totalPolicyCount"> <el-statistic :value="detailRecordStatistics.totalPolicyCount">
<template #title> <template #title>
<div style="display: inline-flex; align-items: center">总保单数</div> <div style="display: inline-flex; align-items: center">总保单数</div>
</template> </template>
</el-statistic> </el-statistic>
</el-col> </el-col> -->
<el-col :xs="24" :sm="12" :md="4" class="text-center mb-4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-statistic <el-statistic
:value="detailRecordStatistics.totalPremium" :value="detailRecordStatistics.totalPremium"
:formatter="value => formatCurrency(value)" :formatter="value => formatCurrency(value)"
> >
<template #title> <template #title>
<div style="display: inline-flex; align-items: center">总保费</div> <div style="display: inline-flex; align-items: center">HKD$总保费</div>
</template>
</el-statistic>
</el-col>
<el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-statistic
:value="detailRecordStatistics.fromTotalPremium"
:formatter="value => formatCurrency(value)"
>
<template #title>
<div style="display: inline-flex; align-items: center">原币种保费</div>
</template> </template>
</el-statistic> </el-statistic>
</el-col> </el-col>
...@@ -168,6 +178,7 @@ ...@@ -168,6 +178,7 @@
:data="receivableReportTableData" :data="receivableReportTableData"
border border
style="width: 100%; margin-bottom: 10px; min-height: 300px" style="width: 100%; margin-bottom: 10px; min-height: 300px"
:row-class-name="getRowClassName"
> >
<el-table-column <el-table-column
v-for="item in receivableReportItemTableColumns" v-for="item in receivableReportItemTableColumns"
...@@ -177,18 +188,25 @@ ...@@ -177,18 +188,25 @@
:width="item.width" :width="item.width"
:formatter="item.formatter" :formatter="item.formatter"
/> />
<el-table-column fixed="right" label="操作" min-width="120"> <el-table-column fixed="right" label="操作" min-width="120">
<template #default="{ row }"> <template #default="{ row }">
<el-popover placement="right" :width="200" trigger="click"> <el-popover placement="right" :width="200" trigger="click" v-if="row.type == '1'">
<template #reference> <template #reference>
<el-icon> <el-icon>
<MoreFilled /> <MoreFilled />
</el-icon> </el-icon>
</template> </template>
<el-menu @select="handleSelect($event, row)" popper-class="custom-menu"> <el-menu @select="handleSelect($event, row)" popper-class="custom-menu">
<el-menu-item :index="item.value" v-for="item in dropdownItems" :key="item.value"> <!-- <el-menu-item :index="item.value" v-for="item in dropdownItems" :key="item.value">
{{ item.label }} {{ item.label }}
</el-menu-item> </el-menu-item> -->
<el-menu-item
:index="item.value"
v-for="item in getOperateItems(row)"
:key="item.value"
>{{ item.label }}</el-menu-item
>
</el-menu> </el-menu>
</el-popover> </el-popover>
</template> </template>
...@@ -290,6 +308,7 @@ import { ref, reactive, onMounted, computed, nextTick } from 'vue' ...@@ -290,6 +308,7 @@ import { ref, reactive, onMounted, computed, nextTick } from 'vue'
import { ElMessage, ElMessageBox } from 'element-plus' import { ElMessage, ElMessageBox } from 'element-plus'
import { MoreFilled } from '@element-plus/icons-vue' import { MoreFilled } from '@element-plus/icons-vue'
import { import {
newQueryCommissionExpectedByPage,
receivedFortuneList, receivedFortuneList,
updateCommissionExpected, updateCommissionExpected,
commissionEntryEditRecords, commissionEntryEditRecords,
...@@ -313,6 +332,12 @@ const commissionBizTypeOptions = [ ...@@ -313,6 +332,12 @@ const commissionBizTypeOptions = [
{ value: 'R', label: '关联保单应收单' }, { value: 'R', label: '关联保单应收单' },
{ value: 'U', label: '非关联保单应收单' } { value: 'U', label: '非关联保单应收单' }
] ]
//是否实收
const typeOptions = [
{ value: 1, label: '预计' },
{ value: 2, label: '实收' }
]
const editStatus = ref('add') const editStatus = ref('add')
// 新增应收款管理 // 新增应收款管理
...@@ -351,10 +376,11 @@ const addReceivablesFormConfig = [ ...@@ -351,10 +376,11 @@ const addReceivablesFormConfig = [
visible: formData => formData.commissionBizType === 'R', visible: formData => formData.commissionBizType === 'R',
rules: [{ pattern: /^\d+$/, message: '只能输入正整数', trigger: 'blur' }] rules: [{ pattern: /^\d+$/, message: '只能输入正整数', trigger: 'blur' }]
}, },
// 等待key
{ {
type: 'date', type: 'month',
prop: 'commissionDate', prop: 'commissionDateMonth',
label: '入账(估)', label: '入账(估)',
placeholder: '请选择' placeholder: '请选择'
}, },
// { // {
...@@ -403,7 +429,7 @@ const addReceivablesFormConfig = [ ...@@ -403,7 +429,7 @@ const addReceivablesFormConfig = [
}, },
{ {
type: 'select', type: 'select',
prop: 'reconciliationCompanyBizId', prop: 'reconciliationCompany',
label: '对账公司', label: '对账公司',
api: '/insurance/base/api/insuranceReconciliationCompany/page', api: '/insurance/base/api/insuranceReconciliationCompany/page',
keywordField: 'name', keywordField: 'name',
...@@ -423,15 +449,7 @@ const addReceivablesFormConfig = [ ...@@ -423,15 +449,7 @@ const addReceivablesFormConfig = [
}, },
{ {
type: 'input', type: 'input',
prop: 'exchangeRate', prop: 'manualRemark',
label: '结算汇率',
inputType: 'decimal',
rules: [{ required: true, message: '只能输入正整数和小数', trigger: 'blur' }]
// defaultValue: 1
},
{
type: 'input',
prop: 'remark',
label: '备注' label: '备注'
} }
] ]
...@@ -444,7 +462,6 @@ const resetAddReceivablesForm = () => { ...@@ -444,7 +462,6 @@ const resetAddReceivablesForm = () => {
const handleConfirmAddReceivables = async () => { const handleConfirmAddReceivables = async () => {
if (editStatus.value === 'add') { if (editStatus.value === 'add') {
const p = addRecordRef.value.getFormData() const p = addRecordRef.value.getFormData()
try { try {
await addReceivedFortune({ await addReceivedFortune({
commissionExpectedAddDtoList: [p] commissionExpectedAddDtoList: [p]
...@@ -466,6 +483,7 @@ const handleConfirmAddReceivables = async () => { ...@@ -466,6 +483,7 @@ const handleConfirmAddReceivables = async () => {
ElMessage.success('应收款修改成功') ElMessage.success('应收款修改成功')
addReceivablesDialogVisible.value = false addReceivablesDialogVisible.value = false
resetAddReceivablesForm() resetAddReceivablesForm()
receivedFortuneListData()
loadTableData() // 重新加载表格 loadTableData() // 重新加载表格
} else { } else {
ElMessage.error(res.msg || '应收款修改失败') ElMessage.error(res.msg || '应收款修改失败')
...@@ -621,13 +639,33 @@ const getCommissionBizTypeLabel = value => { ...@@ -621,13 +639,33 @@ const getCommissionBizTypeLabel = value => {
const item = commissionBizTypeOptions.find(item => item.value === value) const item = commissionBizTypeOptions.find(item => item.value === value)
return item?.label || '' return item?.label || ''
} }
// 是否实收通过value转成label
const getTypeLabel = value => {
const item = typeOptions.find(item => item.value === value)
return item?.label || ''
}
// 表格操作菜单 // 表格操作菜单
const dropdownItems = [ const dropdownItems = [
{ label: '入账记录', value: 'entryRecord' }, // { label: '入账记录', value: 'entryRecord' },
{ label: '设置状态', value: 'setStatus' }, { label: '设置状态', value: 'setStatus' },
{ label: '更新数据', value: 'updateData' } { label: '更新数据', value: 'updateData' }
] ]
// 动态生成操作菜单项(根据行数据)
const getOperateItems = row => {
const items = []
// 条件:isPart == 1 时不显示分期出账(使用宽松相等,兼容字符串 '1')
if (row.type == 1) {
items.push({ label: '设置状态', value: 'setStatus' })
items.push({ label: '更新数据', value: 'updateData' })
}
// 始终显示的菜单项(保持原始顺序)
// items.push({ label: '设置出账年月(实)', value: 'settingBillYearMonth' })
return items
}
// 弹窗状态 // 弹窗状态
const entryRecordDialogTableVisible = ref(false) const entryRecordDialogTableVisible = ref(false)
...@@ -733,11 +771,6 @@ const handleCurrentChange = val => { ...@@ -733,11 +771,6 @@ const handleCurrentChange = val => {
// 加载表格数据 // 加载表格数据
const loadTableData = async () => { const loadTableData = async () => {
const searchParams = searchFormRef.value.getFormData() || {} const searchParams = searchFormRef.value.getFormData() || {}
// let msg = validateEnglish2(searchParams.eng)
// if (searchParams.eng && msg) {
// ElMessage.error(`投保人(英文):${msg}`)
// return
// }
loading.value = true loading.value = true
try { try {
console.log('searchParams.entryDate', searchParams.entryDate) console.log('searchParams.entryDate', searchParams.entryDate)
...@@ -917,6 +950,7 @@ const handleConfirmSetStatus = () => { ...@@ -917,6 +950,7 @@ const handleConfirmSetStatus = () => {
if (res.code === 200) { if (res.code === 200) {
ElMessage.success('状态修改成功') ElMessage.success('状态修改成功')
setStatusDialogTableVisible.value = false setStatusDialogTableVisible.value = false
receivedFortuneListData()
loadTableData() // 重新加载表格 loadTableData() // 重新加载表格
} else { } else {
ElMessage.error(res.msg || '状态修改失败') ElMessage.error(res.msg || '状态修改失败')
...@@ -956,7 +990,6 @@ const receivableReportTableColumns = ref([ ...@@ -956,7 +990,6 @@ const receivableReportTableColumns = ref([
fixed: 'left', fixed: 'left',
formatter: row => row.policyNo || '-' formatter: row => row.policyNo || '-'
}, },
{ {
prop: 'reconciliationCompany', prop: 'reconciliationCompany',
label: '对账公司', label: '对账公司',
...@@ -1088,6 +1121,13 @@ const receivableReportTableColumns = ref([ ...@@ -1088,6 +1121,13 @@ const receivableReportTableColumns = ref([
// 应收明细 // 应收明细
const receivableReportItemTableColumns = ref([ const receivableReportItemTableColumns = ref([
{ {
prop: 'type',
label: '是否实收',
sortable: true,
width: '80',
formatter: row => getTypeLabel(row.type) || '-'
},
{
prop: 'commissionBizType', prop: 'commissionBizType',
label: '应收单类型', label: '应收单类型',
sortable: true, sortable: true,
...@@ -1095,12 +1135,19 @@ const receivableReportItemTableColumns = ref([ ...@@ -1095,12 +1135,19 @@ const receivableReportItemTableColumns = ref([
formatter: row => getCommissionBizTypeLabel(row.commissionBizType) || '-' formatter: row => getCommissionBizTypeLabel(row.commissionBizType) || '-'
}, },
{ {
prop: 'receivableNo', prop: 'no',
label: '应收编号', label: '应收编号',
sortable: true, sortable: true,
width: '150', width: '150',
formatter: row => row.receivableNo || '-' formatter: row => row.no || '-'
}, },
// {
// prop: 'receivableNo',
// label: '应收款编号',
// sortable: true,
// width: '150',
// formatter: row => row.receivableNo || '-'
// },
{ {
prop: 'policyNo', prop: 'policyNo',
label: '保单号', label: '保单号',
...@@ -1126,14 +1173,14 @@ const receivableReportItemTableColumns = ref([ ...@@ -1126,14 +1173,14 @@ const receivableReportItemTableColumns = ref([
prop: 'commissionPeriod', prop: 'commissionPeriod',
label: '入账期数', label: '入账期数',
sortable: true, sortable: true,
width: '120', width: '80',
formatter: row => row.commissionPeriod || '-' formatter: row => row.commissionPeriod || '-'
}, },
{ {
prop: 'totalPeriod', prop: 'totalPeriod',
label: '入账总期数', label: '入账总期数',
sortable: true, sortable: true,
width: '120', width: '100',
formatter: row => row.totalPeriod || '-' formatter: row => row.totalPeriod || '-'
}, },
{ {
...@@ -1144,13 +1191,28 @@ const receivableReportItemTableColumns = ref([ ...@@ -1144,13 +1191,28 @@ const receivableReportItemTableColumns = ref([
formatter: row => row.commissionName || '-' formatter: row => row.commissionName || '-'
}, },
{ {
prop: 'commissionDateMonth',
label: '入账年月(估)',
sortable: true,
width: '120',
formatter: row => row.commissionDateMonth || '-'
},
{
prop: 'commissionDate', prop: 'commissionDate',
label: '入账日(估)', label: '入账年月(实)',
sortable: true, sortable: true,
width: '130', width: '120',
formatter: row => row.commissionDate || '-' formatter: row => row.commissionDate || '-'
}, },
{ {
prop: 'totalRevenueRatio',
label: '累积达成率(%)',
sortable: true,
width: '130',
formatter: row => (row.totalRevenueRatio || 0) + '%' || '-'
},
{
prop: 'commissionRatio', prop: 'commissionRatio',
label: '产品对应来佣率', label: '产品对应来佣率',
sortable: true, sortable: true,
...@@ -1158,32 +1220,46 @@ const receivableReportItemTableColumns = ref([ ...@@ -1158,32 +1220,46 @@ const receivableReportItemTableColumns = ref([
formatter: row => (row.commissionRatio || 0) + '%' || '-' formatter: row => (row.commissionRatio || 0) + '%' || '-'
}, },
{ {
prop: 'expectedAmount', prop: 'realRate',
label: '预估入账金额', label: '实佣率',
sortable: true, sortable: true,
width: '120', width: '120',
formatter: row => formatCurrency(row.expectedAmount || 0) formatter: row => (row.realRate || 0) + '%' || '-'
}, },
{ {
prop: 'paidRatio', prop: 'gapRate',
label: '实佣率', label: '达成率缺口',
sortable: true, sortable: true,
width: '120', width: '120',
formatter: row => (row.paidRatio || 0) + '%' || '-' formatter: row => (row.gapRate || 0) + '%' || '-'
}, },
{ {
prop: 'paidAmount', prop: 'realExchangeRate',
label: '结算汇率实',
sortable: true,
width: '120',
formatter: row => row.realExchangeRate || '-'
},
{
prop: 'realAmount',
label: '已入账金额', label: '已入账金额',
sortable: true, sortable: true,
width: '120', width: '120',
formatter: row => formatCurrency(row.paidAmount || 0) formatter: row => row.realAmount || '-'
}, },
{ {
prop: 'pendingRatio', prop: 'realReconciliationYearMonth',
label: '实佣率缺口', label: '检核年月',
sortable: true, sortable: true,
width: '120', width: '120',
formatter: row => (row.pendingRatio || 0) + '%' || '-' formatter: row => row.realReconciliationYearMonth || '-'
},
{
prop: 'revenueRatio',
label: '本次入账比例',
sortable: true,
width: '120',
formatter: row => (row.revenueRatio || 0) + '%' || '-'
}, },
{ {
prop: 'pendingAmount', prop: 'pendingAmount',
...@@ -1192,7 +1268,20 @@ const receivableReportItemTableColumns = ref([ ...@@ -1192,7 +1268,20 @@ const receivableReportItemTableColumns = ref([
width: '120', width: '120',
formatter: row => formatCurrency(row.pendingAmount || 0) formatter: row => formatCurrency(row.pendingAmount || 0)
}, },
{ prop: 'defaultExchangeRate', label: '结算汇率(估)', sortable: true, width: '120' }, {
prop: 'expectedAmount',
label: '预计入账金额',
sortable: true,
width: '120',
formatter: row => formatCurrency(row.expectedAmount || 0)
},
{
prop: 'defaultExchangeRate',
label: '结算汇率估',
sortable: true,
width: '120',
formatter: row => row.defaultExchangeRate || '-'
},
{ {
prop: 'insuranceCompany', prop: 'insuranceCompany',
label: '保险公司', label: '保险公司',
...@@ -1208,11 +1297,11 @@ const receivableReportItemTableColumns = ref([ ...@@ -1208,11 +1297,11 @@ const receivableReportItemTableColumns = ref([
formatter: row => row.productName || '-' formatter: row => row.productName || '-'
}, },
{ {
prop: 'premium', prop: 'issueNumber',
label: '期交保费', label: '年期',
sortable: true, sortable: true,
width: '120', width: '80',
formatter: row => formatCurrency(row.premium || 0) formatter: row => row.issueNumber || '-'
}, },
{ {
prop: 'policyCurrency', prop: 'policyCurrency',
...@@ -1222,18 +1311,18 @@ const receivableReportItemTableColumns = ref([ ...@@ -1222,18 +1311,18 @@ const receivableReportItemTableColumns = ref([
formatter: row => row.policyCurrency || '-' formatter: row => row.policyCurrency || '-'
}, },
{ {
prop: 'currency', prop: 'premium',
label: '入账币种', label: '期交保费',
sortable: true, sortable: true,
width: '120', width: '120',
formatter: row => row.currency || '-' formatter: row => formatCurrency(row.premium || 0)
}, },
{ {
prop: 'statusDesc', prop: 'manualRemark',
label: '入账状态修改理由', label: '人工备注',
sortable: true, sortable: true,
width: '120', width: '120',
formatter: row => row.statusDesc || '-' formatter: row => row.manualRemark || '-'
}, },
{ {
prop: 'remark', prop: 'remark',
...@@ -1241,7 +1330,45 @@ const receivableReportItemTableColumns = ref([ ...@@ -1241,7 +1330,45 @@ const receivableReportItemTableColumns = ref([
sortable: true, sortable: true,
width: '120', width: '120',
formatter: row => row.remark || '-' formatter: row => row.remark || '-'
},
{
prop: 'realUpdaterName',
label: '操作人',
sortable: true,
width: '120',
formatter: row => row.realUpdaterName || '-'
},
{
prop: 'realUpdateTime',
label: '操作时间',
sortable: true,
width: '120',
formatter: row => row.realUpdateTime || '-'
} }
// {
// prop: 'pendingRatio',
// label: '实佣率缺口',
// sortable: true,
// width: '120',
// formatter: row => (row.pendingRatio || 0) + '%' || '-'
// },
// { prop: 'defaultExchangeRate', label: '结算汇率(估)', sortable: true, width: '120' },
// {
// prop: 'currency',
// label: '入账币种',
// sortable: true,
// width: '120',
// formatter: row => row.currency || '-'
// },
// {
// prop: 'statusDesc',
// label: '入账状态修改理由',
// sortable: true,
// width: '120',
// formatter: row => row.statusDesc || '-'
// },
]) ])
const detailRecordStatistics = ref({}) const detailRecordStatistics = ref({})
...@@ -1252,7 +1379,7 @@ const detailPageInfo = ref({ ...@@ -1252,7 +1379,7 @@ const detailPageInfo = ref({
total: 0 total: 0
}) })
// 获取入账报告 // 获取应收明细
const receivedFortuneListData = async () => { const receivedFortuneListData = async () => {
loading.value = true loading.value = true
try { try {
...@@ -1263,18 +1390,21 @@ const receivedFortuneListData = async () => { ...@@ -1263,18 +1390,21 @@ const receivedFortuneListData = async () => {
pageNo: detailPageInfo.value.currentPage, pageNo: detailPageInfo.value.currentPage,
pageSize: detailPageInfo.value.pageSize pageSize: detailPageInfo.value.pageSize
} }
const response = await receivedFortuneList(params) const response = await newQueryCommissionExpectedByPage(params)
receivableReportTableData.value = response.data.page.records || [] receivableReportTableData.value = response.data.page.records || []
detailPageInfo.value.total = response.data.page.total || 0 detailPageInfo.value.total = response.data.page.total || 0
detailPageInfo.value.pageSize = response.data.page.size || 50 detailPageInfo.value.pageSize = response.data.page.size || 50
// 统计信息 // 统计信息
detailRecordStatistics.value = { // detailRecordStatistics.value = {
totalAmount: response.data.expectedStatisticsVO.totalAmount, // totalAmount: response.data.expectedStatisticsVO.totalAmount,
totalPaidAmount: response.data.expectedStatisticsVO.totalPaidAmount, // totalPaidAmount: response.data.expectedStatisticsVO.totalPaidAmount,
pendingPaidAmount: response.data.expectedStatisticsVO.pendingPaidAmount, // pendingPaidAmount: response.data.expectedStatisticsVO.pendingPaidAmount,
paidAmountRatio: response.data.expectedStatisticsVO.paidAmountRatio, // paidAmountRatio: response.data.expectedStatisticsVO.paidAmountRatio,
totalPolicyCount: response.data.expectedStatisticsVO.totalPolicyCount, // totalPolicyCount: response.data.expectedStatisticsVO.totalPolicyCount,
totalPremium: response.data.expectedStatisticsVO.totalPremium // totalPremium: response.data.expectedStatisticsVO.totalPremium
// }
if (response.data.expectedStatisticsVO) {
detailRecordStatistics.value = response.data.expectedStatisticsVO
} }
} catch (error) { } catch (error) {
console.error('加载数据失败:', error) console.error('加载数据失败:', error)
...@@ -1299,6 +1429,16 @@ const handleCurrentChangeDetailRecord = val => { ...@@ -1299,6 +1429,16 @@ const handleCurrentChangeDetailRecord = val => {
detailPageInfo.value.currentPage = val detailPageInfo.value.currentPage = val
receivedFortuneListData() receivedFortuneListData()
} }
// 定义行类名方法
const getRowClassName = ({ row }) => {
// type == 1 表示“预计”,添加高亮类名
return row.type === 1 ? 'estimated-row' : ''
}
</script> </script>
<style scoped lang="scss"></style> <style scoped lang="scss">
/* 使用 :deep 穿透 scoped 样式,保证对 el-table__row 生效 */
:deep(.estimated-row) {
background-color: #f0f9ff; /* 浅蓝色,可根据需要修改 */
}
</style>
...@@ -232,7 +232,7 @@ import { ...@@ -232,7 +232,7 @@ import {
getItineraryExprot getItineraryExprot
} from '@/api/sign/appointment' } from '@/api/sign/appointment'
import useUserStore from '@/store/modules/user' import useUserStore from '@/store/modules/user'
import { copyToClipboard } from '@/utils/copyToClipboard' import copyToClipboard from '@/utils/copyToClipboard'
const dictStore = useDictStore() const dictStore = useDictStore()
const userStore = useUserStore() const userStore = useUserStore()
const router = useRouter() const router = useRouter()
......
...@@ -151,7 +151,7 @@ import { ...@@ -151,7 +151,7 @@ import {
saveInitialPayment, saveInitialPayment,
updatePolicyProduct updatePolicyProduct
} from '@/api/sign/underwritingMain' } from '@/api/sign/underwritingMain'
import { copyToClipboard } from '@/utils/copyToClipboard' import copyToClipboard from '@/utils/copyToClipboard';
import PolicyDetail from './policyDetail.vue' import PolicyDetail from './policyDetail.vue'
const policyDetailFormRef = ref(null) const policyDetailFormRef = ref(null)
const policyDetailFormData = ref({}) const policyDetailFormData = ref({})
......
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