|
|
@@ -2,23 +2,388 @@
|
|
|
<div
|
|
|
class="home"
|
|
|
>
|
|
|
- sdfsf
|
|
|
+ <div
|
|
|
+ v-if="!store.state.loginStatus"
|
|
|
+ class="for-visitor"
|
|
|
+ >
|
|
|
+ <button
|
|
|
+ class="login"
|
|
|
+ @click="onClickLogin"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ class=""
|
|
|
+ src="@/assets/images/btn-login-bg.png"
|
|
|
+ alt=""
|
|
|
+ draggable="false"
|
|
|
+ >
|
|
|
+ <span>登录</span>
|
|
|
+ </button>
|
|
|
+ <button
|
|
|
+ class="sign-up"
|
|
|
+ @click="onClickSignUp"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ class=""
|
|
|
+ src="@/assets/images/btn-sign-up-bg.png"
|
|
|
+ alt=""
|
|
|
+ draggable="false"
|
|
|
+ >
|
|
|
+ <span>注册</span>
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ v-else
|
|
|
+ class="after-login"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ class="avatar"
|
|
|
+ src="@/assets/images/avatar.png"
|
|
|
+ alt=""
|
|
|
+ draggable="false"
|
|
|
+ >
|
|
|
+ <div class="info-wrap">
|
|
|
+ <div class="user-id">
|
|
|
+ <span class="title">用户ID:</span>
|
|
|
+ <span
|
|
|
+ class="value"
|
|
|
+ :title="store.state.userInfo.userName"
|
|
|
+ >{{ store.state.userInfo.userName }}</span>
|
|
|
+ </div>
|
|
|
+ <div class="point-bonus">
|
|
|
+ <span class="title">当前积分:</span>
|
|
|
+ <span class="value">{{ store.state.userInfo.score }}</span>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <button
|
|
|
+ class="change-password"
|
|
|
+ @click="router.push({
|
|
|
+ name: 'ChangePassword',
|
|
|
+ })"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ class=""
|
|
|
+ src="@/assets/images/icon-password.png"
|
|
|
+ alt=""
|
|
|
+ draggable="false"
|
|
|
+ >
|
|
|
+ </button>
|
|
|
+ <button
|
|
|
+ class="logout"
|
|
|
+ @click="onClickLogout"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ class=""
|
|
|
+ src="@/assets/images/icon-exit.png"
|
|
|
+ alt=""
|
|
|
+ draggable="false"
|
|
|
+ >
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+ <div class="entry-list">
|
|
|
+ <!-- 乡村林场 -->
|
|
|
+ <button
|
|
|
+ class="game-entry plant-tree-entry"
|
|
|
+ @click="router.push({
|
|
|
+ name: 'PlantTree',
|
|
|
+ })"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ class=""
|
|
|
+ src="@/assets/images/plant-tree-entry.png"
|
|
|
+ alt=""
|
|
|
+ draggable="false"
|
|
|
+ >
|
|
|
+ </button>
|
|
|
+ <!-- 助农课堂 -->
|
|
|
+ <button
|
|
|
+ class="game-entry exam-paper-entry"
|
|
|
+ @click="router.push({
|
|
|
+ name: 'ExamPaper1',
|
|
|
+ })"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ class=""
|
|
|
+ src="@/assets/images/exam-paper-entry.png"
|
|
|
+ alt=""
|
|
|
+ draggable="false"
|
|
|
+ >
|
|
|
+ </button>
|
|
|
+ <!-- 企业翻翻看 -->
|
|
|
+ <button
|
|
|
+ class="game-entry pair-up-entry"
|
|
|
+ @click="router.push({
|
|
|
+ name: 'PairUp',
|
|
|
+ })"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ class=""
|
|
|
+ src="@/assets/images/pair-up-entry.png"
|
|
|
+ alt=""
|
|
|
+ draggable="false"
|
|
|
+ >
|
|
|
+ </button>
|
|
|
+ <!-- 抗体大作战 -->
|
|
|
+ <button class="game-entry antibody-battle-entry">
|
|
|
+ <img
|
|
|
+ class=""
|
|
|
+ src="@/assets/images/antibody-battle-entry.png"
|
|
|
+ alt=""
|
|
|
+ draggable="false"
|
|
|
+ >
|
|
|
+ </button>
|
|
|
+ <!-- 应急救灾 -->
|
|
|
+ <button
|
|
|
+ class="game-entry disaster-relief-entry"
|
|
|
+ @click="router.push({
|
|
|
+ name: 'GameByUnity',
|
|
|
+ query: {
|
|
|
+ gameName: 'DisasterRelief'
|
|
|
+ },
|
|
|
+ })"
|
|
|
+ >
|
|
|
+ <img
|
|
|
+ class=""
|
|
|
+ src="@/assets/images/disaster-relief-entry.png"
|
|
|
+ alt=""
|
|
|
+ draggable="false"
|
|
|
+ >
|
|
|
+ </button>
|
|
|
+ <!-- 生态保护 -->
|
|
|
+ <button class="game-entry enviroment-protection">
|
|
|
+ <img
|
|
|
+ class=""
|
|
|
+ src="@/assets/images/enviroment-protection.png"
|
|
|
+ alt=""
|
|
|
+ draggable="false"
|
|
|
+ >
|
|
|
+ </button>
|
|
|
+ <!-- 找回走失儿童 -->
|
|
|
+ <button class="game-entry lost-children-entry">
|
|
|
+ <img
|
|
|
+ class=""
|
|
|
+ src="@/assets/images/lost-children-entry.png"
|
|
|
+ alt=""
|
|
|
+ draggable="false"
|
|
|
+ >
|
|
|
+ </button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 悬浮按钮 -->
|
|
|
+ <div class="floating-btn-group">
|
|
|
+ <button
|
|
|
+ v-if="store.state.loginStatus"
|
|
|
+ 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'
|
|
|
+import { logout } from '@/api.js'
|
|
|
|
|
|
const route = useRoute()
|
|
|
const router = useRouter()
|
|
|
const store = useStore()
|
|
|
+
|
|
|
+const {
|
|
|
+ windowSizeInCssForRef,
|
|
|
+ windowSizeWhenDesignForRef,
|
|
|
+} = useSizeAdapt(390, 752)
|
|
|
+
|
|
|
+function onClickLogin() {
|
|
|
+ router.push({
|
|
|
+ name: 'LoginView',
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function onClickSignUp() {
|
|
|
+ router.push({
|
|
|
+ name: 'SignUp',
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+function onClickLogout() {
|
|
|
+ logout()
|
|
|
+}
|
|
|
+
|
|
|
+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%;
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ align-items: center;
|
|
|
+ padding-left: calc(16 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ padding-right: calc(16 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ >button{
|
|
|
+ width: calc(170 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ position: relative;
|
|
|
+ >img{
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ }
|
|
|
+ >span{
|
|
|
+ position: absolute;
|
|
|
+ left: calc(100 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ top: calc(32 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ font-size: calc(24 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ font-family: Source Han Sans SC, Source Han Sans SC;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #A97C46;
|
|
|
+ line-height: calc(28 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ >.after-login{
|
|
|
+ margin-top: calc(25 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding-left: calc(12 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ padding-right: calc(12 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ padding-top: calc(13 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ padding-bottom: calc(13 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ background: rgba(226, 201, 163, 0.5);
|
|
|
+ box-shadow: inset -1px -2px 1px 0px #E2C9A3;
|
|
|
+ border-radius: calc(4 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ margin-left: calc(16 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ margin-right: calc(16 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ >img.avatar{
|
|
|
+ flex: 0 0 auto;
|
|
|
+ width: calc(54 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ height: calc(54 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ border-radius: calc(27 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ object-fit: cover;
|
|
|
+ }
|
|
|
+ >.info-wrap{
|
|
|
+ flex: 0 0 auto;
|
|
|
+ margin-left: calc(16 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ font-size: calc(16 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ font-family: Source Han Sans SC, Source Han Sans SC;
|
|
|
+ font-weight: 400;
|
|
|
+ color: #A97C46;
|
|
|
+ line-height: 1.5;
|
|
|
+ white-space: pre;
|
|
|
+ >.user-id{
|
|
|
+ >.title{
|
|
|
+ vertical-align: middle;
|
|
|
+ display: inline-block;
|
|
|
+ width: calc(69 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ letter-spacing: calc(4 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ margin-right: calc(10 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ }
|
|
|
+ >.value{
|
|
|
+ vertical-align: middle;
|
|
|
+ display: inline-block;
|
|
|
+ overflow: hidden;
|
|
|
+ white-space: pre;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ width: calc(80 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ >.point-bonus{
|
|
|
+ >.title{
|
|
|
+ vertical-align: middle;
|
|
|
+ display: inline-block;
|
|
|
+ width: calc(69 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ margin-right: calc(10 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ }
|
|
|
+ >.value{
|
|
|
+ vertical-align: middle;
|
|
|
+ display: inline-block;
|
|
|
+ overflow: hidden;
|
|
|
+ white-space: pre;
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ width: calc(80 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ >button.change-password{
|
|
|
+ flex: 0 0 auto;
|
|
|
+ width: calc(32 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ margin-left: calc(12 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ >img{
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ >button.logout{
|
|
|
+ flex: 0 0 auto;
|
|
|
+ width: calc(32 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ margin-left: calc(12 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ >img{
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ >.entry-list{
|
|
|
+ margin-left: calc(10 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ margin-right: calc(10 / v-bind('windowSizeWhenDesignForRef') * v-bind('windowSizeInCssForRef'));
|
|
|
+ >button.game-entry{
|
|
|
+ width: 100%;
|
|
|
+ >img{
|
|
|
+ width: 100%;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ >.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>
|