charles
2024-07-18 dbab45ef6e56c32ca3b2d286ec5cb7ed0c86bfea
feat:实现crm与aps共用token
1个文件已添加
4个文件已修改
76 ■■■■ 已修改文件
.env.development 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/common/untils/index.js 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/common/untils/request.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/layout/components/appHeader/index.vue 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
vue.config.js 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.development
@@ -5,4 +5,6 @@
# 页面 title 前缀
VUE_APP_TITLE=Basic
VUE_APP_BATH_PATH='http://192.168.20.119:9083'
# aps本地端口号
VUE_APP_APS_PORT=9080
src/common/untils/index.js
New file
@@ -0,0 +1,49 @@
import router from '@/router';
export const getPortFromUrl=(url) =>{
    try {
        const portPattern = /:\d+/;
        const urlObj = new URL(url);
        const portMatch = portPattern.exec(urlObj.host)[0].slice(1); // 去掉冒号
        return parseInt(portMatch, 10); // 转换为整数
    } catch (error) {
        console.error(error.message);
        return null;
    }
};
export const doHostName=(hostname)=>{
    /* if(hostname.includes('localhost')){
         return hostname;
     }*/
    return hostname.substring(hostname.indexOf(".")+1);
};
export const getApsPage = () => {
    // 首页部署在各个环境的端口
    /* const loginPathMap = {
       prod:`//${window.location.hostname}:9080`,
       test:`//192.168.20.119:9080`,
       // 想跳到本地启动的登录页的话需要把dev改成你本地项目路径
       dev: `//192.168.8.112:8080`
     };*/
    //return loginPathMap[environmentType()]
    let port=getPortFromUrl(window.location.href);//获得端口号
    let hostname=window.location.hostname;// 一级域名
    if(hostname.includes('fai365.com')||hostname.includes('smartai.com')||hostname.includes('navicat.com')) {// 代表存在域名
        hostname='aps.'+doHostName(hostname);
    }
    if(hostname.includes('localhost')){
        port=process.env.VUE_APP_APS_PORT;//端口号与 .env.development 中 VUE_APP_APS_PORT 跟本地aps项目的端口号保持一致
    }
    if(router.mode==='history'){
        if(port){
            return `${hostname}:${port}`;
        }else{
            return `${hostname}`;
        }
    }else{
        if(port){
            return `${hostname}:${port}`+'/#';
        }else{
            return `${hostname}`+'/#';
        }
    }
};
src/common/untils/request.js
@@ -1,6 +1,6 @@
import axios from "axios"
import { Message } from "element-ui"
import {getApsPage} from './index.js';
// import router from '@/router'
// 开发环境下将自己的token复制到这里, 也可以在浏览器中手动添加token到cookie中,cookie中的token优先
@@ -27,7 +27,7 @@
  withCredentials: true // 是否允许带cookie这些
})
const getApsPage = () => {
/*const getApsPage = () => {
    // 首页部署在各个环境的端口
    const loginPathMap = {
        prod:`//${window.location.hostname}:9080`,
@@ -37,7 +37,7 @@
    }
    return loginPathMap[environmentType()]
}
}*/
/* //POST传参序列化(添加请求拦截器) */
Axios.interceptors.request.use(
@@ -74,7 +74,7 @@
      return res
    } else if([2012,2013,2014,2015].includes(res.data.code)){
      if (isDev){
        alert("JWT失效,即将跳转至登录页..")
       // alert("JWT失效,即将跳转至登录页..")
        window.location = getApsPage()+'/login'
      }else {
        //   JWT鉴权失效 跳转到登录页
src/components/layout/components/appHeader/index.vue
@@ -21,6 +21,7 @@
<script>
import Cookies from "js-cookie"
import UpdatePassWord from "./components/updatePassWord"
import {getApsPage} from '@/common/untils/index.js'
export default {
  name: "SalesLeads",
  props: {
@@ -67,7 +68,7 @@
      return type
    },
    getApsPage() {
    /*getApsPage() {
      // 首页部署在各个环境的端口
      const loginPathMap = {
        prod: `//${window.location.hostname}:9080`,
@@ -76,7 +77,7 @@
        dev: `//192.168.8.113:8080`
      }
      return loginPathMap[this.environmentType()]
    },
    },*/
    handleCommand(command) {
      if (command === "logout") {
        // this.$router.push({ path: "/login" })
@@ -89,11 +90,13 @@
          .then(() => {
            Cookies.remove("token")
            // window.location.href = 'http://localhost:8080/login'; //本地的智慧工厂-登录页
            window.location.href = "http:" + this.getApsPage() + "/login"
            this.$message({
              type: "success",
              message: "注销成功!"
            })
            });
              setTimeout(()=>{
                  window.open(`//${getApsPage()}/login`);
              },500);
          })
          .catch(() => {
            this.$message({
vue.config.js
@@ -4,7 +4,7 @@
function resolve(dir) {
  return path.join(__dirname, dir)
}
const ipNum=144;
// 设置不参与构建的库
const externals = {}
module.exports = {
@@ -14,14 +14,14 @@
  devServer: {
    proxy: {
      "/api/menu":{
        target: "http://192.168.20.119:8001", // http://192.168.20.119:8002 http://fai365.com:30150/
        target: `http://192.168.0.${ipNum}:8001`, // http://192.168.20.119:8002 http://fai365.com:30150/
        // 建道本地环境
        // target: "http://192.168.20.118:8002",
        ws: true,
        changeOrigin: true
      },
      "/api": {
        target: "http://192.168.20.119:8002", // http://192.168.20.119:8002 http://fai365.com:30150/
        target: `http://192.168.0.${ipNum}:8002`, // http://192.168.20.119:8002 http://fai365.com:30150/
        // 建道本地环境
        // target: "http://192.168.20.118:8002",
        ws: true,