<template>
  <div>
    <div class="overview my-5">
      <div class="overview-item pa-5 color-666" v-for="(val, i) in overview" :key="i">
        <div class="d-flex">
          <div>{{ val.title }}</div>
          <v-tooltip :text="val.desc" location="top">
            <template v-slot:activator="{ props }">
              <span v-bind="props" class="mdi mdi-information-outline ml-1"></span>
            </template>
          </v-tooltip>
        </div>
        <div class="overview-item-value my-3">{{ overviewData[val.key] }}</div>
        <div class="font-size-14">
          环比
          <span class="color-error">{{ typeof val.ratio === 'number' ? val.ratio : overviewData[val.ratio] }}% ↑</span>
        </div>
      </div>
    </div>
    <div id="myChart" style="width: 100%; height: 500px;background-color: #f7f8fa;border-radius: 8px;" class="pa-3"></div>
  </div>
</template>

<script setup>
defineOptions({ name: 'overview-page'})
import { ref, onMounted, watch } from 'vue'
import * as echarts from 'echarts'
import { getRecentConversations } from '@/api/recruit/enterprise/statistics'

const props = defineProps({
  query: Object
})

const overviewData = ref({
  position: 0,
  resume: 0,
  viewResume: 0,
  dealResume: 0,
  interview: 0
})
// 数据概况
const overview = ref([
  { title: '职位浏览量', key: 'position', ratio: 0, desc: '指全部职位被候选人查看的人数总和' },
  { title: '收到简历量', key: 'resume', ratio: 0, desc: '指全部职位收到简历的总数' },
  { title: '查看收到简历', key: 'viewResume', ratio: 0, desc: '指查看候选人主动发送的简历数量' },
  { title: '已处理简历', key: 'dealResume', ratio: 0, desc: '指招聘方标记"通过筛选"与"不合适"的简历数' },
  { title: '主动联系我的人', key: 'activeContactCount', ratio: 'qqactiveContactCount', desc: '指候选人主动发起沟通的人数' },
  { title: '我主动联系的人', key: 'usContactCount', ratio: 'qqUsContactCount', desc: '指候选人主动发起沟通的人数' },
  { title: '面试数量', key: 'interview', ratio: 0, desc: '面试人数的总数' }
])

// 主动联系我的、我主动联系的人
const accountInfo = localStorage.getItem('accountInfo') ? JSON.parse(localStorage.getItem('accountInfo')) : {}
const getRecent = async () => {
  if (!accountInfo || !accountInfo.userId) return
  const data = await getRecentConversations({ userId: accountInfo.userId, ...props.query })
  overviewData.value = Object.assign(overviewData.value, data)
}
getRecent()

onMounted(() => {
  var chartDom = document.getElementById('myChart')
  var myChart = echarts.init(chartDom)
  var option

  option = {
    title: {
      text: '历史数据走势图'
    },
    tooltip: {
      trigger: 'axis',
      axisPointer: {
        type: 'cross',
        label: {
          backgroundColor: '#6a7985'
        }
      }
    },
    legend: {
      data: ['职位数', '刷新次数', '职位浏览', '简历投递数', '简历处理']
    },
    toolbox: {
      feature: {
        saveAsImage: {}
      }
    },
    grid: {
      left: '3%',
      right: '4%',
      bottom: '3%',
      containLabel: true
    },
    xAxis: [
      {
        type: 'category',
        boundaryGap: false,
        data: ['2024-07-10', '2024-07-11', '2024-07-12']
      }
    ],
    yAxis: [
      {
        type: 'value'
      }
    ],
    series: [
      {
        name: '职位数',
        type: 'line',
        emphasis: {
          focus: 'series'
        },
        data: [120, 132, 101, 134, 90, 230, 210]
      },
      {
        name: '刷新次数',
        type: 'line',
        emphasis: {
          focus: 'series'
        },
        data: [220, 182, 191, 234, 290, 330, 310]
      },
      {
        name: '职位浏览',
        type: 'line',
        emphasis: {
          focus: 'series'
        },
        data: [150, 232, 201, 154, 190, 330, 410]
      },
      {
        name: '简历投递数',
        type: 'line',
        emphasis: {
          focus: 'series'
        },
        data: [320, 332, 301, 334, 390, 330, 320]
      },
      {
        name: '简历处理',
        type: 'line',
        label: {
          show: true,
          position: 'top'
        },
        emphasis: {
          focus: 'series'
        },
        data: [820, 932, 901, 934, 1290, 1330, 1320]
      }
    ]
  }
  option && myChart.setOption(option)
})

watch(
  () => props.query,
  (val) => {
    if (val) getRecent()
  },
  { deep: true }
)
</script>

<style scoped lang="scss">
.overview {
  display: flex;
  width: 100%;
  flex-wrap: wrap; // 换行
}
.overview-item {
  // width: calc((100% - 84px) / 8);
  // min-width: calc((100% - 84px) / 8);
  // max-width: calc((100% - 84px) / 8);
  min-width: 200px;
  margin: 0 12px 12px 0;
  height: 175px;
  border-radius: 12px;
  overflow: hidden;
  transition: all .2s linear;
  background-color: #f7f8fa;
  div {
    white-space: nowrap; /* 防止子级文本换行 */
    flex-grow: 1; /* 允许子级根据内容撑开，但保持最小宽度限制 */
  }
  &:last-child {
    margin-right: 0;
  }
}
.overview-item-value {
  color: var(--v-primary-base);
  font-weight: 700;
  font-size: 44px;
}
</style>
