This commit is contained in:
qiuyuan 2025-12-30 15:46:33 +08:00
commit b0df62b28d
23 changed files with 1150 additions and 24 deletions

BIN
src/assets/123.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

BIN
src/assets/124.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 116 KiB

BIN
src/assets/222.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 MiB

BIN
src/assets/aa.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
src/assets/activeBanner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

BIN
src/assets/arrow-down.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 358 B

BIN
src/assets/arrow-right.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 B

BIN
src/assets/arrow-right1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 289 B

BIN
src/assets/group.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 MiB

BIN
src/assets/yingxiao.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 MiB

View File

@ -14,6 +14,39 @@ const routes: RouteRecordRaw[] = [
name: "Login", name: "Login",
component: () => import("@/views/login/index.vue"), component: () => import("@/views/login/index.vue"),
}, },
{
path: "/active",
name: "Active",
component: () => import("@/views/saleActive/index.vue"),
redirect: "/active/newUser",
children: [
{
path: "newUser",
name: "newUser",
component: () => import("@/views/saleActive/newUser.vue"),
},
{
path: "newUserDetail",
name: "newUserDetail",
component: () => import("@/views/saleActive/newUserDetail.vue"),
},
{
path: "oldBringsNew",
name: "oldBringsNew",
component: () => import("@/views/saleActive/oldBringsNew.vue"),
},
{
path: "openDetail",
name: "openDetail",
component: () => import("@/views/saleActive/openDetail.vue"),
},
{
path: "invite",
name: "invite",
component: () => import("@/views/saleActive/invite.vue"),
},
],
},
{ {
path: "/404", path: "/404",
name: "404", name: "404",
@ -92,6 +125,11 @@ const routes: RouteRecordRaw[] = [
name: "LayoutHome", name: "LayoutHome",
component: () => import("@/views/home/index.vue"), component: () => import("@/views/home/index.vue"),
}, },
{
path: "yingxiao",
name: "yingxiao",
component: () => import("@/views/yingxiao/index.vue"),
},
{ {
path: "market", path: "market",
name: "LayoutMarket", name: "LayoutMarket",

View File

@ -1,15 +1,20 @@
<template> <template>
<div class="admin-layout"> <div class="admin-layout">
<!-- 左侧菜单 --> <div style="background-color: #ffffff;display: flex;flex-direction: column;align-items: center;border-right: 1px solid #e8e8e8;">
<a-menu <div style="height: 70px;width: 90%;display: flex;justify-content: center;border-bottom: 1px solid #e8e8e8;align-items: center;">
v-model:openKeys="state.openKeys" <a-button type="primary" style="width: 200px;" @click="router.push('/layout/admin/home')">
v-model:selectedKeys="state.selectedKeys" <template #icon>
class="admin-sidebar" <AppstoreAddOutlined />
:mode="state.mode" </template>
:items="items" 总览
:theme="state.theme" </a-button>
@select="handleMenuSelect" </div>
/> <div>
<a-menu v-model:openKeys="state.openKeys" v-model:selectedKeys="state.selectedKeys" class="admin-sidebar"
:mode="state.mode" :items="items" :theme="state.theme" @select="handleMenuSelect" />
</div>
</div>
<!-- 右侧内容区 --> <!-- 右侧内容区 -->
<div class="admin-contain"> <div class="admin-contain">
<router-view /> <router-view />
@ -26,6 +31,7 @@ import {
GlobalOutlined, GlobalOutlined,
MoneyCollectOutlined, MoneyCollectOutlined,
TeamOutlined, TeamOutlined,
AppstoreAddOutlined
} from '@ant-design/icons-vue'; } from '@ant-design/icons-vue';
import type { MenuMode, MenuTheme } from 'ant-design-vue'; import type { MenuMode, MenuTheme } from 'ant-design-vue';
@ -209,9 +215,11 @@ const changeTheme = (checked: boolean) => {
} }
.admin-sidebar { .admin-sidebar {
border-inline-end: 0px !important;
width: 256px; width: 256px;
flex-shrink: 0; flex-shrink: 0;
height: 100%; height: 100%;
border-right: 0px;
} }
.admin-contain { .admin-contain {

View File

@ -12,13 +12,13 @@
<right-circle-outlined /> <right-circle-outlined />
</div> </div>
</template> </template>
<div v-for="item in bannerList" :key="item.id" class="banner-slide"> <div v-for="item in bannerList" :key="item.id" class="banner-slide">
<img :src="item.image_url" alt="" srcset="" width="100%" height="100%"> <img :src="item.image_url" alt="" srcset="" width="100%" height="100%">
</div> </div>
</a-carousel> </a-carousel>
</div> </div>
<div class="one"> <div class="one">
<div v-for="item in oneList" style="display: flex;justify-content: center;align-items: center;"> <div v-for="item in oneList" style="display: flex;justify-content: center;align-items: center;cursor: pointer;" @click="router.push(item.path)">
<div style="margin-right: 10px;"><img :src="item.img" alt="" srcset="" width="50" height="50"></div> <div style="margin-right: 10px;"><img :src="item.img" alt="" srcset="" width="50" height="50"></div>
<div> <div>
<h3>{{ item.title }}</h3> <h3>{{ item.title }}</h3>
@ -71,7 +71,7 @@
<div class="avatary_item"> <div class="avatary_item">
<div> <div>
<div class="title" style="font-size: 28px;">海量高性能 GPU 集群算力</div> <div class="title" style="font-size: 28px;">海量高性能 GPU 集群算力</div>
<div class="subtitle" style="text-align: left;font-size: 18px;">搭载 NVIDIA A100/H100/H800 等高性能 <div class="subtitle" style="text-align: left;font-size: 18px;line-height:30px;">搭载 NVIDIA A100/H100/H800 等高性能
GPU拥有强悍算力与超高显存带宽精准适配不同精度需求大幅提升运算效率与资源利用率同时优化稀疏矩阵运算有效减少 AI 模型的冗余计算</div> GPU拥有强悍算力与超高显存带宽精准适配不同精度需求大幅提升运算效率与资源利用率同时优化稀疏矩阵运算有效减少 AI 模型的冗余计算</div>
</div> </div>
<img src="@/assets/jimeng.png" alt="" srcset="" width="300" height="300"> <img src="@/assets/jimeng.png" alt="" srcset="" width="300" height="300">
@ -80,7 +80,7 @@
<img src="@/assets/gpu.png" alt="" srcset="" width="300"> <img src="@/assets/gpu.png" alt="" srcset="" width="300">
<div> <div>
<div class="title" style="font-size: 28px;">算力灵活调度</div> <div class="title" style="font-size: 28px;">算力灵活调度</div>
<div class="subtitle" style="text-align: left;font-size: 18px;"> <div class="subtitle" style="text-align: left;font-size: 18px;line-height:30px;">
本平台支持按需计费与包周期计费两种正式模式适配短期突发算力需求与长期稳定部署场景按需计费按实结算避免资源浪费包周期计费性价比更优保障持续运算用户可自主择选兼顾成本与效率助力业务高效推进 本平台支持按需计费与包周期计费两种正式模式适配短期突发算力需求与长期稳定部署场景按需计费按实结算避免资源浪费包周期计费性价比更优保障持续运算用户可自主择选兼顾成本与效率助力业务高效推进
</div> </div>
</div> </div>
@ -88,11 +88,11 @@
<div class="avatary_item"> <div class="avatary_item">
<div> <div>
<div class="title" style="font-size: 28px;">低价高配 算力性价比超高</div> <div class="title" style="font-size: 28px;">低价高配 算力性价比超高</div>
<div class="subtitle" style="text-align: left;font-size: 18px;"> <div class="subtitle" style="text-align: left;font-size: 18px;line-height:30px;">
更强更全 AI 算力集群即刻解锁算力租用服务 算力性价比之王花一半钱享翻倍算力顶级硬件配置 + 灵活计费模式无隐形消费中小团队初创企业无需负担高昂成本轻松拥抱 AI 时代高性价比之选
</div> </div>
</div> </div>
<img src="@/assets/jimeng2.png" alt="" srcset="" width="300"> <img src="@/assets/jimeng2.png" alt="" srcset="" width="300" height="300px">
</div> </div>
</div> </div>
</div> </div>
@ -135,6 +135,7 @@
<script lang="ts" setup> <script lang="ts" setup>
import { LeftCircleOutlined, RightCircleOutlined } from '@ant-design/icons-vue'; import { LeftCircleOutlined, RightCircleOutlined } from '@ant-design/icons-vue';
import { ref } from 'vue' import { ref } from 'vue'
import { useRouter } from 'vue-router';
import { getBannerList, getGpuList, getAdvantage, getHotProduct } from '@/apis/home'; import { getBannerList, getGpuList, getAdvantage, getHotProduct } from '@/apis/home';
import one from '@/assets/1.png' import one from '@/assets/1.png'
import two from '@/assets/2.png' import two from '@/assets/2.png'
@ -145,23 +146,28 @@ import yaoqinghaoyou from '@/assets/yaoqinghaoyou-4.png'
import goumaijilu from '@/assets/goumaijilu.png' import goumaijilu from '@/assets/goumaijilu.png'
import defaultBanner3 from '@/assets/12.png'; import defaultBanner3 from '@/assets/12.png';
import defaultBanner4 from '@/assets/333.png'; import defaultBanner4 from '@/assets/333.png';
import defaultBanner from '@/assets/333.png';
const router = useRouter();
const listColor = ref(['#7ed321', '#21d3c0', '#35a4de']) const listColor = ref(['#7ed321', '#21d3c0', '#35a4de'])
const source = ref([]) const source = ref([])
const oneList = ref([ const oneList = ref([
{ {
img: youhuiquan, img: youhuiquan,
title: '算力免费领', title: '算力免费领',
description: '完成认证/问卷获得算力券' description: '完成认证/问卷获得算力券',
path:'/active/newUser'
}, },
{ {
img: yaoqinghaoyou, img: yaoqinghaoyou,
title: '邀约优算友', title: '邀约优算友',
description: '邀请好友可获得算力券' description: '邀请好友可获得算力券',
path:'/active/invite'
}, },
{ {
img: goumaijilu, img: goumaijilu,
title: '开业重磅福利', title: '开业重磅福利',
description: '购算力,享豪礼' description: '购算力,享豪礼',
path:'/active/newUser'
} }
]) ])
const advantageList = ref([]) const advantageList = ref([])
@ -256,7 +262,7 @@ const getAdvantageList = async () => {
fetchBannerList(); // fetchBannerList();
getGPUList(); getGPUList();
getAdvantageList(); getAdvantageList();
@ -343,8 +349,9 @@ getAdvantageList();
&>div { &>div {
display: flex; display: flex;
// flex-direction: column; // flex-direction: column;
align-items: spance-between; align-items: flex-start;
gap: 50px; justify-content: space-between;
gap: 100px;
&>div{ &>div{
display: flex; display: flex;
flex-direction: column; flex-direction: column;

View File

@ -66,6 +66,7 @@ import avatar from '@/assets/avator.png'
const router = useRouter() const router = useRouter()
const route = useRoute() const route = useRoute()
const isHome = ref(true) const isHome = ref(true)
const isLogin = ref(!!localStorage.getItem('token'))
const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}'); const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}');
// /layout // /layout
const getActiveKeyFromRoute = () => { const getActiveKeyFromRoute = () => {
@ -93,7 +94,7 @@ watch(() => route.path, () => {
const leftRoutes = ref([ const leftRoutes = ref([
{ key: '/home', label: '首页' }, { key: '/home', label: '首页' },
{ key: '/market', label: '算力中心' }, { key: '/market', label: '算力中心' },
// { key: '/yunmain', label: '' } { key: '/yingxiao', label: '营销活动' }
]) ])
const rightRoutes = ref([ const rightRoutes = ref([
{ key: '/document', label: '用户文档' }, { key: '/document', label: '用户文档' },

View File

@ -0,0 +1,53 @@
<template>
<div class="active_body">
<div class="login-logo">
<div style="cursor: pointer;">Fast亼算云</div>
<div style="display: flex;align-items: center;">
<a-menu v-model:selectedKeys="current" mode="horizontal" style="border-bottom: none;"
:items="rightRoutes" @click="({ key }) => handleMenuClick(key)" />
<template v-if="!isLogin">
<a-button type="primary" @click="router.push('/login')" style="margin-left: 20px;">登录 / 注册</a-button>
</template>
</div>
</div>
<div>
<router-view />
</div>
</div>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import { useRouter } from 'vue-router';
const router = useRouter();
const isLogin = ref(!!localStorage.getItem('token'));
const current = ref('');
const rightRoutes = ref([
{ key: '/home', label: '首页' },
{ key: '/document', label: '用户文档' },
{ key: '/admin/home', label: '控制台' }
])
//
const handleMenuClick = (key) => {
if (key === '/document') {
window.open(key, '_blank');
} else {
//
const fullPath = `/layout${key}`;
router.push(fullPath);
}
}
</script>
<style scoped>
.login-logo {
background-color: rgba(255, 255, 255, 0.2);
height: 50px;
display: flex;
align-items: center;
justify-content: space-between;
font-size: 20px;
letter-spacing: 2px;
width: 100%;
padding: 0 20px;
border-bottom: 1px solid #C9C9C9;
}
</style>

View File

@ -0,0 +1,180 @@
<template>
<div class="active_body">
<div class="active_banner">
<img src="@/assets/222.png" alt="" srcset="" width="100%">
</div>
<div class="active_content">
<div style="margin-top: 20px;width: 80%;">
<div style="display: flex;justify-content: space-between;align-items: center;">
<div style="font-size: 24px;font-weight: bold;">丰厚奖励与回报</div>
<!-- <div style="font-size: 14px;color:#1677ff;cursor: pointer;" @click="router.push('/active/newUserDetail')">活动详情 ></div> -->
</div>
<div style="display: flex;align-items: center;gap: 30px;justify-content: space-between;">
<div
style="background-color: #ffffff;margin: 20px 0;padding: 30px;flex: 1;border-radius: 10px;border: 1px solid #e8e8e8;display: flex;justify-content: space-between;">
<div>
<div>新用户可获得50算力券</div>
<div style="color: rgba(16, 80, 244, 1);margin-top: 20px;cursor: pointer;"
@click="router.push({path: '/active/newUserDetail',query: {type: 'invite'}})">规则详情
</div>
</div>
<div> <img src="@/assets/123.png" alt="" srcset="" width="50px"></div>
</div>
<div
style="background-color: #ffffff;margin: 20px 0;padding: 30px;flex: 1;border-radius: 10px;border: 1px solid #e8e8e8;display: flex;justify-content: space-between;">
<div>
<div>老用户获得该笔首次购买金额 3% 的账户余额奖励</div>
<div style="color: rgba(16, 80, 244, 1);margin-top: 20px;cursor: pointer;"
@click="router.push({path: '/active/newUserDetail',query: {type: 'invite'}})">规则详情
</div>
</div>
<div> <img src="@/assets/124.png" alt="" srcset="" width="50px"></div>
</div>
</div>
</div>
<div style="margin-top: 20px;width: 80%;">
<div style="display: flex;justify-content: space-between;align-items: center;">
<div style="font-size: 24px;font-weight: bold;margin-bottom: 20px;">邀请流程</div>
<!-- <div style="font-size: 14px;color:#1677ff;cursor: pointer;">活动详情 ></div> -->
</div>
<div style="">
<div style="display: flex;justify-content: space-between;align-items: center;">
<div class="step">
<div style="color:rgba(16, 80, 244, 1);font-size: 18px;">step 1</div>
<div>加入邀约优算友计划</div>
<div style="font-size: 14px;color: #666666;">注册Fast亼算云账号并完成个人实名认证的新老用户均可加入</div>
</div>
<div style="width: 200px;text-align: center;"><img src="@/assets/arrow-right.png" alt=""
width="30px"></div>
<div class="step">
<div style="color:rgba(16, 80, 244, 1);font-size: 18px;">step 2</div>
<div>获取邀请链接/邀请码并分享</div>
<div>复制邀请链接/邀请码分享给新客户</div>
</div>
</div>
<div style="display: flex;justify-content: flex-end;align-items: center;margin: 20px 0;">
<div style="width: calc((100% - 200px)/2);text-align: center;"><img
src="@/assets/arrow-down.png" alt="" width="30px"></div>
</div>
<div style="display: flex;justify-content: space-between;align-items: center;">
<div class="step">
<div style="color:rgba(16, 80, 244, 1);font-size: 18px;">step 4</div>
<div>佣金到账</div>
<div>Fast亼算云核算返利金额入账至绑定账户</div>
</div>
<div style="width: 200px;text-align: center;margin-bottom: 20px;"><img
src="@/assets/arrow-right1.png" alt="" width="30px"></div>
<div class="step">
<div style="color:rgba(16, 80, 244, 1);font-size: 18px;">step 3</div>
<div>客户注册后完成实名认证调查问卷并购买</div>
<div style="font-size: 14px;color: #666666;">客户通过推广链接注册建立关联并购买产品</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="three"></div>
<div class="footer">
<div class="footer_contain">
<div>
<div style="color: #000000;">服务热线:</div>
<div style="font-size: 36px;font-weight: bold;padding: 20px 0;">400-110-6993</div>
<div>邮箱:service@hzzxxd.com</div>
<div>地址:江苏省南通市崇川区紫琅科技城3号楼</div>
</div>
<div>
<div style="color: #000000;">快速导航</div>
<div>算力中心</div>
<div>云主机</div>
<div>用户文档</div>
</div>
<div style="display: flex;align-items: center;gap: 60px;">
<div style="display: flex;flex-direction: column;align-items: center;">
<img src="@/assets/qr.jpg" alt="" srcset="" width="100">
<div>公众号</div>
</div>
<div style="display: flex;flex-direction: column;align-items: center;">
<img src="@/assets/qr.jpg" alt="" srcset="" width="100">
<div>企业微信</div>
</div>
</div>
</div>
<div
style="border-top: 1px solid #ebe4e4;height: 45px;text-align: center;line-height: 45px;color: #666666;font-size: 14px;">
苏备案号20251124号</div>
</div>
</template>
<script setup lang="ts">
import { useRouter } from 'vue-router';
const router = useRouter();
</script>
<style scoped>
.active_body {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.active_banner {
width: 100%;
height: auto;
}
.active_content {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background-color: rgb(246, 250, 254);
padding-bottom: 50px;
}
.step {
flex: 1;
height: 120px;
border-radius: 8px;
border: 1px solid rgba(219, 219, 219, 1);
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: space-around;
gap: 5px;
padding: 0 20px;
}
.three {
width: 100%;
height: 180px;
background: url('@/assets/bottom.png') no-repeat center / 100% 100%;
}
.footer {
height: 260px;
background-color: #ffffff;
width: 100%;
.footer_contain {
width: 1200px;
margin: 0 auto;
height: calc(100% - 45px);
display: flex;
justify-content: space-around;
align-items: self-start;
padding: 20px 0;
&>div {
line-height: 30px;
color: #3a3939;
}
}
}
</style>

View File

@ -0,0 +1,168 @@
<template>
<div class="active_body">
<div class="active_banner">
<img src="@/assets/group.png" alt="" srcset="" width="100%">
</div>
<div class="active_content">
<div style="margin-top: 20px;width: 80%;">
<div style="display: flex;justify-content: space-between;align-items: center;">
<div style="font-size: 24px;font-weight: bold;">活动说明</div>
<div style="font-size: 14px;color:#1677ff;cursor: pointer;"
@click="router.push('/active/newUserDetail')">活动详情 ></div>
</div>
<div
style="background-color: #ffffff;margin: 20px 0;padding: 30px;border-radius: 8px;border-radius: 10px;border: 1px solid #e8e8e8;display: flex;align-items: center;gap: 30px;">
<div>
<p>活动对象平台全体未注册新用户</p>
<p>活动福利完成注册+认证即可免费领取20算力券无门槛使用可直接兑换对应算力服务</p>
<p>注意事项1. 每个新用户仅可参与一次活动重复注册或认证无效2. 算力券无使用门槛不设找零不兑现逾期未使用将自动失效具体有效期以券面显示为准3.
若在注册或认证过程中有疑问可联系平台客服咨询</p>
<p>活动声明平台保留在法律允许范围内对本活动的最终解释权如有活动调整将提前公示</p>
</div>
<div>
<img src="@/assets/aa.png" alt="" srcset="" width="100px">
</div>
</div>
</div>
<div style="margin-top: 20px;width: 80%;">
<div style="display: flex;justify-content: space-between;align-items: center;">
<div style="font-size: 24px;font-weight: bold;margin-bottom: 20px;">操作流程</div>
<!-- <div style="font-size: 14px;color:#1677ff;cursor: pointer;">活动详情 ></div> -->
</div>
<div style="">
<div style="display: flex;justify-content: space-between;align-items: center;">
<div class="step">
<div style="color:rgba(16, 80, 244, 1);font-size: 18px;">step 1</div>
<div>注册Fast亼算云账号</div>
<div style="font-size: 14px;color: #666666;">进入Fast亼算云官网并注册Fast亼算云账号</div>
</div>
<div style="width: 200px;text-align: center;"><img src="@/assets/arrow-right.png" alt=""
width="30px"></div>
<div class="step">
<div style="color:rgba(16, 80, 244, 1);font-size: 18px;">step 2</div>
<div>完成实名认证</div>
<div>注册完成后前往进行实名认证</div>
</div>
</div>
<div style="display: flex;justify-content: flex-end;align-items: center;margin: 20px 0;">
<div style="width: calc((100% - 200px)/2);text-align: center;"><img
src="@/assets/arrow-down.png" alt="" width="30px"></div>
</div>
<div style="display: flex;justify-content: space-between;align-items: center;">
<div class="step">
<div style="color:rgba(16, 80, 244, 1);font-size: 18px;">step 4</div>
<div>客户完成实名认证后完成调查问卷</div>
<div>完成实名认证后填写算力调查问卷</div>
</div>
<div style="width: 200px;text-align: center;margin-bottom: 20px;"><img
src="@/assets/arrow-right1.png" alt="" width="30px"></div>
<div class="step">
<div style="color:rgba(16, 80, 244, 1);font-size: 18px;">step 3</div>
<div>算力券到账</div>
<div style="font-size: 14px;color: #666666;">优惠券自动发放给用户可在控制台中查看请在有限期内使用</div>
</div>
</div>
</div>
</div>
</div>
<div class="three"></div>
<div class="footer">
<div class="footer_contain">
<div>
<div style="color: #000000;">服务热线:</div>
<div style="font-size: 36px;font-weight: bold;padding: 20px 0;">400-110-6993</div>
<div>邮箱:service@hzzxxd.com</div>
<div>地址:江苏省南通市崇川区紫琅科技城3号楼</div>
</div>
<div>
<div style="color: #000000;">快速导航</div>
<div>算力中心</div>
<div>云主机</div>
<div>用户文档</div>
</div>
<div style="display: flex;align-items: center;gap: 60px;">
<div style="display: flex;flex-direction: column;align-items: center;">
<img src="@/assets/qr.jpg" alt="" srcset="" width="100">
<div>公众号</div>
</div>
<div style="display: flex;flex-direction: column;align-items: center;">
<img src="@/assets/qr.jpg" alt="" srcset="" width="100">
<div>企业微信</div>
</div>
</div>
</div>
<div
style="border-top: 1px solid #ebe4e4;height: 45px;text-align: center;line-height: 45px;color: #666666;font-size: 14px;">
苏备案号20251124号</div>
</div>
</div>
</template>
<script setup lang="ts">
import { useRouter } from 'vue-router';
const router = useRouter();
</script>
<style scoped>
.active_body {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.active_banner {
width: 100%;
height: auto;
}
.active_content {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background-color: rgb(246, 250, 254);
padding-bottom: 50px;
}
.step {
flex: 1;
height: 120px;
border-radius: 8px;
border: 1px solid rgba(219, 219, 219, 1);
display: flex;
flex-direction: column;
align-items: flex-start;
justify-content: space-around;
gap: 5px;
padding: 0 20px;
}
.three {
width: 100%;
height: 180px;
background: url('@/assets/bottom.png') no-repeat center / 100% 100%;
}
.footer {
height: 260px;
background-color: #ffffff;
width: 100%;
.footer_contain {
width: 1200px;
margin: 0 auto;
height: calc(100% - 45px);
display: flex;
justify-content: space-around;
align-items: self-start;
padding: 20px 0;
&>div {
line-height: 30px;
color: #3a3939;
}
}
}
</style>

View File

@ -0,0 +1,110 @@
<template>
<div class="detail_container">
<div class="detail_left">
<div
:class="{ active: currentTab === 'new' }"
@click="switchTab('new')"
>
新用户福利注册 + 认证 = 20 算力券无门槛兑算力
</div>
<div
:class="{ active: currentTab === 'invite' }"
@click="switchTab('invite')"
>
老带新裂变奖励新用户 50 算力券 + 老用户 3% 账户余额
</div>
<div
:class="{ active: currentTab === 'gift' }"
@click="switchTab('gift')"
>
开业重磅福利购算力享豪礼
</div>
</div>
<div class="detail_right">
<component :is="currentComponent" />
</div>
</div>
</template>
<script lang="ts" setup>
import { ref, computed,onMounted } from 'vue';
import NewUser from './newUserRegister.vue';
import OldBringsNew from './oldBringsNew.vue';
import OpenDetail from './openDetail.vue';
import { useRoute } from 'vue-router';
import { on } from 'events';
const route = useRoute();
onMounted(() => {
const type = route.query.type;
if (type === 'invite') {
currentTab.value = 'invite';
} else if (type === 'gift') {
currentTab.value = 'gift';
} else {
currentTab.value = 'new';
}
});
// tab
const currentTab = ref<'new' | 'invite' | 'gift'>('new');
// currentTab
const currentComponent = computed(() => {
switch (currentTab.value) {
case 'new':
return NewUser;
case 'invite':
return OldBringsNew;
case 'gift':
return OpenDetail;
default:
return NewUser;
}
});
// tab
const switchTab = (tab: 'new' | 'invite' | 'gift') => {
currentTab.value = tab;
};
</script>
<style scoped>
.detail_container {
width: 100%;
margin: 0 auto;
display: flex;
height: calc(100vh - 50px);
}
.detail_left {
padding: 20px;
width: 240px;
height: 100%;
background-color: #f5f5f5;
cursor: pointer;
}
.detail_left > div {
margin-bottom: 20px;
padding: 12px;
border-radius: 6px;
transition: background-color 0.2s;
}
.detail_left > div:hover {
background-color: #e0e0e0;
}
.detail_left > div.active {
background-color: #1890ff;
color: #ffffff;
}
.detail_right {
overflow-y: scroll;
flex: 1;
height: 100%;
background-color: #ffffff;
padding: 60px 30px;
border-radius: 8px;
}
</style>

View File

@ -0,0 +1,56 @@
<template>
<div>
<h2 style="text-align: center;height: 80px;border-bottom: 1px solid #ccc;">新用户福利注册 + 认证 = 20 算力券无门槛兑算力</h2>
<div class="card">
<div class="title">适用对象</div>
<div class="content">
<div><span style="color: #000000;">个人用户</span>手机号注册 📱 + 实名认证 + 算力需求问卷 📝</div>
<div><span style="color: #000000;">企业用户</span>手机号注册 📱 + 实名认证 + 企业认证 📇</div>
</div>
</div>
<div class="card">
<div class="title">操作步骤</div>
<div class="content">
1.新用户通过手机号验证码完成账号注册 📱需绑定有效手机号同一手机号仅可注册 1 个账号 🚫<br>
2.登录账号后根据用户类型提交认证材料 📋个人用户上传本人有效身份证正反面照片完成身份核验 企业用户上传企业营业执照含统一社会信用代码📇法定代表人身份证正反面照片完成企业信息核验
<br>
3.完成基础认证后按类型补充材料 📝个人用户填写算力需求问卷问卷仅收集与算力使用相关的必要信息不涉及无关隐私 🛡企业用户完成企业对公账户验证或授权联系人身份核验
🏢所有材料审核通过后审核时效1 个工作日 即时发放 20 算力券至账户 🎁
</div>
</div>
<div class="card">
<div class="title">活动规则</div>
<div class="content">
1.算力券用途 💳仅可在 Fast 亼算平台内兑换算力点无使用门槛不支持折现转赠提现 🚫有效期 自发放之日起 7 个自然日逾期未使用自动失效不予补发<br> 2.<br>
3.信息保护
🛡平台仅收集实名认证企业认证所需的必要信息将按照个人信息保护法网络安全法采取加密存储访问权限管控等安全措施不泄露篡改滥用用户信息未经用户同意不向第三方提供法律规定除外🔒<br>
4.禁止行为
严禁虚假注册冒用他人身份信息 / 企业信息认证恶意重复注册刷券等违规行为 🚫<br> 5.违规处理
若用户存在上述违规行为平台有权取消奖励资格冻结账户追回已使用的算力券对应的权益情节严重的将依法追究法律责任并向相关监管部门报备
</div>
</div>
</div>
</template>
<script lang="ts" setup>
</script>
<style scoped>
.title {
font-weight: bold;
font-size: 18px;
margin-bottom: 10px;
color: rgba(0, 41, 156, 1);
}
.card {
width: 100%;
padding: 20px 10px;
border-bottom: 1px solid #ccc;
}
.content {
font-size: 16px;
color: #333333;
line-height: 30px;
}
</style>

View File

@ -0,0 +1,61 @@
<template>
<div>
<h2 style="text-align: center;height: 80px;border-bottom: 1px solid #ccc;">老带新裂变奖励新用户 50 算力券 + 老用户 3% 账户余额
</h2>
<div class="card">
<div class="title">适用对象</div>
<div class="content">
<div><span style="color: #000000;">老用户</span>已完成实名认证个人 / 企业 且账户状态正常的 🚀 Fast 亼算云平台注册用户</div>
<div><span style="color: #000000;">新用户</span>未注册过 Fast 亼算云平台账号未使用过相同手机号 📱 / 身份信息 🆔 / 设备 💻 注册的用户
</div>
</div>
</div>
<div class="card">
<div class="title">邀请操作步骤</div>
<div class="content">
1.老用户登录 Fast 亼算平台进入 邀请好友 专区 🎉生成专属邀请链接 / 邀请码每人仅限 1 个专属邀请标识不可转让🔗<br>
2.老用户通过合法渠道分享邀请链接 / 邀请码给潜在新用户 📤<br>
3.新用户通过该专属链接 / 邀请码完成账号注册并按本流程第一条要求完成全部认证个人用户实名认证 + 问卷 📝企业用户实名认证 + 企业认证 📇
4.新用户认证通过后即时发放 50 算力券 至其账户 🎁<br>
5.新用户完成首次算力点购买指注册后首次通过现金账户余额等合规方式支付购买算力点不包含兑换赠送的算力点💰且订单完成无退款取消情形 老用户即时获得该笔首次购买金额 3% 的账户余额奖励
🎊
</div>
</div>
<div class="card">
<div class="title">奖励规则</div>
<div class="content">
1.新用户奖励 🎁<br>
<li>50 算力券有效期自发放之日起 7 个自然日 逾期未使用自动失效不予补发 </li>
<li>新用户仅可通过 1 个老用户的邀请链接注册不可重复领取邀请奖励 🚫</li>
2.老用户奖励 💰<br>
<li>账户余额用途可用于 Fast 亼算平台内购买算力点 💻或按 Fast 亼算平台公示的提现规则申请提现提现需完成实名认证升级核验符合反洗钱要求🏦</li>
<li>提现要求提现时需提供与实名认证一致的收款账户信息 📋Fast 亼算平台将对提现申请进行合规审核审核时效7 个工作日 最低提现金额手续费等以平台公示为准 📜</li>
<li>邀请上限无邀请人数限制 🚀多邀多得奖励金额上不封顶 🎉</li>
<li>奖励核算首次购买金额以订单实际支付金额为准扣除优惠券算力券抵扣部分后💸</li>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
</script>
<style scoped>
.title {
font-weight: bold;
font-size: 18px;
margin-bottom: 10px;
color: rgba(0, 41, 156, 1);
}
.card {
width: 100%;
padding: 20px 10px;
border-bottom: 1px solid #ccc;
}
.content {
font-size: 16px;
color: #333333;
line-height: 30px;
}
</style>

View File

@ -0,0 +1,138 @@
<template>
<div>
<h2 style="text-align: center;height: 80px;border-bottom: 1px solid #ccc;">开业重磅福利购算力享豪礼
</h2>
<div>📢 新用户首次充值账户余额后30 天内用该余额购买算力点实际消费金额达标即享 3 1 赠礼先到先得兑完即止</div>
<div class="card">
<div class="title">充值赠礼3 1</div>
<div class="content">
<table border="1" cellspacing="0" cellpadding="8" style="width: 100%; text-align: left; border-collapse: collapse;" class="gift-table">
<thead>
<tr>
<th>充值到账户余额后购买算力点金额</th>
<th>爆款礼品三选一</th>
</tr>
</thead>
<tbody>
<tr>
<td>一次性算力点金额满3000元</td>
<td>
1. 京东E卡500元<br />
2. 富士instax mini SE 拍立得相机<br />
3. 上海迪士尼成人门票1张
</td>
</tr>
<tr>
<td>一次性算力点金额满7000元</td>
<td>
1.53°飞天茅台500ml*1<br>
2.Nintendo Switch OLED版<br>
3.SK-II神仙水套装230ml+清莹露230ml
</td>
</tr>
<tr>
<td>一次性算力点金额满30000元</td>
<td>
1.大疆Mini 5 Pro无人机畅飞套装<br>
2.Apple watch series 11钛金属 提供GPS+蜂窝网络46毫米<br>
3.赫莲娜黑绷带50ml+小露珠200ml
</td>
</tr>
<tr>
<td>一次性算力点金额满60000元</td>
<td>
1.iPhone 17 Pro1TB<br>
2.HUAWEI Mate 80 RS 非凡大师 20GB+1TB 玄黑 ULTIMATE DESIGN<br>
3.苹果MacBook Pro 14英寸M5芯片/16G/1TB
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="card">
<div class="title">重要须知</div>
<div class="content">
<li>1.👤 活动对象平台新注册用户同一手机号身份证号企业主体设备 ID 视为同一用户仅享 1 次首充福利</li>
<li>📢 达标提醒用户消费达标后官网将实时推送有待领取权益通知</li>
<li> 信息填写需在达标后 7 个工作日内点击通知进入信息填写页面选择礼品并填写收货信息</li>
<li>🚚 礼品发货客服收到用户提交的信息后7 个工作日内安排发货礼品发货后客服将通过官网私信同步物流单号用户可在消息中心查询物流信息</li>
<li>💼 对公要求实际消费8000 元需通过对公账户打款详询客服获取账户信息</li>
<li>🔄 退款规则用户领礼后申请算力点退款若导致消费金额未达阶梯标准需退回礼品或按官方售价补差价否则平台有权追回</li>
<li> 信息规范用户需填写真实有效的收货信息因信息错误导致礼品无法送达或丢失平台不承担补发责任</li>
<li> 违规处理严禁恶意注册虚假交易刷礼等行为一经发现取消赠礼资格并保留追究法律责任的权利</li>
</div>
<div style="color: #000000;"> 充值余额购算力官网一键兑礼达标即领豪礼高效运算快人一步</div>
</div>
</div>
</template>
<script lang="ts" setup>
</script>
<style scoped>
.title {
font-weight: bold;
font-size: 18px;
margin-bottom: 10px;
color: rgba(0, 41, 156, 1);
}
.card {
width: 100%;
padding: 20px 10px;
border-bottom: 1px solid #ccc;
}
.content {
font-size: 16px;
color: #333333;
line-height: 30px;
}
.multi-line-content>div {
line-height: 1.6;
padding: 4px 0;
/* 可选:增加行间距 */
}
.gift-table {
width: 100%;
border-collapse: collapse;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'PingFang SC', sans-serif;
margin: 20px 0;
/* box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); */
border-radius: 8px;
overflow: hidden;
}
.gift-table th,
.gift-table td {
padding: 16px 12px;
text-align: center; /* 水平居中 */
vertical-align: middle; /* 垂直居中 */
border: 1px solid #e8e8e8;
line-height: 1.5;
}
.gift-table th {
background-color: #f9f9f9;
font-weight: 600;
color: #333;
}
.gift-table tr:nth-child(even) {
background-color: #fcfcfc;
}
.gift-table tr:hover {
background-color: #f5faff;
}
/* 小屏优化 */
@media (max-width: 600px) {
.gift-table th,
.gift-table td {
padding: 12px 8px;
font-size: 14px;
}
}
</style>

View File

@ -0,0 +1,306 @@
<template>
<div style="background-color: rgba(250, 251, 253,1);">
<div class="active_banner">
<img src="@/assets/yingxiaobanner.png" alt="" srcset="" width="100%">
</div>
<div style="width: 100%;display: flex;align-items: center;justify-content: space-around;">
<div style="background-color: #ffffff;height: 50px;line-height: 50px;flex: 1;text-align: center;border:1px dashed #2b6ff7;">活动介绍</div>
<div style="background-color: #2b6ff7;height: 50px;line-height: 50px;flex: 1;text-align: center;color: #ffffff;">活动奖励</div>
<div style="background-color: #2b6ff7;height: 50px;line-height: 50px;flex: 1;text-align: center;color: #ffffff;">活动须知</div>
</div>
<div class="one">
<img src="@/assets/yingxiao.png" alt="" srcset="" width="1200px">
</div>
<div class="three"></div>
<div class="footer">
<div class="footer_contain">
<div>
<div style="color: #000000;">服务热线:</div>
<div style="font-size: 36px;font-weight: bold;padding: 20px 0;">400-110-6993</div>
<div>邮箱:service@hzzxxd.com</div>
<div>地址:江苏省南通市崇川区紫琅科技城3号楼</div>
</div>
<div>
<div style="color: #000000;">快速导航</div>
<div>算力中心</div>
<div>云主机</div>
<div>用户文档</div>
</div>
<div style="display: flex;align-items: center;gap: 60px;">
<div style="display: flex;flex-direction: column;align-items: center;">
<img src="@/assets/qr.jpg" alt="" srcset="" width="100">
<div>公众号</div>
</div>
<div style="display: flex;flex-direction: column;align-items: center;">
<img src="@/assets/qr.jpg" alt="" srcset="" width="100">
<div>企业微信</div>
</div>
</div>
</div>
<div
style="border-top: 1px solid #ebe4e4;height: 45px;text-align: center;line-height: 45px;color: #666666;font-size: 14px;">
苏备案号20251124号</div>
</div>
</div>
</template>
<script lang="ts" setup>
import { LeftCircleOutlined, RightCircleOutlined } from '@ant-design/icons-vue';
import { ref } from 'vue'
import { useRouter } from 'vue-router';
import { getBannerList, getGpuList, getAdvantage, getHotProduct } from '@/apis/home';
import one from '@/assets/1.png'
import two from '@/assets/2.png'
import three from '@/assets/3.png'
import firth from '@/assets/4.png'
import youhuiquan from '@/assets/youhuiquan-2.png'
import yaoqinghaoyou from '@/assets/yaoqinghaoyou-4.png'
import goumaijilu from '@/assets/goumaijilu.png'
import defaultBanner3 from '@/assets/12.png';
import defaultBanner4 from '@/assets/333.png';
import defaultBanner from '@/assets/333.png';
const router = useRouter();
const listColor = ref(['#7ed321', '#21d3c0', '#35a4de'])
const source = ref([])
const oneList = ref([
{
img: youhuiquan,
title: '算力免费领',
description: '完成认证/问卷获得算力券',
path: '/active/newUser'
},
{
img: yaoqinghaoyou,
title: '邀约优算友',
description: '邀请好友可获得算力券',
path: '/active/invite'
},
{
img: goumaijilu,
title: '开业重磅福利',
description: '购算力,享豪礼',
path: '/active/newUser'
}
])
const advantageList = ref([])
const bannerList = ref<any[]>([
{ id: 0, image_url: defaultBanner3 },
{ id: 1, image_url: defaultBanner4 }
]);
const onChange = (current: number) => {
console.log(current);
};
//
const fetchBannerList = async () => {
try {
const res: any = await getBannerList();
//
if (res && Array.isArray(res) && res.length > 0) {
const processedList = res.map((item: any, index: number) => {
// itemid
const processedItem = {
id: item.id || index,
image_url: item.image_url || defaultBanner
};
// http
if (processedItem.image_url && processedItem.image_url.startsWith('http://')) {
processedItem.image_url = processedItem.image_url.replace('http://', 'https://');
}
return processedItem;
});
bannerList.value = processedList;
} else {
// API使
bannerList.value = [{ id: 0, image_url: defaultBanner }];
}
} catch (error: any) {
console.error('轮播图请求失败:', error);
// 使
bannerList.value = [{ id: 0, image_url: defaultBanner }];
}
};
// GPU
const getGPUList = async () => {
try {
// const res: any = await getGpuList();
source.value = [
// { gpu_type: 'NVIDIA RTX 3090', payOnTime: 15.0, memory: 64, vram: 24, gpu_num: 1 },
// { gpu_type: 'NVIDIA A100', payOnTime: 25.0, memory: 128, vram: 40, gpu_num: 1 },
// { gpu_type: 'NVIDIA RTX 4090', payOnTime: 30.0, memory: 96, vram: 24, gpu_num: 1 }
];
} catch (error: any) {
console.error('GPU列表请求失败:', error);
}
}
//
const getAdvantageList = async () => {
try {
// const res: any = await getAdvantage();
const list = [
{ title: '高性能算力', description: '采用最新一代GPU提供强大计算能力满足各种复杂任务需求。' },
{ title: '灵活计费模式', description: '支持按需付费和包月套餐,用户可根据实际需求选择最合适的计费方式。' },
{ title: '全球节点覆盖', description: '在多个地区设有数据中心,确保用户无论身处何地都能享受低延迟的服务体验。' },
{ title: '专业技术支持', description: '提供7x24小时技术支持确保用户在使用过程中遇到的问题能够及时得到解决。' }
];
// item img
list.forEach((item: any, index: number) => {
if (index === 0) {
item.img = one;
} else if (index === 1) {
item.img = two;
} else if (index === 2) {
item.img = three;
} else {
item.img = firth;
}
});
// advantageList.value = list;
} catch (error: any) {
console.error('产品优势请求失败:', error);
}
}
// fetchBannerList();
getGPUList();
getAdvantageList();
</script>
<style scoped lang="scss">
.banner-slide {
width: 100%;
height: 600px;
// background: url('@/assets/banner2.png') no-repeat center / cover;
}
.one {
background: rgb(250, 251, 253);
margin: 30px 0;
display: flex;
justify-content: center;
align-items: center;
}
.two {
// background-image: linear-gradient(to bottom, #eaf7fc, #f4fafc);
padding-bottom: 80px;
&>div {
width: 1200px;
margin: 0 auto;
.title {
font-size: 28px;
font-weight: 700;
text-align: center;
}
&>div:first-child {
padding: 44px 0;
}
.subtitle {
margin-top: 20px;
color: rgb(153, 153, 153);
text-align: center;
}
.list_card {
margin-top: 30px;
display: flex;
justify-content: space-between;
gap: 20px;
&>div {
flex: 1;
background-color: #ffffff;
line-height: 30px;
transition: all 0.4s cubic-bezier(0.25, 0.1, 0.25, 1);
/* 更长的过渡时间和不同的缓动函数 */
}
&>div:hover {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
}
.avatary_list {
// display: grid;
// grid-template-columns: repeat(2, 1fr);
// gap: 50px;
&>div {
display: flex;
// flex-direction: column;
align-items: flex-start;
justify-content: space-between;
gap: 100px;
&>div {
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: flex-start;
}
}
.title {
color: #59b2f2;
font-size: 18px;
font-weight: bold;
line-height: 30px;
margin-top: 20px;
}
.subtitle {
color: #666666;
}
}
}
}
.three {
height: 180px;
background: url('@/assets/bottom.png') no-repeat center / 100% 100%;
}
.footer {
height: 260px;
background-color: #ffffff;
width: 100%;
.footer_contain {
width: 1200px;
margin: 0 auto;
height: calc(100% - 45px);
display: flex;
justify-content: space-around;
align-items: self-start;
padding: 20px 0;
&>div {
line-height: 30px;
color: #3a3939;
}
}
}
/* For demo */
</style>