Commit ae176f56 authored by lei's avatar lei

add:孵化器企业信息

parent 36fdc16d
// var ServiceURL = 'http://192.168.3.216:9002';
// var ServiceURL = 'http://192.168.3.250:9103';
var ServiceURL = 'http://gqfhq.gemho.cn:9103'; // 正式环境
// var ServiceURL = 'http://192.168.3.226:9103' // 测试环境
// var ServiceURL = 'http://gqfhq.gemho.cn:9103'; // 正式环境
var ServiceURL = "http://192.168.2.37:9103"; // 测试环境
window.VUE_APP_API = {ServiceURL:ServiceURL}
window.VUE_APP_API = { ServiceURL: ServiceURL };
import router from './routers'
import store from '@/store'
import Config from '@/settings'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css'// progress bar style
import { getToken } from '@/utils/auth' // getToken from cookie
import { buildMenus } from '@/api/system/menu'
import { filterAsyncRouter } from '@/store/modules/permission'
import router from "./routers";
import store from "@/store";
import Config from "@/settings";
import NProgress from "nprogress"; // progress bar
import "nprogress/nprogress.css"; // progress bar style
import { getToken } from "@/utils/auth"; // getToken from cookie
import { buildMenus } from "@/api/system/menu";
import { filterAsyncRouter } from "@/store/modules/permission";
NProgress.configure({ showSpinner: false }) // NProgress Configuration
NProgress.configure({ showSpinner: false }); // NProgress Configuration
const whiteList = ['/plus/login', '/register'] // no redirect whitelist
const whiteList = ["/plus/login", "/register"]; // no redirect whitelist
router.beforeEach((to, from, next) => {
if (to.meta.title) {
//document.title = to.meta.title + ' - ' + Config.title
document.title = to.meta.title
document.title = to.meta.title;
}
NProgress.start();
if (getToken()) {
// 已登录且要跳转的页面是登录页
if (to.path === '/plus/login') {
next({ path: '/' })
NProgress.done()
if (to.path === "/plus/login") {
next({ path: "/" });
NProgress.done();
} else {
if (store.getters.roles.length === 0) { // 判断当前用户是否已拉取完user_info信息
store.dispatch('GetInfo').then(() => { // 拉取user_info
if (store.getters.roles.length === 0) {
// 判断当前用户是否已拉取完user_info信息
store
.dispatch("GetInfo")
.then(() => {
// 拉取user_info
// 动态路由,拉取菜单
loadMenus(next, to)
}).catch(() => {
store.dispatch('LogOut').then(() => {
location.reload() // 为了重新实例化vue-router对象 避免bug
})
loadMenus(next, to);
})
.catch(() => {
store.dispatch("LogOut").then(() => {
location.reload(); // 为了重新实例化vue-router对象 避免bug
});
});
// 登录时未拉取 菜单,在此处拉取
} else if (store.getters.loadMenus) {
// 修改成false,防止死循环
store.dispatch('updateLoadMenus')
loadMenus(next, to)
store.dispatch("updateLoadMenus");
loadMenus(next, to);
} else {
next()
next();
}
}
} else {
/* has no token*/
if (whiteList.indexOf(to.path) !== -1) { // 在免登录白名单,直接进入
next()
if (whiteList.indexOf(to.path) !== -1) {
// 在免登录白名单,直接进入
next();
} else {
window.location.href = `/plus/login?redirect=${to.fullPath}`;
NProgress.done()
NProgress.done();
}
}
})
});
export const loadMenus = (next, to) => {
buildMenus().then(res => {
const sdata = JSON.parse(JSON.stringify(res))
const rdata = JSON.parse(JSON.stringify(res))
const sidebarRoutes = filterAsyncRouter(sdata)
const rewriteRoutes = filterAsyncRouter(rdata, true)
rewriteRoutes.push({ path: '*', redirect: '/404', hidden: true })
store.dispatch('GenerateRoutes', rewriteRoutes).then(() => { // 存储路由
router.addRoutes(rewriteRoutes) // 动态添加可访问路由表
next({ ...to, replace: true })
})
store.dispatch('SetSidebarRouters', sidebarRoutes)
})
}
const sdata = JSON.parse(JSON.stringify(res));
const rdata = JSON.parse(JSON.stringify(res));
const sidebarRoutes = filterAsyncRouter(sdata);
const rewriteRoutes = filterAsyncRouter(rdata, true);
rewriteRoutes.push({ path: "*", redirect: "/404", hidden: true });
store.dispatch("GenerateRoutes", rewriteRoutes).then(() => {
// 存储路由
router.addRoutes(rewriteRoutes); // 动态添加可访问路由表
next({ ...to, replace: true });
});
store.dispatch("SetSidebarRouters", sidebarRoutes);
});
};
router.afterEach(() => {
NProgress.done() // finish progress bar
})
NProgress.done(); // finish progress bar
});
import axios from 'axios'
import { Notification } from 'element-ui'
import { getToken } from '@/utils/auth'
import Config from '@/settings'
import axios from "axios";
import { Notification } from "element-ui";
import { getToken } from "@/utils/auth";
import Config from "@/settings";
// 使请求头可以携带cookie
axios.defaults.withCredentials = true;
//var baseURL = (VUE_APP_API.ServiceURL || process.env.VUE_APP_LOCAL_API) + '/';
var baseURL = process.env.NODE_ENV
=== 'development' ? process.env.VUE_APP_LOCAL_API + '/' : (VUE_APP_API.ServiceURL || process.env.VUE_APP_LOCAL_API) + '/';
var baseURL =
process.env.NODE_ENV === "development"
? process.env.VUE_APP_BASE_API + "/"
: (VUE_APP_API.ServiceURL || process.env.VUE_APP_BASE_API) + "/";
// 创建axios实例
const service = axios.create({
baseURL: baseURL,
timeout: Config.timeout // 请求超时时间
})
});
// request拦截器
service.interceptors.request.use(
config => {
if (getToken()) {
config.headers['Authorization'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
config.headers["Authorization"] = getToken(); // 让每个请求携带自定义token 请根据实际情况自行修改
}
config.headers['Content-Type'] = 'application/json'
return config
config.headers["Content-Type"] = "application/json";
return config;
},
error => {
Promise.reject(error)
Promise.reject(error);
}
)
);
// response 拦截器
service.interceptors.response.use(
response => {
return response.data
return response.data;
},
error => {
if (error.response.status) {
const responseCode = error.response.status
const responseCode = error.response.status;
switch (responseCode) {
case 400:
Notification({
title: error.response.data.msg,
duration: 2000,
type: 'warning'
})
break
type: "warning"
});
break;
// token 过期
case 401:
Notification({
title: '登录过期,请重新登录',
title: "登录过期,请重新登录",
duration: 2000,
type: 'warning'
})
type: "warning"
});
setTimeout(() => {
window.localStorage.removeItem('token')
window.location = '#/';
location.reload()
}, 1000)
// setTimeout(() => {
// window.localStorage.removeItem("token");
// // window.location = '#/';
// location.reload();
// }, 1000);
break
break;
default:
break
break;
}
return error.response.data
return error.response.data;
}
}
)
export default service
);
export default service;
This diff is collapsed.
'use strict'
const path = require('path')
"use strict";
const path = require("path");
const Mode = 'src'; // 'src' 'src-neuter'(中性)
const Mode = "src"; // 'src' 'src-neuter'(中性)
// copy-webpack-plugin@4.5.2
const CopyWebpackPlugin = require('copy-webpack-plugin');
const CopyWebpackPlugin = require("copy-webpack-plugin");
//var HtmlWebpackPlugin = require('html-webpack-plugin');
const defaultSettings = require('./'+Mode+'/settings.js');
const defaultSettings = require("./" + Mode + "/settings.js");
function resolve(dir) {
return path.join(__dirname, dir)
};
return path.join(__dirname, dir);
}
const name = defaultSettings.title; // 网址标题
const port = process.env.VUE_APP_LOCAL_PORT; // 端口配置
const VUE_APP_BASE_API = process.env.VUE_APP_BASE_API;
// 在文件顶部添加验证
console.log("BASE_API:", process.env.VUE_APP_BASE_API); // 调试用,确保能正确打印地址
// All configuration item explanations can be find in https://cli.vuejs.org/config/
module.exports = {
// hash 模式下可使用
// publicPath: process.env.NODE_ENV === 'development' ? '/' : './',
publicPath: '/',
outputDir: 'dist',
assetsDir: 'static',
lintOnSave: process.env.NODE_ENV === 'development',
publicPath: "/",
outputDir: "dist",
assetsDir: "static",
lintOnSave: process.env.NODE_ENV === "development",
productionSourceMap: false,
//indexPath: 'index3.html',
//integrity:true,
lintOnSave:false, // 关闭代码核查
pages:{
lintOnSave: false, // 关闭代码核查
pages: {
index: {
entry: Mode+'/main.js',
entry: Mode + "/main.js",
// 模板来源
template: './public/index.html',
template: "./public/index.html",
// 在 dist/index.html 的输出
filename: 'index.html',
filename: "index.html",
// 当使用 title 选项时,
// template 中的 title 标签需要是 <title><%= htmlWebpackPlugin.options.title %></title>
//title: "Index Page",
......@@ -45,139 +46,141 @@ module.exports = {
},
edge: {
// 页面的入口文件
entry: Mode+'/edge.js',
entry: Mode + "/edge.js",
// 页面的模板文件
template: './public/edge.html',
template: "./public/edge.html",
// build 生成的文件名称 例: dist/index.html
filename: 'edge.html',
chunks:["edge", "runtime", "chunk-libs", "chunk-elementUI"],
filename: "edge.html",
chunks: ["edge", "runtime", "chunk-libs", "chunk-elementUI"]
}
},
devServer: {
port: port,
host: VUE_APP_BASE_API && VUE_APP_BASE_API.split(/\/\/|:/).slice(-2)[0],
host: "0.0.0.0",
open: false,
overlay: {
warnings: false,
errors: true
},
proxy: {
'/api': {
target: process.env.VUE_APP_BASE_API,
"/api": {
target: VUE_APP_BASE_API,
changeOrigin: true,
pathRewrite: {
'^/api': 'api'
"^/api": "api"
}
},
'/auth': {
target: process.env.VUE_APP_BASE_API,
"/auth": {
target: VUE_APP_BASE_API,
changeOrigin: true,
pathRewrite: {
'^/auth': 'auth'
"^/auth": "auth"
}
}
},
}
},
configureWebpack: {
// provide the app's title in webpack's name field, so that
// it can be accessed in index.html to inject the correct title.
plugins: [
new CopyWebpackPlugin([{
new CopyWebpackPlugin([
{
from: "./static",
to: 'static'
}]),
new CopyWebpackPlugin([{
to: "static"
}
]),
new CopyWebpackPlugin([
{
from: "./config",
to: 'config'
}])
to: "config"
}
])
],
name: name,
resolve: {
alias: {
'@': resolve(Mode+''),
'@crud': resolve(Mode+'/components/Crud')
"@": resolve(Mode + ""),
"@crud": resolve(Mode + "/components/Crud")
}
}
},
chainWebpack(config) {
config.plugins.delete('preload') // TODO: need test
config.plugins.delete('prefetch') // TODO: need test
config.plugins.delete("preload"); // TODO: need test
config.plugins.delete("prefetch"); // TODO: need test
// set svg-sprite-loader
config.module
.rule('svg')
.exclude.add(resolve(Mode+'/assets/icons'))
.end()
.rule("svg")
.exclude.add(resolve(Mode + "/assets/icons"))
.end();
config.module
.rule('icons')
.rule("icons")
.test(/\.svg$/)
.include.add(resolve(Mode+'/assets/icons'))
.include.add(resolve(Mode + "/assets/icons"))
.end()
.use('svg-sprite-loader')
.loader('svg-sprite-loader')
.use("svg-sprite-loader")
.loader("svg-sprite-loader")
.options({
symbolId: 'icon-[name]'
symbolId: "icon-[name]"
})
.end()
.end();
// set preserveWhitespace
config.module
.rule('vue')
.use('vue-loader')
.loader('vue-loader')
.rule("vue")
.use("vue-loader")
.loader("vue-loader")
.tap(options => {
options.compilerOptions.preserveWhitespace = true
return options
options.compilerOptions.preserveWhitespace = true;
return options;
})
.end()
.end();
config
// https://webpack.js.org/configuration/devtool/#development
.when(process.env.NODE_ENV === 'development',
config => config.devtool('cheap-source-map')
)
.when(process.env.NODE_ENV === "development", config =>
config.devtool("cheap-source-map")
);
config.when(process.env.NODE_ENV !== "development", config => {
config
.when(process.env.NODE_ENV !== 'development',
config => {
config
.plugin('ScriptExtHtmlWebpackPlugin')
.after('html')
.use('script-ext-html-webpack-plugin', [{
.plugin("ScriptExtHtmlWebpackPlugin")
.after("html")
.use("script-ext-html-webpack-plugin", [
{
// `runtime` must same as runtimeChunk name. default is `runtime`
inline: /runtime\..*\.js$/
}])
.end()
config
.optimization.splitChunks({
chunks: 'all',
}
])
.end();
config.optimization.splitChunks({
chunks: "all",
cacheGroups: {
libs: {
name: 'chunk-libs',
name: "chunk-libs",
test: /[\\/]node_modules[\\/]/,
priority: 10,
chunks: 'initial' // only package third parties that are initially dependent
chunks: "initial" // only package third parties that are initially dependent
},
elementUI: {
name: 'chunk-elementUI', // split elementUI into a single package
name: "chunk-elementUI", // split elementUI into a single package
priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
},
commons: {
name: 'chunk-commons',
test: resolve(Mode+'/components'), // can customize your rules
name: "chunk-commons",
test: resolve(Mode + "/components"), // can customize your rules
minChunks: 3, // minimum common number
priority: 5,
reuseExistingChunk: true
}
}
})
config.optimization.runtimeChunk('single')
}
);
});
config.optimization.runtimeChunk("single");
});
},
transpileDependencies: [
//'vue-echarts',
'resize-detector'
"resize-detector"
]
}
};
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment