|
|
- <template>
- <view class="po-r">
- <image class="bg" src="" mode=""></image>
- <view class="po-a content w-100">
- <view class="top bg-fff">
- <view class="com-title size-32 fw700 flex-rowl">
- 您选择的宠物类型
- </view>
- <view>
- <image class="mt32"
- style="margin-right: 10rpx;"
- v-for="(img, inde) in petTypeImg"
- :src="img.image" mode="widthFix"></image>
- </view>
- </view>
-
- <view class="text po-r bg-fff">
- <up-parse class="size-28" :content="configList.pet_raising_details.paramValueArea"></up-parse>
- <view class="po-a flex-rowl tips">
- <image class="ml16" src="@/static/images/ydd/icon1.png" mode="widthFix"></image>
- <text class="size-28 ml16">养宠考试说明</text>
- </view>
- </view>
-
- <view class="text po-r bg-fff mb150">
- <up-parse class="size-28" :content="configList.pet_attention_details.paramValueArea"></up-parse>
- <view class="po-a flex-rowl tips">
- <image class="ml16" src="@/static/images/ydd/icon2.png" mode="widthFix"></image>
- <text class="size-28 ml16">考试注意事项</text>
- </view>
- </view>
-
- </view>
- <view class="footer-btn flex-colc">
- <view class="size-22 color-777 tips-rest">
- <template v-if="canTakeExam">
- 剩余考试机会:<text class="highlight">{{ restTimes - examNumber }}</text>次
- </template>
- <template v-else>
- <text class="next-exam-time">下次考试时间:{{ nextExamTime }}</text>
- </template>
- </view>
- <view class="btn" :class="{ 'btn-disabled': !canTakeExam }" @click="toNext">
- {{ canTakeExam ? '开始考试' : '暂无考试机会' }}
- </view>
- </view>
- </view>
- </template>
-
- <script setup>
- import { ref, computed } from 'vue'
- import { useStore } from 'vuex'
- import { onLoad } from '@dcloudio/uni-app'
- import { insertUser, udpateUser, getUserOne } from '@/api/userTeacher'
- import dayjs from 'dayjs'
-
- const store = useStore()
-
- const petType = ref([])
- const restTimes = ref()
- const lastExamTime = ref('')
-
- //已考试次数
- const examNumber = ref(0)
-
- const configList = computed(() => {
- return store.getters.configList
- })
- const userId = computed(() => {
- return store.state.user.userInfo.userId
- })
-
- // 计算下次考试时间
- const nextExamTime = computed(() => {
- if (!lastExamTime.value) return ''
- const nextTime = dayjs(lastExamTime.value).add(1, 'year')
- return nextTime.format('YYYY年MM月DD日')
- })
-
- // 判断是否可以参加考试
- const canTakeExam = computed(() => {
-
- if((restTimes.value - examNumber.value) > 0){
- return true
- }
-
- if (!lastExamTime.value) return true
- const nextTime = dayjs(lastExamTime.value).add(1, 'year')
- return dayjs().isAfter(nextTime)
- })
-
- const getInfo = async () => {
- try {
- if(!userId.value) {
- return
- }
-
- const data = await getUserOne(userId.value)
-
- examNumber.value = data.examNumber || 0
- lastExamTime.value = data.examTime
-
- petType.value = data.petType.split(',').map(n => parseInt(n))
-
- } catch (err) {
- console.log('--err', err)
- }
- }
-
- const petTypeImg = computed(() => {
- return store.getters.petTypeOptions.
- filter(item => petType.value.includes(item.id))
- })
-
- onLoad((option) => {
- store.dispatch('fetchPetTypeOptions')
- getInfo()
- restTimes.value = parseInt(configList.value.pet_work_num.paramValueText || 0)
- })
-
- const toNext = () => {
- if (!canTakeExam.value) {
- uni.showToast({
- title: `请于${nextExamTime.value}后再来考试`,
- icon: 'none'
- })
- return
- }
- uni.navigateTo({
- url: "/otherPages/authentication/examination/base"
- })
- }
- </script>
-
- <style lang="scss" scoped>
- .mb150 {
- margin-bottom: 150rpx;
- }
-
- .text {
- padding: 50rpx 37rpx;
- border-radius: 20rpx;
- margin-top: 43px;
- }
-
- .tips {
- width: 302rpx;
- height: 67rpx;
- background-color: #FFEBCE;
- top: -28rpx;
- left: 20rpx;
- border-radius: 0 90rpx 0 0;
-
- image {
- width: 40rpx;
- }
- }
-
- .content {
- padding: 16rpx;
- width: 718rpx;
- left: 0;
- top: 0;
- }
-
- .bg {
- width: 750rpx;
- height: 432px;
- background-image: linear-gradient(to bottom, #FFBF60, #f5f5f5);
- }
-
- .top {
- padding: 46rpx 17rpx 17rpx;
- margin: 16rpx;
- border-radius: 20rpx;
-
- image {
- width: 198rpx;
- height: 228rpx;
- }
- }
-
- .tips {
- &-rest {
- color: #707070;
- font-size: 22rpx;
- margin: 9rpx 0 13rpx 0;
- .highlight {
- color: #FF8DC6;
- }
- }
- }
-
- .next-exam-time {
- color: #FF2A2A;
- }
-
- .footer-btn {
- height: 163rpx;
- box-sizing: border-box;
- padding-bottom: 18rpx;
- }
-
- .btn {
- width: 600rpx;
- height: 80rpx;
- line-height: 80rpx;
- text-align: center;
- background: #FFBF60;
- color: #fff;
- border-radius: 40rpx;
- font-size: 32rpx;
-
- &-disabled {
- background: #CCCCCC;
- color: #FFFFFF;
- }
- }
- </style>
|