|
@@ -1,62 +1,83 @@
|
|
|
<template>
|
|
<template>
|
|
|
- <view class="container page-bg">
|
|
|
|
|
- <view class="header-container">
|
|
|
|
|
- <view class="user-info" @click="goUserInfoPage">
|
|
|
|
|
- <uni-icons type="person" size="30" color="#FFFFFF"></uni-icons>
|
|
|
|
|
- </view>
|
|
|
|
|
- </view>
|
|
|
|
|
- <view class="settle-container">
|
|
|
|
|
- <view class="settle-text-container">
|
|
|
|
|
- <view class="settle-title">待领取奖励数</view>
|
|
|
|
|
- <view class="settle-num">{{reward}}</view>
|
|
|
|
|
|
|
+ <view class="layout-container">
|
|
|
|
|
+ <!-- 顶部填充区 -->
|
|
|
|
|
+ <view class="top-fill" :style="{height: safeArea.statusBarHeight+'px'}"></view>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 顶部胶囊区 -->
|
|
|
|
|
+ <view class="capsule-container"
|
|
|
|
|
+ :style="{
|
|
|
|
|
+ height: safeArea.capsuleBarHeight+'px',
|
|
|
|
|
+ width: safeArea.capsuleBarLeft+'px',
|
|
|
|
|
+ 'padding-top': safeArea.capsuleBarMarginTop+'px',
|
|
|
|
|
+ 'padding-bottom': safeArea.capsuleBarMarginBottom+'px'}">
|
|
|
|
|
+ <view class="user-info" @click="goUserInfoPage" :style="{
|
|
|
|
|
+ height: safeArea.capsuleBarContentHeight+'px',
|
|
|
|
|
+ width: safeArea.capsuleBarContentHeight+'px',
|
|
|
|
|
+ }">
|
|
|
|
|
+ <uni-icons type="person" :size="safeArea.capsuleBarContentHeight" color="#FFFFFF"></uni-icons>
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="settle-btn" @click="claimReward">领取</view>
|
|
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="task-container">
|
|
|
|
|
- <view class="task-header">
|
|
|
|
|
- <view class="task-title">任务(3个)</view>
|
|
|
|
|
- <view class="task-add-btn" @click="goPunchInDetailPage">
|
|
|
|
|
- <uni-icons type="plusempty" size="30" color="#406CE7"></uni-icons>
|
|
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 内容区 -->
|
|
|
|
|
+ <view class="content-container">
|
|
|
|
|
+ <view class="settle-container">
|
|
|
|
|
+ <view class="settle-text-container">
|
|
|
|
|
+ <view class="settle-title">待领取奖励数</view>
|
|
|
|
|
+ <view class="settle-num">{{reward}}</view>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
+ <view class="settle-btn" @click="claimReward">领取</view>
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="task-item" v-for="punchIn in punchIns" :key="punchIn.punchInId">
|
|
|
|
|
- <view class="item-header">
|
|
|
|
|
- <view class="item-title">{{punchIn.taskName}}</view>
|
|
|
|
|
- <navigator :url="'/pages/detail/detail?id='+punchIn.punchInId">
|
|
|
|
|
- <uni-icons class="item-icon" type="settings" size="30" color="#C4C4C4"></uni-icons>
|
|
|
|
|
- </navigator>
|
|
|
|
|
- <view class="item-tag-container">
|
|
|
|
|
- <view class="item-tag" v-if="punchIn.fullAttendanceFlag">全勤奖励</view>
|
|
|
|
|
- <view class="item-tag" v-if="punchIn.weekendDoubleFlag">周末双倍</view>
|
|
|
|
|
|
|
+ <view class="task-container">
|
|
|
|
|
+ <view class="task-header">
|
|
|
|
|
+ <view class="task-title">任务(3个)</view>
|
|
|
|
|
+ <view class="task-add-btn" @click="goPunchInDetailPage">
|
|
|
|
|
+ <uni-icons type="plusempty" size="30" color="#406CE7"></uni-icons>
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="item-btn" @click="doPunchIn(punchIn.punchInId)">完成</view>
|
|
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="item-detail-list">
|
|
|
|
|
- <view class="item-detail" v-for="punchInRecord in punchIn.punchInRecords" :key="punchInRecord.punchInDate">
|
|
|
|
|
- <view class="detail-text">
|
|
|
|
|
- <uni-dateformat :date="punchInRecord.punchInDate" format="M月d日"></uni-dateformat>
|
|
|
|
|
|
|
+ <view class="task-item" v-for="punchIn in punchIns" :key="punchIn.punchInId">
|
|
|
|
|
+ <view class="item-header">
|
|
|
|
|
+ <view class="item-title">{{punchIn.taskName}}</view>
|
|
|
|
|
+ <navigator :url="'/pages/detail/detail?id='+punchIn.punchInId">
|
|
|
|
|
+ <uni-icons class="item-icon" type="settings" size="30" color="#C4C4C4"></uni-icons>
|
|
|
|
|
+ </navigator>
|
|
|
|
|
+ <view class="item-tag-container">
|
|
|
|
|
+ <view class="item-tag" v-if="punchIn.fullAttendanceFlag">全勤奖励</view>
|
|
|
|
|
+ <view class="item-tag" v-if="punchIn.weekendDoubleFlag">周末双倍</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="item-btn" @click="doPunchIn(punchIn.punchInId)">完成</view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="item-detail-list">
|
|
|
|
|
+ <view class="item-detail" v-for="punchInRecord in punchIn.punchInRecords" :key="punchInRecord.punchInDate">
|
|
|
|
|
+ <view class="detail-text">
|
|
|
|
|
+ <uni-dateformat :date="punchInRecord.punchInDate" format="M月d日"></uni-dateformat>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <view class="detail-box" style="background-color: #E5E5E5;" v-if="punchInRecord.punchInStatus == 'uncreated'"></view>
|
|
|
|
|
+ <view class="detail-box" style="background-color: #A5D63F;" v-if="punchInRecord.punchInStatus == 'punchIn'"></view>
|
|
|
|
|
+ <view class="detail-box" style="background-color: #D43030;" v-if="punchInRecord.punchInStatus == 'unPunchIn'"></view>
|
|
|
|
|
+ <view class="detail-box" v-if="punchInRecord.punchInStatus == 'futureTime' || punchInRecord.punchInStatus == 'todayUnknown'"></view>
|
|
|
</view>
|
|
</view>
|
|
|
- <view class="detail-box" style="background-color: #E5E5E5;" v-if="punchInRecord.punchInStatus == 'uncreated'"></view>
|
|
|
|
|
- <view class="detail-box" style="background-color: #A5D63F;" v-if="punchInRecord.punchInStatus == 'punchIn'"></view>
|
|
|
|
|
- <view class="detail-box" style="background-color: #D43030;" v-if="punchInRecord.punchInStatus == 'unPunchIn'"></view>
|
|
|
|
|
- <view class="detail-box" v-if="punchInRecord.punchInStatus == 'futureTime' || punchInRecord.punchInStatus == 'todayUnknown'"></view>
|
|
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
|
|
+ <!-- 弹出框 -->
|
|
|
<view>
|
|
<view>
|
|
|
<uni-popup ref="claimRewardDialog" type="dialog">
|
|
<uni-popup ref="claimRewardDialog" type="dialog">
|
|
|
<uni-popup-dialog ref="inputClose" mode="input" title="领取奖励" value="对话框预置提示内容!"
|
|
<uni-popup-dialog ref="inputClose" mode="input" title="领取奖励" value="对话框预置提示内容!"
|
|
|
placeholder="请输入领取的奖励数" @confirm="claimRewardConfirm"></uni-popup-dialog>
|
|
placeholder="请输入领取的奖励数" @confirm="claimRewardConfirm"></uni-popup-dialog>
|
|
|
</uni-popup>
|
|
</uni-popup>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
+
|
|
|
|
|
+ <!-- 底部填充区 -->
|
|
|
|
|
+ <view class="bottom-fill" :style="{height: safeArea.bottomHeight+'px'}"></view>
|
|
|
</view>
|
|
</view>
|
|
|
</template>
|
|
</template>
|
|
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
|
import { onMounted, ref } from 'vue';
|
|
import { onMounted, ref } from 'vue';
|
|
|
import { rewardApi, punchInApi } from '@/service/apis.js';
|
|
import { rewardApi, punchInApi } from '@/service/apis.js';
|
|
|
|
|
+ import safeArea from '@/utils/system.js';
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 可领取奖励
|
|
* 可领取奖励
|
|
@@ -144,40 +165,25 @@
|
|
|
getReward();
|
|
getReward();
|
|
|
// 获取打卡
|
|
// 获取打卡
|
|
|
getPunchIn();
|
|
getPunchIn();
|
|
|
- })
|
|
|
|
|
|
|
+ });
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
<style lang="scss" scoped>
|
|
|
- .container {
|
|
|
|
|
- width: 100vw;
|
|
|
|
|
- height: 100vh;
|
|
|
|
|
- padding: 16rpx;
|
|
|
|
|
-
|
|
|
|
|
- .header-container {
|
|
|
|
|
- position: relative;
|
|
|
|
|
- height: 83rpx;
|
|
|
|
|
-
|
|
|
|
|
- .user-info {
|
|
|
|
|
- width: 83rpx;
|
|
|
|
|
- height: 83rpx;
|
|
|
|
|
-
|
|
|
|
|
- display: flex;
|
|
|
|
|
- justify-content: center;
|
|
|
|
|
- /* 水平居中 */
|
|
|
|
|
- align-items: center;
|
|
|
|
|
- /* 垂直居中 */
|
|
|
|
|
-
|
|
|
|
|
- position: absolute;
|
|
|
|
|
- right: 0rpx;
|
|
|
|
|
- top: 0rpx;
|
|
|
|
|
-
|
|
|
|
|
- border-radius: 50%;
|
|
|
|
|
- background: rgba(210, 239, 243, 1);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ .user-info {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ justify-content: center;
|
|
|
|
|
+ /* 水平居中 */
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ /* 垂直居中 */
|
|
|
|
|
+
|
|
|
|
|
+ border-radius: 50%;
|
|
|
|
|
+ background: rgba(210, 239, 243, 1);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ .content-container {
|
|
|
|
|
|
|
|
.settle-container {
|
|
.settle-container {
|
|
|
- margin-top: 16rpx;
|
|
|
|
|
|
|
+ // margin-top: 16rpx;
|
|
|
height: 228rpx;
|
|
height: 228rpx;
|
|
|
position: relative;
|
|
position: relative;
|
|
|
border-radius: 20rpx;
|
|
border-radius: 20rpx;
|