保存进度!
This commit is contained in:
parent
237cc350be
commit
39a75c7bf2
@ -2,30 +2,226 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-10-17 14:53:17
|
* @Date: 2023-10-17 14:53:17
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @FilePath: /task_schedule/src/views/data/bi/DepartmentArchievementView.vue
|
* @FilePath: /task_schedule/src/views/data/bi/DepartmentAttachingRateView.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="wrapper" />
|
<div class="wrapper">
|
||||||
|
<el-row :gutter="10">
|
||||||
|
<el-col span="24">
|
||||||
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
icon="upload"
|
||||||
|
@click="showUploadFileDialog"
|
||||||
|
>
|
||||||
|
上传
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="refresh"
|
||||||
|
@click="refresh"
|
||||||
|
>
|
||||||
|
刷新
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-table
|
||||||
|
width="100%"
|
||||||
|
stripe
|
||||||
|
border
|
||||||
|
:data="tableData"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
label="部门"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="department">
|
||||||
|
<span>{{ department.row.departmentName }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="车险保费(万)"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="department">
|
||||||
|
<span>{{ department.row.motoPremium.toFixed(2) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="非车险保费(万)"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="department">
|
||||||
|
<span>{{ department.row.nomotoPremium.toFixed(2) }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="渗透率"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="department">
|
||||||
|
<span>{{ department.row.attachingRate.toFixed(2) + "%" }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<div class="pagination_wrapper">
|
||||||
|
<el-pagination
|
||||||
|
v-model="ui.tableCurrentPageIndex"
|
||||||
|
class="pull_left"
|
||||||
|
size="small"
|
||||||
|
background
|
||||||
|
:page-size="ui.tablePageSize"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="0"
|
||||||
|
@current-change="onCurrentPageIndexChange"
|
||||||
|
@size-change="onTablePageSizeChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="upload-dialog-wrapper"
|
||||||
|
>
|
||||||
|
<el-dialog
|
||||||
|
v-model="ui.showUploadDialog"
|
||||||
|
title="上传报表"
|
||||||
|
width="600px"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
:close-on-press-escape="false"
|
||||||
|
:show-close="true"
|
||||||
|
>
|
||||||
|
<BiDataUploadView :report-type="2" />
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { reactive } from "vue";
|
import { reactive, computed, onBeforeMount } from "vue";
|
||||||
|
import {
|
||||||
|
type BIDepartmentAttachingRateRecord,
|
||||||
|
type QueryBIDepartmentAttachingRateResponse,
|
||||||
|
type QueryBIDepartmentAttachingRateDataHandler,
|
||||||
|
queryDepartmentAttachingRateData
|
||||||
|
} from "@/utils/BIReport.js";
|
||||||
|
import { ElMessage, ElMessageBox } from "element-plus";
|
||||||
|
import BiDataUploadView from "@/views/data/bi/BiDataUploadView.vue";
|
||||||
|
|
||||||
|
interface UI
|
||||||
|
{
|
||||||
|
showUI: boolean,
|
||||||
|
showUploadDialog: boolean,
|
||||||
|
tablePageSize: number,
|
||||||
|
tableCurrentPageIndex: number,
|
||||||
|
BIDepartmentAttachingRateData: BIDepartmentAttachingRateRecord[],
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "DepartmentAttachingRateView",
|
name: "DepartmentAttachingRateView",
|
||||||
|
components: { BiDataUploadView, },
|
||||||
setup()
|
setup()
|
||||||
{
|
{
|
||||||
const ui = reactive({
|
const ui: UI = reactive({
|
||||||
showUI: true,
|
showUI: true,
|
||||||
|
showUploadDialog: false,
|
||||||
|
tablePageSize: 10,
|
||||||
|
tableCurrentPageIndex: 1,
|
||||||
|
BIDepartmentAttachingRateData: [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const tableData = computed((): BIDepartmentAttachingRateRecord[] =>
|
||||||
|
{
|
||||||
|
const tableCount = ui.BIDepartmentAttachingRateData.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.BIDepartmentAttachingRateData.slice( startIndex, endIndex );
|
||||||
|
});
|
||||||
|
|
||||||
|
const onCurrentPageIndexChange = ( pageIndex: number ): void =>
|
||||||
|
{
|
||||||
|
ui.tableCurrentPageIndex = pageIndex;
|
||||||
|
};
|
||||||
|
|
||||||
|
const onTablePageSizeChange = ( pageSize: number ): void =>
|
||||||
|
{
|
||||||
|
ui.tablePageSize = pageSize;
|
||||||
|
};
|
||||||
|
|
||||||
|
const handler: QueryBIDepartmentAttachingRateDataHandler = ( response: QueryBIDepartmentAttachingRateResponse, error: any ): void =>
|
||||||
|
{
|
||||||
|
// 判断一下标志位
|
||||||
|
if ( response.success )
|
||||||
|
{
|
||||||
|
// 请求成功
|
||||||
|
ElMessage({
|
||||||
|
message: "更新成功",
|
||||||
|
type: "success",
|
||||||
|
});
|
||||||
|
|
||||||
|
ui.BIDepartmentAttachingRateData = response.records;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// 请求失败
|
||||||
|
ElMessageBox.confirm(
|
||||||
|
response.message,
|
||||||
|
"请求机构渗透率数据失败",
|
||||||
|
{
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
type: "warning",
|
||||||
|
center: true,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then((): void => {})
|
||||||
|
.catch((): void => {});
|
||||||
|
|
||||||
|
if ( error !== null )
|
||||||
|
{
|
||||||
|
console.log( "请求机构渗透率数据失败", error );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const refresh = (): void =>
|
||||||
|
{
|
||||||
|
queryDepartmentAttachingRateData( handler );
|
||||||
|
};
|
||||||
|
|
||||||
|
const showUploadFileDialog = (): void =>
|
||||||
|
{
|
||||||
|
ui.showUploadDialog = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
onBeforeMount((): void =>
|
||||||
|
{
|
||||||
|
refresh();
|
||||||
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
ui,
|
||||||
|
tableData,
|
||||||
|
onCurrentPageIndexChange,
|
||||||
|
onTablePageSizeChange,
|
||||||
|
showUploadFileDialog,
|
||||||
|
handler,
|
||||||
|
refresh,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.wrapper {
|
.wrapper {
|
||||||
margin: 10px;
|
margin: 0px 10px 10px 10px;
|
||||||
|
|
||||||
|
>*+* {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination_wrapper {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -2,29 +2,219 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-11-10 17:48:01
|
* @Date: 2023-11-10 17:48:01
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @FilePath: /task_schedule/src/views/data/bi/DepartmentAttachingRateView copy.vue
|
* @FilePath: /task_schedule/src/views/data/bi/DepartmentRenewalRateView.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div class="wrapper" />
|
<div class="wrapper">
|
||||||
|
<el-row :gutter="10">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
icon="upload"
|
||||||
|
>
|
||||||
|
上传
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
icon="refresh"
|
||||||
|
@click="refresh"
|
||||||
|
>
|
||||||
|
刷新
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-table
|
||||||
|
:data="tableData"
|
||||||
|
style="width:100%;"
|
||||||
|
border
|
||||||
|
stripe
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
label="部门"
|
||||||
|
align="center"
|
||||||
|
width="250px"
|
||||||
|
>
|
||||||
|
<template #default="dept">
|
||||||
|
<span>{{ dept.row.责任部门 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="机构目标值"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="dept">
|
||||||
|
<span>{{ dept.row.机构目标值.toFixed(2) + "%" }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="到期数全月"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="dept">
|
||||||
|
<span>{{ dept.row.到期数全月 }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="序时到期数占比"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="dept">
|
||||||
|
<span>{{ dept.row.序时到期数占比.toFixed(2) + "%" }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="个车续保率序时"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="dept">
|
||||||
|
<span>{{ dept.row.个车续保率序时.toFixed(2) + "%" }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column
|
||||||
|
label="个车续保率全月"
|
||||||
|
align="center"
|
||||||
|
>
|
||||||
|
<template #default="dept">
|
||||||
|
<span>{{ dept.row.个车续保率全月.toFixed(2) + "%" }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<div class="pagination-wrapper">
|
||||||
|
<el-pagination
|
||||||
|
v-model="ui.tableCurrentPageIndex"
|
||||||
|
class="pull_left"
|
||||||
|
size="small"
|
||||||
|
background
|
||||||
|
:page-size="ui.tablePageSize"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="0"
|
||||||
|
@current-change="onCurrentPageIndexChange"
|
||||||
|
@size-change="onTablePageSizeChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { reactive } from "vue";
|
import { reactive, computed, onBeforeMount } from "vue";
|
||||||
|
import {
|
||||||
|
type BIDepartmentRenewalRateRecord,
|
||||||
|
type QueryBIDepartmentRenewalRateResponse,
|
||||||
|
type QueryBIDepartmentRenewalRateDataHandler,
|
||||||
|
queryDepartmentRenewalRateData
|
||||||
|
} from "@/utils/BIReport.js";
|
||||||
|
import { ElMessageBox, ElMessage } from "element-plus";
|
||||||
|
|
||||||
|
interface UI
|
||||||
|
{
|
||||||
|
showUI: boolean;
|
||||||
|
showUploadFileDialog: boolean;
|
||||||
|
tablePageSize: number;
|
||||||
|
tableCurrentPageIndex: number;
|
||||||
|
BIDepartmentRenewalRateData: BIDepartmentRenewalRateRecord[];
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "DepartmentRenewalRateView",
|
name: "DepartmentRenewalRateView",
|
||||||
setup()
|
setup()
|
||||||
{
|
{
|
||||||
const ui = reactive({
|
const ui: UI = reactive({
|
||||||
showUI: true,
|
showUI: true,
|
||||||
|
showUploadFileDialog: false,
|
||||||
|
tablePageSize: 10,
|
||||||
|
tableCurrentPageIndex: 1,
|
||||||
|
BIDepartmentRenewalRateData: [],
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// on
|
||||||
|
const onCurrentPageIndexChange = ( pageIndex: number ): void =>
|
||||||
|
{
|
||||||
|
ui.tableCurrentPageIndex = pageIndex;
|
||||||
|
};
|
||||||
|
|
||||||
|
const onTablePageSizeChange = ( pageSize: number ): void =>
|
||||||
|
{
|
||||||
|
ui.tablePageSize = pageSize;
|
||||||
|
};
|
||||||
|
|
||||||
|
// 计算变量
|
||||||
|
const tableData = computed((): BIDepartmentRenewalRateRecord[] =>
|
||||||
|
{
|
||||||
|
const tableCount = ui.BIDepartmentRenewalRateData.length;
|
||||||
|
const startIndex = ui.tablePageSize * ( ui.tableCurrentPageIndex - 1 ) < tableCount ? ui.tablePageSize * ( ui.tableCurrentPageIndex - 1 ) : ( tableCount - ui.tablePageSize );
|
||||||
|
const endIndex = ui.tablePageSize * ui.tableCurrentPageIndex < tableCount ? ui.tablePageSize * ui.tableCurrentPageIndex : tableCount;
|
||||||
|
|
||||||
|
return ui.BIDepartmentRenewalRateData.slice( startIndex, endIndex );
|
||||||
|
});
|
||||||
|
|
||||||
|
// handler
|
||||||
|
const handler: QueryBIDepartmentRenewalRateDataHandler = ( response: QueryBIDepartmentRenewalRateResponse, error: any ): void =>
|
||||||
|
{
|
||||||
|
if ( response.success )
|
||||||
|
{
|
||||||
|
ui.BIDepartmentRenewalRateData = response.records;
|
||||||
|
|
||||||
|
ElMessage({
|
||||||
|
message: "更新完成",
|
||||||
|
type: "success",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ElMessageBox.confirm(
|
||||||
|
response.message,
|
||||||
|
"请求BI机构续保率数据失败",
|
||||||
|
{
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
type: "warning",
|
||||||
|
center: true,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.then((): void => {})
|
||||||
|
.catch((): void => {});
|
||||||
|
|
||||||
|
if ( error !== null )
|
||||||
|
{
|
||||||
|
console.log( error );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
onBeforeMount((): void =>
|
||||||
|
{
|
||||||
|
refresh();
|
||||||
|
});
|
||||||
|
|
||||||
|
const refresh = (): void =>
|
||||||
|
{
|
||||||
|
queryDepartmentRenewalRateData( handler );
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
ui,
|
||||||
|
onCurrentPageIndexChange,
|
||||||
|
onTablePageSizeChange,
|
||||||
|
// 计算变量
|
||||||
|
tableData,
|
||||||
|
refresh,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.wrapper {
|
.wrapper {
|
||||||
margin: 10px;
|
margin: 0px 10px 10px 10px;
|
||||||
|
|
||||||
|
>*+* {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination-wrapper {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -239,7 +239,7 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.wrapper {
|
.wrapper {
|
||||||
margin: 10px;
|
margin: 0px 10px 10px 10px;
|
||||||
|
|
||||||
>*+* {
|
>*+* {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
@ -227,7 +227,7 @@ export default {
|
|||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.wrapper {
|
.wrapper {
|
||||||
margin: 10px;
|
margin: 0px 10px 10px 10px;
|
||||||
|
|
||||||
>*+* {
|
>*+* {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user