将组件数据参数化
This commit is contained in:
parent
3313414c70
commit
18d4620729
@ -2,8 +2,8 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-03-04 16:09:31
|
* @Date: 2023-03-04 16:09:31
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @FilePath: /task_schedule/src/components/ArchievementComponent.vue
|
* @FilePath: /task_schedule/src/components/ArchievementChartComponent.vue
|
||||||
* @Description:
|
* @Description: 业绩图表组件
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
@ -20,11 +20,22 @@ import { reactive, computed, onMounted } from "vue";
|
|||||||
import * as echarts from "echarts";
|
import * as echarts from "echarts";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "ArchievementComponent",
|
name: "ArchievementChartComponent",
|
||||||
setup()
|
props: {
|
||||||
|
total_archievement: {
|
||||||
|
type: String,
|
||||||
|
require: true,
|
||||||
|
},
|
||||||
|
chart_data: {
|
||||||
|
type: Array,
|
||||||
|
require: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup(props)
|
||||||
{
|
{
|
||||||
const ui = reactive({
|
const ui = reactive({
|
||||||
total_archievement: 435220,
|
total_archievement: props.total_archievement,
|
||||||
|
chart_data: props.chart_data,
|
||||||
});
|
});
|
||||||
|
|
||||||
const archivement_count = computed(() =>
|
const archivement_count = computed(() =>
|
||||||
@ -49,7 +60,7 @@ export default {
|
|||||||
},
|
},
|
||||||
series: [
|
series: [
|
||||||
{
|
{
|
||||||
data: [200, 230, 224, 218, 135, 147, 260,],
|
data: props.chart_data,
|
||||||
type: "line",
|
type: "line",
|
||||||
},
|
},
|
||||||
],
|
],
|
@ -9,15 +9,9 @@
|
|||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div class="complete-rate-wrapper">
|
<div class="complete-rate-wrapper">
|
||||||
<el-progress type="circle" :percentage="72">
|
<el-progress type="circle" :percentage="ui.percentage">
|
||||||
<template #default="{ percentage }">
|
<template #default="{ percentage }">
|
||||||
<span class="percentage-label">续保完成率</span>
|
<span class="percentage-label">{{ ui.indicator }}</span>
|
||||||
<span class="percentage-value">{{ percentage }}%</span>
|
|
||||||
</template>
|
|
||||||
</el-progress>
|
|
||||||
<el-progress type="circle" :percentage="93">
|
|
||||||
<template #default="{ percentage }">
|
|
||||||
<span class="percentage-label">车非完成率</span>
|
|
||||||
<span class="percentage-value">{{ percentage }}%</span>
|
<span class="percentage-value">{{ percentage }}%</span>
|
||||||
</template>
|
</template>
|
||||||
</el-progress>
|
</el-progress>
|
||||||
@ -25,31 +19,39 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { onMounted } from "vue";
|
import { reactive } from "vue";
|
||||||
export default {
|
export default {
|
||||||
name: "ArchievementCompleteRateComponent",
|
name: "ArchievementCompleteRateComponent",
|
||||||
setup()
|
props: {
|
||||||
|
percentage: {
|
||||||
|
type: String,
|
||||||
|
require: true,
|
||||||
|
},
|
||||||
|
indicator: {
|
||||||
|
type: String,
|
||||||
|
default: "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
setup(props)
|
||||||
{
|
{
|
||||||
|
const percentage = Number(props.percentage).valueOf();
|
||||||
|
|
||||||
|
const ui = reactive({
|
||||||
onMounted(() =>
|
percentage: percentage,
|
||||||
{
|
indicator: props.indicator,
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return {};
|
return { ui, };
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.complete-rate-wrapper {
|
.complete-rate-wrapper {
|
||||||
// width: 150px;
|
// display: flex;
|
||||||
// height: 150px;
|
// flex-direction: column;
|
||||||
display: flex;
|
// justify-content: center;
|
||||||
flex-direction: column;
|
// align-items: center;
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
span {
|
span {
|
||||||
display: block;
|
display: block;
|
||||||
@ -57,6 +59,10 @@ export default {
|
|||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.el-progress {
|
||||||
|
margin: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
.percentage-value {
|
.percentage-value {
|
||||||
display: block;
|
display: block;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
@ -69,8 +75,6 @@ export default {
|
|||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.el-progress {
|
|
||||||
margin-bottom: 15px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
@ -13,10 +13,11 @@
|
|||||||
<span class="slogan">对标先进 比学赶超</span>
|
<span class="slogan">对标先进 比学赶超</span>
|
||||||
<div class="total-archievement-wrapper">
|
<div class="total-archievement-wrapper">
|
||||||
<div class="total-archievement-rate-wrapper">
|
<div class="total-archievement-rate-wrapper">
|
||||||
<ArchievementCompleteRateComponent />
|
<ArchievementCompleteRateComponent indicator="续保完成率" percentage=65 />
|
||||||
|
<ArchievementCompleteRateComponent indicator="车非完成率" percentage=66 />
|
||||||
</div>
|
</div>
|
||||||
<div class="total-archievement-charts-wrapper">
|
<div class="total-archievement-charts-wrapper">
|
||||||
<Archievement />
|
<ArchievementChart total_archievement="435220" :chart_data="[200, 230, 224, 218, 135, 147, 260, 800]" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="reward-wrapper"></div>
|
<div class="reward-wrapper"></div>
|
||||||
@ -31,12 +32,12 @@
|
|||||||
import { useRouter } from "vue-router";
|
import { useRouter } from "vue-router";
|
||||||
import { loadStaffInfo } from "@/utils/api/localStorage.js";
|
import { loadStaffInfo } from "@/utils/api/localStorage.js";
|
||||||
import { ElMessage } from "element-plus";
|
import { ElMessage } from "element-plus";
|
||||||
import Archievement from "@/components/ArchievementComponent.vue";
|
import ArchievementChart from "@/components/ArchievementChartComponent.vue";
|
||||||
import ArchievementCompleteRateComponent from "@/components/ArchievementCompleteRateComponent.vue";
|
import ArchievementCompleteRateComponent from "@/components/ArchievementCompleteRateComponent.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "DesktopArchievement",
|
name: "DesktopArchievement",
|
||||||
components: { Archievement, ArchievementCompleteRateComponent, },
|
components: { ArchievementChart, ArchievementCompleteRateComponent, },
|
||||||
setup()
|
setup()
|
||||||
{
|
{
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
@ -123,8 +124,9 @@ export default {
|
|||||||
width: 25%;
|
width: 25%;
|
||||||
min-width: 180px;
|
min-width: 180px;
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
flex-direction: column;
|
||||||
align-items: end;
|
justify-content: end;
|
||||||
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.total-archievement-charts-wrapper {
|
.total-archievement-charts-wrapper {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user