spring
3 天以前 bdacf27471620926bd61c245b5f80ce9d4a70e3e
Merge remote-tracking branch 'refs/remotes/origin/dev_tide' into dev

# Conflicts:
# package.json
# src/permission.js
# src/router/index.js
# vite.config.js
已修改8个文件
已添加1个文件
191 ■■■■■ 文件已修改
.env.production 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/login.js 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/assets/logo/logo.png 补丁 | 查看 | 原始文档 | blame | 历史
src/permission.js 95 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/store/modules/user.js 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/tideLogin.vue 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vite.config.js 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.production
@@ -8,4 +8,4 @@
VITE_APP_BASE_API = '/prod-api'
# æ˜¯å¦åœ¨æ‰“包时开启压缩,支持 gzip å’Œ brotli
VITE_BUILD_COMPRESS = gzip
VITE_BUILD_COMPRESS = gzip
package.json
@@ -1,7 +1,7 @@
{
  "name": "ruoyi",
  "version": "3.8.9",
  "description": "基智油井管理系统",
  "description": "MES",
  "author": "若依",
  "license": "MIT",
  "type": "module",
src/api/login.js
@@ -93,3 +93,15 @@
    data: data
  })
}
export function tideLogin(data) {
  return request({
    url: '/tide/tideLogin',
    headers: {
      isToken: false,
      repeatSubmit: false
    },
    method: 'post',
    data: data
  })
}
src/assets/logo/logo.png

src/permission.js
@@ -1,76 +1,69 @@
import router from "./router";
import { ElMessage } from "element-plus";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import { getToken } from "@/utils/auth";
import { isHttp, isPathMatch } from "@/utils/validate";
import { isRelogin } from "@/utils/request";
import useUserStore from "@/store/modules/user";
import useSettingsStore from "@/store/modules/settings";
import usePermissionStore from "@/store/modules/permission";
import router from './router'
import { ElMessage } from 'element-plus'
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
import { getToken } from '@/utils/auth'
import { isHttp, isPathMatch } from '@/utils/validate'
import { isRelogin } from '@/utils/request'
import useUserStore from '@/store/modules/user'
import useSettingsStore from '@/store/modules/settings'
import usePermissionStore from '@/store/modules/permission'
NProgress.configure({ showSpinner: false });
NProgress.configure({ showSpinner: false })
const whiteList = ["/login", "/register", "/device-info"];
const whiteList = ['/login', '/register', '/callbacklccpn']
const isWhiteList = (path) => {
  return whiteList.some((pattern) => isPathMatch(pattern, path));
};
  return whiteList.some(pattern => isPathMatch(pattern, path))
}
router.beforeEach((to, from, next) => {
  NProgress.start();
  NProgress.start()
  if (getToken()) {
    to.meta.title && useSettingsStore().setTitle(to.meta.title);
    to.meta.title && useSettingsStore().setTitle(to.meta.title)
    /* has token*/
    if (to.path === "/login") {
      next({ path: "/" });
      NProgress.done();
    if (to.path === '/login') {
      next({ path: '/' })
      NProgress.done()
    } else if (isWhiteList(to.path)) {
      next();
      next()
    } else {
      if (useUserStore().roles.length === 0) {
        isRelogin.show = true;
        isRelogin.show = true
        // åˆ¤æ–­å½“前用户是否已拉取完user_info信息
        useUserStore()
          .getInfo()
          .then(() => {
            isRelogin.show = false;
            usePermissionStore()
              .generateRoutes()
              .then((accessRoutes) => {
                // æ ¹æ®roles权限生成可访问的路由表
                accessRoutes.forEach((route) => {
                  if (!isHttp(route.path)) {
                    router.addRoute(route); // åŠ¨æ€æ·»åŠ å¯è®¿é—®è·¯ç”±è¡¨
                  }
                });
                next({ ...to, replace: true }); // hack方法 ç¡®ä¿addRoutes已完成
              });
        useUserStore().getInfo().then(() => {
          isRelogin.show = false
          usePermissionStore().generateRoutes().then(accessRoutes => {
            // æ ¹æ®roles权限生成可访问的路由表
            accessRoutes.forEach(route => {
              if (!isHttp(route.path)) {
                router.addRoute(route) // åŠ¨æ€æ·»åŠ å¯è®¿é—®è·¯ç”±è¡¨
              }
            })
            next({ ...to, replace: true }) // hack方法 ç¡®ä¿addRoutes已完成
          })
          .catch((err) => {
            useUserStore()
              .logOut()
              .then(() => {
                ElMessage.error(err);
                next({ path: "/" });
              });
          });
        }).catch(err => {
          useUserStore().logOut().then(() => {
            ElMessage.error(err)
            next({ path: '/' })
          })
        })
      } else {
        next();
        next()
      }
    }
  } else {
    // æ²¡æœ‰token
    if (isWhiteList(to.path)) {
      // åœ¨å…ç™»å½•白名单,直接进入
      next();
      next()
    } else {
      next(`/login?redirect=${to.fullPath}`); // å¦åˆ™å…¨éƒ¨é‡å®šå‘到登录页
      NProgress.done();
      next(`/login?redirect=${to.fullPath}`) // å¦åˆ™å…¨éƒ¨é‡å®šå‘到登录页
      NProgress.done()
    }
  }
});
})
router.afterEach(() => {
  NProgress.done();
});
  NProgress.done()
})
src/router/index.js
@@ -43,6 +43,11 @@
    hidden: true
  },
  {
    path: "/callbacklccpn",
    component: () => import("@/views/tideLogin.vue"),
    hidden: true,
  },
  {
    path: '/register',
    component: () => import('@/views/register'),
    hidden: true
@@ -68,6 +73,20 @@
        component: () => import('@/views/index'),
        name: 'Index',
        meta: { title: '首页', icon: 'dashboard', affix: true }
      }
    ]
  },
  {
    path: '/main/MobileChat',
    component: Layout,
    redirect: '',
    hidden: true,
    children: [
      {
        path: '',
        component: () => import('@/views/chatHome/chatHomeIndex/MobileChat'),
        name: 'MobileChat',
        meta: { title: 'AI对话', icon: 'dashboard', affix: true}
      }
    ]
  },
@@ -100,21 +119,6 @@
        component: () => import('@/views/system/user/authRole'),
        name: 'AuthRole',
        meta: { title: '分配角色', activeMenu: '/system/user' }
      }
    ]
  },
  {
    path: '/main/MobileChat',
    component: Layout,
    redirect: '',
    hidden: true,
    permissions: ['MobileChat:edit'],
    children: [
      {
        path: '',
        component: () => import('@/views/chatHome/chatHomeIndex/MobileChat'),
        name: 'MobileChat',
        meta: { title: 'AI对话', activeMenu: '/chatHome/chatHomeIndex'}
      }
    ]
  },
src/store/modules/user.js
@@ -1,4 +1,4 @@
import {login, logout, getInfo, loginCheck, loginCheckFactory} from '@/api/login'
import {login, logout, getInfo, loginCheck, loginCheckFactory,tideLogin} from '@/api/login'
import { getToken, setToken, removeToken } from '@/utils/auth'
import { isHttp, isEmpty } from "@/utils/validate"
import defAva from '@/assets/images/profile.jpg'
@@ -109,6 +109,22 @@
          })
        })
      },
      TideLogin({ commit }, code) {
        return new Promise((resolve, reject) => {
          tideLogin(code)
              .then((res) => {
                setToken(res.token);
                commit("SET_TOKEN", res.token);
                Vue.prototype.uploadHeader = {
                  Authorization: "Bearer " + res.token,
                };
                resolve();
              })
              .catch((error) => {
                reject(error);
              });
        });
      },
    }
  })
src/views/tideLogin.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,23 @@
<template>
  <div></div>
</template>
<script>
import store from "@/store";
export default {
  data() {
    return {}
  },
  created() {
    this.goLogin()
  },
  computed: {},
  methods: {
     goLogin() {
      store.dispatch('TideLogin', {code : this.$route.query.code}).then(() => {
        this.$router.push({ path: this.redirect || "/" }).catch(() => { });
      })
    }
  }
}
</script>
<style scoped></style>
vite.config.js
@@ -8,9 +8,8 @@
  const { VITE_APP_ENV } = env;
  const baseUrl =
    VITE_APP_ENV == "development"
      ? "http://114.132.189.42:8089" // å¼€å‘环境后端接口
      // : "http://114.132.189.42:8068"; // éŸ¦å¾·å®žä¸šç”Ÿäº§çŽ¯å¢ƒåŽç«¯æŽ¥å£
      : "http://114.132.189.42:8078"; // åŸºæ™ºæ²¹äº•生产环境后端接口
      ? "http://192.168.1.147:7003" // å¼€å‘环境后端接口
      : "http://10.136.12.71:7003"; // ç”Ÿäº§çŽ¯å¢ƒåŽç«¯æŽ¥å£
  return {
    // éƒ¨ç½²ç”Ÿäº§çŽ¯å¢ƒå’Œå¼€å‘çŽ¯å¢ƒä¸‹çš„URL。