432 lines
10 KiB
PHP
432 lines
10 KiB
PHP
<?php
|
|
include_once "./Main/Hv4.Function.php";
|
|
$TestSql = 数据库运行("SELECT * FROM `users`;");
|
|
|
|
if (!$TestSql) {
|
|
die("Error:服务器错误");
|
|
}
|
|
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html lang="zh-CN">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>FuxBms 业务管理系统</title>
|
|
<script src="https://cdn.fss.fuxsto.cn/d/ajax/libs/eruda/eruda.js"></script>
|
|
<script>eruda.init();</script>
|
|
<script src="https://cdn.fss.fuxsto.cn/d/axios@1.7.9/dist/axios.min.js"></script>
|
|
<script src="https://cdn.fss.fuxsto.cn/d/vue@3/dist/vue.global.js"></script>
|
|
<script src="https://cdn.fss.fuxsto.cn/d/npm/@varlet/touch-emulator/iife.js"></script>
|
|
<script src="https://cdn.fss.fuxsto.cn/d/npm/@varlet/ui/umd/varlet.js"></script>
|
|
|
|
<style>
|
|
body {
|
|
transition: background-color .5s, color .5s;
|
|
color: var(--color-text);
|
|
background-color: var(--color-body);
|
|
color-scheme: var(--color-scheme);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* 页面切换时模糊和透明度的效果 */
|
|
.fade-blur-enter-active, .fade-blur-leave-active {
|
|
transition: opacity .5s ease, filter .5s ease, transform .5s ease;
|
|
}
|
|
|
|
.fade-blur-enter, .fade-blur-leave-to {
|
|
position: absolute;/* 保持原来的宽度 */
|
|
width: 100%;
|
|
opacity: 0;
|
|
filter: blur(100px);
|
|
transform: translateX(-100%);
|
|
}
|
|
|
|
.fade-blur-enter-to, .fade-blur-leave {
|
|
opacity: 1;
|
|
filter: blur(0px);
|
|
}
|
|
|
|
@keyframes min {
|
|
0% {
|
|
transform: translateX(100%);
|
|
opacity: 0;
|
|
filter: blur(100px);
|
|
}
|
|
100% {
|
|
transform: translateX(0%);
|
|
opacity: 1;
|
|
filter: blur(0px);
|
|
|
|
|
|
}
|
|
}
|
|
@keyframes gmin {
|
|
0% {
|
|
transform: translateX(0%);
|
|
opacity: 1;
|
|
filter: blur(0px);
|
|
}
|
|
100% {
|
|
transform: translateX(100%);
|
|
opacity: 0;
|
|
filter: blur(100px);
|
|
|
|
|
|
}
|
|
}
|
|
|
|
.min {
|
|
|
|
animation: min 0.5s ease;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body id="app">
|
|
|
|
|
|
|
|
<var-space direction="column" size="large">
|
|
<var-loading size="large" type="wave" :description="loading_d" :loading="loading">
|
|
|
|
<var-sticky :offset-top="8">
|
|
<var-app-bar round :title="title">
|
|
<template left>
|
|
<var-menu>
|
|
<var-button
|
|
color="transparent"
|
|
text-color="fff"
|
|
round
|
|
text
|
|
>
|
|
<var-icon name="menu" :size="24" />
|
|
</var-button>
|
|
|
|
<template menu>
|
|
<var-cell @click="this.page = 'www'" ripple>主页</var-cell>
|
|
<div v-if="UserInfo">
|
|
<var-cell @click="this.page = 'home';getinfo()" ripple>用户中心</var-cell>
|
|
<var-cell @click="this.page = 'cart';viewcart()" ripple>商品列表</var-cell><var-cell @click="this.page = 'purchases';getpurchases()" ripple>业务管理</var-cell>
|
|
</div>
|
|
</template>
|
|
</var-menu>
|
|
</template>
|
|
|
|
<template right>
|
|
<var-menu>
|
|
<var-button
|
|
color="transparent"
|
|
text-color="fff"
|
|
round
|
|
text
|
|
>
|
|
<var-icon name="palette" :size="24" />
|
|
</var-button>
|
|
|
|
<template menu>
|
|
<var-cell @click="switchToCustomTheme" ripple>默认主题</var-cell>
|
|
<var-cell @click="switchToM3LightTheme" ripple>MD3.Light</var-cell>
|
|
<var-cell @click="switchToM3DarkTheme" ripple>MD3.Dark</var-cell>
|
|
<var-cell @click="switchToM2LightTheme" ripple>MD2.Light</var-cell>
|
|
<var-cell @click="switchToM2DarkTheme" ripple>MD2.Dark</var-cell>
|
|
</template>
|
|
</var-menu>
|
|
</template>
|
|
</var-app-bar>
|
|
</var-sticky>
|
|
|
|
<br>
|
|
<transition name="fade-blur">
|
|
|
|
<div class="min" v-if="page == 'www'">
|
|
<var-card
|
|
src="./bbg.png"
|
|
description="从V1到V5,新的版本新的起点"
|
|
>
|
|
<h1 title>Fuxsto Host<var-badge type="info" value="V5" /></h1>
|
|
<h2 subtitle>业务管理系统</h2>
|
|
|
|
<template extra>
|
|
<var-button @click="login" type="primary">开始</var-button>
|
|
</template>
|
|
</var-card>
|
|
</div>
|
|
|
|
<div class="min" v-if="page == 'home'">
|
|
<var-space direction="column" size="large">
|
|
|
|
<var-card
|
|
:title="UserInfo.username"
|
|
:subtitle="'用户ID: '+UserInfo.id"
|
|
:src="userlogo"
|
|
layout="row"
|
|
>
|
|
<template extra>
|
|
<transition name="fade-blur">
|
|
<var-button v-if="UserInfo.can_check" text outline @click="checkin" type="primary">签到</var-button>
|
|
</transition>
|
|
</template>
|
|
</var-card>
|
|
|
|
|
|
|
|
|
|
<var-row :gutter="10, 10">
|
|
<var-col :span="8">
|
|
<var-card
|
|
:title='UserInfo.score'
|
|
subtitle='积分'/>
|
|
</var-col>
|
|
<var-col :span="8">
|
|
<var-card
|
|
:title='UserInfo.balance'
|
|
subtitle='余额'/>
|
|
</var-col>
|
|
<var-col :span="8">
|
|
<var-card
|
|
:title='UserInfo.status'
|
|
subtitle='状态'/>
|
|
</var-col>
|
|
</var-row>
|
|
</var-space>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="min" v-if="page == 'cart'">
|
|
<var-space direction="column" size="large">
|
|
|
|
|
|
|
|
|
|
<var-select placeholder="请选择分类" v-model="cart_fid">
|
|
<var-option v-for="(categories, category1) in cart" :label="category1" />
|
|
</var-select>
|
|
|
|
<var-select class="min" v-if="cart_fid" placeholder="请选择分类" v-model="cart_sid">
|
|
<var-option v-for="(item, category2) in cartcart_fid" :label="category2" />
|
|
</var-select>
|
|
|
|
<var-space v-if="cart_fid && cart_sid" direction="column" size="large">
|
|
|
|
<var-card
|
|
v-for="item in cartcart_fidcart_sid"
|
|
class="min"
|
|
:title="item.name"
|
|
:subtitle="'🎁库存:'+item.stock">
|
|
<div v-html="item.description"></div>
|
|
|
|
|
|
<template extra>
|
|
<var-badge position="left-top" type="info" :value="'限'+item.limit_per_user+'个'"><var-button text outline type="primary">{{ item.price }} {{ item.currency_type }} / {{ item.subscription_period }} 天</var-button></var-badge>
|
|
<var-divider vertical></var-divider>
|
|
<var-button @click="buygoods(item.product_id)" type="primary">购买</var-button>
|
|
</template>
|
|
</var-card>
|
|
|
|
</var-space>
|
|
|
|
|
|
|
|
|
|
</var-space>
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
|
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
|
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
|
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
|
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
|
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
|
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
|
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
|
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</transition>
|
|
</var-loading>
|
|
</var-space>
|
|
|
|
|
|
|
|
</body>
|
|
|
|
<script>
|
|
|
|
const { createApp } = Vue;
|
|
|
|
// 自定义主题
|
|
const customTheme = {
|
|
// ... [保留原有主题配置不变] ...
|
|
};
|
|
|
|
const app = createApp({
|
|
data() {
|
|
return {
|
|
currentTheme: Varlet.Themes.md3Light,
|
|
customTheme: customTheme,
|
|
floating: false,
|
|
title: "FuxBms",
|
|
UserInfo: null,
|
|
loading: true,
|
|
loading_d: "加载中",
|
|
page: "www",
|
|
userlogo: null,
|
|
cart: null,
|
|
cart_fid: null,
|
|
cart_sid: null,
|
|
purchases: null,
|
|
wm: null
|
|
};
|
|
},
|
|
mounted() {
|
|
Varlet.StyleProvider(Varlet.Themes.md3Light);
|
|
this.getinfo();
|
|
},
|
|
methods: {
|
|
checkin() {
|
|
this.loading = true;
|
|
this.loading_d = "签到中";
|
|
axios.get("/Main/CheckIn/").then((response) => {
|
|
this.loading = false;
|
|
if (response.data.code === 200) {
|
|
this.getinfo();
|
|
Varlet.Snackbar.success(response.data.msg);
|
|
} else {
|
|
Varlet.Snackbar.warning(response.data.msg);
|
|
}
|
|
});
|
|
},
|
|
getpurchases() {
|
|
this.loading = true;
|
|
this.loading_d = "拉取数据中";
|
|
axios.get("/Main/GetProducts/").then((response) => {
|
|
this.loading = false;
|
|
if (response.data.code === 200) {
|
|
this.purchases = response.data.msg;
|
|
} else {
|
|
Varlet.Snackbar.warning(response.data.msg);
|
|
}
|
|
});
|
|
},
|
|
buygoods(product_id) {
|
|
this.loading = true;
|
|
this.loading_d = "提交订单中";
|
|
axios
|
|
.post("/Main/BuyGoods/", { product_id })
|
|
.then((response) => {
|
|
this.loading = false;
|
|
const { code, msg } = response.data;
|
|
if (code === 200) {
|
|
Varlet.Snackbar.success(msg);
|
|
this.getpurchases();
|
|
this.page = "purchases";
|
|
} else {
|
|
Varlet.Snackbar.warning(msg);
|
|
}
|
|
})
|
|
.catch(() => {
|
|
Varlet.Snackbar.error("请求失败");
|
|
});
|
|
},
|
|
login() {
|
|
window.location.href = "/Main/Login";
|
|
},
|
|
viewcart() {
|
|
this.loading = true;
|
|
this.loading_d = "获取产品中";
|
|
axios.get("/Main/GetGoods/").then((response) => {
|
|
this.loading = false;
|
|
this.cart = response.data;
|
|
if (this.cart && Object.keys(this.cart).length > 0) {
|
|
this.cart_fid = Object.keys(this.cart)[0];
|
|
}
|
|
});
|
|
},
|
|
getinfo() {
|
|
this.loading = true;
|
|
this.loading_d = "获取用户信息";
|
|
axios.get("/Main/GetInfo/").then((response) => {
|
|
this.loading = false;
|
|
if (response.data.code === 200) {
|
|
this.UserInfo = response.data.msg;
|
|
this.page = "home";
|
|
if (response.data.msg.qq != null) {
|
|
this.userlogo = `https://q1.qlogo.cn/g?b=qq&nk=${response.data.msg.qq}&s=640`;
|
|
}
|
|
} else {
|
|
Varlet.Snackbar.warning("请登录");
|
|
this.page = "www";
|
|
}
|
|
});
|
|
},
|
|
// 主题切换方法保持不变
|
|
switchToM3LightTheme() {
|
|
this.currentTheme = Varlet.Themes.md3Light;
|
|
Varlet.StyleProvider(this.currentTheme);
|
|
},
|
|
switchToM3DarkTheme() {
|
|
this.currentTheme = Varlet.Themes.md3Dark;
|
|
Varlet.StyleProvider(this.currentTheme);
|
|
},
|
|
switchToM2LightTheme() {
|
|
this.currentTheme = null;
|
|
Varlet.StyleProvider(this.currentTheme);
|
|
},
|
|
switchToM2DarkTheme() {
|
|
this.currentTheme = Varlet.Themes.dark;
|
|
Varlet.StyleProvider(this.currentTheme);
|
|
},
|
|
switchToCustomTheme() {
|
|
this.currentTheme = this.customTheme;
|
|
Varlet.StyleProvider(this.currentTheme);
|
|
}
|
|
}
|
|
});
|
|
|
|
app.use(Varlet);
|
|
app.mount("#app");
|
|
|
|
|
|
</script>
|
|
</html>
|