|
|
@@ -1,126 +1,227 @@
|
|
|
<template>
|
|
|
<main-layout>
|
|
|
- <template>
|
|
|
- <!-- 用户信息区 -->
|
|
|
- <view class="user-info">
|
|
|
- <view class="user-icon">
|
|
|
- <uni-icons type="person" size="30"></uni-icons>
|
|
|
- </view>
|
|
|
- <span class="nickname" v-if="!userInfo" @click="goUserInfoPage">登录</span>
|
|
|
- <span class="user-btn" v-if="userInfo" @click="goUserInfoPage">用户中心</span>
|
|
|
+ <!-- 用户信息区 -->
|
|
|
+ <view class="user-info">
|
|
|
+ <view class="user-icon">
|
|
|
+ <uni-icons type="person" size="30"></uni-icons>
|
|
|
</view>
|
|
|
-
|
|
|
- <!-- 结算 -->
|
|
|
- <view class="settle-container">
|
|
|
- <!-- 刮刮乐、奖励数相关区域 -->
|
|
|
- <view class="left-box">
|
|
|
- <view class="split-box">
|
|
|
- <view class="line-box">
|
|
|
- <span>投入</span>
|
|
|
- <span class="number-box">¥{{userInfo.lotteryInvestAmount}}</span>
|
|
|
- </view>
|
|
|
- <view class="under-line-box">
|
|
|
- <span>中奖</span>
|
|
|
- <span class="number-box">¥{{userInfo.lotteryWinAmount}}</span>
|
|
|
- </view>
|
|
|
+ <span class="nickname" v-if="!isLogin" @click="goUserInfoPage">登录</span>
|
|
|
+ <span class="user-btn" v-if="isLogin" @click="goUserInfoPage">用户中心</span>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- 结算 -->
|
|
|
+ <view class="settle-container">
|
|
|
+ <!-- 刮刮乐、奖励数相关区域 -->
|
|
|
+ <view class="left-box">
|
|
|
+ <view class="split-box">
|
|
|
+ <view class="line-box">
|
|
|
+ <span>投入</span>
|
|
|
+ <span class="number-box" @click="addScratchRecord(SCRATCH_ACTION_TYPE_INVEST)">
|
|
|
+ ¥{{userInfo.lotteryInvestAmount}}
|
|
|
+ <uni-icons type="compose" color="#FFFFFF"></uni-icons>
|
|
|
+ </span>
|
|
|
+ </view>
|
|
|
+ <view class="under-line-box">
|
|
|
+ <span>中奖</span>
|
|
|
+ <span class="number-box" @click="addScratchRecord(SCRATCH_ACTION_TYPE_WIN)">
|
|
|
+ ¥{{userInfo.lotteryWinAmount}}
|
|
|
+ <uni-icons type="compose" color="#FFFFFF"></uni-icons>
|
|
|
+ </span>
|
|
|
</view>
|
|
|
- <view class="split-box">
|
|
|
- <view class="line-box">
|
|
|
- <span>已领取</span>
|
|
|
- <span class="number-box">{{userInfo.claimedRewardNum}}</span>
|
|
|
- </view>
|
|
|
- <view class="under-line-box">
|
|
|
- <span>总奖励</span>
|
|
|
- <span class="number-box">{{userInfo.totalRewardNum}}</span>
|
|
|
- </view>
|
|
|
- </view>
|
|
|
</view>
|
|
|
- <!-- 待领取奖励区 -->
|
|
|
- <view class="right-box">
|
|
|
- <view class="reward-title">待领取奖励数</view>
|
|
|
- <view class="reward-num">{{userInfo.unclaimedRewardNum}}</view>
|
|
|
- <view class="reward-btn-group">
|
|
|
- <view class="reward-btn-left">全部领取</view>
|
|
|
- <view class="reward-btn-right">部分领取</view>
|
|
|
+ <view class="split-box">
|
|
|
+ <view class="line-box">
|
|
|
+ <span>已领取</span>
|
|
|
+ <span class="number-box">{{userInfo.claimedRewardNum}}</span>
|
|
|
+ </view>
|
|
|
+ <view class="under-line-box">
|
|
|
+ <span>总奖励</span>
|
|
|
+ <span class="number-box">{{userInfo.totalRewardNum}}</span>
|
|
|
</view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <!-- 待领取奖励区 -->
|
|
|
+ <view class="right-box">
|
|
|
+ <view class="reward-title">待领取奖励数</view>
|
|
|
+ <view class="reward-num">{{userInfo.unclaimedRewardNum}}</view>
|
|
|
+ <view class="reward-btn-group">
|
|
|
+ <view class="reward-btn-left" @click="claimReward('all')">全部领取</view>
|
|
|
+ <view class="reward-btn-right" @click="claimReward('part')">部分领取</view>
|
|
|
</view>
|
|
|
- <!-- 刷新按钮 -->
|
|
|
- <view class="refresh-btn" @click="getUserInfo">
|
|
|
- <uni-icons type="refreshempty" color="#406CE7"></uni-icons>
|
|
|
+ </view>
|
|
|
+ <!-- 刷新按钮 -->
|
|
|
+ <view class="refresh-btn" @click="getUserInfo">
|
|
|
+ <uni-icons type="refreshempty" color="#406CE7"></uni-icons>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- 打卡任务 -->
|
|
|
+ <view class="task-container">
|
|
|
+ <view class="task-header">
|
|
|
+ <view class="task-title" v-if="punchIns.length && punchIns.length > 0">任务({{punchIns.length}}个)
|
|
|
+ </view>
|
|
|
+ <view class="task-title" v-else>任务</view>
|
|
|
+ <view class="task-add-btn" @click="goPunchInEditPage">
|
|
|
+ <uni-icons type="plusempty" size="30" color="#406CE7"></uni-icons>
|
|
|
</view>
|
|
|
</view>
|
|
|
-
|
|
|
- <!-- 打卡任务 -->
|
|
|
- <view class="task-container">
|
|
|
- <view class="task-header">
|
|
|
- <view class="task-title" v-if="punchIns.length && punchIns.length > 0">任务({{punchIns.length}}个)
|
|
|
+ <view class="task-item" v-for="punchIn in punchIns" :key="punchIn.punchInId">
|
|
|
+ <view class="main-box" @click="goPunchInDetailPage(punchIn.punchInId)">
|
|
|
+ <view class="item-header">
|
|
|
+ <span class="item-title">{{punchIn.taskName}}</span>
|
|
|
+ <span class="item-reward">x{{punchIn.rewardNum}}</span>
|
|
|
+ <view class="item-tag" v-if="punchIn.fullAttendanceFlag">全勤奖励</view>
|
|
|
+ <view class="item-tag" v-if="punchIn.weekendDoubleFlag">周末双倍</view>
|
|
|
</view>
|
|
|
- <view class="task-title" v-else>任务</view>
|
|
|
- <view class="task-add-btn" @click="goPunchInEditPage">
|
|
|
- <uni-icons type="plusempty" size="30" color="#406CE7"></uni-icons>
|
|
|
+ <view class="item-desc">
|
|
|
+ 规则:{{punchIn.description}}
|
|
|
</view>
|
|
|
- </view>
|
|
|
- <view class="task-item" v-for="punchIn in punchIns" :key="punchIn.punchInId">
|
|
|
- <view class="main-box" @click="goPunchInDetailPage(punchIn.punchInId)">
|
|
|
- <view class="item-header">
|
|
|
- <span class="item-title">{{punchIn.taskName}}</span>
|
|
|
- <span class="item-reward">x{{punchIn.rewardNum}}</span>
|
|
|
- <view class="item-tag" v-if="punchIn.fullAttendanceFlag">全勤奖励</view>
|
|
|
- <view class="item-tag" v-if="punchIn.weekendDoubleFlag">周末双倍</view>
|
|
|
- </view>
|
|
|
- <view class="item-desc">
|
|
|
- 规则:{{punchIn.description}}
|
|
|
- </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 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="func-box" v-if="punchIn.category == 0" @click="doPunchIn(punchIn.punchInId)">
|
|
|
- <span>完成</span>
|
|
|
- </view>
|
|
|
- <view class="func-box" v-if="punchIn.category == 1" @click="doPunchIn(punchIn.punchInId)">
|
|
|
- <span>{{punchIn.countTrack}}</span>
|
|
|
- <span>计数</span>
|
|
|
- </view>
|
|
|
- <view class="func-box" v-if="punchIn.category == 2" @click="doPunchIn(punchIn.punchInId)">
|
|
|
- <span>
|
|
|
- {{punchIn.timeTrack.slice(0, 5)}}
|
|
|
- </span>
|
|
|
- <span>计时</span>
|
|
|
- </view>
|
|
|
+ </view>
|
|
|
+ <view :class="punchIn.punchInStatus == 'punchIn'?'func-box func-box-finish':'func-box func-box-unfinish'" v-if="punchIn.category == 0" @click="doPunchIn(punchIn.punchInId)">
|
|
|
+ <span v-if="punchIn.punchInStatus == 'unPunchIn'">完成</span>
|
|
|
+ <span v-else>已完成</span>
|
|
|
+ </view>
|
|
|
+ <view :class="punchIn.punchInStatus == 'punchIn'?'func-box func-box-finish':'func-box func-box-unfinish'" v-if="punchIn.category == 1" @click="doPunchIn(punchIn.punchInId)">
|
|
|
+ <span>{{punchIn.countTrack}}</span>
|
|
|
+ <span>计数</span>
|
|
|
+ </view>
|
|
|
+ <view :class="punchIn.punchInStatus == 'punchIn'?'func-box func-box-finish':'func-box func-box-unfinish'" v-if="punchIn.category == 2" @click="doPunchInForTimeTrack(punchIn.punchInId, punchIn.timeTrack)">
|
|
|
+ <span>
|
|
|
+ {{punchIn.timeTrack.slice(0, 5)}}
|
|
|
+ </span>
|
|
|
+ <span>计时</span>
|
|
|
</view>
|
|
|
</view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <!-- 刮刮乐弹出框 -->
|
|
|
+ <uni-popup ref="scratchInputDialog" type="dialog" :is-mask-click="false">
|
|
|
+ <uni-popup-dialog
|
|
|
+ mode="input"
|
|
|
+ :before-close="true"
|
|
|
+ :title="scratchFormData.actionType == SCRATCH_ACTION_TYPE_INVEST ? '投入金额' : '中奖金额'"
|
|
|
+ confirmText="保存"
|
|
|
+ @confirm="scratchFormConfirm"
|
|
|
+ @close="scratchFormClose">
|
|
|
+ <view style="width: 100%;">
|
|
|
+ <uni-forms ref="scratchForm" :modelValue="scratchFormData" :rules="scratchFormRules" label-position="top" :label-width="150">
|
|
|
+ <uni-forms-item label="刮刮乐来源" name="source" required>
|
|
|
+ <uni-data-select :localdata="scratchSourceRange" v-model="scratchFormData.source"></uni-data-select>
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item label="刮刮乐种类" name="category" required>
|
|
|
+ <uni-data-select :localdata="scratchCategoryRange" v-model="scratchFormData.category"></uni-data-select>
|
|
|
+ </uni-forms-item>
|
|
|
+ <uni-forms-item :label="scratchFormData.actionType == SCRATCH_ACTION_TYPE_INVEST ? '投入金额' : '中奖金额'" name="amount" required>
|
|
|
+ <uni-easyinput type="digit" placeholder="请输入金额" v-model="scratchFormData.amount"></uni-easyinput>
|
|
|
+ </uni-forms-item>
|
|
|
+ </uni-forms>
|
|
|
+ </view>
|
|
|
+ </uni-popup-dialog>
|
|
|
+ </uni-popup>
|
|
|
+
|
|
|
+ <!-- 领取奖励弹出框 -->
|
|
|
+ <uni-popup ref="claimRewardInputDialog" type="dialog" :is-mask-click="false">
|
|
|
+ <uni-popup-dialog
|
|
|
+ mode="input"
|
|
|
+ :before-close="true"
|
|
|
+ title="领取奖励"
|
|
|
+ confirmText="领取"
|
|
|
+ @confirm="claimRewardFormConfirm"
|
|
|
+ @close="claimRewardFormClose">
|
|
|
+ <view style="width: 100%;">
|
|
|
+ <uni-forms ref="claimRewardForm" :modelValue="claimRewardFormData" :rules="claimRewardFormRules" label-position="top" :label-width="150">
|
|
|
+ <uni-forms-item name="claimRewardNum">
|
|
|
+ <uni-easyinput type="digit" placeholder="请输入领取的奖励数" v-model="claimRewardFormData.claimRewardNum"></uni-easyinput>
|
|
|
+ </uni-forms-item>
|
|
|
+ </uni-forms>
|
|
|
+ </view>
|
|
|
+ </uni-popup-dialog>
|
|
|
+ </uni-popup>
|
|
|
|
|
|
- <!-- 弹出框 -->
|
|
|
- <view>
|
|
|
- <uni-popup ref="claimRewardDialog" type="dialog">
|
|
|
- <uni-popup-dialog ref="inputClose" mode="input" title="领取奖励" value="对话框预置提示内容!" placeholder="请输入领取的奖励数"
|
|
|
- @confirm="claimRewardConfirm"></uni-popup-dialog>
|
|
|
- </uni-popup>
|
|
|
- </view>
|
|
|
- </template>
|
|
|
+ <!-- 计时弹出框 -->
|
|
|
+ <uni-popup ref="timeTrackInputDialog" type="dialog" :is-mask-click="false">
|
|
|
+ <uni-popup-dialog
|
|
|
+ mode="input"
|
|
|
+ :before-close="true"
|
|
|
+ title="计时记录"
|
|
|
+ confirmText="保存"
|
|
|
+ @confirm="timeTrackFormConfirm"
|
|
|
+ @close="timeTrackFormClose">
|
|
|
+ <view style="width: 100%;">
|
|
|
+ <uni-forms ref="timeTrackForm" :modelValue="timeTrackFormData" :rules="timeTrackFormRules" label-position="top" :label-width="150">
|
|
|
+ <uni-forms-item name="timeTrack">
|
|
|
+ <picker mode="time" :value="timeTrackFormData.timeTrack" @change="timeTrackChange">
|
|
|
+ <view class="pick-box">{{timeTrackFormData.timeTrack}}</view>
|
|
|
+ </picker>
|
|
|
+ </uni-forms-item>
|
|
|
+ </uni-forms>
|
|
|
+ </view>
|
|
|
+ </uni-popup-dialog>
|
|
|
+ </uni-popup>
|
|
|
</main-layout>
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
import { onMounted, ref } from 'vue';
|
|
|
import { onLoad, onPullDownRefresh, onShow } from "@dcloudio/uni-app";
|
|
|
- import { rewardApi, punchInApi, userApi } from '@/service/apis.js';
|
|
|
+ import { rewardApi, punchInApi, userApi, scratchApi } from '@/service/apis.js';
|
|
|
import router from '@/common/constants/router.js';
|
|
|
+ import { scratchSourceRange, scratchCategoryRange, SCRATCH_ACTION_TYPE_INVEST, SCRATCH_ACTION_TYPE_WIN } from '@/common/constants/scratch';
|
|
|
+
|
|
|
+ // 组件
|
|
|
+ /**
|
|
|
+ * 刮刮乐弹出框
|
|
|
+ */
|
|
|
+ const scratchInputDialog = ref(null);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 刮刮乐表单
|
|
|
+ */
|
|
|
+ const scratchForm = ref(null);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 领取奖励弹出框
|
|
|
+ */
|
|
|
+ const claimRewardInputDialog = ref(null);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 领取奖励表单
|
|
|
+ */
|
|
|
+ const claimRewardForm = ref(null);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计时弹出框
|
|
|
+ */
|
|
|
+ const timeTrackInputDialog = ref(null);
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计时表单
|
|
|
+ */
|
|
|
+ const timeTrackForm = ref(null);
|
|
|
+
|
|
|
+
|
|
|
+ // 属性
|
|
|
+ /**
|
|
|
+ * 登录标志位
|
|
|
+ */
|
|
|
+ const isLogin = ref(false);
|
|
|
|
|
|
/**
|
|
|
* 用户信息
|
|
|
@@ -138,6 +239,88 @@
|
|
|
*/
|
|
|
const punchIns = ref([]);
|
|
|
|
|
|
+ /**
|
|
|
+ * 刮刮乐表单数
|
|
|
+ */
|
|
|
+ const scratchFormData = ref({});
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 刮刮乐表单校验规则
|
|
|
+ */
|
|
|
+ const scratchFormRules = ref({
|
|
|
+ "source": {
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ errorMessage: "请选择来源"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ "category": {
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ errorMessage: "请选择种类"
|
|
|
+ }]
|
|
|
+ },
|
|
|
+ "amount": {
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ errorMessage: "请输入金额"
|
|
|
+ }, {
|
|
|
+ format: 'number',
|
|
|
+ errorMessage: "请输入有效数字"
|
|
|
+ }, {
|
|
|
+ minimum: 0.01,
|
|
|
+ errorMessage: "最小{minimum}元"
|
|
|
+ }]
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 领取奖励表单数据
|
|
|
+ */
|
|
|
+ const claimRewardFormData = ref({
|
|
|
+ claimRewardNum: 1
|
|
|
+ });
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 领取奖励表单规则
|
|
|
+ */
|
|
|
+ const claimRewardFormRules = ref({
|
|
|
+ claimRewardNum: {
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ errorMessage: "请输入领取的奖励数"
|
|
|
+ }, {
|
|
|
+ format: 'number',
|
|
|
+ errorMessage: "请输入有效数字"
|
|
|
+ }, {
|
|
|
+ minimum: 1,
|
|
|
+ errorMessage: "最少领取{minimum}个"
|
|
|
+ }]
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计时表单数据
|
|
|
+ */
|
|
|
+ const timeTrackFormData = ref({
|
|
|
+ timeTrack: '00:00'
|
|
|
+ });
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计时表单规则
|
|
|
+ */
|
|
|
+ const timeTrackFormRules = ref({
|
|
|
+ timeTrack: {
|
|
|
+ rules: [{
|
|
|
+ required: true,
|
|
|
+ errorMessage: "请输入时间"
|
|
|
+ }]
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ // 方法
|
|
|
/**
|
|
|
* 获取用户信息
|
|
|
*/
|
|
|
@@ -154,19 +337,73 @@
|
|
|
punchIns.value = res;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
- * 领取奖励对话框
|
|
|
+ * 增加刮刮乐记录
|
|
|
*/
|
|
|
- const claimRewardDialog = ref(null);
|
|
|
-
|
|
|
+ const addScratchRecord = async (e) => {
|
|
|
+ // 重置上一轮的表单数据
|
|
|
+ scratchFormData.value = {
|
|
|
+ actionType: e
|
|
|
+ };
|
|
|
+ scratchInputDialog.value.open();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 刮刮乐表单提交
|
|
|
+ */
|
|
|
+ const scratchFormConfirm = async () => {
|
|
|
+ scratchForm.value.validate(['actionType']).then(data => {
|
|
|
+ return scratchApi.addScratchRecord(data);
|
|
|
+ }).then(e => {
|
|
|
+ scratchInputDialog.value.close();
|
|
|
+ getUserInfo();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 刮刮乐表单取消
|
|
|
+ */
|
|
|
+ const scratchFormClose = async () => {
|
|
|
+ scratchInputDialog.value.close();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 领取奖励(部分)
|
|
|
+ * @param {String} claimType 部分领取或全部领取(part-部分/all-全部)
|
|
|
+ */
|
|
|
+ const claimReward = (claimType) => {
|
|
|
+ if (userInfo.value.unclaimedRewardNum == 0) {
|
|
|
+ uni.showToast({
|
|
|
+ title: "没有可领取的奖励",
|
|
|
+ icon: "none"
|
|
|
+ });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 重置上一轮的表单数据
|
|
|
+ claimRewardFormData.value = {
|
|
|
+ claimRewardNum: claimType == 'part' ? 1 : userInfo.value.unclaimedRewardNum
|
|
|
+ };
|
|
|
+ claimRewardInputDialog.value.open();
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
- * 领取奖励
|
|
|
+ * 领取奖励表单提交
|
|
|
*/
|
|
|
- const claimReward = () => {
|
|
|
- claimRewardDialog.value.open();
|
|
|
+ const claimRewardFormConfirm = async () => {
|
|
|
+ claimRewardForm.value.validate().then(data => {
|
|
|
+ return rewardApi.claimReward(data);
|
|
|
+ }).then(e => {
|
|
|
+ claimRewardInputDialog.value.close();
|
|
|
+ getUserInfo();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 领取奖励表单取消
|
|
|
+ */
|
|
|
+ const claimRewardFormClose = async () => {
|
|
|
+ claimRewardInputDialog.value.close();
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -179,6 +416,44 @@
|
|
|
// getReward();
|
|
|
claimRewardDialog.value.close();
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计时时间选择监听
|
|
|
+ */
|
|
|
+ const timeTrackChange = (e) => {
|
|
|
+ timeTrackFormData.value.timeTrack = e.detail.value;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 打卡(计时)
|
|
|
+ */
|
|
|
+ const doPunchInForTimeTrack = (id, timeTrack) => {
|
|
|
+ // 重置上一轮的表单数据
|
|
|
+ timeTrackFormData.value = {
|
|
|
+ id,
|
|
|
+ timeTrack: timeTrack ? timeTrack.slice(0, 5) : '00:00'
|
|
|
+ };
|
|
|
+ timeTrackInputDialog.value.open();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 计时表单提交
|
|
|
+ */
|
|
|
+ const timeTrackFormConfirm = async () => {
|
|
|
+ timeTrackForm.value.validate(['id']).then(data => {
|
|
|
+ return punchInApi.doPunchIn(data);
|
|
|
+ }).then(e => {
|
|
|
+ timeTrackInputDialog.value.close();
|
|
|
+ getPunchIns();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 刮刮乐表单取消
|
|
|
+ */
|
|
|
+ const timeTrackFormClose = async () => {
|
|
|
+ timeTrackInputDialog.value.close();
|
|
|
+ }
|
|
|
|
|
|
|
|
|
/**
|
|
|
@@ -226,6 +501,8 @@
|
|
|
// 如果还没登录就结束获取数据
|
|
|
console.log(token);
|
|
|
if (!token) {
|
|
|
+ // 没有登录
|
|
|
+ isLogin.value = false;
|
|
|
userInfo.value = ref({
|
|
|
totalRewardNum: 0,
|
|
|
unclaimedRewardNum: 0,
|
|
|
@@ -237,6 +514,8 @@
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ // 已登录
|
|
|
+ isLogin.value = true;
|
|
|
console.log("开始啦啦啦");
|
|
|
try {
|
|
|
uni.showLoading({
|
|
|
@@ -612,7 +891,7 @@
|
|
|
flex-shrink: 0;
|
|
|
width: 160rpx;
|
|
|
border-radius: 0rpx 24rpx 24rpx 0rpx;
|
|
|
- background: #406CE7;
|
|
|
+
|
|
|
|
|
|
font-size: 36rpx;
|
|
|
font-weight: 400;
|
|
|
@@ -625,6 +904,32 @@
|
|
|
align-items: center;
|
|
|
flex-direction: column;
|
|
|
}
|
|
|
+
|
|
|
+ .func-box-finish {
|
|
|
+ background: #F2607A;
|
|
|
+ }
|
|
|
+
|
|
|
+ .func-box-unfinish {
|
|
|
+ background: #406CE7;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ .pick-box {
|
|
|
+ display: flex;
|
|
|
+ box-sizing: border-box;
|
|
|
+ flex-direction: row;
|
|
|
+ align-items: center;
|
|
|
+ border: 1px solid #dcdfe6;
|
|
|
+ border-radius: 4px;
|
|
|
+
|
|
|
+ width: auto;
|
|
|
+ position: relative;
|
|
|
+ overflow: hidden;
|
|
|
+ flex: 1;
|
|
|
+ line-height: 1;
|
|
|
+ font-size: 14px;
|
|
|
+ height: 35px;
|
|
|
+ padding-left: 10px;
|
|
|
+ }
|
|
|
</style>
|