<template>
  <view class="ss-m-x-20">
    <!-- 岗位列表 -->
    <view v-if="list.length > 0" class="ss-p-b-30 ss-p-t-20">
      <view v-for="(item, index) in list" :key="index" class="mList default-border list-item-bgc" :class="{ 'disable': !jobFairId && item.job?.status === '1'}" @click="toDetail(item)">
        <!-- 职位信息 -->
        <view class="list-shape" :style="`border-radius: ${props.showEntInfo ? '12px 12px 0 0' : '12px'};`">
          <!-- 职位 -->
          <view class="titleBox ss-m-y-10">
            <view style="display: flex;align-items: center;">
              <view v-if="item.job?.hire" class="iconfont icon-a-1_zhaopin ss-m-r-10" style="color: #e03506; font-size: 25px;"></view>
              <image v-if="props.jobFairId" src="/static/svg/jobFair.svg" class=" ss-m-r-10" style="width: 20px; height: 20px;"></image>
              <rich-text v-if="item.job?.name?.indexOf('style') !== -1" class="job-name MiSans-Semibold default-text-color" :nodes="item.job.name"></rich-text>
              <view v-else class="job-name MiSans-Semibold default-text-color">{{ formatName(item.job?.name) }}</view>
            </view>
          </view>
          <!-- 薪酬、工作地、学历、工作经验 -->
          <view class="d-flex ellipsis" style="max-width: 100%; align-items: baseline;">
            <view class="ss-m-r-20">
                <span v-if="!item.job?.payFrom && !item.job?.payTo" class="salary-text MiSans-Bold">面议</span>
                <span v-else class="salary-text MiSans-Bold">{{ item.job?.payFrom }}-{{ item.job?.payTo }}{{ item.job?.payName ? '/' + item.job?.payName : '' }}</span>
            </view>
            <view class="font-size-13">
              <span class="desc-tag">
                <span class="MiSans-Normal">{{item.job?.area?.str ?? '全国' }}</span>
                <span class="divider-mx" v-if="item.job?.eduName">|</span>
                <span class="MiSans-Normal">{{item.job?.eduName }}</span>
                <span class="divider-mx" v-if="item.job?.expName">|</span>
                <span class="MiSans-Normal">{{item.job?.expName }}</span>
              </span>
            </view>
          </view>
          <!-- 岗位tag  -->
          <view class="ss-m-t-15" v-if="showWelfareTag">
            <uni-tag 
              v-for="(tag,i) in item.job?.tagList || []"
              :key="i"
              class="tag-gap MiSans-Normal"
              :text="tag"
              inverted="false"
              size="mini"
              custom-style="background-color: #ececec;color:#666;border-color:#ececec;display: inline-block;"
            />
          </view>
          <view style="text-align: end;" v-if="item.job?.hire">
            <uni-tag
              class="ss-m-l-10"
              v-if="item?.job?.hirePrice && item?.job?.hirePrice > 0" 
              :text="`赏金：${commissionCalculation(item.job.hirePrice / 100, 1)}元`"
              inverted="false"
              size="default"
              custom-style="background-color: #e2f0ef; color:#666; border-color:#e2f0ef;"
            />
          </view>
          <view
            v-if="props.showUpdateTime"
            class="font-size-13 color-666 ss-m-t-20 MiSans-Normal d-flex align-center"
          >
            <image src="/static/img/clock.png" class="ss-m-r-20" style="width: 15px; height: 15px;"></image>
            更新时间：{{ timesTampChange(item?.job?.refreshTime || item.job?.updateTime, 'Y-M-D h:m') }}
          </view>
        </view>
        <!-- 企业信息 -->
        <view v-if="props.showEntInfo" class="sub-li-bottom" @tap="handleClickEnt(item)">
          <view class="avatarBox">
            <image class="enterAvatar ss-m-l-20 default-border default-radius" :src="item.enterprise?.logoUrl || 'https://minio.citupro.com/dev/menduner/company-avatar.png'"></image>
          </view>
          <view class="ss-m-l-35 MiSans-Normal" style="flex: 1; max-width: calc(100% - 40px);">
            <view class="default-text-color ellipsis" style="width: 98%;">{{ formatName(item.enterprise?.anotherName || item.enterprise.name) }}</view>
            <span class="color-666 ss-m-r-10 font-size-12">{{ item.enterprise?.industryName || '' }}</span>
            <span class="color-666 font-size-12">{{ item.enterprise?.scaleName || '' }}</span>
          </view>
        </view>
      </view>
      <view v-if="props.noMore" class="noMore">暂无更多数据</view>
    </view>
    <view v-else>
      <image src="https://minio.citupro.com/dev/static/nodata.png" mode="widthFix" style="width: 100vw;height: 100vh;"></image>
      <view style="color: gray; text-align: center;">暂无数据</view>
    </view>
  </view>
</template>

<script setup>
import { commissionCalculation } from '@/utils/position'
import { timesTampChange } from '@/utils/date'
import { formatName } from '@/utils/getText'
const emit = defineEmits(['entClick'])

const props = defineProps({
  list: { type: Array, default: () => [] },
  jobFairId: { type: [String, Number], default: '' }, // 招聘会id
  showEntInfo: { type: Boolean, default: true },
  showUpdateTime: { type: Boolean, default: true },
  noMore: { type: Boolean, default: false },
  showWelfareTag: { type: Boolean, default: true }
})

//岗位详情
const toDetail = (item) =>{
  if (!item?.job?.id) return
  let url = `/pagesB/positionDetail/index?id=${item.job.id}&area=${item.job.areaName}`
  if (props.jobFairId) url += `&jobFairId=${props.jobFairId}`
  uni.navigateTo({ url })
}

const handleClickEnt = (item) => {
  const info = {
    enterpriseId: item?.enterprise?.id || null,
    anotherName: item?.enterprise?.anotherName || null
  }
  emit('entClick', info)
}

</script>

<style scoped lang="scss">
.enterAvatar{
	width: 60rpx;
	height: 60rpx;
	margin: auto;
}

.job-name {
  max-width: 80vw;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  
  font-weight: 600;
  font-size: 30rpx;
  text-align: center;
  font-style: normal;
  text-transform: none;
}

.sub-li-bottom {
  display: flex;
  align-items: center;
  font-size: 13px;
  padding: 10rpx 30rpx 0 30rpx;
  border-radius: 0 0 12px 12px;
  margin-bottom: 20rpx;
  .avatarBox {
    max-width: 40px;
    max-height: 40px;
  }
}

.salary-text {
	font-size: 24rpx;
	color: #00B760;
	font-style: normal;
	text-transform: none;
}
.list-shape {
	padding: 10px 30rpx 10px;
  border-radius: 12px 12px 0 0;
  .titleBox {
    display: flex;
    align-items: center;
    justify-content: space-between;
  }
}
.desc-tag {
	font-size: 24rpx;
	color: #666666;
	font-style: normal;
	text-transform: none;
}
.tag-gap{
	margin: 10rpx 10rpx 10rpx 0;
}
.divider-mx{
	margin: 0 10rpx;
}

.mList {
  margin-bottom: 20rpx;
  border-radius: 20rpx;
  box-shadow: 1px 2px 12px rgba(0, 0, 0, 0.17);
}
/* 列表触底暂无更多 */
.noMore{ text-align:center; color:grey;margin: 20px 0; }
.disable {
  position: relative;
  overflow: hidden;
  &::after {
    content: '已失效';
    position: absolute;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.2em;
    font-weight: bold;
    color: #fc796f;
    top: 0;
    border-radius: 12px;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 255, 255, 0.75);
  }
}
</style>
