refine settings

This commit is contained in:
Pan 2019-03-14 17:23:32 +08:00
parent e855f6a121
commit b0e3dc8617
6 changed files with 57 additions and 37 deletions

View File

@ -1,19 +0,0 @@
import Vue from 'vue'
import store from './store'
// you can set only in production env show the error-log
if (process.env.NODE_ENV === 'production') {
Vue.config.errorHandler = function(err, vm, info, a) {
// Don't ask me why I use Vue.nextTick, it just a hack.
// detail see https://forum.vuejs.org/t/dispatch-in-vue-config-errorhandler-has-some-problem/23500
Vue.nextTick(() => {
store.dispatch('addErrorLog', {
err,
vm,
info,
url: window.location.href
})
console.error(err, info)
})
}
}

View File

@ -15,8 +15,8 @@ import router from './router'
import i18n from './lang' // Internationalization import i18n from './lang' // Internationalization
import './icons' // icon import './icons' // icon
import './errorLog' // error log
import './permission' // permission control import './permission' // permission control
import './utils/errorLog' // error log
import * as filters from './filters' // global filters import * as filters from './filters' // global filters

View File

@ -1,4 +1,5 @@
export default { export default {
title: 'vue-element-admin',
/** /**
* @type {boolean} true | false * @type {boolean} true | false
@ -16,7 +17,7 @@ export default {
* @type {string | array} 'production' | ['production','development'] * @type {string | array} 'production' | ['production','development']
* @description Need show err logs component. * @description Need show err logs component.
* The default is only used in the production env * The default is only used in the production env
* If you want to use it in dev, you can pass ['production','development'] * If you want to also use it in dev, you can pass ['production','development']
*/ */
errorLog: 'production' errorLog: 'production'
} }

35
src/utils/errorLog.js Normal file
View File

@ -0,0 +1,35 @@
import Vue from 'vue'
import store from '@/store'
import { isString, isArray } from '@/utils/validate'
import settings from '@/settings'
// you can set in settings.js
// errorLog:'production' | ['production','development']
const { errorLog: needErrorLog } = settings
function checkNeed(arg) {
const env = process.env.NODE_ENV
if (isString(needErrorLog)) {
return env === needErrorLog
}
if (isArray(needErrorLog)) {
return needErrorLog.includes(env)
}
return false
}
if (checkNeed()) {
Vue.config.errorHandler = function(err, vm, info, a) {
// Don't ask me why I use Vue.nextTick, it just a hack.
// detail see https://forum.vuejs.org/t/dispatch-in-vue-config-errorhandler-has-some-problem/23500
Vue.nextTick(() => {
store.dispatch('addErrorLog', {
err,
vm,
info,
url: window.location.href
})
console.error(err, info)
})
}
}

View File

@ -11,36 +11,41 @@ export function validUsername(str) {
return valid_map.indexOf(str.trim()) >= 0 return valid_map.indexOf(str.trim()) >= 0
} }
/* 合法uri*/
export function validURL(url) { export function validURL(url) {
const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/ const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
return reg.test(url) return reg.test(url)
} }
/* 小写字母*/
export function validLowerCase(str) { export function validLowerCase(str) {
const reg = /^[a-z]+$/ const reg = /^[a-z]+$/
return reg.test(str) return reg.test(str)
} }
/* 大写字母*/
export function validUpperCase(str) { export function validUpperCase(str) {
const reg = /^[A-Z]+$/ const reg = /^[A-Z]+$/
return reg.test(str) return reg.test(str)
} }
/* 大小写字母*/
export function validAlphabets(str) { export function validAlphabets(str) {
const reg = /^[A-Za-z]+$/ const reg = /^[A-Za-z]+$/
return reg.test(str) return reg.test(str)
} }
/**
* validate email
* @param email
* @returns {boolean}
*/
export function validEmail(email) { export function validEmail(email) {
const re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
return re.test(email) return reg.test(email)
}
export function isString(str) {
if (typeof str === 'string' || str instanceof String) {
return true
}
return false
}
export function isArray(arg) {
if (typeof Array.isArray === 'undefined') {
return Object.prototype.toString.call(arg) === '[object Array]'
}
return Array.isArray(arg)
} }

View File

@ -1,14 +1,12 @@
'use strict' 'use strict'
const path = require('path') const path = require('path')
const settings = require('./src/settings.js')
const { name } = settings
function resolve(dir) { function resolve(dir) {
return path.join(__dirname, dir) return path.join(__dirname, dir)
} }
// TODO: change to Settings
const port = 9527
const name = 'vue-element-admin'
// Explanation of each configuration item You can find it in https://cli.vuejs.org/config/ // Explanation of each configuration item You can find it in https://cli.vuejs.org/config/
module.exports = { module.exports = {
/** /**
@ -25,7 +23,7 @@ module.exports = {
lintOnSave: process.env.NODE_ENV === 'development' ? 'error' : false, lintOnSave: process.env.NODE_ENV === 'development' ? 'error' : false,
productionSourceMap: false, productionSourceMap: false,
devServer: { devServer: {
port: port, port: 9527,
open: true, open: true,
overlay: { overlay: {
warnings: false, warnings: false,