Procházet zdrojové kódy

显示积分清零时间

任一存 před 1 rokem
rodič
revize
b21c01d522
4 změnil soubory, kde provedl 58 přidání a 10 odebrání
  1. 14 1
      game/src/App.vue
  2. 1 1
      game/src/api.js
  3. 4 0
      game/src/store/index.js
  4. 39 8
      game/src/views/ShopView.vue

+ 14 - 1
game/src/App.vue

@@ -26,7 +26,20 @@ getGameRuleList().then((res) => {
   store.commit('setGameRuleList', res)
 })
 getScoreLimit().then((res) => {
-  store.commit('setScoreLimit', res)
+  store.commit('setScoreLimit', res.score)
+  const resetInfo = JSON.parse(res.description)
+  if (resetInfo.hasReset) {
+    const currentTimeMs = new Date().getTime()
+    const createTime = new Date(resetInfo.createTime)
+    const period = resetInfo.period
+    let resetTimeMs = createTime.getTime() + period * 24 * 60 * 60 * 1000
+    while (resetTimeMs <= currentTimeMs) {
+      resetTimeMs = resetTimeMs + period * 24 * 60 * 60 * 1000
+    }
+    store.commit('setScoreResetDateMs', resetTimeMs)
+  } else {
+    store.commit('setScoreResetDateMs', null)
+  }
 })
 
 </script>

+ 1 - 1
game/src/api.js

@@ -176,7 +176,7 @@ export async function getScoreLimit() {
   if (res.data.code !== 0) {
     throw (`获取积分上限失败:${res.data.msg}`)
   } else {
-    return res.data.data[0].score
+    return res.data.data[0]
   }
 }
 export async function getScore() {

+ 4 - 0
game/src/store/index.js

@@ -37,6 +37,7 @@ export default createStore({
     ],
     isDirectPlayGame: false,
     score: undefined,
+    scoreResetDateMs: undefined,
     ifScoreLimitReached: undefined,
     scoreLimit: undefined,
   },
@@ -76,6 +77,9 @@ export default createStore({
     setScore(state, value) {
       state.score = value
     },
+    setScoreResetDateMs(state, value) {
+      state.scoreResetDateMs = value
+    },
     setIfScoreLimitReached(state, value) {
       state.ifScoreLimitReached = value
     },

+ 39 - 8
game/src/views/ShopView.vue

@@ -13,8 +13,16 @@
     <div class="my-bonus-point-title">
       我的积分
     </div>
-    <div class="my-bonus-point-value">
-      {{ store.state.score }}
+    <div class="bonus-point-data">
+      <div class="my-bonus-point-value">
+        {{ store.state.score }}
+      </div>
+      <div
+        v-if="scoreResetDate"
+        class="bonus-point-clear-date"
+      >
+        积分将在 {{ scoreResetDate }} 清零
+      </div>
     </div>
     <div class="main-wrap">
       <div class="tabbar">
@@ -185,6 +193,7 @@ import { ref, computed, watch, onMounted } from "vue"
 import { useRoute, useRouter } from "vue-router"
 import { useStore } from "vuex"
 import { getScore, getPrizeList, getBonusPointRecord, checkCertificationStatus } from '@/api.js'
+import dayjs from 'dayjs'
 
 const route = useRoute()
 const router = useRouter()
@@ -200,6 +209,16 @@ getScore().then((res) => {
   store.commit('setIfScoreLimitReached', res.hasOver)
 })
 
+const scoreResetDate = computed(() => {
+  if (store.state.scoreResetDateMs) {
+    console.log(store.state.scoreResetDateMs)
+    return dayjs(store.state.scoreResetDateMs).format('YY年M月D日')
+  } else {
+    return ''
+  }
+})
+
+
 const currentTabIdx = ref(0)
 
 /**
@@ -315,15 +334,27 @@ getBonusPointRecord().then((res) => {
     color: #FFFFFF;
     line-height: calc(16 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
   }
-  >.my-bonus-point-value{
+  >.bonus-point-data{
     position: absolute;
     top: calc(80 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
     left: calc(24 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
-    font-size: calc(40 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
-    font-family: Source Han Sans SC, Source Han Sans SC;
-    font-weight: 800;
-    color: #FFFFFF;
-    line-height: calc(47 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+    display: flex;
+    align-items: flex-end;
+    >.my-bonus-point-value{
+      font-size: calc(40 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      font-family: Source Han Sans SC, Source Han Sans SC;
+      font-weight: 800;
+      color: #FFFFFF;
+      line-height: calc(47 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+    }
+    >.bonus-point-clear-date{
+      margin-left: calc(10 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      font-size: calc(12 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      font-family: Source Han Sans SC, Source Han Sans SC;
+      font-weight: 400;
+      color: #FFFFFF;
+      line-height: calc(30 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+    }
   }
   >.main-wrap{
     position: absolute;