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