62 lines
1.5 KiB
Vue
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>
|