优化: 修复安全隐患、路由权限、环境变量、CSS问题,新增组件,清理无用文件

This commit is contained in:
lihanqi
2026-02-13 18:15:46 +08:00
parent 492d839e9b
commit ca0e2f9370
38 changed files with 1992 additions and 1293 deletions

View File

@@ -1,63 +1,63 @@
import { createRouter, createWebHistory } from 'vue-router'
import { ElMessage } from 'element-plus'
import LotterySelection from '../views/LotterySelection.vue'
import LotteryPremium from '../views/LotteryPremium.vue'
import Home from '../views/ssq/Home.vue'
import DltHome from '../views/dlt/Home.vue'
import LotteryInfo from '../views/LotteryInfo.vue'
import Profile from '../views/Profile.vue'
import Login from '../views/Login.vue'
import Register from '../views/Register.vue'
import ResetPassword from '../views/ResetPassword.vue'
import PredictRecords from '../views/PredictRecords.vue'
import DltPredictRecords from '../views/dlt/PredictRecords.vue'
import ExcelImportManagement from '../views/ExcelImportManagement.vue'
import ExchangeRecords from '../views/ExchangeRecords.vue'
import TrendAnalysis from '../views/ssq/TrendAnalysis.vue'
import SurfaceAnalysis from '../views/ssq/SurfaceAnalysis.vue'
import LineAnalysis from '../views/ssq/LineAnalysis.vue'
import SsqTableAnalysis from '../views/ssq/SsqTableAnalysis.vue'
import DataAnalysis from '../views/DataAnalysis.vue'
import HelpCenter from '../views/HelpCenter.vue'
import AboutUs from '../views/AboutUs.vue'
import UserAgreement from '../views/UserAgreement.vue'
import UserGuide from '../views/UserGuide.vue'
import MemberAgreement from '../views/MemberAgreement.vue'
import HitAnalysis from '../views/ssq/HitAnalysis.vue'
import DltHitAnalysis from '../views/dlt/HitAnalysis.vue'
import UsageStats from '../views/ssq/UsageStats.vue'
import DltUsageStats from '../views/dlt/UsageStats.vue'
import PrizeStatistics from '../views/ssq/PrizeStatistics.vue'
import DltPrizeStatistics from '../views/dlt/PrizeStatistics.vue'
// 前台页面懒加载
const LotterySelection = () => import('../views/LotterySelection.vue')
const LotteryPremium = () => import('../views/LotteryPremium.vue')
const Home = () => import('../views/ssq/Home.vue')
const DltHome = () => import('../views/dlt/Home.vue')
const LotteryInfo = () => import('../views/LotteryInfo.vue')
const Profile = () => import('../views/Profile.vue')
const Login = () => import('../views/Login.vue')
const Register = () => import('../views/Register.vue')
const ResetPassword = () => import('../views/ResetPassword.vue')
const PredictRecords = () => import('../views/PredictRecords.vue')
const DltPredictRecords = () => import('../views/dlt/PredictRecords.vue')
const ExcelImportManagement = () => import('../views/ExcelImportManagement.vue')
const ExchangeRecords = () => import('../views/ExchangeRecords.vue')
const DataAnalysis = () => import('../views/DataAnalysis.vue')
const HelpCenter = () => import('../views/HelpCenter.vue')
const AboutUs = () => import('../views/AboutUs.vue')
const UserAgreement = () => import('../views/UserAgreement.vue')
const UserGuide = () => import('../views/UserGuide.vue')
const MemberAgreement = () => import('../views/MemberAgreement.vue')
const PrivacyPolicy = () => import('../views/PrivacyPolicy.vue')
// 双色球相关页面
import SsqLottery from '../views/ssq/Lottery.vue'
const SsqLottery = () => import('../views/ssq/Lottery.vue')
const TrendAnalysis = () => import('../views/ssq/TrendAnalysis.vue')
const SurfaceAnalysis = () => import('../views/ssq/SurfaceAnalysis.vue')
const LineAnalysis = () => import('../views/ssq/LineAnalysis.vue')
const SsqTableAnalysis = () => import('../views/ssq/SsqTableAnalysis.vue')
const HitAnalysis = () => import('../views/ssq/HitAnalysis.vue')
const UsageStats = () => import('../views/ssq/UsageStats.vue')
const PrizeStatistics = () => import('../views/ssq/PrizeStatistics.vue')
// 大乐透相关页面
import DltLottery from '../views/dlt/Lottery.vue'
import DltTableAnalysis from '../views/dlt/DltTableAnalysis.vue'
import DltSurfaceAnalysis from '../views/dlt/SurfaceAnalysis.vue'
import DltLineAnalysis from '../views/dlt/LineAnalysis.vue'
import DltTrendAnalysis from '../views/dlt/TrendAnalysis.vue'
const DltLottery = () => import('../views/dlt/Lottery.vue')
const DltTableAnalysis = () => import('../views/dlt/DltTableAnalysis.vue')
const DltSurfaceAnalysis = () => import('../views/dlt/SurfaceAnalysis.vue')
const DltLineAnalysis = () => import('../views/dlt/LineAnalysis.vue')
const DltTrendAnalysis = () => import('../views/dlt/TrendAnalysis.vue')
const DltHitAnalysis = () => import('../views/dlt/HitAnalysis.vue')
const DltUsageStats = () => import('../views/dlt/UsageStats.vue')
const DltPrizeStatistics = () => import('../views/dlt/PrizeStatistics.vue')
// 精推版页面
import JtSsqHome from '../views/jt/SsqHome.vue'
import JtDltHome from '../views/jt/DltHome.vue'
const JtSsqHome = () => import('../views/jt/SsqHome.vue')
const JtDltHome = () => import('../views/jt/DltHome.vue')
// 后台管理相关组件
import AdminLogin from '../views/admin/AdminLogin.vue'
import AdminLayout from '../views/admin/layout/AdminLayout.vue'
import AdminVipCodeManagement from '../views/admin/VipCodeManagement.vue'
import AdminExcelImportManagement from '../views/admin/ExcelImportManagement.vue'
import AdminDltExcelImportManagement from '../views/admin/DltExcelImportManagement.vue'
import AdminPredictionManagement from '../views/admin/PredictionManagement.vue'
import AdminDltPredictionManagement from '../views/admin/DltPredictionManagement.vue'
import AdminPrizeStatistics from '../views/admin/PrizeStatistics.vue'
import AdminDltPrizeStatistics from '../views/admin/DltPrizeStatistics.vue'
import AdminUsageStats from '../views/ssq/UsageStats.vue'
import AdminDltUsageStats from '../views/dlt/UsageStats.vue'
const AdminLogin = () => import('../views/admin/AdminLogin.vue')
const AdminLayout = () => import('../views/admin/layout/AdminLayout.vue')
const AdminVipCodeManagement = () => import('../views/admin/VipCodeManagement.vue')
const AdminExcelImportManagement = () => import('../views/admin/ExcelImportManagement.vue')
const AdminDltExcelImportManagement = () => import('../views/admin/DltExcelImportManagement.vue')
const AdminPredictionManagement = () => import('../views/admin/PredictionManagement.vue')
const AdminDltPredictionManagement = () => import('../views/admin/DltPredictionManagement.vue')
const AdminPrizeStatistics = () => import('../views/admin/PrizeStatistics.vue')
const AdminDltPrizeStatistics = () => import('../views/admin/DltPrizeStatistics.vue')
const AdminUsageStats = () => import('../views/ssq/UsageStats.vue')
const AdminDltUsageStats = () => import('../views/dlt/UsageStats.vue')
const routes = [
// 前台用户路由
@@ -258,7 +258,13 @@ const routes = [
path: '/member-agreement',
name: 'MemberAgreement',
component: MemberAgreement,
meta: { requiresAuth: true }
meta: { requiresAuth: false }
},
{
path: '/privacy-policy',
name: 'PrivacyPolicy',
component: PrivacyPolicy,
meta: { requiresAuth: false }
},
{
path: '/table-analysis',
@@ -483,7 +489,16 @@ const routes = [
const router = createRouter({
history: createWebHistory(),
routes
routes,
scrollBehavior(to, from, savedPosition) {
// 如果有保存的位置(比如浏览器后退),使用保存的位置
if (savedPosition) {
return savedPosition
} else {
// 否则滚动到页面顶部
return { top: 0, behavior: 'smooth' }
}
}
})
// 路由守卫 - 权限控制
@@ -523,6 +538,18 @@ router.beforeEach((to, from, next) => {
console.error('加载用户状态出错:', error)
next('/cpzsadmin/login')
})
} else if (to.meta.requiresAuth) {
// 前台需要登录的页面权限检查
import('../store/user.js').then(({ userStore }) => {
if (!userStore.isLoggedIn) {
ElMessage.warning('请先登录后再访问该页面')
next('/login')
} else {
next()
}
}).catch(() => {
next('/login')
})
} else {
next()
}