<!-- 签到 -->
<template>
  <div>
    <integralShow ref="integralRef"></integralShow>
    <div class="text-end signInRecord mt-3" @click="handleRecord">
      {{ $t('taskCenter.signInRecord') }}
      <v-icon>mdi-chevron-right</v-icon>
    </div>
    <div class="d-flex justify-center mt-3">
      <div v-for="(item, index) in configList" :key="'signInKey' + index" >
        <div
          class="borderRadius-5 mx-5 py-3 px-4"
          style="text-align: center;"
          :style="{'background-color': index < continuousDay ? '#10897ba8' : 'var(--color-f2f4f7)'}"
        >
          <!-- 图标 -->
          <div class="mt-1">
            <svg-icon v-if="index < continuousDay" name="tick" size="36"></svg-icon>
            <svg-icon v-else name="integral" size="38"></svg-icon>
          </div>
          <div class="mt-2" :style="{'color': index < continuousDay ? '#fff' : 'var(--color-333)'}">
            <span class="font-12">+</span>
            <span>{{ item.point }}</span>
          </div>
        </div>
        <div class="mt-2 font-13" style="text-align: center;" :style="{'color': index < continuousDay ? '#10897b' : 'var(--color-333)'}">
          {{ `${index === todayNumber ? '今天' : '第' + item.day + '天'}` }}
        </div>
      </div>
    </div>
    <div class="mt-8" style="text-align: right;">
      <span v-if="continuousDay > 0" class="font-13 color-777 mr-3">
        您已经连续签到
        <span class="mx-1" style="color: var(--v-primary-base); font-weight: 600;"> {{ continuousDay }} </span>
        天，明天再来吧
      </span>
      <v-btn class="half-button" color="primary" size="small" :loading="signLoading" :disabled="todaySignIn" @click="handleSignIn">{{ todaySignIn ? '已签到' : '签到' }}</v-btn>
    </div>
  </div>
</template>

<script setup>
defineOptions({name: 'personal-taskCenter-signIn'})
import { ref } from 'vue'
import { useUserStore } from '@/store/user'
import { useI18n } from '@/hooks/web/useI18n'
import { getRewardSignInRecordSummary, getRewardSignInConfigList, createRewardSignInRecord } from '@/api/sign'
import integralShow from '@/views/integral/pointsManagement/components/integralShow.vue'
import Snackbar from '@/plugins/snackbar'

const { t } = useI18n()
const userStore = useUserStore()
const integralRef = ref()
// 连续签到天数
const continuousDay = ref(0)
// 今天有无签到
const todaySignIn = ref(false)
// 规则列表
const configList = ref([])
const todayNumber = ref()
const signLoading = ref(false)

// 获取签到规则列表
const getConfigList = async () => {
  const data = await getRewardSignInConfigList()
  configList.value = data
}
getConfigList()

// 获取个人签到统计
const getSummary = async () => {
  const data = await getRewardSignInRecordSummary()
  if (!data) return
  continuousDay.value = data.continuousDay // 连续签到第n天
  todaySignIn.value = data.todaySignIn // 今天有无签到
  todayNumber.value = todaySignIn.value ? continuousDay.value - 1 : continuousDay.value
}
getSummary()

// 签到
const handleSignIn = async () => {
  signLoading.value = true
  await createRewardSignInRecord()
  setTimeout(async () => {
    await getSummary()
    Snackbar.success(t('taskCenter.signInSuccess'))
    signLoading.value = false

    // 更新积分数
    await userStore.getUserAccountInfo()
  }, 1000)
}

const handleRecord = () => {
  window.open('/recruit/personal/myWallet')
}

</script>

<style lang="scss" scoped>
.color-333 { color: var(--color-333); }
.color-fff { color: #fff; }
.color-777 { color: var(--color-666); }
.font-12 { font-size: 12px; }
.font-13 { font-size: 13px; }
.font-14 { font-size: 14; }
.font-16 { font-size: 16px; }
.borderRadius-5 { border-radius: 5px; }
.signInRecord {
  font-size: 14px;
  color: var(--v-primary-base);
  cursor: pointer;
}
</style>
