任一存 пре 1 година
родитељ
комит
e8b9e9aa3a

+ 1 - 0
game/package.json

@@ -11,6 +11,7 @@
   "dependencies": {
     "@vueuse/core": "^10.4.1",
     "axios": "^1.1.3",
+    "clipboard": "^2.0.11",
     "core-js": "^3.8.3",
     "dayjs": "^1.11.7",
     "lodash": "^4.17.21",

BIN
game/public/favicon.ico


+ 1 - 1
game/public/index.html

@@ -4,7 +4,7 @@
     <meta charset="utf-8">
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
     <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no">
-    <link rel="icon" href="<%= BASE_URL %>logo.png">
+    <link rel="icon" href="<%= BASE_URL %>favicon.ico">
     <title>证券博物馆小游戏</title>
   </head>
   <body>

BIN
game/src/assets/images/icon-present.png


BIN
game/src/assets/images/icon-share.png


+ 6 - 0
game/src/router/index.js

@@ -1,5 +1,6 @@
 import { createRouter, createWebHashHistory } from 'vue-router'
 import HomeView from '../views/HomeView.vue'
+import SignUp from '../views/SignUp.vue'
 import PlantTree from '../views/PlantTree.vue'
 import ExamPaper1 from '../views/ExamPaper1.vue'
 import ExamPaper2 from '../views/ExamPaper2.vue'
@@ -14,6 +15,11 @@ const routes = [
     component: HomeView,
   },
   {
+    path: '/sign-up',
+    name: 'SignUp',
+    component: SignUp,
+  },
+  {
     path: '/plant-tree',
     name: 'PlantTree',
     component: PlantTree,

+ 3 - 3
game/src/store/index.js

@@ -2,10 +2,10 @@ import { createStore } from 'vuex'
 
 export default createStore({
   state: {
-    loginStatus: 1, // 0: 未登录;1:已登录
+    loginStatus: 0, // 0: 未登录;1:已登录
     avatar: '',
-    userName: 'sdfsdfsdfsdfsdfsdfsdfsdfsdfsdf',
-    bonusPoint: 1243,
+    userName: '',
+    bonusPoint: 0,
   },
   getters: {
   },

+ 70 - 2
game/src/views/HomeView.vue

@@ -15,7 +15,10 @@
         >
         <span>登录</span>
       </button>
-      <button class="sign-up">
+      <button
+        class="sign-up"
+        @click="onClickSignUp"
+      >
         <img
           class=""
           src="@/assets/images/btn-sign-up-bg.png"
@@ -121,13 +124,41 @@
         >
       </button>
     </div>
+
+    <!-- 悬浮按钮 -->
+    <div class="floating-btn-group">
+      <button
+        v-if="store.state.loginStatus === 1"
+        class="redeem"
+      >
+        <img
+          class=""
+          src="@/assets/images/icon-present.png"
+          alt=""
+          draggable="false"
+        >
+      </button>
+      <button
+        class="share"
+        :data-clipboard-text="shareText"
+      >
+        <img
+          class=""
+          src="@/assets/images/icon-share.png"
+          alt=""
+          draggable="false"
+        >
+      </button>
+    </div>
   </div>
 </template>
 
 <script setup>
-import { ref, computed, watch, onMounted } from "vue"
+import { ref, computed, watch, onMounted, onUnmounted } from "vue"
 import { useRoute, useRouter } from "vue-router"
 import { useStore } from "vuex"
+import ClipboardJS from 'clipboard'
+import { showDialog } from 'vant'
 
 const route = useRoute()
 const router = useRouter()
@@ -138,13 +169,36 @@ const {
   windowSizeWhenDesignForRef,
 } = useSizeAdapt(390, 752)
 
+function onClickSignUp() {
+  router.push({
+    name: 'SignUp',
+  })
+}
 
+const shareText = location.href
+const clipboard = new ClipboardJS('button.share')
+clipboard.on('success', function(e) {
+  showDialog({
+    message: '链接已复制',
+    theme: 'round-button',
+  })
+})
+// clipboard.on('error', function(e) {
+//   showDialog({
+//       message: '请使用浏览器原生功能进行分享',
+//       theme: 'round-button',
+//     })
+// });
+onUnmounted(() => {
+  clipboard.destroy()
+})
 </script>
 
 <style lang="less" scoped>
 .home {
   width: 100%;
   height: 100%;
+  overflow: auto;
   >.for-visitor{
     margin-top: calc(18 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
     width: 100%;
@@ -263,5 +317,19 @@ const {
       }
     }
   }
+  >.floating-btn-group{
+    position: fixed;
+    right: calc(11 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+    bottom: calc(58 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+    >button{
+      width: calc(60 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      height: calc(60 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
+      display: block;
+      >img{
+        width: 100%;
+        height: 100%;
+      }
+    }
+  }
 }
 </style>

+ 20 - 0
game/src/views/SignUp.vue

@@ -0,0 +1,20 @@
+<template>
+  <div class="asdf">
+    sdlfjslkdfj
+  </div>
+</template>
+
+<script setup>
+import { ref, computed, watch, onMounted } from "vue"
+import { useRoute, useRouter } from "vue-router"
+import { useStore } from "vuex"
+
+const route = useRoute()
+const router = useRouter()
+const store = useStore()
+</script>
+
+<style lang="less" scoped>
+.asdf{
+}
+</style>

+ 31 - 0
game/yarn.lock

@@ -2399,6 +2399,15 @@ cli-spinners@^2.5.0:
   resolved "https://registry.npmmirror.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41"
   integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==
 
+clipboard@^2.0.11:
+  version "2.0.11"
+  resolved "https://registry.npmmirror.com/clipboard/-/clipboard-2.0.11.tgz#62180360b97dd668b6b3a84ec226975762a70be5"
+  integrity sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==
+  dependencies:
+    good-listener "^1.2.2"
+    select "^1.1.2"
+    tiny-emitter "^2.0.0"
+
 clipboardy@^2.3.0:
   version "2.3.0"
   resolved "https://registry.npmmirror.com/clipboardy/-/clipboardy-2.3.0.tgz#3c2903650c68e46a91b388985bc2774287dba290"
@@ -2836,6 +2845,11 @@ delayed-stream@~1.0.0:
   resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
   integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
 
+delegate@^3.1.2:
+  version "3.2.0"
+  resolved "https://registry.npmmirror.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166"
+  integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==
+
 depd@2.0.0:
   version "2.0.0"
   resolved "https://registry.npmmirror.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
@@ -3586,6 +3600,13 @@ globby@^11.0.2, globby@^11.0.3:
     merge2 "^1.4.1"
     slash "^3.0.0"
 
+good-listener@^1.2.2:
+  version "1.2.2"
+  resolved "https://registry.npmmirror.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50"
+  integrity sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==
+  dependencies:
+    delegate "^3.1.2"
+
 gopd@^1.0.1:
   version "1.0.1"
   resolved "https://registry.npmmirror.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
@@ -5473,6 +5494,11 @@ select-hose@^2.0.0:
   resolved "https://registry.npmmirror.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
   integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==
 
+select@^1.1.2:
+  version "1.1.2"
+  resolved "https://registry.npmmirror.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d"
+  integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==
+
 selfsigned@^2.1.1:
   version "2.4.1"
   resolved "https://registry.npmmirror.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0"
@@ -5937,6 +5963,11 @@ thunky@^1.0.2:
   resolved "https://registry.npmmirror.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
   integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
 
+tiny-emitter@^2.0.0:
+  version "2.1.0"
+  resolved "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
+  integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==
+
 to-fast-properties@^2.0.0:
   version "2.0.0"
   resolved "https://registry.npmmirror.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e"