Commit 9d0b34ab by yuzhenWang

Merge branch 'test' into 'feature-20250827wyz-写业务'

Test

See merge request !91
parents 66f2ec3f 330ef011
...@@ -21,17 +21,19 @@ ...@@ -21,17 +21,19 @@
"@element-plus/icons-vue": "^2.3.1", "@element-plus/icons-vue": "^2.3.1",
"@vueup/vue-quill": "1.2.0", "@vueup/vue-quill": "1.2.0",
"@vueuse/core": "13.3.0", "@vueuse/core": "13.3.0",
"ali-oss": "^6.23.0",
"axios": "1.9.0", "axios": "1.9.0",
"clipboard": "2.0.11", "clipboard": "2.0.11",
"dayjs": "^1.11.18", "dayjs": "^1.11.18",
"echarts": "5.6.0", "echarts": "5.6.0",
"element-plus": "^2.9.9", "element-plus": "^2.13.5",
"file-saver": "2.0.5", "file-saver": "2.0.5",
"fuse.js": "6.6.2", "fuse.js": "6.6.2",
"js-beautify": "1.14.11", "js-beautify": "1.14.11",
"js-cookie": "3.0.5", "js-cookie": "3.0.5",
"jsencrypt": "3.3.2", "jsencrypt": "3.3.2",
"nprogress": "0.2.0", "nprogress": "0.2.0",
"p-limit": "^7.3.0",
"pinia": "3.0.2", "pinia": "3.0.2",
"spark-md5": "^3.0.2", "spark-md5": "^3.0.2",
"splitpanes": "^4.0.4", "splitpanes": "^4.0.4",
......
...@@ -221,3 +221,19 @@ export function insuranceReconciliationCompany(data) { ...@@ -221,3 +221,19 @@ export function insuranceReconciliationCompany(data) {
method: 'post' method: 'post'
}) })
} }
// 获取STS凭证
export function getStstoken(projectBizId) {
return request({
url: `/oss/api/sts/sts-token?projectBizId=${projectBizId}`,
method: 'get'
})
}
// 大文件分片上传接口
export function batchSaveFiles(data) {
return request({
url: '/oss/api/sts/batch/save/files',
data: data,
method: 'post'
})
}
...@@ -197,14 +197,7 @@ export function incomeEditRecords(data) { ...@@ -197,14 +197,7 @@ export function incomeEditRecords(data) {
data: data data: data
}) })
} }
// 入账管理比对记录列表
export function incomeCompareRecords(data) {
return request({
url: '/csf/api/commission/compare/records',
method: 'post',
data: data
})
}
// 保单号列表 // 保单号列表
export function policyData(data) { export function policyData(data) {
return request({ return request({
......
// 格式化金额为货币格式 // 格式化金额为货币格式
export function formatCurrency(value, currency = '') { export function formatCurrency(value, currency = '',fixedDigits = 2) {
if (value === undefined || value === null) return currency + '0.00' if (value === undefined || value === null) return currency + '0.00'
return currency + value.toFixed(2).replace(/\d(?=(\d{3})+\.)/g, '$&,') return currency + value.toFixed(fixedDigits).replace(/\d(?=(\d{3})+\.)/g, '$&,')
} }
// 数字格式化 // 数字格式化
export function numberFormat(value, item) { export function numberFormat(value, item) {
......
...@@ -20,78 +20,24 @@ ...@@ -20,78 +20,24 @@
<!-- 统计信息卡片 v-if="statisticsData.totalInAmount > 0"--> <!-- 统计信息卡片 v-if="statisticsData.totalInAmount > 0"-->
<div class="statistics-container"> <div class="statistics-container">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :xs="24" :sm="12" :md="4" :lg="4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-card shadow="hover" class="statistics-card"> <el-statistic title="入账金额" :value="statisticsData.totalInAmount" :formatter="value=>formatCurrency(value)" />
<div class="card-content">
<div class="card-label">入账金额</div>
<div class="card-value">
{{
statisticsData.totalInAmount
? formatCurrency(statisticsData.totalInAmount)
: 0
}}
</div>
</div>
</el-card>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="4" :lg="4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-card shadow="hover" class="statistics-card"> <el-statistic title="总保单数" :value="statisticsData.totalPolicyCount" />
<div class="card-content">
<div class="card-label">总保单数</div>
<div class="card-value">
{{ statisticsData.totalPolicyCount ? statisticsData.totalPolicyCount : 0 }}
</div>
</div>
</el-card>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="4" :lg="4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-card shadow="hover" class="statistics-card"> <el-statistic title="总保费(HKD)" :value="statisticsData.totalPremium" :formatter="value=>formatCurrency(value)" />
<div class="card-content">
<div class="card-label">总保费(HKD)</div>
<div class="card-value">
{{
statisticsData.totalPremium ? formatCurrency(statisticsData.totalPremium) : 0
}}
</div>
</div>
</el-card>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="4" :lg="4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-card shadow="hover" class="statistics-card"> <el-statistic title="待出账金额" :value="statisticsData.pendingOutAmount" :formatter="value=>formatCurrency(value)" />
<div class="card-content">
<div class="card-label">待出账金额</div>
<div class="card-value">
{{
statisticsData.pendingOutAmount
? formatCurrency(statisticsData.pendingOutAmount)
: 0
}}
</div>
</div>
</el-card>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="4" :lg="4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-card shadow="hover" class="statistics-card"> <el-statistic title="可出账金额" :value="statisticsData.availableOutAmount" :formatter="value=>formatCurrency(value)" />
<div class="card-content"> </el-col>
<div class="card-label">可出账金额</div> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<div class="card-value"> <el-statistic title="差额(估)" :value="statisticsData.differenceAmount" :formatter="value=>formatCurrency(value)" />
{{
statisticsData.availableOutAmount
? formatCurrency(statisticsData.availableOutAmount)
: 0
}}
</div>
</div>
</el-card>
</el-col> </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">{{ statisticsData.differenceAmount ? formatCurrency(statisticsData.differenceAmount) : 0 }}</div>
</div>
</el-card>
</el-col> -->
</el-row> </el-row>
</div> </div>
<el-table <el-table
...@@ -120,7 +66,7 @@ ...@@ -120,7 +66,7 @@
/> />
<el-table-column <el-table-column
prop="commissionPaidRatio" prop="commissionPaidRatio"
label="累积已入账比例" label="累积实佣率"
width="120" width="120"
sortable sortable
:formatter="row => `${row.commissionPaidRatio ? row.commissionPaidRatio : 0}%`" :formatter="row => `${row.commissionPaidRatio ? row.commissionPaidRatio : 0}%`"
......
...@@ -12,80 +12,43 @@ ...@@ -12,80 +12,43 @@
<!-- 统计信息卡片 --> <!-- 统计信息卡片 -->
<div class="statistics-container" v-if="statisticsData.totalPolicyCount > 0"> <div class="statistics-container" v-if="statisticsData.totalPolicyCount > 0">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :xs="24" :sm="12" :md="4" :lg="4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-card shadow="hover" class="statistics-card"> <el-statistic title="总保单数" :value="statisticsData.totalPolicyCount" />
<div class="card-content">
<div class="card-label">总保单数</div>
<div class="card-value">{{ statisticsData.totalPolicyCount }}</div>
</div>
</el-card>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="4" :lg="4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-card shadow="hover" class="statistics-card"> <el-statistic title="总保费(HKD)" :value="statisticsData.totalPremium" :formatter="value=>formatCurrency(value)" />
<div class="card-content">
<div class="card-label">总保费(HKD)</div>
<div class="card-value">{{ formatCurrency(statisticsData.totalPremium) }}</div>
</div>
</el-card>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="4" :lg="4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-card shadow="hover" class="statistics-card"> <el-statistic title="对账公司数" :value="statisticsData.reconciliationCompanyCount" />
<div class="card-content">
<div class="card-label">对账公司数</div>
<div class="card-value">{{ statisticsData.reconciliationCompanyCount }}</div>
</div>
</el-card>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="4" :lg="4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-card shadow="hover" class="statistics-card"> <el-statistic title="比对记录总条数" :value="statisticsData.totalCompareCommissionCount" />
<div class="card-content">
<div class="card-label">比对记录总条数</div>
<div class="card-value">{{ statisticsData.totalCompareCommissionCount }}</div>
</div>
</el-card>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="4" :lg="4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-card shadow="hover" class="statistics-card"> <el-statistic title="比对成功数" :value="statisticsData.successCompareCommissionCount" />
<div class="card-content">
<div class="card-label">比对成功数</div>
<div class="card-value">{{ statisticsData.successCompareCommissionCount }}</div>
</div>
</el-card>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="4" :lg="4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-card shadow="hover" class="statistics-card"> <el-statistic title="比对失败数" :value="statisticsData.failedCompareCommissionCount" />
<div class="card-content">
<div class="card-label">比对失败数</div>
<div class="card-value">{{ statisticsData.failedCompareCommissionCount }}</div>
</div>
</el-card>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="4" :lg="4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-card shadow="hover" class="statistics-card"> <el-statistic title="入账金额(实)" :value="statisticsData.totalPaidAmount" :formatter="value=>formatCurrency(value)" />
<div class="card-content">
<div class="card-label">入账金额(实)</div>
<div class="card-value">{{ formatCurrency(statisticsData.totalPaidAmount) }}</div>
</div>
</el-card>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="4" :lg="4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-card shadow="hover" class="statistics-card"> <el-statistic title="入账金额(估)" :value="statisticsData.expectePaidAmount" :formatter="value=>formatCurrency(value)" />
<div class="card-content">
<div class="card-label">入账金额(估)</div>
<div class="card-value">{{ formatCurrency(statisticsData.expectePaidAmount) }}</div>
</div>
</el-card>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="4" :lg="4"> <el-col :xs="24" :sm="12" :md="4" class="text-center mb-4">
<el-card shadow="hover" class="statistics-card"> <el-statistic title="差额(估)" :value="statisticsData.differenceAmount" :formatter="value=>formatCurrency(value)" />
<div class="card-content">
<div class="card-label">差额(估)</div>
<div class="card-value">{{ formatCurrency(statisticsData.differenceAmount) }}</div>
</div>
</el-card>
</el-col> </el-col>
</el-row> </el-row>
</div> </div>
<el-row>
<el-col :span="4">
<el-text tag="mark" class="mx-1">实佣率=实际入账金额/结算汇率/每期保费</el-text>
</el-col>
<el-col :span="6">
<el-text tag="mark" class="mx-1"> 达成率缺口= 1 - 本期实佣率/产品本期来佣率</el-text>
</el-col>
</el-row>
<el-table :data="tableData" ref="multipleTableRef" height="400" row-key="id" border highlight-current-row <el-table :data="tableData" ref="multipleTableRef" height="400" row-key="id" border highlight-current-row
style="width: 100%" v-loading="loading" @selection-change="handleSelectionChange"> style="width: 100%" v-loading="loading" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="40" :selectable="selectableFn" /> <el-table-column type="selection" width="40" :selectable="selectableFn" />
...@@ -108,9 +71,9 @@ ...@@ -108,9 +71,9 @@
{{ selectDictLabel(csf_expected_commission_status, row.commissionExpectedStatus) }} {{ selectDictLabel(csf_expected_commission_status, row.commissionExpectedStatus) }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="currentCommissionRatio" label="本次入账比例" width="130" sortable :formatter="formatRatio" /> <el-table-column prop="currentCommissionRatio" label="本次实佣率" width="130" sortable :formatter="formatRatio" />
<el-table-column prop="paidRatio" label="累积入账比例" width="130" sortable :formatter="formatRatio" /> <el-table-column prop="paidRatio" label="累积实佣率" width="130" sortable :formatter="formatRatio" />
<el-table-column prop="pendingRatio" label="待入账比例" width="120" sortable :formatter="formatRatio" /> <el-table-column prop="pendingRatio" label="达成率缺口" width="120" sortable :formatter="formatRatio" />
<el-table-column prop="amount" label="本次入账金额" width="130" sortable :formatter="formatCurrencyUtil" /> <el-table-column prop="amount" label="本次入账金额" width="130" sortable :formatter="formatCurrencyUtil" />
<el-table-column prop="currency" label="入账币种" width="120" sortable /> <el-table-column prop="currency" label="入账币种" width="120" sortable />
<el-table-column prop="exchangeRate" label="结算汇率(实)" width="140" sortable /> <el-table-column prop="exchangeRate" label="结算汇率(实)" width="140" sortable />
...@@ -310,12 +273,14 @@ const downloadTemplate = () => { ...@@ -310,12 +273,14 @@ const downloadTemplate = () => {
link.download = '入账检核导入模板.xlsx' // 设置下载文件名 link.download = '入账检核导入模板.xlsx' // 设置下载文件名
link.click() // 自动触发点击,无需 append 到 DOM(现代浏览器支持) link.click() // 自动触发点击,无需 append 到 DOM(现代浏览器支持)
} }
const formatRatio = (row, column, cellValue, index) => { const formatRatio = (row, column, cellValue, index) => {
if (cellValue == null || cellValue == '' || cellValue == 0) { if (cellValue == null || cellValue == '' && cellValue !== 0) {
return '-' return '-'
} }
return cellValue + '%' return cellValue + '%'
} }
const formatCurrencyUtil = (row, column, cellValue, index) => { const formatCurrencyUtil = (row, column, cellValue, index) => {
if (cellValue == null || cellValue == '' || cellValue == 0) { if (cellValue == null || cellValue == '' || cellValue == 0) {
return '-' return '-'
......
...@@ -192,10 +192,17 @@ ...@@ -192,10 +192,17 @@
:showAction="true" :showAction="true"
:showClose="true" :showClose="true"
@close="((fileUploadDialogFlag = false), (files = ''))" @close="((fileUploadDialogFlag = false), (files = ''))"
@confirm="((fileUploadDialogFlag = false), (files = ''))" @confirm="handleDialogClose"
> >
<!-- <FileUploader/> --> <FileUploader
<FileUpload :tenant-biz-id="userStore.projectInfo.tenantBizId"
:project-biz-id="userStore.projectInfo.projectBizId"
:object-biz-id="props.policyBizId"
:object-type="'DOCUMENT'"
:upload-concurrency="3"
ref="uploaderRef"
/>
<!-- <FileUpload
v-model="files" v-model="files"
:data="{ obiectTableName: 'policy_follow', objectBizId: props.policyBizId }" :data="{ obiectTableName: 'policy_follow', objectBizId: props.policyBizId }"
:file-type="['xlsx', 'xls', 'doc', 'docx', 'pdf', 'txt', 'jpg', 'jpeg', 'png', 'gif']" :file-type="['xlsx', 'xls', 'doc', 'docx', 'pdf', 'txt', 'jpg', 'jpeg', 'png', 'gif']"
...@@ -204,7 +211,7 @@ ...@@ -204,7 +211,7 @@
:fileSize="15" :fileSize="15"
:name="'files'" :name="'files'"
@uploadEnd="handleUploadEnd" @uploadEnd="handleUploadEnd"
/> /> -->
</CommonDialog> </CommonDialog>
</div> </div>
</template> </template>
...@@ -266,7 +273,17 @@ const props = defineProps({ ...@@ -266,7 +273,17 @@ const props = defineProps({
default: '' default: ''
} }
}) })
const uploaderRef = ref(null);
// 【关键】当弹窗关闭时,强制清空上传组件列表
const handleDialogClose = () => {
if (uploaderRef.value) {
// 调用子组件暴露的清空方法
// 你需要在子组件中使用 defineExpose 暴露 clearList 方法
uploaderRef.value.clearList();
fileUploadDialogFlag.value = false
getAttachmentListDetail(props.policyBizId)
}
};
const emit = defineEmits(['update:modelValue', 'submit', 'cancel', 'saveRow']) const emit = defineEmits(['update:modelValue', 'submit', 'cancel', 'saveRow'])
const introducerTableData = ref([]) const introducerTableData = ref([])
...@@ -896,7 +913,7 @@ const attachmentTableColumns = ref([ ...@@ -896,7 +913,7 @@ const attachmentTableColumns = ref([
prop: 'originalName', prop: 'originalName',
label: '文件名', label: '文件名',
sortable: true, sortable: true,
width: '150', width: '300',
formatter: row => row.originalName || '-' formatter: row => row.originalName || '-'
}, },
{ {
...@@ -910,8 +927,8 @@ const attachmentTableColumns = ref([ ...@@ -910,8 +927,8 @@ const attachmentTableColumns = ref([
prop: 'createTime', prop: 'createTime',
label: '上传时间', label: '上传时间',
sortable: true, sortable: true,
width: '150', width: '200',
formatter: row => row.createTime || '-' formatter: row => formatToDateTime(row.createTime || '-')
}, },
{ {
prop: 'creatorName', prop: 'creatorName',
......
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