feat: 增加本地代理配置
This commit is contained in:
parent
efef8a31c4
commit
aede3e2b54
78
src/App.vue
Normal file
78
src/App.vue
Normal file
@ -0,0 +1,78 @@
|
||||
<!--
|
||||
* @Author: your name
|
||||
* @Date: 2020-05-26 10:06:34
|
||||
* @LastEditTime: 2020-05-26 17:05:42
|
||||
* @LastEditors: Please set LastEditors
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: /x-product-workspace/packages/x-project-app/src/App.vue
|
||||
-->
|
||||
<template>
|
||||
<div id="app">
|
||||
<component :is="layout">
|
||||
<router-view />
|
||||
</component>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { mapMutations } from 'vuex'
|
||||
import { SET_USER_INFO } from '@/store/auth.store'
|
||||
import { initUserRole } from '@/utils/userRole'
|
||||
|
||||
import BlackLayout from '@/layouts/black.layout'
|
||||
import DefaultLayout from '@/layouts/default.layout'
|
||||
import NoSidebarLayout from '@/layouts/no-sidebar.layout'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
BlackLayout,
|
||||
DefaultLayout,
|
||||
NoSidebarLayout
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
layout() {
|
||||
return this.$route.meta.layout || 'DefaultLayout'
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.setUserInfo({
|
||||
'loginName': 'admin',
|
||||
'id': '1',
|
||||
'phone': '17729389320',
|
||||
'email': '17728389320@163.com',
|
||||
'enableStatus': 'ENABLED',
|
||||
'headPortrait': null,
|
||||
'userName': '赵站洋',
|
||||
'credentialNo': '110101199003076675',
|
||||
'gender': 'male'
|
||||
})
|
||||
// localStorage.setItem('logedUser', '100771325211655012352')
|
||||
},
|
||||
mounted() {
|
||||
// 页面加载时初始化用户角色信息
|
||||
this.$nextTick(() => {
|
||||
initUserRole(this).catch((err) => {
|
||||
console.error('初始化用户角色信息失败:', err)
|
||||
})
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
...mapMutations('authModule', {
|
||||
setUserInfo: SET_USER_INFO
|
||||
})
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss">
|
||||
#app {
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
color: $--app-font-color;
|
||||
background-color: $--app-bg-Color;
|
||||
}
|
||||
</style>
|
||||
78
src/plugins/index.js
Normal file
78
src/plugins/index.js
Normal file
@ -0,0 +1,78 @@
|
||||
import Vue from 'vue'
|
||||
|
||||
import XDateFormatPlugin from './dayjs/x-date-format'
|
||||
import XLodashPlugin from './lodash/x-lodash'
|
||||
import XBomeventPlugin from './bomevent/x-bomevent'
|
||||
import XRequestPlugin from './request/x-request'
|
||||
|
||||
import { SET_TOKEN } from '../store/auth.store'
|
||||
import store from '../store'
|
||||
|
||||
const plugins = [XDateFormatPlugin, XLodashPlugin, XBomeventPlugin]
|
||||
|
||||
plugins.forEach((plugin) => {
|
||||
Vue.use(plugin)
|
||||
})
|
||||
|
||||
// 开发环境不设置 baseURL(使用相对路径),生产环境使用 .env 中的域名
|
||||
const baseURL = process.env.NODE_ENV === 'development' ? '' : process.env.VUE_APP_BASE_DOMAIN
|
||||
|
||||
Vue.use(XRequestPlugin, {
|
||||
baseURL,
|
||||
headers: {
|
||||
'Accept-Language': 'zh-CN'
|
||||
},
|
||||
needShowMessage: true,
|
||||
businessErrorCatch: function(failRes, response, needShowMessage) {
|
||||
// 通用业务错误处理
|
||||
// console.log(failRes, response, needShowMessage)
|
||||
if (failRes.code === 'error' && needShowMessage) {
|
||||
Vue.prototype.$message({
|
||||
message: failRes.message,
|
||||
type: 'error'
|
||||
})
|
||||
}
|
||||
},
|
||||
errorCatch: function(err, needShowMessage) {
|
||||
console.error(err)
|
||||
}
|
||||
})
|
||||
|
||||
// 添加request拦截器
|
||||
Vue.addInterceptorsRequest('REQUEST_PARAMS_INTERCEPTOR', (e) => {
|
||||
e.headers['xdaptimestamp'] = new Date().getTime()
|
||||
|
||||
const authStore = store.state.authModule
|
||||
if (authStore.token) {
|
||||
e.headers['xdaptoken'] = authStore.token
|
||||
}
|
||||
e.headers['xdaptenantid'] = process.env.VUE_APP_TENANT_ID
|
||||
|
||||
return e
|
||||
})
|
||||
|
||||
// 添加response拦截器
|
||||
Vue.addInterceptorsResponse('RESPONSE_SUCCESS_MSG_INTERCEPTOR', (e) => {
|
||||
const token = e && e.headers && e.headers.xdaptoken
|
||||
if (token) {
|
||||
store.commit(`authModule/${SET_TOKEN}`, token)
|
||||
}
|
||||
if (e.data.code) {
|
||||
if (e && e.status === 200 && e.data.code === 'ok' && !e.config.disableSuccessMsg) {
|
||||
if (e.data.interval) {
|
||||
Vue.prototype.$message({
|
||||
message: e.data.message,
|
||||
type: 'success',
|
||||
durationTime: e.data.interval
|
||||
})
|
||||
} else {
|
||||
Vue.prototype.$message({
|
||||
message: e.data.message,
|
||||
type: 'success'
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return e
|
||||
})
|
||||
121
vue.config.js
Normal file
121
vue.config.js
Normal file
@ -0,0 +1,121 @@
|
||||
/*
|
||||
* @Author: your name
|
||||
* @Date: 2020-05-27 09:29:16
|
||||
* @LastEditTime: 2020-05-27 11:00:29
|
||||
* @LastEditors: your name
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: /x-product-workspace/packages/x-project-app/vue.config.js
|
||||
*/
|
||||
'use strict'
|
||||
'use strict'
|
||||
const path = require('path')
|
||||
|
||||
const resolve = (dir) => {
|
||||
return path.join(__dirname, './', dir)
|
||||
}
|
||||
|
||||
const isProd = () => {
|
||||
return process.env.NODE_ENV === 'production'
|
||||
}
|
||||
module.exports = {
|
||||
publicPath: process.env.VUE_APP_PUBLIC_PATH,
|
||||
assetsDir: 'public',
|
||||
lintOnSave: isProd(),
|
||||
productionSourceMap: false,
|
||||
transpileDependencies: [
|
||||
'@x-ui/x-dcloud-ui',
|
||||
'@x-apaas/x-lib-rule-engine',
|
||||
'@x-apaas/x-dcloud-page-web',
|
||||
'x-extension'
|
||||
],
|
||||
runtimeCompiler: true,
|
||||
// webpack-dev-server 相关配置
|
||||
devServer: {
|
||||
open: process.platform === 'darwin',
|
||||
host: '0.0.0.0',
|
||||
port: '8081',
|
||||
disableHostCheck: false,
|
||||
https: false,
|
||||
hotOnly: false,
|
||||
overlay: {
|
||||
warnings: false,
|
||||
errors: true
|
||||
},
|
||||
proxy: {
|
||||
'/custom': {
|
||||
target: 'https://apaas-meim.app.yuchai.com/apaas/backend/a5e8e08/ycgf-yf-rddata',
|
||||
changeOrigin: true,
|
||||
pathRewrite: {}
|
||||
}
|
||||
}
|
||||
},
|
||||
css: {
|
||||
loaderOptions: {
|
||||
sass: {
|
||||
prependData: `
|
||||
@import "@/assets/scss/variable.scss";
|
||||
`
|
||||
}
|
||||
}
|
||||
},
|
||||
pwa: {
|
||||
iconPaths: {
|
||||
favicon32: './favicon.ico',
|
||||
favicon16: './favicon.ico',
|
||||
appleTouchIcon: './favicon.ico',
|
||||
maskIcon: './favicon.ico',
|
||||
msTileImage: './favicon.ico'
|
||||
}
|
||||
},
|
||||
configureWebpack: () => ({
|
||||
name: 'vue-cli3-template',
|
||||
resolve: {
|
||||
alias: {
|
||||
// vue动态值
|
||||
vue$: 'vue/dist/vue.esm.js',
|
||||
|
||||
// vue快速路径
|
||||
'@': resolve('src')
|
||||
}
|
||||
},
|
||||
plugins: []
|
||||
}),
|
||||
chainWebpack: (config) => {
|
||||
// webpack-html-plugin
|
||||
// config.plugin('html').tap((options) => {
|
||||
// options[0].title = '得帆云 MDM平台'
|
||||
// options[0].minify = {
|
||||
// removeComments: true,
|
||||
// collapseWhitespace: true,
|
||||
// removeAttributeQuotes: true,
|
||||
// useShortDoctype: true,
|
||||
// removeEmptyAttributes: true,
|
||||
// removeStyleLinkTypeAttributes: true,
|
||||
// keepClosingSlash: true,
|
||||
// minifyJS: true,
|
||||
// minifyCSS: true,
|
||||
// minifyURLs: true
|
||||
// }
|
||||
// return options
|
||||
// })
|
||||
|
||||
//
|
||||
const svgRule = config.module.rule('svg')
|
||||
svgRule.uses.clear()
|
||||
|
||||
// svgRule.use("vue-svg-loader").loader("vue-svg-loader");
|
||||
// svgRule.exclude.add(/node_modules/);
|
||||
svgRule
|
||||
.test(/\.svg$/)
|
||||
.include.add(resolve('./src/assets/icon'))
|
||||
.add(resolve('./node_modules/@x-ui/x-dcloud-ui/lib/assets/icon'))
|
||||
.add(resolve('./node_modules/@x-apaas/x-dcloud-page-web/lib/assets/icon'))
|
||||
.end()
|
||||
.use('svg-sprite-loader')
|
||||
.loader('svg-sprite-loader')
|
||||
.options({
|
||||
symbolId: 'svg-[name]'
|
||||
})
|
||||
config.resolve.symlinks(true)
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user