Browse Source

no message

xiaoxin 2 years ago
parent
commit
42abb20e55

+ 1 - 1
.env.development

@@ -1,5 +1,5 @@
 # 变量必须以 VITE_ 为前缀才能暴露给外部读取
 NODE_ENV = 'development'
 # VITE_APP_TITLE = '硅谷甄选运营平台'
-VITE_APP_BASE_API = '/api'
+VITE_APP_BASE_API = '/smartApi'
 VITE_SERVE="https://www.campussmartlife.com/smartApi"

+ 1 - 1
.env.production

@@ -1,5 +1,5 @@
 # 变量必须以 VITE_ 为前缀才能暴露给外部读取
 NODE_ENV = 'production'
 # VITE_APP_TITLE = '硅谷甄选运营平台'
-VITE_APP_BASE_API = '/api'
+VITE_APP_BASE_API = '/smartApi'
 VITE_SERVE="https://www.campussmartlife.com/smartApi"

+ 10 - 0
src/api/token/index.ts

@@ -0,0 +1,10 @@
+import request from "@/utils/request";
+
+//token相关的请求地址
+enum API {
+  // 验证token是否正确的接口
+  TOKEN_URL = "/wanzai/api/driver/getClassTj",
+}
+
+// 验证token是否正确的接口
+export const reqVerifyToken = (data: any) => request.get(API.TOKEN_URL, data);

BIN
src/assets/images/404.png


+ 4 - 4
src/components/building.vue

@@ -3,9 +3,9 @@
   <div class="box icon" @click="test"></div>
   <!-- 探问楼 -->
   <div class="box icon2" @click="test2"></div>
-  <!-- 探学楼 -->
-  <div class="box icon3" @click="test3"></div>
   <!-- 探真楼 -->
+  <div class="box icon3" @click="test3"></div>
+  <!-- 探学楼 -->
   <div class="box icon4" @click="test4"></div>
 </template>
 
@@ -51,12 +51,12 @@ const test4 = () => {
 .icon3 {
   top: 468px;
   left: 1090px;
-  background-image: url(@/assets/images/building3.png);
+  background-image: url(@/assets/images/building4.png);
 }
 
 .icon4 {
   top: 324px;
   left: 1051px;
-  background-image: url(@/assets/images/building4.png);
+  background-image: url(@/assets/images/building3.png);
 }
 </style>

+ 6 - 1
src/components/school/schoolLeft.vue

@@ -144,7 +144,7 @@ const getSchoolVisitor = async () => {
 
     res.data.forEach((ele: any) => {
       // 获取X轴时间数据
-      timeList.value.push(ele.dataTime.slice(-2));
+      timeList.value.push(ele.dataTime.slice(-2) + "月");
 
       // 获取Y轴数据
       ele.tjs.forEach((element: any) => {
@@ -271,6 +271,11 @@ const initLineChart = () => {
         },
       },
     },
+    dataZoom: [
+      {
+        type: "inside",
+      },
+    ],
     series: [
       {
         name: typeList.value[0],

+ 54 - 28
src/router/index.ts

@@ -1,45 +1,71 @@
-import { createRouter, createWebHistory } from 'vue-router'
+import { createRouter, createWebHistory } from "vue-router";
 
 const router = createRouter({
   history: createWebHistory(import.meta.env.BASE_URL),
   routes: [
     {
-      path: '/',
-      name: 'school',
-      component: () => import('@/views/school.vue'),
-      meta:{showRouter:true}
+      path: "/",
+      name: "school",
+      component: () => import("@/views/school.vue"),
+      meta: { showRouter: true },
     },
     {
-      path: '/user',
-      name: 'user',
-      component: () => import('@/views/user.vue'),
-      meta:{showRouter:true}
+      path: "/user",
+      name: "user",
+      component: () => import("@/views/user.vue"),
+      meta: { showRouter: true },
     },
     {
-      path: '/energy',
-      name: 'energy',
-      component: () => import('@/views/energy.vue'),
-      meta:{showRouter:true}
+      path: "/energy",
+      name: "energy",
+      component: () => import("@/views/energy.vue"),
+      meta: { showRouter: true },
     },
     {
-      path: '/more',
-      name: 'more',
-      component: () => import('@/views/more.vue'),
-      meta:{showRouter:false}
+      path: "/more",
+      name: "more",
+      component: () => import("@/views/more.vue"),
+      meta: { showRouter: false },
     },
     {
-      path: '/teacher',
-      name: 'teacher',
-      component: () => import('@/views/teacher.vue'),
-      meta:{showRouter:false}
+      path: "/teacher",
+      name: "teacher",
+      component: () => import("@/views/teacher.vue"),
+      meta: { showRouter: false },
     },
     {
-      path: '/student',
-      name: 'student',
-      component: () => import('@/views/student.vue'),
-      meta:{showRouter:false}
+      path: "/student",
+      name: "student",
+      component: () => import("@/views/student.vue"),
+      meta: { showRouter: false },
+    },
+    {
+      path: "/404",
+      name: "404",
+      component: () => import("@/views/404.vue"),
+      meta: { showRouter: false },
+    },
+  ],
+});
+
+// 白名单
+const whiteList = ["/", "/404"];
+
+// 路由全局前置守卫
+router.beforeEach((to, from, next) => {
+  // 判断是否为白名单页面
+  if (whiteList.includes(to.path)) {
+    // 白名单页面直接放行
+    next();
+  } else {
+    const token = localStorage.getItem("WANZAI-TOKEN");
+    // console.log(token);
+    if (token) {
+      next();
+    } else {
+      next("/404");
     }
-  ]
-})
+  }
+});
 
-export default router
+export default router;

+ 14 - 0
src/utils/getParams.ts

@@ -0,0 +1,14 @@
+//获取当前URL指定参数
+export const getQueryString = (name: string) => {
+  // 获取URL
+  let url = window.location.href;
+  // 正则匹配URL
+  let pattern = new RegExp("[?&]" + name + "=([^&]+)", "i");
+  let matcher = pattern.exec(url);
+  if (matcher == null || matcher.length < 1) {
+    return false;
+  }
+  // 输出指定的参数值
+  return decodeURIComponent(matcher[1]);
+  // return matcher[1];
+};

+ 8 - 0
src/utils/verifyToken.ts

@@ -0,0 +1,8 @@
+import { reqVerifyToken } from "@/api/token/index";
+
+export const handleVerifyToken = async (value: string) => {
+  const res = await reqVerifyToken(value);
+  // console.log(res);
+
+  return 1;
+};

+ 28 - 0
src/views/404.vue

@@ -0,0 +1,28 @@
+<template>
+  <div class="box">
+    <img src="@/assets/images/404.png" alt="" />
+    暂无权限
+  </div>
+</template>
+
+<script setup lang="ts"></script>
+
+<style lang="scss" scoped>
+.box {
+  position: relative;
+  z-index: 999;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  margin-top: -83px;
+  width: 1920px;
+  height: 1080px;
+  font-size: 26px;
+  background-color: #fff;
+
+  img {
+    margin-bottom: 50px;
+  }
+}
+</style>

+ 35 - 1
src/views/school.vue

@@ -1,5 +1,5 @@
 <template>
-  <div class="school">
+  <div class="school" v-if="isShow">
     <!-- 左边区域 -->
     <SchoolLeft />
 
@@ -11,6 +11,40 @@
 <script setup lang="ts">
 import SchoolLeft from "@/components/school/schoolLeft.vue";
 import SchoolRight from "@/components/school/schoolRight.vue";
+import { onMounted, ref } from "vue";
+// @ts-ignore
+import { getQueryString } from "@/utils/getParams.ts";
+import { useRouter } from "vue-router";
+// @ts-ignore
+import { handleVerifyToken } from "@/utils/verifyToken.ts";
+
+// 路由器实例
+const $router = useRouter();
+
+// 是否展示页面
+const isShow = ref(false);
+
+onMounted(() => {
+  // 获取token
+  getToken();
+
+  // let a = handleVerifyToken("123");
+  // console.log(a);
+});
+
+// 获取token
+const getToken = () => {
+  let token = getQueryString("token");
+  // console.log(token);
+
+  // 判断是否存在token
+  if (!token) {
+    $router.push("404");
+  } else {
+    localStorage.setItem("WANZAI-TOKEN", token);
+    isShow.value = true;
+  }
+};
 </script>
 
 <style lang="scss" scoped>

+ 2 - 1
vite.config.ts

@@ -9,6 +9,7 @@ export default defineConfig(({ mode }) => {
 
   return {
     plugins: [vue()],
+    base: "/smartLeader/",
     resolve: {
       alias: {
         "@": fileURLToPath(new URL("./src", import.meta.url)),
@@ -23,7 +24,7 @@ export default defineConfig(({ mode }) => {
           //需要代理跨域
           changeOrigin: true,
           //路径重写
-          rewrite: (path) => path.replace(/^\/api/, ""),
+          rewrite: (path) => path.replace(/^\/smartApi/, ""),
         },
       },
     },