x-php-Admin/src/components/xMini/Trend.vue
2023-07-11 00:41:24 +08:00

62 lines
1.5 KiB
Vue

<!--
* @Descripttion: 趋势标记
-->
<template>
<span class="x-trend" :class="'x-trend--'+type">
<el-icon v-if="iconType=='P'" class="x-trend-icon"><el-icon-top /></el-icon>
<el-icon v-if="iconType=='N'" class="x-trend-icon"><el-icon-bottom /></el-icon>
<el-icon v-if="iconType=='Z'" class="x-trend-icon"><el-icon-right /></el-icon>
<em class="x-trend-prefix">{{prefix}}</em>
<em class="x-trend-value">{{modelValue}}</em>
<em class="x-trend-suffix">{{suffix}}</em>
</span>
</template>
<script>
export default {
props: {
modelValue: { type: Number, default: 0 },
prefix: { type: String, default: "" },
suffix: { type: String, default: "" },
reverse: { type: Boolean, default: false }
},
computed: {
absValue(){
return Math.abs(this.modelValue);
},
iconType(v){
if(this.modelValue == 0){
v = 'Z'
}else if(this.modelValue < 0){
v = 'N'
}else if(this.modelValue > 0){
v = 'P'
}
return v
},
type(v){
if(this.modelValue == 0){
v = 'Z'
}else if(this.modelValue < 0){
v = this.reverse?'P':'N'
}else if(this.modelValue > 0){
v = this.reverse?'N':'P'
}
return v
}
}
}
</script>
<style scoped>
.x-trend {display: flex;align-items: center;}
.x-trend-icon {margin-right: 2px;}
.x-trend em {font-style: normal;}
.x-trend-prefix {margin-right: 2px;}
.x-trend-suffix {margin-left: 2px;}
.x-trend--P {color: #f56c6c;}
.x-trend--N {color: #67c23a;}
.x-trend--Z {color: #555;}
</style>