Explorar o código

1.oa跳转生产力平台登录
2.完善框架配置

GouGengquan hai 9 meses
pai
achega
da19d483c9
Modificáronse 13 ficheiros con 2363 adicións e 191 borrados
  1. 4 0
      .env.development
  2. 4 0
      .env.production
  3. 2 2
      index.html
  4. 2032 22
      package-lock.json
  5. 6 2
      package.json
  6. BIN=BIN
      public/dayou_favicon.ico
  7. 8 0
      src/api/user.js
  8. 6 2
      src/main.js
  9. 16 0
      src/stores/useUserStore.js
  10. 15 0
      src/utils/auth.js
  11. 75 0
      src/utils/request.js
  12. 194 163
      src/views/home/index.vue
  13. 1 0
      vite.config.js

+ 4 - 0
.env.development

@@ -0,0 +1,4 @@
+// 环境变量,哪个环境用的哪个见package.json
+NODE_ENV = development
+VITE_NAME='全局环境'
+VITE_BASE_URL='http://127.0.0.1:9080/productivity-platform/'

+ 4 - 0
.env.production

@@ -0,0 +1,4 @@
+// 环境变量,哪个环境用的哪个见package.json
+NODE_ENV = production
+VITE_NAME='全局环境'
+VITE_BASE_URL='http://127.0.0.1:9080/productivity-platform/'

+ 2 - 2
index.html

@@ -2,9 +2,9 @@
 <html lang="en">
   <head>
     <meta charset="UTF-8">
-    <link rel="icon" href="/favicon.ico">
+    <link rel="icon" href="/dayou_favicon.ico">
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
-    <title>Vite App</title>
+    <title>大有评估-生产力平台</title>
   </head>
   <body>
     <div id="app"></div>

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 2032 - 22
package-lock.json


+ 6 - 2
package.json

@@ -4,14 +4,18 @@
   "private": true,
   "type": "module",
   "scripts": {
-    "dev": "vite",
-    "build": "vite build",
+    "dev": "vite --mode development",
+    "build": "vite build --mode production",
     "preview": "vite preview",
     "lint": "eslint . --fix"
   },
   "dependencies": {
     "@element-plus/icons-vue": "^2.3.1",
+    "axios": "^1.7.7",
     "element-plus": "^2.8.5",
+    "js-cookie": "^3.0.5",
+    "pinia": "^2.2.4",
+    "pinia-plugin-persistedstate": "^4.1.1",
     "unplugin-auto-import": "^0.18.3",
     "unplugin-vue-components": "^0.27.4",
     "vue": "^3.5.11",

BIN=BIN
public/dayou_favicon.ico


+ 8 - 0
src/api/user.js

@@ -0,0 +1,8 @@
+import request from '@/utils/request'
+
+export function loginByOAInfo(params) {
+    return request({
+        url: '/auth/loginByOAInfo?oaToken=' + params,
+        method: 'post'
+    })
+}

+ 6 - 2
src/main.js

@@ -3,13 +3,17 @@ import './assets/main.css'
 import { createApp } from 'vue'
 import App from './App.vue'
 import router from './router'
-
+import { createPinia } from 'pinia'
+import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
 
 import * as ElementPlusIconsVue from '@element-plus/icons-vue'
 
+const pinia = createPinia()
+// pinia数据持久化
+pinia.use(piniaPluginPersistedstate)
 const app = createApp(App)
 for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
   app.component(key, component)
 }
 
-app.use(router).mount('#app')
+app.use(router).use(pinia).mount('#app')

+ 16 - 0
src/stores/useUserStore.js

@@ -0,0 +1,16 @@
+import { defineStore } from 'pinia'
+
+export const useUserStore = defineStore('user', {
+    state: () => ({
+        userInfo: 1 // 存储用户信息
+    }),
+    actions: {
+        setUserInfo(data) {
+            this.userInfo = data
+        },
+    },
+    persist: {
+        enabled: true,
+        key: 'userInfo',//设置存储的key,详情见https://prazdevs.github.io/pinia-plugin-persistedstate/zh/guide/config.html配置文档
+    },
+});

+ 15 - 0
src/utils/auth.js

@@ -0,0 +1,15 @@
+import Cookies from 'js-cookie'
+
+const TokenKey = 'token'
+
+export function getToken() {
+  return Cookies.get(TokenKey)
+}
+
+export function setToken(token) {
+  return Cookies.set(TokenKey, token)
+}
+
+export function removeToken() {
+  return Cookies.remove(TokenKey)
+}

+ 75 - 0
src/utils/request.js

@@ -0,0 +1,75 @@
+import axios from 'axios'
+// import { ElMessage, ElMessageBox } from 'element-plus'
+// import { userStore } from '@/stores/userStore'
+import { getToken, removeToken } from '@/utils/auth'
+
+// create an axios instance
+const service = axios.create({
+  // Vite默认不支持process
+  // baseURL: process.env.VITE_BASE_URL,
+  baseURL: import.meta.env.VITE_BASE_URL,
+  timeout: 5000 // 请求超时
+})
+
+// 请求拦截器
+service.interceptors.request.use(
+  config => {
+
+    if (getToken()) {
+      // 设置请求带上token
+      config.headers['token'] = getToken()
+    }
+    return config
+  },
+  error => {
+    // 异常情况
+    console.log(error)
+    return Promise.reject(error)
+  }
+)
+
+// 返回拦截器
+service.interceptors.response.use(
+
+  response => {
+    const res = response.data
+
+    // code不等于200的处理
+    if (res.code !== 200) {
+      ElMessage({
+        showClose: true,
+        message: res.message,
+        type: 'error'
+      })
+
+      // code 701 未登录处理
+      if (res.code === 701) {
+        ElMessageBox.confirm('您已退出登录, 您可以点击取消留在当前页面, 或重新登录', '确认重新登录', {
+          confirmButtonText: '重新登录',
+          cancelButtonText: '取消',
+          type: 'warning',
+          center: true,
+        }
+        ).then(() => { // 确认重新登录
+          // userStore.removeToken();
+          removeToken();
+          window.location.href = 'http://127.0.0.1:9518/';
+        })
+      }
+      return Promise.reject(new Error(res.message || 'Error'))
+    } else {
+      return res
+    }
+  },
+  error => {
+    console.log('err' + error)
+    Message({
+      message: error.message,
+      type: 'error',
+      duration: 5 * 1000
+    })
+    return Promise.reject(error)
+  }
+)
+
+export default service

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 194 - 163
src/views/home/index.vue


+ 1 - 0
vite.config.js

@@ -8,6 +8,7 @@ import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
 
 // https://vite.dev/config/
 export default defineConfig({
+  envPrefix: ['VITE'],
   plugins: [
     vue(),