Newer
Older
xc-metering-front / src / views / tested / device / remind / components / trend.vue
dutingting on 29 Nov 2 KB 临时提交
<!-- 到期提醒趋势 -->
<script lang="ts" setup name="RemindTrend">
import { remindTrend } from '@/api/eqpt/device/remind'
const height = ref(document.body.clientHeight - 335)
window.addEventListener('resize', () => {
  const bodyHeight = document.body.clientHeight - 335
  height.value = bodyHeight
})
const loadingMonth = ref(true)
const dataMonth = ref<any[]>([])
const xAxisMonth = ref([])
const loadingYear = ref(true)
const dataYear = ref<any[]>([])
const xAxisYear = ref([])
const fetchData = () => {
  remindTrend({ type: 'month' }).then((res) => {
    // 数据,格式为[{name:'系列名',data:[0,0,0,...0], color:'可选'},...]
    xAxisMonth.value = res.data.map((item: any) => item.name)
    dataMonth.value = [{
      name: '月趋势',
      data: res.data.map((item: any) => item.count),
      color: '#2d8cf0',
    }]
    loadingMonth.value = false
  })
  remindTrend({ type: 'year' }).then((res) => {
    // 数据,格式为[{name:'系列名',data:[0,0,0,...0], color:'可选'},...]
    xAxisYear.value = res.data.map((item: any) => item.name)
    dataYear.value = [{
      name: '年趋势',
      data: res.data.map((item: any) => item.count),
      color: '#19be6b',
    }]
    loadingYear.value = false
  })
}
fetchData()
</script>

<template>
  <div style="padding: 10px;position: reactive;">
    <!-- 月趋势 -->
    <div :style="`height:${height / 2}px;width:100%;position: relative;`" class="container">
      <div v-if="!loadingMonth" class="title">
        未来3月在用智能模型到期趋势
      </div>
      <line-chart :loading="loadingMonth" :x-axis-data="xAxisMonth" :data="dataMonth" />
    </div>
    <!-- 年趋势 -->
    <div :style="`height:${height / 2}px;width:100%;position: relative;margin-top:15px;`" class="container">
      <div v-if="!loadingYear" class="title">
        未来1年在用智能模型到期趋势
      </div>
      <line-chart :loading="loadingYear" :x-axis-data="xAxisYear" :data="dataYear" />
    </div>
  </div>
</template>

<style lang="scss" scoped>
.container {
  // position: ;

  .title {
    font-size: 18px;
    font-weight: 700;
    text-align: center;
    position: absolute;
    width: 100%;
    top: 15px;
  }
}
</style>