From 9a9d832dbd364557e070abcd9a7779a2c6c07ffb Mon Sep 17 00:00:00 2001
From: 李凌 <344137771@qq.com>
Date: Tue, 20 Jan 2026 17:35:13 +0800
Subject: [PATCH] 1
---
src/App.vue | 674 +++++++++++++++++++++++++++++---------------------------
1 files changed, 348 insertions(+), 326 deletions(-)
diff --git a/src/App.vue b/src/App.vue
index d7c4695..f575dbe 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -1,16 +1,17 @@
<template>
- <div class="pt-5" >
- <router-view />
- </div>
- <fx-footer v-if="route.meta.tarbar" />
+ <van-config-provider :theme="store.state.vant.theme">
+ <div class="app-container">
+ <router-view />
+ </div>
+ <fx-footer v-if="route.meta.tarbar" />
+ </van-config-provider>
</template>
<script setup>
-
import fxFooter from '@/components/fx-footer/index.vue'
import { authorizedLogin } from "@/service/login.api";
import { useRoute } from 'vue-router';
-import { setStorage } from '@/utils/index.js'
+import { setStorage, getStorage } from '@/utils/index.js'
import { onMounted } from 'vue'
import { useRouter } from 'vue-router';
@@ -19,84 +20,238 @@
import { GET_USERINFO } from '@/store/types.store'
const router = useRouter()
const route = useRoute()
+// 启动时获取缓存的黑夜白天模式
+const theme = getStorage('theme') || 'light'
+store.commit('vant/SET_THEME', theme)
+
+// 获取客服地址
+store.dispatch('user/GET_CUSTOMER_SERVICE_URL')
const geturlkey = (name) => {
- return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ""])[1].replace(/\+/g, '%20')) || null;
+ return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) || [, ""])[1].replace(/\+/g, '%20')) || null;
}
let usercode = geturlkey('usercode');
if (usercode) {
- setStorage('usercode', usercode);
+ setStorage('usercode', usercode);
}
const userStore = useUserStore();
// 狐狸钱包登录逻辑
-onMounted(() => {
- if (window.ethereum !== undefined || window.web3 !== undefined || window.injectedWeb3 !== undefined) {
- loginButton(); // 如果支持 Web3,调用登录函数
- } else {
- window.location.href = 'https://trustwallet.com/download'; // 否则重定向
- }
-});
+// onMounted(() => {
+// if (window.ethereum !== undefined || window.web3 !== undefined || window.injectedWeb3 !== undefined) {
+// loginButton(); // 如果支持 Web3,调用登录函数
+// } else {
+// window.location.href = 'https://trustwallet.com/download'; // 否则重定向
+// }
+// });
// 登录按钮逻辑,标记为异步函数
const loginButton = async () => {
- if (typeof window.ethereum !== 'undefined') {
- if (!(userStore.userInfo && userStore.userInfo.token)) {
- try {
- // 请求用户授权
- const accounts = await window.ethereum.request({
- method: 'eth_requestAccounts'
- });
- const userAddress = accounts[0];
- console.log("accounts:", accounts);
+ if (typeof window.ethereum !== 'undefined') {
+ if (!(userStore.userInfo && userStore.userInfo.token)) {
+ try {
+ // 请求用户授权
+ const accounts = await window.ethereum.request({
+ method: 'eth_requestAccounts'
+ });
+ const userAddress = accounts[0];
+ console.log("accounts:", accounts);
- // 签名消息
- const message = "请确认您的身份。";
- const signature = await window.ethereum.request({
- method: 'personal_sign',
- params: [message, userAddress],
- });
+ // 签名消息
+ const message = "请确认您的身份。";
+ const signature = await window.ethereum.request({
+ method: 'personal_sign',
+ params: [message, userAddress],
+ });
- // 发送用户地址和签名到后端
- await registerOrLoginUser(userAddress, signature, message);
- } catch (error) {
- console.error('连接钱包时出错:', error);
- if (error.code === 4001) {
- // 用户拒绝连接
- alert(error.message);
- } else {
- console.error('发生错误:', error);
- alert(error.message);
- }
- }
- } else {
- return;
- }
- } else {
- alert('Please install Little Fox Wallet!');
- }
+ // 发送用户地址和签名到后端
+ await registerOrLoginUser(userAddress, signature, message);
+ } catch (error) {
+ console.error('连接钱包时出错:', error);
+ if (error.code === 4001) {
+ // 用户拒绝连接
+ alert(error.message);
+ } else {
+ console.error('发生错误:', error);
+ alert(error.message);
+ }
+ }
+ } else {
+ return;
+ }
+ } else {
+ alert('Please install Little Fox Wallet!');
+ }
}
// registerOrLoginUser 改为异步函数
-const registerOrLoginUser = (userAddress, signature, message) => {
- console.log(userAddress);
- console.log(signature);
- console.log(message);
- const res = authorizedLogin({foxAddress: userAddress}).then((res) => {
- userStore[GET_USERINFO](res)
- store.commit('user/SET_USERINFO', res)
- router.push('/')
- }).catch((res) => {
- console.log(res)
- }) // 确保调用的接口是异步的
+const registerOrLoginUser = (userAddress, signature, message) => {
+ console.log(userAddress);
+ console.log(signature);
+ console.log(message);
+ const res = authorizedLogin({ foxAddress: userAddress }).then((res) => {
+ userStore[GET_USERINFO](res)
+ store.commit('user/SET_USERINFO', res)
+ router.push('/')
+ }).catch((res) => {
+ console.log(res)
+ }) // 确保调用的接口是异步的
};
+
</script>
<style lang="scss">
- @import "assets/init";
- @import "assets/mixin";
- @import "assets/css/variable.scss";
+@import "assets/init";
+@import "assets/mixin";
+@import "assets/css/flex";
+// @import "assets/css/variable.scss";
+
+.app-container,
+body,
+html {
+ @include themify() {
+ color: themed("text_color");
+ background: themed("main_background");
+ }
+}
+
+.nationList {
+ .van-action-sheet {
+ height: 80%;
+ }
+}
+
+.van-dialog {
+ width: var(--van-dialog-width) !important;
+}
+
+.van-icon-arrow-left {
+ // color: #fff !important;
+}
+
+.van-nav-bar::after {
+ border-bottom: none;
+}
+
+.van-tabbar-item__text {
+ color: #BEC1D2;
+}
+
+#cryptos {
+ // background-color: $mainbgWhiteColor;
+
+ // 上传图片框大小设置
+ .van-uploader__upload {
+ width: 140px !important;
+ height: 140px !important;
+ }
+
+ .van-uploader__upload-icon {
+ font-size: 48px !important;
+ }
+
+ .van-uploader__upload {
+ background-color: $upload_bg !important;
+ border: 2px dashed #b8bcc5;
+ }
+
+ // tab标签短横线颜色
+ .van-tabs__line {
+ background-color: $active_line !important;
+ }
+
+ .van-tabs__wrap {
+ // height: 88px !important;
+ }
+
+ .van-tab__text--ellipsis {
+ overflow: visible !important;
+ -webkit-box-orient: horizontal !important; //修复K线tab标题文字显示不全
+ }
+
+ .van-tab__text {
+ font-size: 16px !important;
+ }
+
+ .vux-pop-out-enter-active,
+ .vux-pop-out-leave-active,
+ .vux-pop-in-enter-active,
+ .vux-pop-in-leave-active {
+ will-change: transform;
+ transition: all 250ms;
+ height: 100%;
+ top: 0;
+ position: absolute;
+ backface-visibility: hidden;
+ perspective: 1000;
+ }
+
+ .vux-pop-out-enter {
+ opacity: 0;
+ transform: translate3d(-100%, 0, 0);
+ }
+
+ .vux-pop-out-leave-active {
+ opacity: 0;
+ transform: translate3d(100%, 0, 0);
+ }
+
+ .vux-pop-in-enter {
+ opacity: 0;
+ transform: translate3d(100%, 0, 0);
+ }
+
+ .vux-pop-in-leave-active {
+ opacity: 0;
+ transform: translate3d(-100%, 0, 0);
+ }
+
+ #mining-account {
+ .van-grid-item__content {
+ padding: 41px 0;
+ }
+ }
+
+ .upload-wrap {
+ .van-uploader__preview {
+ margin: 0 !important;
+ }
+ }
+
+ .popup-delivery {
+ .van-circle {
+ // width: 300px !important;
+ // height: 300px !important;
+ }
+
+ .van-count-down {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ transform: translate(-50%, -50%);
+ width: 100%;
+ // font-size: 40px;
+ }
+ }
+
+ .list-quatation {
+ .van-cell {
+ padding: 10px 0 !important;
+ // background: $mainbgWhiteColor;
+ // background: $inp-b;
+
+ &::after {
+ border: none;
+ }
+ }
+ }
+
+ .quotes {
+ .van-tabs__line {
+ width: 120px !important;
+ }
+ }
.nationList {
.van-action-sheet {
@@ -104,296 +259,163 @@
}
}
- .van-dialog {
- width: var(--van-dialog-width) !important;
+ #withdraw_verify {
+ .van-field-word-limit-line-height {
+ height: 30px;
+ }
}
- .van-icon-arrow-left {
- // color: #fff !important;
- }
-
- .van-nav-bar::after {
- border-bottom: none;
- }
-
- .van-tabbar-item__text {
- color: #BEC1D2;
- }
-
- #cryptos {
- background-color: $mainbgWhiteColor;
-
- // 上传图片框大小设置
- .van-uploader__upload {
- width: 140px !important;
- height: 140px !important;
+ #editAd {
+ .van-dropdown-menu__item {
+ justify-content: left;
}
- .van-uploader__upload-icon {
- font-size: 48px !important;
+ .van-dropdown-menu__title::after {
+ right: -200px;
+ border-color: #3c507100 transparent #323233f7 #36689a;
}
- .van-uploader__upload {
- background-color: $upload_bg !important;
- border: 2px dashed #b8bcc5;
- }
-
- // tab标签短横线颜色
- .van-tabs__line {
- background-color: $active_line !important;
- }
-
- .van-tabs__wrap {
- // height: 88px !important;
- }
-
- .van-tab__text--ellipsis {
- overflow: visible !important;
- -webkit-box-orient: horizontal !important; //修复K线tab标题文字显示不全
- }
-
- .van-tab__text {
- font-size: 16px !important;
- }
-
- .vux-pop-out-enter-active,
- .vux-pop-out-leave-active,
- .vux-pop-in-enter-active,
- .vux-pop-in-leave-active {
- will-change: transform;
- transition: all 250ms;
- height: 100%;
- top: 0;
- position: absolute;
- backface-visibility: hidden;
- perspective: 1000;
- }
-
- .vux-pop-out-enter {
- opacity: 0;
- transform: translate3d(-100%, 0, 0);
- }
-
- .vux-pop-out-leave-active {
- opacity: 0;
- transform: translate3d(100%, 0, 0);
- }
-
- .vux-pop-in-enter {
- opacity: 0;
- transform: translate3d(100%, 0, 0);
- }
-
- .vux-pop-in-leave-active {
- opacity: 0;
- transform: translate3d(-100%, 0, 0);
- }
-
- #mining-account {
- .van-grid-item__content {
- padding: 41px 0;
- }
- }
-
- .upload-wrap {
- .van-uploader__preview {
- margin: 0 !important;
- }
- }
-
- .popup-delivery {
- .van-circle {
- // width: 300px !important;
- // height: 300px !important;
- }
-
- .van-count-down {
- position: absolute;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- width: 100%;
- // font-size: 40px;
- }
- }
-
- .list-quatation {
+ //.van-cell{
+ // background-color: #eee;
+ //}
+ .bg {
.van-cell {
- padding: 15px 0 !important;
- background: $mainbgWhiteColor;
- // background: $inp-b;
-
- &::after {
- border: none;
+ @include themify() {
+ background-color: themed("main_background");
}
}
}
+ }
- .quotes {
- .van-tabs__line {
- width: 120px !important;
- }
+ #wantBuy {
+ .van-popover__action {
+ width: 320px;
}
- .nationList {
- .van-action-sheet {
- height: 80%;
- }
- }
+ }
- #withdraw_verify {
- .van-field-word-limit-line-height {
- height: 30px;
- }
- }
-
- #editAd {
- .van-dropdown-menu__item {
- justify-content: left;
- }
-
- .van-dropdown-menu__title::after {
- right: -200px;
- border-color: #3c507100 transparent #323233f7 #36689a;
- }
-
- //.van-cell{
- // background-color: #eee;
- //}
- .bg {
- .van-cell {
- background-color: $mainTextColor;
- }
- }
- }
-
- #wantBuy {
- .van-popover__action {
- width: 320px;
- }
-
- }
-
- .adScreening {
- .van-cell {
- line-height: 100px;
- }
-
- .van-field__control {
- background-color: $tab_background;
- padding-left: 20px;
- }
- }
-
- .vue-auth-box_ .auth-control_ .range-box {
- background-color: #EAEAEA !important;
- height: 30px !important;
- margin-bottom: 40px;
- }
-
- .vue-auth-box_ .auth-control_ .range-box .range-slider .range-btn {
- width: 140px !important;
- height: 74px !important;
- background: $color_main !important;
- border-radius: 96px !important;
- top: -50%;
- }
-
- .vue-auth-box_ .auth-control_ .range-box .range-slider .range-btn>div {
- border: solid 1px $mainTextColor !important;
- border-radius: 4px;
- }
-
- .van-toast {
- width: 300px;
- }
-
- .van-toast__text {
- word-break: break-word;
- }
-
- .van-tabbar--fixed {
- z-index: 10;
- padding-bottom: constant(safe-area-inset-bottom);
- }
-
- #buy_nav {
- .van-nav-bar__title {
- font-size: 36px !important;
- }
- }
-
- .van-cell-group {
- &::after {
- border: none;
- }
- }
-
- .van-collapse {
- &::after {
- border: none;
- }
- }
-
+ .adScreening {
.van-cell {
- padding: 0;
- color: $text_color1;
-
- &::after {
- border: none;
- }
-
- .van-cell__value {
- color: $black;
- }
+ line-height: 100px;
}
- .van-popup {
- background: $mainbgWhiteColor;
- margin: 0 auto;
+ .van-field__control {
+ background-color: $tab_background;
+ padding-left: 20px;
}
+ }
+ .vue-auth-box_ .auth-control_ .range-box {
+ background-color: #EAEAEA !important;
+ height: 30px !important;
+ margin-bottom: 40px;
+ }
+
+ .vue-auth-box_ .auth-control_ .range-box .range-slider .range-btn {
+ width: 140px !important;
+ height: 74px !important;
+ background: $color_main !important;
+ border-radius: 96px !important;
+ top: -50%;
+ }
+
+ .vue-auth-box_ .auth-control_ .range-box .range-slider .range-btn>div {
+ border: solid 1px $mainTextColor !important;
+ border-radius: 4px;
+ }
+
+ .van-toast {
+ width: 300px;
+ }
+
+ .van-toast__text {
+ word-break: break-word;
+ }
+
+ .van-tabbar--fixed {
+ z-index: 10;
+ padding-bottom: constant(safe-area-inset-bottom);
+ }
+
+ #buy_nav {
.van-nav-bar__title {
- color: $log-c;
+ font-size: 36px !important;
}
+ }
- .van-hairline--top-bottom::after,
- .van-hairline-unset--top-bottom::after {
+ .van-cell-group {
+ &::after {
+ border: none;
+ }
+ }
+
+ .van-collapse {
+ &::after {
+ border: none;
+ }
+ }
+
+ .van-cell {
+ padding: 0;
+ color: $text_color1;
+
+ &::after {
border: none;
}
- .van-dialog {
- background: $mainbgWhiteColor;
- }
-
- .van-dialog__header {
- color: $text_color;
- }
-
- .van-dialog__message--has-title {
- color: $dark-grey;
- }
-
- .van-button--default {
- // background: $main_background;
- color: $dark-grey;
- }
-
- .van-nav-bar {
- // background: $main_background;
- line-height: normal;
- }
-
- .van-dropdown-menu__title {
- color: $text_color !important;
- }
-
- .van-nav-bar__right {
- color: $text_color;
+ .van-cell__value {
+ color: $black;
}
}
- .van-nav-bar__left {
- padding: 0 16px !important;
+ .van-popup {
+ background: $mainbgWhiteColor;
+ margin: 0 auto;
}
-</style>
\ No newline at end of file
+
+ .van-nav-bar__title {
+ @include themify() {
+ color: themed("text_color2") 1px solid;
+ }
+ }
+
+ .van-hairline--top-bottom::after,
+ .van-hairline-unset--top-bottom::after {
+ border: none;
+ }
+
+ .van-dialog {
+ background: $mainbgWhiteColor;
+ }
+
+ .van-dialog__header {
+ color: $text_color;
+ }
+
+ .van-dialog__message--has-title {
+ color: $dark-grey;
+ }
+
+ .van-button--default {
+ // background: $main_background;
+ color: $dark-grey;
+ }
+
+ .van-nav-bar {
+ // background: $main_background;
+ line-height: normal;
+ }
+
+ .van-dropdown-menu__title {
+ color: $text_color !important;
+ }
+
+ .van-nav-bar__right {
+ color: $text_color;
+ }
+}
+
+.van-nav-bar__left {
+ padding: 0 16px !important;
+}
+</style>
--
Gitblit v1.9.3