<template>
  <v-card class="position-box">
    <h4 class="h4 mb-3">{{ $t('position.recommend') }}</h4>
    <div v-if="items.length">
      <div v-for="(item, index) in items" :key="index" class="mb-2 cursor-pointer" @click="handlePosition(item)">
        <p class="recruit-name">{{ item.name }}</p>
        <span v-if="!item.payFrom && !item.payTo" class="recruit-salary">面议</span>
        <span v-else class="recruit-salary">{{ item.payFrom ? item.payFrom + '-' : '' }}{{ item.payTo }}{{ item.payName ? '/' + item.payName : '' }}</span>
        <div :class="['enterprise', {'border-bottom-dashed': index !== items.length - 1}]" @click="handleEnterprise(item)">
          <v-img class="float-left" :src="item.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'" :width="30" :height="30"></v-img>
          <span class="float-left enterprise-name">{{ item.anotherName }}</span>
          <span class="float-right enterprise-address">{{ item.areaName }}</span>
        </div>
      </div>
    </div>
    <Empty v-else :elevation="false" message="暂无推荐职位"></Empty>
  </v-card>
</template>

<script setup>
defineOptions({name: 'retrieval-components-recommendedPositions'})
import { ref } from 'vue'
import { getPromotedPosition } from '@/api/position'
import { dealDictArrayData } from '@/utils/position'

const items = ref([])

const getList = async () => {
  const { list } = await getPromotedPosition({ pageSize: 10, pageNo: 1 })
  if (!list.length) return items.value = []
  items.value = dealDictArrayData([], list)
}
getList()

const handlePosition = (item) => {
  if (!item.id) return
  window.open(`/recruit/personal/position/details/${item.id}`)
}

const handleEnterprise = (item) => {
  if (!item.enterpriseId) return
  window.open(`/recruit/personal/company/details/${item.enterpriseId}?key=briefIntroduction`)
}
</script>

<style lang="scss" scoped>
.position-box {
  position: relative;
  width: 320px;
  height: 100%;
  border-radius: 8px;
  padding: 20px 15px;
}
.recruit-name {
  width: 125px;
  font-weight: 500;
  display: inline-block;
  max-width: 125px;
  vertical-align: middle;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  &:hover {
    color: var(--v-primary-base);
  }
}
.recruit-salary {
  float: right;
  color: var(--v-error-base);
  font-weight: 500;
  height: auto;
  vertical-align: sub;
}
.enterprise {
  height: 40px;
  line-height: 30px;
  margin-top: 8px;
}
.enterprise-name {
  width: 120px;
  display: inline-block;
  max-width: 120px;
  vertical-align: middle;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  color: var(--color-666);
  font-size: 13px;
  margin-left: 5px;
  &:hover {
    color: var(--v-primary-base);
  }
}
.enterprise-address {
  color: #555;
  font-size: 13px;
}
</style>
