diff --git a/.env.development b/.env.development index 7b55620..0e5f525 100644 --- a/.env.development +++ b/.env.development @@ -1,4 +1,4 @@ # 变量必须以 VITE_ 为前缀才能暴露给外部读取 NODE_ENV = 'development' -VITE_APP_TITLE = '大屏数据' -VITE_APP_BASE_API = 'http://10.115.6.28:18083/' \ No newline at end of file +VITE_APP_TITLE = '实验仿真' +VITE_APP_BASE_API = '//localhost:16066/jeecg-boot' \ No newline at end of file diff --git a/package.json b/package.json index 8e3ff0d..e6c3fd7 100644 --- a/package.json +++ b/package.json @@ -18,6 +18,7 @@ "@antv/x6-plugin-stencil": "^2.1.5", "@antv/x6-plugin-transform": "^2.1.8", "@antv/x6-vue-shape": "^2.1.2", + "@element-plus/icons-vue": "^2.3.1", "@kjgl77/datav-vue3": "^1.7.3", "axios": "^1.7.2", "echarts": "^5.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e83cfbb..11ad3e4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,6 +35,9 @@ importers: '@antv/x6-vue-shape': specifier: ^2.1.2 version: 2.1.2(@antv/x6@2.18.1)(vue@3.4.29(typescript@5.2.2)) + '@element-plus/icons-vue': + specifier: ^2.3.1 + version: 2.3.1(vue@3.4.29(typescript@5.2.2)) '@kjgl77/datav-vue3': specifier: ^1.7.3 version: 1.7.3(vue@3.4.29(typescript@5.2.2)) diff --git a/src/api/index.ts b/src/api/index.ts index d95ed38..3879b01 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -1,2 +1,14 @@ import request from '@/utils/request' +export const login = (data: any) => { + return request({ + url: '/sys/login', + method: 'post', + data + }) +} +export const getCode = (time: any) => { + return request({ + url: '/sys/randomImage/' + time, + }) + } \ No newline at end of file diff --git a/src/assets/images/Button.png b/src/assets/images/Button.png new file mode 100644 index 0000000..454a182 Binary files /dev/null and b/src/assets/images/Button.png differ diff --git a/src/assets/images/FakeAnimateForPrototype.png b/src/assets/images/FakeAnimateForPrototype.png new file mode 100644 index 0000000..0c650b7 Binary files /dev/null and b/src/assets/images/FakeAnimateForPrototype.png differ diff --git a/src/assets/images/bg10.png b/src/assets/images/bg10.png new file mode 100644 index 0000000..c4fe07b Binary files /dev/null and b/src/assets/images/bg10.png differ diff --git a/src/assets/images/bg11.png b/src/assets/images/bg11.png new file mode 100644 index 0000000..a6291f0 Binary files /dev/null and b/src/assets/images/bg11.png differ diff --git a/src/assets/images/bg12.png b/src/assets/images/bg12.png new file mode 100644 index 0000000..ec79d30 Binary files /dev/null and b/src/assets/images/bg12.png differ diff --git a/src/assets/images/bg4.png b/src/assets/images/bg4.png new file mode 100644 index 0000000..3c78814 Binary files /dev/null and b/src/assets/images/bg4.png differ diff --git a/src/assets/images/bg5.png b/src/assets/images/bg5.png new file mode 100644 index 0000000..be26edf Binary files /dev/null and b/src/assets/images/bg5.png differ diff --git a/src/assets/images/bg6.png b/src/assets/images/bg6.png new file mode 100644 index 0000000..0c26cb3 Binary files /dev/null and b/src/assets/images/bg6.png differ diff --git a/src/assets/images/bg7.png b/src/assets/images/bg7.png new file mode 100644 index 0000000..c671989 Binary files /dev/null and b/src/assets/images/bg7.png differ diff --git a/src/assets/images/bg8.png b/src/assets/images/bg8.png new file mode 100644 index 0000000..d1cd9e0 Binary files /dev/null and b/src/assets/images/bg8.png differ diff --git a/src/assets/images/bg9.png b/src/assets/images/bg9.png new file mode 100644 index 0000000..80dbe00 Binary files /dev/null and b/src/assets/images/bg9.png differ diff --git a/src/assets/images/chengxv.png b/src/assets/images/chengxv.png new file mode 100644 index 0000000..03cf3f2 Binary files /dev/null and b/src/assets/images/chengxv.png differ diff --git a/src/assets/images/left.png b/src/assets/images/left.png new file mode 100644 index 0000000..cc4ca38 Binary files /dev/null and b/src/assets/images/left.png differ diff --git a/src/assets/images/right.png b/src/assets/images/right.png new file mode 100644 index 0000000..55ec9f8 Binary files /dev/null and b/src/assets/images/right.png differ diff --git a/src/layout/index.vue b/src/layout/index.vue index 60e7e7b..bcfdaff 100644 --- a/src/layout/index.vue +++ b/src/layout/index.vue @@ -2,7 +2,7 @@
-

登录/注册

+

{{user.token?'已登录':'登录/注册'}}

{{ setting.title }}
@@ -18,10 +18,13 @@ \ No newline at end of file + diff --git a/src/main.ts b/src/main.ts index a16be23..e979875 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,6 +1,6 @@ import { createApp } from 'vue' import App from './App.vue' -import router from '@/router' +import router from './permissions' import '@/styles/index.scss' import ElementPlus from 'element-plus'; import 'element-plus/dist/index.css'; // 引入 Element Plus 的样式文件 diff --git a/src/permissions.ts b/src/permissions.ts new file mode 100644 index 0000000..3bc2aa0 --- /dev/null +++ b/src/permissions.ts @@ -0,0 +1,23 @@ +import router from "./router"; +import userStore from "./store/modules/user"; +import { getToken } from "./utils/auth"; +import pinia from "./store"; +const store = userStore(pinia); +router.beforeEach((to: any, from: any, next: any) => { + if (to.path === "/login") { + if (store.token) { + next("/"); + } else { + next(); + } + // next(); + } else { + const token = getToken(); + if (token) { + next(); + } else { + next("/login"); + } + } +}); +export default router; \ No newline at end of file diff --git a/src/router/index.ts b/src/router/index.ts index 8d73740..47f2ecd 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -22,6 +22,11 @@ const routerList: any = [ } ], }, + { + path: '/subjectTest', // 题目测试页面 + name: 'SubjectTest', + component: () => import('@/views/subjectTest/index.vue'), + }, { path: '/login', name: 'Login', diff --git a/src/store/modules/setting.ts b/src/store/modules/setting.ts index bd44b28..f86ce30 100644 --- a/src/store/modules/setting.ts +++ b/src/store/modules/setting.ts @@ -46,7 +46,7 @@ const settingStore = defineStore("settingStore", { } }, calculateTemperature() { - this.qw >= 0 ? this.qw=1 : this.qw; + this.qw <= 0 ? this.qw=1 : this.qw; const a = (100000 * this.zl * this.srmj) / this.jrgl; let time = 0; let currentTemp = this.qw; diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts new file mode 100644 index 0000000..a2c0c45 --- /dev/null +++ b/src/store/modules/user.ts @@ -0,0 +1,31 @@ +import { defineStore } from "pinia"; +import { getToken,setToken } from "@/utils/auth"; +import { login } from "@/api"; +import { ElMessage } from "element-plus"; +const userStore = defineStore("userStore", { + state: () => ({ + token: getToken(), + userInfo: {}, + }), + actions: { + async logIn(form: any) { + console.log(form); + const res: any = await login(form); + // if(res.code === 500) return ElMessage.error(res.msg) + if(res.code !== 200) { + ElMessage.error(res.msg) + return false + } + this.token = res.result.token; + this.userInfo = res.result.userInfo; + setToken(this.token); + console.log(res); + return true + }, + clearStatus() { + this.token = ""; + this.userInfo = {}; + }, + }, +}); +export default userStore; diff --git a/src/utils/auth.ts b/src/utils/auth.ts new file mode 100644 index 0000000..11e86ff --- /dev/null +++ b/src/utils/auth.ts @@ -0,0 +1,11 @@ +const TOKEN_KEY:string = "token"; +const setToken = (token: string): void => { + localStorage.setItem(TOKEN_KEY, token); +}; +const getToken = () => localStorage.getItem(TOKEN_KEY) || ""; +const removeToken = () => localStorage.removeItem(TOKEN_KEY); +export { + setToken, + getToken, + removeToken, +}; diff --git a/src/utils/request.ts b/src/utils/request.ts index e335ec8..691d243 100644 --- a/src/utils/request.ts +++ b/src/utils/request.ts @@ -1,23 +1,38 @@ // 引入第三方请求库axios -import axios from 'axios' +import axios from "axios"; +import pinia from "@/store"; +import { ElMessage } from "element-plus"; + +import userStore from "@/store/modules/user"; // 创建axios实例 const server = axios.create({ - baseURL:import.meta.env.VITE_APP_BASE_API, - timeout:10000, -}) + baseURL: import.meta.env.VITE_APP_BASE_API, + timeout: 30000, +}); // 创建请求拦截器 + server.interceptors.request.use((config) => { - return config - -}) + const useuserStore = userStore(pinia); + + config.headers.Authorization = useuserStore.token; + config.headers["x-access-token"] = useuserStore.token; + return config; +}); // 创建相应拦截器 -server.interceptors.response.use((response:any) => { - if(response.status === 200){ - return response.data - } - // return response -}) +server.interceptors.response.use((response) => { + if (response.data.code === 401) { + const useuserStore = userStore(pinia); + +// useuserStore.clearStatus(); + // return Promise.reject(response); + } + if (response.data.code === 412) { + ElMessage.error(response.data.message); + return Promise.reject(response); + } + return response.data; +}); // 暴露axios实例 -export default server \ No newline at end of file +export default server; diff --git a/src/views/designRoute/index.vue b/src/views/designRoute/index.vue index b58a403..2e67c55 100644 --- a/src/views/designRoute/index.vue +++ b/src/views/designRoute/index.vue @@ -35,7 +35,7 @@ @@ -1031,7 +1128,5 @@ const onTip = () => { height: 753px !important; } .tip-view { - - } diff --git a/src/views/largeDataScreen/home.vue b/src/views/largeDataScreen/home.vue index 3a2eba9..4e7b75f 100644 --- a/src/views/largeDataScreen/home.vue +++ b/src/views/largeDataScreen/home.vue @@ -291,7 +291,7 @@ const step = ref(0); const popover1 = ref(null); const popover2 = ref(null); const dialogVisible = ref(false); -const Installation = ref(true); +const Installation = ref(false); const installationStep = ref(1); const checkList = ref([1, 2]); const unpack = (): void => { diff --git a/src/views/program/components/yibiao.vue b/src/views/program/components/yibiao.vue index b0bd9a4..76b8700 100644 --- a/src/views/program/components/yibiao.vue +++ b/src/views/program/components/yibiao.vue @@ -4,7 +4,7 @@
- \ No newline at end of file diff --git a/src/views/subjectTest/index.vue b/src/views/subjectTest/index.vue new file mode 100644 index 0000000..dd07fb7 --- /dev/null +++ b/src/views/subjectTest/index.vue @@ -0,0 +1,365 @@ + + + + +