Merge pull request from PanJiaChen/master

pull
This commit is contained in:
toruksmakto 2019-04-23 13:10:48 +08:00 committed by GitHub
commit 093e542b02
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 44 additions and 39 deletions

View File

@ -161,7 +161,7 @@ cd vue-element-admin
# 安装依赖 # 安装依赖
npm install npm install
# 建议不要用 cnpm 安装 会有各种诡异的bug 可以通过如下操作解决 npm 下载速度慢的问题 # 建议不要直接使用 cnpm 安装以来,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
npm install --registry=https://registry.npm.taobao.org npm install --registry=https://registry.npm.taobao.org
# 启动服务 # 启动服务

View File

@ -1,12 +1,9 @@
module.exports = { module.exports = {
verbose: true,
moduleFileExtensions: ['js', 'jsx', 'json', 'vue'], moduleFileExtensions: ['js', 'jsx', 'json', 'vue'],
transformIgnorePatterns: [
'node_modules/(?!(babel-jest|jest-vue-preprocessor)/)'
],
transform: { transform: {
'^.+\\.vue$': 'vue-jest', '^.+\\.vue$': 'vue-jest',
'.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub', '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$':
'jest-transform-stub',
'^.+\\.jsx?$': 'babel-jest' '^.+\\.jsx?$': 'babel-jest'
}, },
moduleNameMapper: { moduleNameMapper: {

View File

@ -1,6 +1,9 @@
const chokidar = require('chokidar') const chokidar = require('chokidar')
const bodyParser = require('body-parser') const bodyParser = require('body-parser')
const chalk = require('chalk') const chalk = require('chalk')
const path = require('path')
const mockDir = path.join(process.cwd(), 'mock')
function registerRoutes(app) { function registerRoutes(app) {
let mockLastIndex let mockLastIndex
@ -18,7 +21,7 @@ function registerRoutes(app) {
function unregisterRoutes() { function unregisterRoutes() {
Object.keys(require.cache).forEach(i => { Object.keys(require.cache).forEach(i => {
if (i.includes('/mock')) { if (i.includes(mockDir)) {
delete require.cache[require.resolve(i)] delete require.cache[require.resolve(i)]
} }
}) })
@ -40,9 +43,8 @@ module.exports = app => {
var mockStartIndex = mockRoutes.mockStartIndex var mockStartIndex = mockRoutes.mockStartIndex
// watch files, hot reload mock server // watch files, hot reload mock server
chokidar.watch(('./mock'), { chokidar.watch(mockDir, {
ignored: 'mock/mock-server.js', ignored: /mock-server/,
persistent: true,
ignoreInitial: true ignoreInitial: true
}).on('all', (event, path) => { }).on('all', (event, path) => {
if (event === 'change' || event === 'add') { if (event === 'change' || event === 'add') {

View File

@ -10,7 +10,7 @@
"build:stage": "vue-cli-service build --mode staging", "build:stage": "vue-cli-service build --mode staging",
"preview": "node build/index.js --preview", "preview": "node build/index.js --preview",
"lint": "eslint --ext .js,.vue src", "lint": "eslint --ext .js,.vue src",
"test:unit": "vue-cli-service test:unit", "test:unit": "jest --clearCache && vue-cli-service test:unit",
"test:ci": "npm run lint && npm run test:unit", "test:ci": "npm run lint && npm run test:unit",
"svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml", "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml",
"new": "plop" "new": "plop"

View File

@ -22,4 +22,3 @@ export function logout() {
method: 'post' method: 'post'
}) })
} }

View File

@ -40,14 +40,14 @@ export default {
mounted() { mounted() {
this.height = this.$el.getBoundingClientRect().height this.height = this.$el.getBoundingClientRect().height
window.addEventListener('scroll', this.handleScroll) window.addEventListener('scroll', this.handleScroll)
window.addEventListener('resize', this.handleReize) window.addEventListener('resize', this.handleResize)
}, },
activated() { activated() {
this.handleScroll() this.handleScroll()
}, },
destroyed() { destroyed() {
window.removeEventListener('scroll', this.handleScroll) window.removeEventListener('scroll', this.handleScroll)
window.removeEventListener('resize', this.handleReize) window.removeEventListener('resize', this.handleResize)
}, },
methods: { methods: {
sticky() { sticky() {
@ -81,7 +81,7 @@ export default {
} }
this.handleReset() this.handleReset()
}, },
handleReize() { handleResize() {
if (this.isSticky) { if (this.isSticky) {
this.width = this.$el.getBoundingClientRect().width + 'px' this.width = this.$el.getBoundingClientRect().width + 'px'
} }

View File

@ -1,5 +1,5 @@
<template> <template>
<div :class="{fullscreen:fullscreen}" class="tinymce-container editor-container"> <div :class="{fullscreen:fullscreen}" class="tinymce-container" :style="{width:containerWidth}">
<textarea :id="tinymceId" class="tinymce-textarea" /> <textarea :id="tinymceId" class="tinymce-textarea" />
<div class="editor-custom-btn-container"> <div class="editor-custom-btn-container">
<editorImage color="#1890ff" class="editor-upload-btn" @successCBK="imageSuccessCBK" /> <editorImage color="#1890ff" class="editor-upload-btn" @successCBK="imageSuccessCBK" />
@ -38,9 +38,14 @@ export default {
default: 'file edit insert view format table' default: 'file edit insert view format table'
}, },
height: { height: {
type: Number, type: [Number, String],
required: false, required: false,
default: 360 default: 360
},
width: {
type: [Number, String],
required: false,
default: 'auto'
} }
}, },
data() { data() {
@ -58,6 +63,13 @@ export default {
computed: { computed: {
language() { language() {
return this.languageTypeList[this.$store.getters.language] return this.languageTypeList[this.$store.getters.language]
},
containerWidth() {
const width = this.width
if (/^[\d]+(\.[\d]+)?$/.test(width)) { // matches `100`, `'100'`
return `${width}px`
}
return width
} }
}, },
watch: { watch: {

View File

@ -36,6 +36,9 @@
{{ $t('navbar.github') }} {{ $t('navbar.github') }}
</el-dropdown-item> </el-dropdown-item>
</a> </a>
<a target="_blank" href="https://panjiachen.github.io/vue-element-admin-site/#/">
<el-dropdown-item>Docs</el-dropdown-item>
</a>
<el-dropdown-item divided> <el-dropdown-item divided>
<span style="display:block;" @click="logout">{{ $t('navbar.logOut') }}</span> <span style="display:block;" @click="logout">{{ $t('navbar.logOut') }}</span>
</el-dropdown-item> </el-dropdown-item>
@ -68,7 +71,6 @@ export default {
computed: { computed: {
...mapGetters([ ...mapGetters([
'sidebar', 'sidebar',
'name',
'avatar', 'avatar',
'device' 'device'
]) ])

View File

@ -11,7 +11,6 @@ const getters = {
introduction: state => state.user.introduction, introduction: state => state.user.introduction,
roles: state => state.user.roles, roles: state => state.user.roles,
permission_routes: state => state.permission.routes, permission_routes: state => state.permission.routes,
addRoutes: state => state.permission.addRoutes,
errorLogs: state => state.errorLog.logs errorLogs: state => state.errorLog.logs
} }
export default getters export default getters

View File

@ -51,7 +51,7 @@ const actions = {
return new Promise(resolve => { return new Promise(resolve => {
let accessedRoutes let accessedRoutes
if (roles.includes('admin')) { if (roles.includes('admin')) {
accessedRoutes = asyncRoutes accessedRoutes = asyncRoutes || []
} else { } else {
accessedRoutes = filterAsyncRoutes(asyncRoutes, roles) accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)
} }

View File

@ -1,6 +1,7 @@
/** /**
* Created by jiachenpan on 16/11/18. * Created by jiachenpan on 16/11/18.
*/ */
/** /**
* @param {string} path * @param {string} path
* @returns {Boolean} * @returns {Boolean}

View File

@ -8,22 +8,13 @@
<img class="pic-404__child right" src="@/assets/404_images/404_cloud.png" alt="404"> <img class="pic-404__child right" src="@/assets/404_images/404_cloud.png" alt="404">
</div> </div>
<div class="bullshit"> <div class="bullshit">
<div class="bullshit__oops"> <div class="bullshit__oops">OOPS!</div>
OOPS! <div class="bullshit__info">All rights reserved
<a style="color:#20a0ff" href="https://wallstreetcn.com" target="_blank">wallstreetcn</a>
</div> </div>
<div class="bullshit__info"> <div class="bullshit__headline">{{ message }}</div>
版权所有 <div class="bullshit__info">Please check that the URL you entered is correct, or click the button below to return to the homepage.</div>
<a class="link-type" href="https://wallstreetcn.com" target="_blank">华尔街见闻</a> <a href="" class="bullshit__return-home">Back to home</a>
</div>
<div class="bullshit__headline">
{{ message }}
</div>
<div class="bullshit__info">
请检查您输入的网址是否正确请点击以下按钮返回主页或者发送错误报告
</div>
<router-link to="/" class="bullshit__return-home">
返回首页
</router-link>
</div> </div>
</div> </div>
</div> </div>
@ -35,7 +26,7 @@ export default {
name: 'Page404', name: 'Page404',
computed: { computed: {
message() { message() {
return '网管说这个页面你不能进......' return 'The webmaster said that you can not enter this page...'
} }
} }
} }

View File

@ -1,10 +1,12 @@
<template> <template>
<div class="social-signup-container"> <div class="social-signup-container">
<div class="sign-btn" @click="wechatHandleClick('wechat')"> <div class="sign-btn" @click="wechatHandleClick('wechat')">
<span class="wx-svg-container"><svg-icon icon-class="wechat" class="icon" /></span> 微信 <span class="wx-svg-container"><svg-icon icon-class="wechat" class="icon" /></span>
WeChat
</div> </div>
<div class="sign-btn" @click="tencentHandleClick('tencent')"> <div class="sign-btn" @click="tencentHandleClick('tencent')">
<span class="qq-svg-container"><svg-icon icon-class="qq" class="icon" /></span> QQ <span class="qq-svg-container"><svg-icon icon-class="qq" class="icon" /></span>
QQ
</div> </div>
</div> </div>
</template> </template>

View File

@ -86,7 +86,7 @@ module.exports = {
.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.devtool('cheap-source-map') config => config.devtool('cheap-source-map')
) )