StatPanelItem.vue 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <template>
  2. <div class="card-area-center">
  3. <div class="value col-3">{{ props.title[0] }}:{{ props.value[0] || 0 }}</div>
  4. <div class="value col-3">{{ props.title[1] }}:{{ props.value[1] || 0 }}</div>
  5. <div class="value col-3">
  6. 同期环比:
  7. <span :style="{ color: isPositiveNumber(props.value[2]).color, marginRight: '5px' }">
  8. {{ props.value[2] || 0 }}%</span>
  9. <img class="image" :src="isPositiveNumber(props.value[2]).icons" alt="整体图片" />
  10. </div>
  11. </div>
  12. <el-divider class="card-area-divider" v-if="props.isDivider" />
  13. </template>
  14. <script setup>
  15. /*----------------------------------依赖引入-----------------------------------*/
  16. import { ref, onMounted, watch, getCurrentInstance, reactive, toRefs } from 'vue'
  17. /*----------------------------------接口引入-----------------------------------*/
  18. /*----------------------------------组件引入-----------------------------------*/
  19. import CaretCenter from '@/assets/images/energyManage/CaretCenter.png'
  20. import CaretTop from '@/assets/images/energyManage/CaretTop.png'
  21. import CaretBottom from '@/assets/images/energyManage/CaretBottom.png'
  22. /*----------------------------------store引入-----------------------------------*/
  23. /*----------------------------------公共方法引入-----------------------------------*/
  24. /*----------------------------------公共变量-----------------------------------*/
  25. const props = defineProps({
  26. title: Object,
  27. value: Object,
  28. isDivider: {
  29. type: Boolean,
  30. default: false
  31. }
  32. }) //数据双向绑定
  33. const emit = defineEmits([]);
  34. /*----------------------------------变量声明-----------------------------------*/
  35. function isPositiveNumber(value) {
  36. let list = {}
  37. if (value == 0 || value == null) {
  38. list.color = '#cacaca'
  39. list.icons = CaretCenter
  40. } else if (typeof value === 'number' && !Number.isNaN(value) && value > 0 && value !== Infinity) {
  41. list.color = '#FF0000'
  42. list.icons = CaretTop
  43. } else {
  44. list.color = '#00C309'
  45. list.icons = CaretBottom
  46. }
  47. return list
  48. };
  49. </script>