保存进度!
This commit is contained in:
@@ -7,7 +7,7 @@
|
||||
*
|
||||
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||
*/
|
||||
import { service as instance } from "./api/request.js";
|
||||
import { service as instance, service } from "./api/request.js";
|
||||
import { API_URL } from "./api/config.js";
|
||||
import { type AxiosResponse } from "axios";
|
||||
interface BIReportType
|
||||
@@ -16,6 +16,9 @@ interface BIReportType
|
||||
reportTypeName: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入报表的请求对象
|
||||
*/
|
||||
interface ImportBIReportRequest
|
||||
{
|
||||
filePath: string,
|
||||
@@ -24,33 +27,59 @@ interface ImportBIReportRequest
|
||||
sheetIndex: number,
|
||||
}
|
||||
|
||||
/**
|
||||
* 导入报表的相应对象
|
||||
*/
|
||||
interface ImportBIReportResponse
|
||||
{
|
||||
success: boolean,
|
||||
message: string,
|
||||
importedCount: number,
|
||||
success: boolean, // 请求成功标志
|
||||
message: string, // 请求结果说明
|
||||
importedCount: number, // 导入记录的数量
|
||||
}
|
||||
|
||||
// BI坐席渗透率报表记录
|
||||
interface BITelsalerAttachingRateReportRecord
|
||||
interface BITelsalerAttachingRateRecord
|
||||
{
|
||||
departmentName: string;
|
||||
telsalerName: string;
|
||||
motoPremium: number;
|
||||
nomotoPremium: number;
|
||||
attachingRatePresentMonth: number;
|
||||
attachingRateChange: number;
|
||||
departmentName: string; // 部门
|
||||
telsalerName: string; // 经办人
|
||||
motoPremium: number; // 车险保费
|
||||
nomotoPremium: number; // 非车险保费
|
||||
motoPremiumProportion: number; // 车险保费占比
|
||||
attachingRate: number; // 保费渗透率
|
||||
attachingRateChange: number; // 渗透率环比上月
|
||||
customerHandleRate: number; // 当月客户渗透率
|
||||
customerHandleRateChange: number; // 客户渗透率环比上月
|
||||
noMotoPremiumPerCustomer: number; // 当月车非客均保费
|
||||
noMotoPremiumPerCustomerChange: number; // 客均保费环比上月
|
||||
}
|
||||
|
||||
interface QueryBITelsalerAttachingRateReportResponse
|
||||
{
|
||||
success: boolean,
|
||||
message: string,
|
||||
records: BITelsalerAttachingRateReportRecord[];
|
||||
records: BITelsalerAttachingRateRecord[];
|
||||
}
|
||||
|
||||
type ImportBIReportResponseHandler = ( response: ImportBIReportResponse, error?: any ) => void;
|
||||
/**
|
||||
* BI坐席续保率报表记录
|
||||
*/
|
||||
interface BITelsalerRenewalRateRecord
|
||||
{
|
||||
责任部门: string;
|
||||
责任人: string;
|
||||
机构目标值: number;
|
||||
到期数全月: number;
|
||||
序时到期数占比: number;
|
||||
个车续保率序时: number;
|
||||
个车续保率全月: number;
|
||||
环比昨日: number;
|
||||
环比上月: number;
|
||||
平均提前签单天数: number;
|
||||
环比: number;
|
||||
}
|
||||
|
||||
type ImportBIReportResponseHandler = ( response: ImportBIReportResponse, error: any ) => void;
|
||||
type QueryBITelsalerAttachingRateDataHandler = ( response: QueryBITelsalerAttachingRateReportResponse, error: any ) => void;
|
||||
/**
|
||||
*
|
||||
* @param request 请求参数
|
||||
@@ -88,12 +117,49 @@ function importBIReport( request: ImportBIReportRequest, handler: any ): void
|
||||
});
|
||||
}
|
||||
|
||||
function queryBITelsalerAttachingRateData( handler: QueryBITelsalerAttachingRateDataHandler ): void
|
||||
{
|
||||
const queryResponse: QueryBITelsalerAttachingRateReportResponse = {
|
||||
success: false,
|
||||
message: "",
|
||||
records: [],
|
||||
};
|
||||
|
||||
instance.request({
|
||||
url: API_URL.URL_BI_TELSALER_ATTACHINGRATE,
|
||||
method: "post",
|
||||
})
|
||||
.then(( response: AxiosResponse<any, any> ): void =>
|
||||
{
|
||||
const data = response.data ?? {};
|
||||
|
||||
queryResponse.success = data.success ?? false;
|
||||
queryResponse.message = data.message ?? "";
|
||||
queryResponse.records = data.records ?? [];
|
||||
|
||||
console.log( "请求BI坐席渗透率数据", queryResponse );
|
||||
handler( queryResponse, null );
|
||||
})
|
||||
.catch(( error ): void =>
|
||||
{
|
||||
queryResponse.message = "请求BI坐席渗漏率报表数据时出现错误,请查看控制台消息!";
|
||||
queryResponse.success = false;
|
||||
|
||||
console.log( error );
|
||||
|
||||
handler( queryResponse, error );
|
||||
});
|
||||
}
|
||||
|
||||
export {
|
||||
type BIReportType,
|
||||
type ImportBIReportRequest,
|
||||
type ImportBIReportResponse,
|
||||
type ImportBIReportResponseHandler,
|
||||
type BITelsalerAttachingRateReportRecord,
|
||||
type BITelsalerAttachingRateRecord,
|
||||
type QueryBITelsalerAttachingRateReportResponse,
|
||||
importBIReport
|
||||
type QueryBITelsalerAttachingRateDataHandler,
|
||||
type BITelsalerRenewalRateRecord,
|
||||
importBIReport,
|
||||
queryBITelsalerAttachingRateData
|
||||
};
|
||||
|
@@ -50,6 +50,13 @@ const API_URL = {
|
||||
// 导入报表
|
||||
URL_IMPORT_REPORT: "http://10.39.0.41:8081/desktop_archievement_backend/import_bi_data/excel.do",
|
||||
// URL_IMPORT_REPORT: "http://222.76.244.118:11101/desktop_archievement_backend/import_bi_data/excel.do",
|
||||
|
||||
// 请求BI报表数据
|
||||
// URL_BI_TELSALER_ATTACHINGRATE: "http://localhost:8080/desktop_archievement_backend/archievement/bi_telsaler_attachingrate.do",
|
||||
URL_BI_TELSALER_ATTACHINGRATE: "http://10.39.0.41:8081/desktop_archievement_backend/archievement/bi_telsaler_attachingrate.do",
|
||||
URL_BI_TELSALER_RENEWALRATE: "http://10.39.0.41:8081/desktop_archievement_backend/archievement/bi_telsaler_renewalrate.do",
|
||||
URL_BI_DEPARTMENT_ATTACHINGRATE: "http://10.39.0.41:8081/desktop_archievement_backend/archievement/bi_department_attachingrate.do",
|
||||
URL_BI_DEPARTMENT_RENEWALRATE: "http://10.39.0.41:8081/desktop_archievement_backend/archievement/bi_department_renewalrate.do",
|
||||
};
|
||||
|
||||
export { API_URL };
|
||||
|
@@ -18,43 +18,71 @@
|
||||
>
|
||||
上传
|
||||
</el-button>
|
||||
<el-button
|
||||
type="primary"
|
||||
icon="refresh"
|
||||
@click="refresh"
|
||||
>
|
||||
刷新
|
||||
</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table
|
||||
border
|
||||
stripe
|
||||
style="width:100%;"
|
||||
:data="tableData"
|
||||
>
|
||||
<el-table-column
|
||||
type="selection"
|
||||
align="center"
|
||||
/>
|
||||
<el-table-column
|
||||
label="部门"
|
||||
align="center"
|
||||
width="200"
|
||||
/>
|
||||
width="300"
|
||||
>
|
||||
<template #default="telsaler">
|
||||
<span>{{ telsaler.row.departmentName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="名称"
|
||||
align="center"
|
||||
width="200"
|
||||
/>
|
||||
>
|
||||
<template #default="telsaler">
|
||||
<span>{{ telsaler.row.telsalerName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="车险保费(万)"
|
||||
label="车险保费"
|
||||
align="center"
|
||||
/>
|
||||
>
|
||||
<template #default="telsaler">
|
||||
<span>{{ Math.trunc( telsaler.row.motoPremium * 10000) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="非车险保费(万)"
|
||||
label="非车险保费"
|
||||
align="center"
|
||||
/>
|
||||
>
|
||||
<template #default="telsaler">
|
||||
<span>{{ Math.trunc( telsaler.row.nomotoPremium * 10000) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="当月保费渗透率"
|
||||
align="center"
|
||||
/>
|
||||
>
|
||||
<template #default="telsaler">
|
||||
<span>{{ telsaler.row.attachingRate.toFixed(2) + "%" }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="渗透率环比上月"
|
||||
align="center"
|
||||
/>
|
||||
>
|
||||
<template #default="telsaler">
|
||||
<span>{{ telsaler.row.attachingRateChange.toFixed(2) + "%" }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<div class="pagination_wrapper">
|
||||
<el-pagination
|
||||
@@ -65,7 +93,7 @@
|
||||
:page-size="ui.tablePageSize"
|
||||
:page-sizes="[10, 20, 50, 100]"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="0"
|
||||
:total="tableCount"
|
||||
@current-change="onCurrentPageIndexChange"
|
||||
@size-change="onTablePageSizeChange"
|
||||
/>
|
||||
@@ -87,19 +115,36 @@
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts">
|
||||
import { reactive } from "vue";
|
||||
import { reactive, onBeforeMount, computed } from "vue";
|
||||
import {
|
||||
type BITelsalerAttachingRateRecord,
|
||||
type QueryBITelsalerAttachingRateReportResponse,
|
||||
type QueryBITelsalerAttachingRateDataHandler,
|
||||
queryBITelsalerAttachingRateData
|
||||
} from "@/utils/BIReport.js";
|
||||
import BiDataUploadView from "@/views/data/bi/BiDataUploadView.vue";
|
||||
import { ElMessageBox } from "element-plus";
|
||||
|
||||
interface UI
|
||||
{
|
||||
showUI: boolean,
|
||||
showUploadDialog: boolean,
|
||||
tableCurrentPageIndex: number,
|
||||
tablePageSize: number,
|
||||
BITelsalerAttachingRateData: BITelsalerAttachingRateRecord[],
|
||||
}
|
||||
|
||||
export default {
|
||||
name: "TelsalerAttachingRateView",
|
||||
components: { BiDataUploadView, },
|
||||
setup()
|
||||
{
|
||||
const ui = reactive({
|
||||
const ui: UI = reactive({
|
||||
showUI: true,
|
||||
showUploadDialog: false,
|
||||
tableCurrentPageIndex: 1,
|
||||
tablePageSize: 10,
|
||||
BITelsalerAttachingRateData: [],
|
||||
});
|
||||
|
||||
const showUploadFileDialog = (): void =>
|
||||
@@ -110,6 +155,8 @@ export default {
|
||||
const onCurrentPageIndexChange = ( index: number ): void =>
|
||||
{
|
||||
ui.tableCurrentPageIndex = index;
|
||||
|
||||
console.log( "表格数据", tableData );
|
||||
};
|
||||
|
||||
const onTablePageSizeChange = ( pageSize: number ): void =>
|
||||
@@ -117,11 +164,71 @@ export default {
|
||||
ui.tablePageSize = pageSize;
|
||||
};
|
||||
|
||||
/** 请求处理handler ********/
|
||||
const queryBITelsalerAttachingRateDataHandler: QueryBITelsalerAttachingRateDataHandler = ( response: QueryBITelsalerAttachingRateReportResponse, error: any ): void =>
|
||||
{
|
||||
// 判断调用成功标志位
|
||||
if ( response.success )
|
||||
{
|
||||
ui.BITelsalerAttachingRateData = response.records;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 错误处理
|
||||
ElMessageBox.confirm(
|
||||
response.message,
|
||||
"请求BI坐席续保率数据错误",
|
||||
{
|
||||
confirmButtonText: "确定",
|
||||
type: "warning",
|
||||
center: true,
|
||||
}
|
||||
)
|
||||
.then((): void => {})
|
||||
.catch((): void => {});
|
||||
|
||||
if ( error !== null )
|
||||
{
|
||||
console.log( error );
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const tableCount = computed((): number =>
|
||||
{
|
||||
return ui.BITelsalerAttachingRateData.length;
|
||||
});
|
||||
|
||||
const tableData = computed((): BITelsalerAttachingRateRecord[] =>
|
||||
{
|
||||
const tableCount = ui.BITelsalerAttachingRateData.length;
|
||||
const startIndex = ui.tablePageSize * ( ui.tableCurrentPageIndex - 1 ) > tableCount ? tableCount - ui.tablePageSize : ui.tablePageSize * ( ui.tableCurrentPageIndex - 1 );
|
||||
const endIndex = ui.tablePageSize * ui.tableCurrentPageIndex;
|
||||
|
||||
return ui.BITelsalerAttachingRateData.slice( startIndex, endIndex );
|
||||
});
|
||||
|
||||
onBeforeMount((): void =>
|
||||
{
|
||||
queryBITelsalerAttachingRateData( queryBITelsalerAttachingRateDataHandler );
|
||||
});
|
||||
|
||||
const refresh = (): void =>
|
||||
{
|
||||
queryBITelsalerAttachingRateData( queryBITelsalerAttachingRateDataHandler );
|
||||
};
|
||||
|
||||
return {
|
||||
ui,
|
||||
showUploadFileDialog,
|
||||
onCurrentPageIndexChange,
|
||||
onTablePageSizeChange,
|
||||
// 计算变量
|
||||
tableData,
|
||||
tableCount,
|
||||
// 函数
|
||||
queryBITelsalerAttachingRateDataHandler,
|
||||
refresh,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
Reference in New Issue
Block a user