heyang 2 年 前
コミット
13bf0647c0
共有6 個のファイルを変更した94 個の追加26 個の削除を含む
  1. 7 3
      .env.production
  2. 2 1
      src/main.js
  3. 54 0
      src/utils/public.js
  4. 15 13
      src/utils/request.js
  5. 1 1
      src/views/home.vue
  6. 15 8
      vue.config.js

+ 7 - 3
.env.production

@@ -5,7 +5,7 @@ VUE_APP_TITLE = 实验室安全管理系统
 NODE_ENV=production
 VUE_APP_ENV = 'production'
 
-# ####################接口配置####################
+# ####################外网接口配置####################
 
 # 88服务器
 # VUE_APP_BASE_API = '192.168.1.88/labSystem'
@@ -21,10 +21,14 @@ VUE_APP_ENV = 'production'
 # 矿大-文昌(本地)
 #VUE_APP_BASE_API = '192.168.1.248/labSystem/'
 # 矿大-南湖(线上)
- VUE_APP_BASE_API = 'lab.sxitdlc.com/labSystem/'
+# VUE_APP_BASE_API = 'lab.sxitdlc.com/labSystem/'
 # 矿大-南湖(本地)
 #VUE_APP_BASE_API = '192.168.251.2/labSystem/'
 # 43服务器
 # VUE_APP_BASE_API = '192.168.1.43/labSystem/'
 # 苏大
-#VUE_APP_BASE_API = 'znyj.labcenter.suda.edu.cn/labSystem/'
+VUE_APP_BASE_API = 'znyj.labcenter.suda.edu.cn/labSystem/'
+
+# ####################内网接口配置####################
+# 苏大-内网
+VUE_APP_BASE_LOCAL_API = '10.20.10.7/labSystem/'

+ 2 - 1
src/main.js

@@ -7,12 +7,13 @@ import echarts from 'echarts';
 import ElementUI from 'element-ui';
 import 'element-ui/lib/theme-chalk/index.css';
 import '@/assets/styles/publicEle.scss'
+import {judgmentNetworkReturnAddress } from '@/utils/public'
 Vue.prototype.axios = axios
 Vue.prototype.$echarts = echarts;
 Vue.use(VueRouter);
 Vue.use(ElementUI);
 Vue.config.productionTip = false
-
+Vue.prototype.judgmentNetworkReturnAddress = judgmentNetworkReturnAddress
 
 const router = new VueRouter({
   routes

+ 54 - 0
src/utils/public.js

@@ -0,0 +1,54 @@
+
+export function judgmentNetworkReturnAddress() {
+    /*判断是否是内网IP*/
+    // 获取当前页面url
+    var curPageUrl = window.location.href;
+    // console.log('curPageUrl-0  '+curPageUrl);
+
+    var reg1 = /(http|ftp|https|www):\/\//g;//去掉前缀
+    curPageUrl =curPageUrl.replace(reg1,'');
+    // console.log('curPageUrl-1  '+curPageUrl);
+
+    var reg2 = /\:+/g;//替换冒号为一点
+    curPageUrl =curPageUrl.replace(reg2,'.');
+    // console.log('curPageUrl-2  '+curPageUrl);
+
+    curPageUrl = curPageUrl.split('.');//通过一点来划分数组
+    // console.log(curPageUrl);
+
+
+    var ipAddress = curPageUrl[0]+'.'+curPageUrl[1]+'.'+curPageUrl[2]+'.'+curPageUrl[3];
+
+    var isInnerIp = false;//默认给定IP不是内网IP
+    var ipNum = getIpNum(ipAddress);
+    /**
+     * 私有IP:A类  10.0.0.0    -10.255.255.255
+     *       B类  172.16.0.0  -172.31.255.255
+     *       C类  192.168.0.0 -192.168.255.255
+     *       D类   127.0.0.0   -127.255.255.255(环回地址)
+     **/
+    var aBegin = getIpNum("10.0.0.0");
+    var aEnd = getIpNum("10.255.255.255");
+    var bBegin = getIpNum("172.16.0.0");
+    var bEnd = getIpNum("172.31.255.255");
+    var cBegin = getIpNum("192.168.0.0");
+    var cEnd = getIpNum("192.168.255.255");
+    var dBegin = getIpNum("127.0.0.0");
+    var dEnd = getIpNum("127.255.255.255");
+    isInnerIp = isInner(ipNum,aBegin,aEnd) || isInner(ipNum,bBegin,bEnd) || isInner(ipNum,cBegin,cEnd) || isInner(ipNum,dBegin,dEnd);
+    // console.log('是否是内网:'+isInnerIp);
+    return isInnerIp?process.env.VUE_APP_BASE_LOCAL_API:process.env.VUE_APP_BASE_API;
+    /*获取IP数*/
+    function getIpNum(ipAddress) {
+        var ip = ipAddress.split(".");
+        var a = parseInt(ip[0]);
+        var b = parseInt(ip[1]);
+        var c = parseInt(ip[2]);
+        var d = parseInt(ip[3]);
+        var ipNum = a * 256 * 256 * 256 + b * 256 * 256 + c * 256 + d;
+        return ipNum;
+    }
+    function isInner(userIp,begin,end){
+        return (userIp>=begin) && (userIp<=end);
+    }
+}

+ 15 - 13
src/utils/request.js

@@ -1,6 +1,7 @@
 import axios from "axios";
 import qs from "qs";
 import { Message, Loading } from 'element-ui'
+import {judgmentNetworkReturnAddress } from "@/utils/public";
 let loadingInstance = {};
 let options = {
     spinner:"",
@@ -11,8 +12,10 @@ let loadingCount = 0;
 
 
 */
-
-axios.defaults.baseURL = window.location.href.split('://')[0]+'://' +process.env.VUE_APP_BASE_API //测试
+//判定http或者https
+let urlText = window.location.href.split('://')[0]+'://';
+// axios中请求配置有baseURL选项,表示请求URL公共部分
+axios.defaults.baseURL = urlText+judgmentNetworkReturnAddress();
 
 //获取后台浏览器跳转过来的地址携带的token
 let afterUrl = window.location.search.substring(1);
@@ -34,8 +37,8 @@ axios.defaults.withCredentials = false;
 
 // 允许跨域
 axios.defaults.headers.post["Access-Control-Allow-Origin-Type"] = "*";
-axios.defaults.headers.common["Authorization"] = 'Bearer 961ca5d9-49bf-454e-b48c-e900471c19c1';//`Bearer ${localStorage.getItem('access_token')`;
-//axios.defaults.headers.common["Authorization"] = 'Bearer '+localStorage.getItem('Authorization')+''
+//axios.defaults.headers.common["Authorization"] = 'Bearer 2a5d6288-c101-42b6-83a6-f3ffb11f822b';//`Bearer ${localStorage.getItem('access_token')`;
+axios.defaults.headers.common["Authorization"] = 'Bearer '+localStorage.getItem('Authorization')+''
 
 //设置超时
 axios.defaults.timeout = 15000;
@@ -65,12 +68,12 @@ axios.interceptors.response.use(
             if(response.data.code == 200){
                 return Promise.resolve(response);
             }else{
-                Message({
-                    message: response.data.msg,
-                    type: 'error',
-                    duration: 5 * 1000,
-                    offset:100
-                })
+                // Message({
+                //     message: response.data.msg,
+                //     type: 'error',
+                //     duration: 5 * 1000,
+                //     offset:100
+                // })
             }
         } else {
             Message({
@@ -120,7 +123,7 @@ export default {
         if(type=='video'){
             axios.defaults.baseURL =localStorage.getItem('cameraExtranetAgent')
         }else{
-            axios.defaults.baseURL = window.location.href.split('://')[0]+'://' +process.env.VUE_APP_BASE_API
+            axios.defaults.baseURL = urlText+judgmentNetworkReturnAddress()
         }
         return new Promise((resolve, reject) => {
 
@@ -137,6 +140,5 @@ export default {
                 })
         })
     },
-
-    baseUrl: window.location.href.split('://')[0]+'://' +process.env.VUE_APP_BASE_API
+    baseUrl: urlText+judgmentNetworkReturnAddress()
 };

+ 1 - 1
src/views/home.vue

@@ -205,7 +205,7 @@
       <div class="right_t">
         <!--公共小标题-->
         <div class="small_title">
-          <div class="small_title_l">预案执行计</div>
+          <div class="small_title_l">预案执行计</div>
           <div class="small_title_r" @click="right_t_btn">
             <i>预案执行总数:{{planResultCount}}</i>
             <img class="right_t_btn"  src="@/assets/image/index_icon8.png"/>

+ 15 - 8
vue.config.js

@@ -6,14 +6,21 @@ module.exports = defineConfig({
   outputDir: "bigData", // 输出文件目录
   assetsDir: "static", //静态资源文件名称
   productionSourceMap: false, //去除打包后js的map文件
-  devServer: { //启动项目在8080端口自动打开
-    host:"127.0.0.1",
-    open: true,
-    port: 30000,
-    //proxy: null,
-    proxy: process.env.VUE_APP_ENV === 'production' ? 'https://www.aaa.com/' : 'https://gateway.bbb.com/'
-
-  },
+    devServer: {
+        host: "localhost", // 默认是localhost
+        port: 8081, // 前端项目编译后使用的端口号,跟webpack配置的port同理
+        open:true,
+        proxy: {
+            '/api': {
+                target: `http://localhost:8081`,  // 实际跨域请求的API地址
+                changeOrigin: true,  // 跨域
+                // 请求地址重写  http://front-end/api/login ⇒ http://api-url/login
+                pathRewrite: {
+                    ['^' + process.env.VUE_APP_BASE_API]: ''
+                }
+            }
+        },
+    },
   chainWebpack(config) {
     config
         .when(process.env.VUE_APP_ENV !== 'www.dlc.com',