21
									
								
								.github/ISSUE_TEMPLATE/question.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								.github/ISSUE_TEMPLATE/question.md
									
									
									
									
										vendored
									
									
								
							@@ -12,3 +12,24 @@ about: Asking questions about use
 | 
				
			|||||||
    Before asking a question, please make sure that you have tried your best to solve this problem.
 | 
					    Before asking a question, please make sure that you have tried your best to solve this problem.
 | 
				
			||||||
    If it's a code-related issue, please don't just take screenshots. Please provide an online demo to save each other's time.
 | 
					    If it's a code-related issue, please don't just take screenshots. Please provide an online demo to save each other's time.
 | 
				
			||||||
-->
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Steps to reproduce(问题复现步骤)
 | 
				
			||||||
 | 
					<!--
 | 
				
			||||||
 | 
					1. [xxx]
 | 
				
			||||||
 | 
					2. [xxx]
 | 
				
			||||||
 | 
					3. [xxxx]
 | 
				
			||||||
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Screenshot or Gif(截图或动态图)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Link to minimal reproduction(最小可在线还原demo)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<!--
 | 
				
			||||||
 | 
					Please only use Codepen, JSFiddle, CodeSandbox or a github repo
 | 
				
			||||||
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### Other relevant information(格外信息)
 | 
				
			||||||
 | 
					- Your OS:
 | 
				
			||||||
 | 
					- Node.js version:
 | 
				
			||||||
 | 
					- vue-element-admin version:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,6 +49,7 @@ Vue Element Admin es una solución práctica basada en la nueva plataforma de de
 | 
				
			|||||||
- Plantilla base recomendada para usar: [vue-admin-template](https://github.com/PanJiaChen/vue-admin-template)
 | 
					- Plantilla base recomendada para usar: [vue-admin-template](https://github.com/PanJiaChen/vue-admin-template)
 | 
				
			||||||
- Aplicación de Escritorio: [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
 | 
					- Aplicación de Escritorio: [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
 | 
				
			||||||
- Plantilla de Typescript: [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (Créditos: [@Armour](https://github.com/Armour))
 | 
					- Plantilla de Typescript: [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (Créditos: [@Armour](https://github.com/Armour))
 | 
				
			||||||
 | 
					- [awesome-project](https://github.com/PanJiaChen/vue-element-admin/issues/2312)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**Después de la versión `v4.1.0+`, la rama por defecto master no tendrá soporte para i18n. Por favor use [i18n](https://github.com/PanJiaChen/vue-element-admin/tree/i18n), los cambios serán incluidos en la rama master**
 | 
					**Después de la versión `v4.1.0+`, la rama por defecto master no tendrá soporte para i18n. Por favor use [i18n](https://github.com/PanJiaChen/vue-element-admin/tree/i18n), los cambios serán incluidos en la rama master**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,6 +45,7 @@
 | 
				
			|||||||
- おすすめシンプルテンプレート: [vue-admin-template](https://github.com/PanJiaChen/vue-admin-template)
 | 
					- おすすめシンプルテンプレート: [vue-admin-template](https://github.com/PanJiaChen/vue-admin-template)
 | 
				
			||||||
- デスクトップバージョン: [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
 | 
					- デスクトップバージョン: [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
 | 
				
			||||||
- Typescriptバージョン: [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (鸣谢: [@Armour](https://github.com/Armour))
 | 
					- Typescriptバージョン: [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (鸣谢: [@Armour](https://github.com/Armour))
 | 
				
			||||||
 | 
					- [awesome-project](https://github.com/PanJiaChen/vue-element-admin/issues/2312)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**After the `v4.1.0+` version, the default master branch will not support i18n. Please use [i18n Branch](https://github.com/PanJiaChen/vue-element-admin/tree/i18n), it will keep up with the master update**
 | 
					**After the `v4.1.0+` version, the default master branch will not support i18n. Please use [i18n Branch](https://github.com/PanJiaChen/vue-element-admin/tree/i18n), it will keep up with the master update**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,6 +49,7 @@ It is a magical vue admin based on the newest development stack of vue, built-in
 | 
				
			|||||||
- Base template recommends using: [vue-admin-template](https://github.com/PanJiaChen/vue-admin-template)
 | 
					- Base template recommends using: [vue-admin-template](https://github.com/PanJiaChen/vue-admin-template)
 | 
				
			||||||
- Desktop: [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
 | 
					- Desktop: [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
 | 
				
			||||||
- Typescript: [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (Credits: [@Armour](https://github.com/Armour))
 | 
					- Typescript: [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (Credits: [@Armour](https://github.com/Armour))
 | 
				
			||||||
 | 
					- [awesome-project](https://github.com/PanJiaChen/vue-element-admin/issues/2312)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**After the `v4.1.0+` version, the default master branch will not support i18n. Please use [i18n Branch](https://github.com/PanJiaChen/vue-element-admin/tree/i18n), it will keep up with the master update**
 | 
					**After the `v4.1.0+` version, the default master branch will not support i18n. Please use [i18n Branch](https://github.com/PanJiaChen/vue-element-admin/tree/i18n), it will keep up with the master update**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,6 +49,7 @@
 | 
				
			|||||||
- 基础模板建议使用: [vue-admin-template](https://github.com/PanJiaChen/vue-admin-template)
 | 
					- 基础模板建议使用: [vue-admin-template](https://github.com/PanJiaChen/vue-admin-template)
 | 
				
			||||||
- 桌面端: [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
 | 
					- 桌面端: [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin)
 | 
				
			||||||
- Typescript 版: [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (鸣谢: [@Armour](https://github.com/Armour))
 | 
					- Typescript 版: [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (鸣谢: [@Armour](https://github.com/Armour))
 | 
				
			||||||
 | 
					- [awesome-project](https://github.com/PanJiaChen/vue-element-admin/issues/2312)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
**`v4.1.0+`版本之后默认 master 分支将不支持国际化,有需要的请使用[i18n](https://github.com/PanJiaChen/vue-element-admin/tree/i18n)分支,它会和 master 保持同步更新**
 | 
					**`v4.1.0+`版本之后默认 master 分支将不支持国际化,有需要的请使用[i18n](https://github.com/PanJiaChen/vue-element-admin/tree/i18n)分支,它会和 master 保持同步更新**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -164,7 +165,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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 启动服务
 | 
					# 启动服务
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										9
									
								
								jsconfig.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								jsconfig.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
				
			|||||||
 | 
					{ 
 | 
				
			||||||
 | 
					  "compilerOptions": {
 | 
				
			||||||
 | 
					    "baseUrl": "./",
 | 
				
			||||||
 | 
					    "paths": {
 | 
				
			||||||
 | 
					        "@/*": ["src/*"]
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  "exclude": ["node_modules", "dist"]
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
  "name": "vue-element-admin",
 | 
					  "name": "vue-element-admin",
 | 
				
			||||||
  "version": "4.2.0",
 | 
					  "version": "4.2.1",
 | 
				
			||||||
  "description": "A magical vue admin. An out-of-box UI solution for enterprise applications. Newest development stack of vue. Lots of awesome features",
 | 
					  "description": "A magical vue admin. An out-of-box UI solution for enterprise applications. Newest development stack of vue. Lots of awesome features",
 | 
				
			||||||
  "author": "Pan <panfree23@gmail.com>",
 | 
					  "author": "Pan <panfree23@gmail.com>",
 | 
				
			||||||
  "license": "MIT",
 | 
					  "license": "MIT",
 | 
				
			||||||
@@ -43,7 +43,7 @@
 | 
				
			|||||||
    "url": "https://github.com/PanJiaChen/vue-element-admin/issues"
 | 
					    "url": "https://github.com/PanJiaChen/vue-element-admin/issues"
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  "dependencies": {
 | 
					  "dependencies": {
 | 
				
			||||||
    "axios": "0.18.0",
 | 
					    "axios": "0.18.1",
 | 
				
			||||||
    "clipboard": "2.0.4",
 | 
					    "clipboard": "2.0.4",
 | 
				
			||||||
    "codemirror": "5.45.0",
 | 
					    "codemirror": "5.45.0",
 | 
				
			||||||
    "driver.js": "0.9.5",
 | 
					    "driver.js": "0.9.5",
 | 
				
			||||||
@@ -74,10 +74,11 @@
 | 
				
			|||||||
    "@babel/core": "7.0.0",
 | 
					    "@babel/core": "7.0.0",
 | 
				
			||||||
    "@babel/register": "7.0.0",
 | 
					    "@babel/register": "7.0.0",
 | 
				
			||||||
    "@vue/cli-plugin-babel": "3.5.3",
 | 
					    "@vue/cli-plugin-babel": "3.5.3",
 | 
				
			||||||
    "@vue/cli-plugin-eslint": "3.5.1",
 | 
					    "@vue/cli-plugin-eslint": "^3.9.1",
 | 
				
			||||||
    "@vue/cli-plugin-unit-jest": "3.5.3",
 | 
					    "@vue/cli-plugin-unit-jest": "3.5.3",
 | 
				
			||||||
    "@vue/cli-service": "3.5.3",
 | 
					    "@vue/cli-service": "3.5.3",
 | 
				
			||||||
    "@vue/test-utils": "1.0.0-beta.29",
 | 
					    "@vue/test-utils": "1.0.0-beta.29",
 | 
				
			||||||
 | 
					    "autoprefixer": "^9.5.1",
 | 
				
			||||||
    "babel-core": "7.0.0-bridge.0",
 | 
					    "babel-core": "7.0.0-bridge.0",
 | 
				
			||||||
    "babel-eslint": "10.0.1",
 | 
					    "babel-eslint": "10.0.1",
 | 
				
			||||||
    "babel-jest": "23.6.0",
 | 
					    "babel-jest": "23.6.0",
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@@ -9,7 +9,7 @@
 | 
				
			|||||||
        :placeholder="fillPlaceHolder"
 | 
					        :placeholder="fillPlaceHolder"
 | 
				
			||||||
        :readonly="readonly"
 | 
					        :readonly="readonly"
 | 
				
			||||||
        :disabled="disabled"
 | 
					        :disabled="disabled"
 | 
				
			||||||
        :autoComplete="autoComplete"
 | 
					        :autocomplete="autoComplete"
 | 
				
			||||||
        :required="required"
 | 
					        :required="required"
 | 
				
			||||||
        type="email"
 | 
					        type="email"
 | 
				
			||||||
        class="material-input"
 | 
					        class="material-input"
 | 
				
			||||||
@@ -24,7 +24,7 @@
 | 
				
			|||||||
        :placeholder="fillPlaceHolder"
 | 
					        :placeholder="fillPlaceHolder"
 | 
				
			||||||
        :readonly="readonly"
 | 
					        :readonly="readonly"
 | 
				
			||||||
        :disabled="disabled"
 | 
					        :disabled="disabled"
 | 
				
			||||||
        :autoComplete="autoComplete"
 | 
					        :autocomplete="autoComplete"
 | 
				
			||||||
        :required="required"
 | 
					        :required="required"
 | 
				
			||||||
        type="url"
 | 
					        type="url"
 | 
				
			||||||
        class="material-input"
 | 
					        class="material-input"
 | 
				
			||||||
@@ -40,7 +40,7 @@
 | 
				
			|||||||
        :step="step"
 | 
					        :step="step"
 | 
				
			||||||
        :readonly="readonly"
 | 
					        :readonly="readonly"
 | 
				
			||||||
        :disabled="disabled"
 | 
					        :disabled="disabled"
 | 
				
			||||||
        :autoComplete="autoComplete"
 | 
					        :autocomplete="autoComplete"
 | 
				
			||||||
        :max="max"
 | 
					        :max="max"
 | 
				
			||||||
        :min="min"
 | 
					        :min="min"
 | 
				
			||||||
        :minlength="minlength"
 | 
					        :minlength="minlength"
 | 
				
			||||||
@@ -59,7 +59,7 @@
 | 
				
			|||||||
        :placeholder="fillPlaceHolder"
 | 
					        :placeholder="fillPlaceHolder"
 | 
				
			||||||
        :readonly="readonly"
 | 
					        :readonly="readonly"
 | 
				
			||||||
        :disabled="disabled"
 | 
					        :disabled="disabled"
 | 
				
			||||||
        :autoComplete="autoComplete"
 | 
					        :autocomplete="autoComplete"
 | 
				
			||||||
        :max="max"
 | 
					        :max="max"
 | 
				
			||||||
        :min="min"
 | 
					        :min="min"
 | 
				
			||||||
        :required="required"
 | 
					        :required="required"
 | 
				
			||||||
@@ -76,7 +76,7 @@
 | 
				
			|||||||
        :placeholder="fillPlaceHolder"
 | 
					        :placeholder="fillPlaceHolder"
 | 
				
			||||||
        :readonly="readonly"
 | 
					        :readonly="readonly"
 | 
				
			||||||
        :disabled="disabled"
 | 
					        :disabled="disabled"
 | 
				
			||||||
        :autoComplete="autoComplete"
 | 
					        :autocomplete="autoComplete"
 | 
				
			||||||
        :required="required"
 | 
					        :required="required"
 | 
				
			||||||
        type="tel"
 | 
					        type="tel"
 | 
				
			||||||
        class="material-input"
 | 
					        class="material-input"
 | 
				
			||||||
@@ -91,7 +91,7 @@
 | 
				
			|||||||
        :placeholder="fillPlaceHolder"
 | 
					        :placeholder="fillPlaceHolder"
 | 
				
			||||||
        :readonly="readonly"
 | 
					        :readonly="readonly"
 | 
				
			||||||
        :disabled="disabled"
 | 
					        :disabled="disabled"
 | 
				
			||||||
        :autoComplete="autoComplete"
 | 
					        :autocomplete="autoComplete"
 | 
				
			||||||
        :minlength="minlength"
 | 
					        :minlength="minlength"
 | 
				
			||||||
        :maxlength="maxlength"
 | 
					        :maxlength="maxlength"
 | 
				
			||||||
        :required="required"
 | 
					        :required="required"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,8 @@
 | 
				
			|||||||
        <slot />
 | 
					        <slot />
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    <img :src="image" class="pan-thumb">
 | 
					    <!-- eslint-disable-next-line -->
 | 
				
			||||||
 | 
					    <div :style="{backgroundImage: `url(${image})`}" class="pan-thumb"></div>
 | 
				
			||||||
  </div>
 | 
					  </div>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -52,7 +53,8 @@ export default {
 | 
				
			|||||||
.pan-thumb {
 | 
					.pan-thumb {
 | 
				
			||||||
  width: 100%;
 | 
					  width: 100%;
 | 
				
			||||||
  height: 100%;
 | 
					  height: 100%;
 | 
				
			||||||
  background-size: 100%;
 | 
					  background-position: center center;
 | 
				
			||||||
 | 
					  background-size: cover;
 | 
				
			||||||
  border-radius: 50%;
 | 
					  border-radius: 50%;
 | 
				
			||||||
  overflow: hidden;
 | 
					  overflow: hidden;
 | 
				
			||||||
  position: absolute;
 | 
					  position: absolute;
 | 
				
			||||||
@@ -60,7 +62,7 @@ export default {
 | 
				
			|||||||
  transition: all 0.3s ease-in-out;
 | 
					  transition: all 0.3s ease-in-out;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.pan-thumb:after {
 | 
					/* .pan-thumb:after {
 | 
				
			||||||
  content: '';
 | 
					  content: '';
 | 
				
			||||||
  width: 8px;
 | 
					  width: 8px;
 | 
				
			||||||
  height: 8px;
 | 
					  height: 8px;
 | 
				
			||||||
@@ -71,7 +73,7 @@ export default {
 | 
				
			|||||||
  margin: -4px 0 0 -4px;
 | 
					  margin: -4px 0 0 -4px;
 | 
				
			||||||
  background: radial-gradient(ellipse at center, rgba(14, 14, 14, 1) 0%, rgba(125, 126, 125, 1) 100%);
 | 
					  background: radial-gradient(ellipse at center, rgba(14, 14, 14, 1) 0%, rgba(125, 126, 125, 1) 100%);
 | 
				
			||||||
  box-shadow: 0 0 1px rgba(255, 255, 255, 0.9);
 | 
					  box-shadow: 0 0 1px rgba(255, 255, 255, 0.9);
 | 
				
			||||||
}
 | 
					} */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.pan-info {
 | 
					.pan-info {
 | 
				
			||||||
  position: absolute;
 | 
					  position: absolute;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,3 +1,11 @@
 | 
				
			|||||||
 | 
					let callbacks = []
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function loadedTinymce() {
 | 
				
			||||||
 | 
					  // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2144
 | 
				
			||||||
 | 
					  // check is successfully downloaded script
 | 
				
			||||||
 | 
					  return window.tinymce
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const dynamicLoadScript = (src, callback) => {
 | 
					const dynamicLoadScript = (src, callback) => {
 | 
				
			||||||
  const existingScript = document.getElementById(src)
 | 
					  const existingScript = document.getElementById(src)
 | 
				
			||||||
  const cb = callback || function() {}
 | 
					  const cb = callback || function() {}
 | 
				
			||||||
@@ -7,32 +15,44 @@ const dynamicLoadScript = (src, callback) => {
 | 
				
			|||||||
    script.src = src // src url for the third-party library being loaded.
 | 
					    script.src = src // src url for the third-party library being loaded.
 | 
				
			||||||
    script.id = src
 | 
					    script.id = src
 | 
				
			||||||
    document.body.appendChild(script)
 | 
					    document.body.appendChild(script)
 | 
				
			||||||
 | 
					    callbacks.push(cb)
 | 
				
			||||||
    const onEnd = 'onload' in script ? stdOnEnd : ieOnEnd
 | 
					    const onEnd = 'onload' in script ? stdOnEnd : ieOnEnd
 | 
				
			||||||
    onEnd(script, cb)
 | 
					    onEnd(script)
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (existingScript && cb) cb(null, existingScript)
 | 
					  if (existingScript && cb) {
 | 
				
			||||||
 | 
					    if (loadedTinymce()) {
 | 
				
			||||||
 | 
					      cb(null, existingScript)
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      callbacks.push(cb)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  function stdOnEnd(script, cb) {
 | 
					  function stdOnEnd(script) {
 | 
				
			||||||
    script.onload = function() {
 | 
					    script.onload = function() {
 | 
				
			||||||
      // this.onload = null here is necessary
 | 
					      // this.onload = null here is necessary
 | 
				
			||||||
      // because even IE9 works not like others
 | 
					      // because even IE9 works not like others
 | 
				
			||||||
      this.onerror = this.onload = null
 | 
					      this.onerror = this.onload = null
 | 
				
			||||||
 | 
					      for (const cb of callbacks) {
 | 
				
			||||||
        cb(null, script)
 | 
					        cb(null, script)
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					      callbacks = null
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
    script.onerror = function() {
 | 
					    script.onerror = function() {
 | 
				
			||||||
      this.onerror = this.onload = null
 | 
					      this.onerror = this.onload = null
 | 
				
			||||||
      cb(new Error('Failed to load ' + src), script)
 | 
					      cb(new Error('Failed to load ' + src), script)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  function ieOnEnd(script, cb) {
 | 
					  function ieOnEnd(script) {
 | 
				
			||||||
    script.onreadystatechange = function() {
 | 
					    script.onreadystatechange = function() {
 | 
				
			||||||
      if (this.readyState !== 'complete' && this.readyState !== 'loaded') return
 | 
					      if (this.readyState !== 'complete' && this.readyState !== 'loaded') return
 | 
				
			||||||
      this.onreadystatechange = null
 | 
					      this.onreadystatechange = null
 | 
				
			||||||
 | 
					      for (const cb of callbacks) {
 | 
				
			||||||
        cb(null, script) // there is no way to catch loading errors in IE8
 | 
					        cb(null, script) // there is no way to catch loading errors in IE8
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					      callbacks = null
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -64,7 +64,9 @@ export default {
 | 
				
			|||||||
      fullscreen: false,
 | 
					      fullscreen: false,
 | 
				
			||||||
      languageTypeList: {
 | 
					      languageTypeList: {
 | 
				
			||||||
        'en': 'en',
 | 
					        'en': 'en',
 | 
				
			||||||
        'zh': 'zh_CN'
 | 
					        'zh': 'zh_CN',
 | 
				
			||||||
 | 
					        'es': 'es_MX',
 | 
				
			||||||
 | 
					        'ja': 'ja'
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
@@ -114,6 +116,7 @@ export default {
 | 
				
			|||||||
      const _this = this
 | 
					      const _this = this
 | 
				
			||||||
      window.tinymce.init({
 | 
					      window.tinymce.init({
 | 
				
			||||||
        selector: `#${this.tinymceId}`,
 | 
					        selector: `#${this.tinymceId}`,
 | 
				
			||||||
 | 
					        language: this.languageTypeList['en'],
 | 
				
			||||||
        height: this.height,
 | 
					        height: this.height,
 | 
				
			||||||
        body_class: 'panel-body ',
 | 
					        body_class: 'panel-body ',
 | 
				
			||||||
        object_resizing: false,
 | 
					        object_resizing: false,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -45,7 +45,7 @@ export function numberFormatter(num, digits) {
 | 
				
			|||||||
  ]
 | 
					  ]
 | 
				
			||||||
  for (let i = 0; i < si.length; i++) {
 | 
					  for (let i = 0; i < si.length; i++) {
 | 
				
			||||||
    if (num >= si[i].value) {
 | 
					    if (num >= si[i].value) {
 | 
				
			||||||
      return (num / si[i].value + 0.1).toFixed(digits).replace(/\.0+$|(\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol
 | 
					      return (num / si[i].value).toFixed(digits).replace(/\.0+$|(\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return num.toString()
 | 
					  return num.toString()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,7 +16,7 @@ export default {
 | 
				
			|||||||
      return this.$store.state.tagsView.cachedViews
 | 
					      return this.$store.state.tagsView.cachedViews
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
    key() {
 | 
					    key() {
 | 
				
			||||||
      return this.$route.fullPath
 | 
					      return this.$route.path
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,14 +22,10 @@ export default function handleClipboard(text, event) {
 | 
				
			|||||||
  })
 | 
					  })
 | 
				
			||||||
  clipboard.on('success', () => {
 | 
					  clipboard.on('success', () => {
 | 
				
			||||||
    clipboardSuccess()
 | 
					    clipboardSuccess()
 | 
				
			||||||
    clipboard.off('error')
 | 
					 | 
				
			||||||
    clipboard.off('success')
 | 
					 | 
				
			||||||
    clipboard.destroy()
 | 
					    clipboard.destroy()
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
  clipboard.on('error', () => {
 | 
					  clipboard.on('error', () => {
 | 
				
			||||||
    clipboardError()
 | 
					    clipboardError()
 | 
				
			||||||
    clipboard.off('error')
 | 
					 | 
				
			||||||
    clipboard.off('success')
 | 
					 | 
				
			||||||
    clipboard.destroy()
 | 
					    clipboard.destroy()
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
  clipboard.onClick(event)
 | 
					  clipboard.onClick(event)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ import { getToken } from '@/utils/auth'
 | 
				
			|||||||
// create an axios instance
 | 
					// create an axios instance
 | 
				
			||||||
const service = axios.create({
 | 
					const service = axios.create({
 | 
				
			||||||
  baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
 | 
					  baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
 | 
				
			||||||
  withCredentials: true, // send cookies when cross-domain requests
 | 
					  // withCredentials: true, // send cookies when cross-domain requests
 | 
				
			||||||
  timeout: 5000 // request timeout
 | 
					  timeout: 5000 // request timeout
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -48,7 +48,7 @@ service.interceptors.response.use(
 | 
				
			|||||||
    // if the custom code is not 20000, it is judged as an error.
 | 
					    // if the custom code is not 20000, it is judged as an error.
 | 
				
			||||||
    if (res.code !== 20000) {
 | 
					    if (res.code !== 20000) {
 | 
				
			||||||
      Message({
 | 
					      Message({
 | 
				
			||||||
        message: res.message || 'error',
 | 
					        message: res.message || 'Error',
 | 
				
			||||||
        type: 'error',
 | 
					        type: 'error',
 | 
				
			||||||
        duration: 5 * 1000
 | 
					        duration: 5 * 1000
 | 
				
			||||||
      })
 | 
					      })
 | 
				
			||||||
@@ -66,7 +66,7 @@ service.interceptors.response.use(
 | 
				
			|||||||
          })
 | 
					          })
 | 
				
			||||||
        })
 | 
					        })
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      return Promise.reject(res.message || 'error')
 | 
					      return Promise.reject(new Error(res.message || 'Error'))
 | 
				
			||||||
    } else {
 | 
					    } else {
 | 
				
			||||||
      return res
 | 
					      return res
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								src/vendor/Export2Excel.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								src/vendor/Export2Excel.js
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +1,5 @@
 | 
				
			|||||||
/* eslint-disable */
 | 
					/* eslint-disable */
 | 
				
			||||||
require('script-loader!file-saver');
 | 
					import { saveAs } from 'file-saver'
 | 
				
			||||||
import XLSX from 'xlsx'
 | 
					import XLSX from 'xlsx'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function generateArray(table) {
 | 
					function generateArray(table) {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										2
									
								
								src/vendor/Export2Zip.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								src/vendor/Export2Zip.js
									
									
									
									
										vendored
									
									
								
							@@ -1,5 +1,5 @@
 | 
				
			|||||||
/* eslint-disable */
 | 
					/* eslint-disable */
 | 
				
			||||||
require('script-loader!file-saver');
 | 
					import { saveAs } from 'file-saver'
 | 
				
			||||||
import JSZip from 'jszip'
 | 
					import JSZip from 'jszip'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export function export_txt_to_zip(th, jsonData, txtName, zipName) {
 | 
					export function export_txt_to_zip(th, jsonData, txtName, zipName) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,13 +3,13 @@
 | 
				
			|||||||
    <el-tabs v-model="activeName">
 | 
					    <el-tabs v-model="activeName">
 | 
				
			||||||
      <el-tab-pane label="use clipboard  directly" name="directly">
 | 
					      <el-tab-pane label="use clipboard  directly" name="directly">
 | 
				
			||||||
        <el-input v-model="inputData" placeholder="Please input" style="width:400px;max-width:100%;" />
 | 
					        <el-input v-model="inputData" placeholder="Please input" style="width:400px;max-width:100%;" />
 | 
				
			||||||
        <el-button type="primary" icon="document" @click="handleCopy(inputData,$event)">
 | 
					        <el-button type="primary" icon="el-icon-document" @click="handleCopy(inputData,$event)">
 | 
				
			||||||
          copy
 | 
					          copy
 | 
				
			||||||
        </el-button>
 | 
					        </el-button>
 | 
				
			||||||
      </el-tab-pane>
 | 
					      </el-tab-pane>
 | 
				
			||||||
      <el-tab-pane label="use clipboard by v-directive" name="v-directive">
 | 
					      <el-tab-pane label="use clipboard by v-directive" name="v-directive">
 | 
				
			||||||
        <el-input v-model="inputData" placeholder="Please input" style="width:400px;max-width:100%;" />
 | 
					        <el-input v-model="inputData" placeholder="Please input" style="width:400px;max-width:100%;" />
 | 
				
			||||||
        <el-button v-clipboard:copy="inputData" v-clipboard:success="clipboardSuccess" type="primary" icon="document">
 | 
					        <el-button v-clipboard:copy="inputData" v-clipboard:success="clipboardSuccess" type="primary" icon="el-icon-document">
 | 
				
			||||||
          copy
 | 
					          copy
 | 
				
			||||||
        </el-button>
 | 
					        </el-button>
 | 
				
			||||||
      </el-tab-pane>
 | 
					      </el-tab-pane>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    <pan-thumb :image="image" />
 | 
					    <pan-thumb :image="image" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <el-button type="primary" icon="upload" style="position: absolute;bottom: 15px;margin-left: 40px;" @click="imagecropperShow=true">
 | 
					    <el-button type="primary" icon="el-icon-upload" style="position: absolute;bottom: 15px;margin-left: 40px;" @click="imagecropperShow=true">
 | 
				
			||||||
      Change Avatar
 | 
					      Change Avatar
 | 
				
			||||||
    </el-button>
 | 
					    </el-button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,7 +49,7 @@
 | 
				
			|||||||
          <div style="height:100px;">
 | 
					          <div style="height:100px;">
 | 
				
			||||||
            <el-form :model="demo" :rules="demoRules">
 | 
					            <el-form :model="demo" :rules="demoRules">
 | 
				
			||||||
              <el-form-item prop="title">
 | 
					              <el-form-item prop="title">
 | 
				
			||||||
                <md-input v-model="demo.title" icon="search" name="title" placeholder="输入标题">
 | 
					                <md-input v-model="demo.title" icon="el-icon-search" name="title" placeholder="输入标题">
 | 
				
			||||||
                  标题
 | 
					                  标题
 | 
				
			||||||
                </md-input>
 | 
					                </md-input>
 | 
				
			||||||
              </el-form-item>
 | 
					              </el-form-item>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,10 +3,16 @@ import { debounce } from '@/utils'
 | 
				
			|||||||
export default {
 | 
					export default {
 | 
				
			||||||
  data() {
 | 
					  data() {
 | 
				
			||||||
    return {
 | 
					    return {
 | 
				
			||||||
      $_sidebarElm: null
 | 
					      $_sidebarElm: null,
 | 
				
			||||||
 | 
					      $_resizeHandler: null
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  mounted() {
 | 
					  mounted() {
 | 
				
			||||||
 | 
					    this.$_resizeHandler = debounce(() => {
 | 
				
			||||||
 | 
					      if (this.chart) {
 | 
				
			||||||
 | 
					        this.chart.resize()
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }, 100)
 | 
				
			||||||
    this.$_initResizeEvent()
 | 
					    this.$_initResizeEvent()
 | 
				
			||||||
    this.$_initSidebarResizeEvent()
 | 
					    this.$_initSidebarResizeEvent()
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
@@ -27,13 +33,6 @@ export default {
 | 
				
			|||||||
  methods: {
 | 
					  methods: {
 | 
				
			||||||
    // use $_ for mixins properties
 | 
					    // use $_ for mixins properties
 | 
				
			||||||
    // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
 | 
					    // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential
 | 
				
			||||||
    $_resizeHandler() {
 | 
					 | 
				
			||||||
      return debounce(() => {
 | 
					 | 
				
			||||||
        if (this.chart) {
 | 
					 | 
				
			||||||
          this.chart.resize()
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
      }, 100)()
 | 
					 | 
				
			||||||
    },
 | 
					 | 
				
			||||||
    $_initResizeEvent() {
 | 
					    $_initResizeEvent() {
 | 
				
			||||||
      window.addEventListener('resize', this.$_resizeHandler)
 | 
					      window.addEventListener('resize', this.$_resizeHandler)
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div class="errPage-container">
 | 
					  <div class="errPage-container">
 | 
				
			||||||
    <el-button icon="arrow-left" class="pan-back-btn" @click="back">
 | 
					    <el-button icon="el-icon-arrow-left" class="pan-back-btn" @click="back">
 | 
				
			||||||
      返回
 | 
					      返回
 | 
				
			||||||
    </el-button>
 | 
					    </el-button>
 | 
				
			||||||
    <el-row>
 | 
					    <el-row>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@
 | 
				
			|||||||
        <PlatformDropdown v-model="postForm.platforms" />
 | 
					        <PlatformDropdown v-model="postForm.platforms" />
 | 
				
			||||||
        <SourceUrlDropdown v-model="postForm.source_uri" />
 | 
					        <SourceUrlDropdown v-model="postForm.source_uri" />
 | 
				
			||||||
        <el-button v-loading="loading" style="margin-left: 10px;" type="success" @click="submitForm">
 | 
					        <el-button v-loading="loading" style="margin-left: 10px;" type="success" @click="submitForm">
 | 
				
			||||||
          Publush
 | 
					          Publish
 | 
				
			||||||
        </el-button>
 | 
					        </el-button>
 | 
				
			||||||
        <el-button v-loading="loading" type="warning" @click="draftForm">
 | 
					        <el-button v-loading="loading" type="warning" @click="draftForm">
 | 
				
			||||||
          Draft
 | 
					          Draft
 | 
				
			||||||
@@ -36,7 +36,7 @@
 | 
				
			|||||||
                </el-col>
 | 
					                </el-col>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                <el-col :span="10">
 | 
					                <el-col :span="10">
 | 
				
			||||||
                  <el-form-item label-width="120px" label="Publush Time:" class="postInfo-container-item">
 | 
					                  <el-form-item label-width="120px" label="Publish Time:" class="postInfo-container-item">
 | 
				
			||||||
                    <el-date-picker v-model="displayTime" type="datetime" format="yyyy-MM-dd HH:mm:ss" placeholder="Select date and time" />
 | 
					                    <el-date-picker v-model="displayTime" type="datetime" format="yyyy-MM-dd HH:mm:ss" placeholder="Select date and time" />
 | 
				
			||||||
                  </el-form-item>
 | 
					                  </el-form-item>
 | 
				
			||||||
                </el-col>
 | 
					                </el-col>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@
 | 
				
			|||||||
      <FilenameOption v-model="filename" />
 | 
					      <FilenameOption v-model="filename" />
 | 
				
			||||||
      <AutoWidthOption v-model="autoWidth" />
 | 
					      <AutoWidthOption v-model="autoWidth" />
 | 
				
			||||||
      <BookTypeOption v-model="bookType" />
 | 
					      <BookTypeOption v-model="bookType" />
 | 
				
			||||||
      <el-button :loading="downloadLoading" style="margin:0 0 20px 20px;" type="primary" icon="document" @click="handleDownload">
 | 
					      <el-button :loading="downloadLoading" style="margin:0 0 20px 20px;" type="primary" icon="el-icon-document" @click="handleDownload">
 | 
				
			||||||
        Export Excel
 | 
					        Export Excel
 | 
				
			||||||
      </el-button>
 | 
					      </el-button>
 | 
				
			||||||
      <a href="https://panjiachen.github.io/vue-element-admin-site/feature/component/excel.html" target="_blank" style="margin-left:15px;">
 | 
					      <a href="https://panjiachen.github.io/vue-element-admin-site/feature/component/excel.html" target="_blank" style="margin-left:15px;">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div class="app-container">
 | 
					  <div class="app-container">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <el-button :loading="downloadLoading" style="margin-bottom:20px" type="primary" icon="document" @click="handleDownload">Export</el-button>
 | 
					    <el-button :loading="downloadLoading" style="margin-bottom:20px" type="primary" icon="el-icon-document" @click="handleDownload">Export</el-button>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <el-table
 | 
					    <el-table
 | 
				
			||||||
      ref="multipleTable"
 | 
					      ref="multipleTable"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div class="app-container">
 | 
					  <div class="app-container">
 | 
				
			||||||
    <el-input v-model="filename" placeholder="Please enter the file name (default excel-list)" style="width:350px;" prefix-icon="el-icon-document" />
 | 
					    <el-input v-model="filename" placeholder="Please enter the file name (default excel-list)" style="width:350px;" prefix-icon="el-icon-document" />
 | 
				
			||||||
    <el-button :loading="downloadLoading" style="margin-bottom:20px" type="primary" icon="document" @click="handleDownload">
 | 
					    <el-button :loading="downloadLoading" style="margin-bottom:20px" type="primary" icon="el-icon-document" @click="handleDownload">
 | 
				
			||||||
      Export Selected Items
 | 
					      Export Selected Items
 | 
				
			||||||
    </el-button>
 | 
					    </el-button>
 | 
				
			||||||
    <a href="https://panjiachen.github.io/vue-element-admin-site/feature/component/excel.html" target="_blank" style="margin-left:15px;">
 | 
					    <a href="https://panjiachen.github.io/vue-element-admin-site/feature/component/excel.html" target="_blank" style="margin-left:15px;">
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div class="login-container">
 | 
					  <div class="login-container">
 | 
				
			||||||
    <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" auto-complete="on" label-position="left">
 | 
					    <el-form ref="loginForm" :model="loginForm" :rules="loginRules" class="login-form" autocomplete="on" label-position="left">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <div class="title-container">
 | 
					      <div class="title-container">
 | 
				
			||||||
        <h3 class="title">Login Form</h3>
 | 
					        <h3 class="title">Login Form</h3>
 | 
				
			||||||
@@ -17,7 +17,7 @@
 | 
				
			|||||||
          name="username"
 | 
					          name="username"
 | 
				
			||||||
          type="text"
 | 
					          type="text"
 | 
				
			||||||
          tabindex="1"
 | 
					          tabindex="1"
 | 
				
			||||||
          auto-complete="on"
 | 
					          autocomplete="on"
 | 
				
			||||||
        />
 | 
					        />
 | 
				
			||||||
      </el-form-item>
 | 
					      </el-form-item>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -34,7 +34,7 @@
 | 
				
			|||||||
            placeholder="Password"
 | 
					            placeholder="Password"
 | 
				
			||||||
            name="password"
 | 
					            name="password"
 | 
				
			||||||
            tabindex="2"
 | 
					            tabindex="2"
 | 
				
			||||||
            auto-complete="on"
 | 
					            autocomplete="on"
 | 
				
			||||||
            @keyup.native="checkCapslock"
 | 
					            @keyup.native="checkCapslock"
 | 
				
			||||||
            @blur="capsTooltip = false"
 | 
					            @blur="capsTooltip = false"
 | 
				
			||||||
            @keyup.enter.native="handleLogin"
 | 
					            @keyup.enter.native="handleLogin"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -228,7 +228,7 @@ export default {
 | 
				
			|||||||
        dangerouslyUseHTMLString: true,
 | 
					        dangerouslyUseHTMLString: true,
 | 
				
			||||||
        message: `
 | 
					        message: `
 | 
				
			||||||
            <div>Role Key: ${key}</div>
 | 
					            <div>Role Key: ${key}</div>
 | 
				
			||||||
            <div>Role Nmae: ${name}</div>
 | 
					            <div>Role Name: ${name}</div>
 | 
				
			||||||
            <div>Description: ${description}</div>
 | 
					            <div>Description: ${description}</div>
 | 
				
			||||||
          `,
 | 
					          `,
 | 
				
			||||||
        type: 'success'
 | 
					        type: 'success'
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,6 +30,18 @@ export default {
 | 
				
			|||||||
      createdTimes: 0
 | 
					      createdTimes: 0
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
 | 
					  watch: {
 | 
				
			||||||
 | 
					    activeName(val) {
 | 
				
			||||||
 | 
					      this.$router.push(`${this.$route.path}?tab=${val}`)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  created() {
 | 
				
			||||||
 | 
					    // init the default selected tab
 | 
				
			||||||
 | 
					    const tab = this.$route.query.tab
 | 
				
			||||||
 | 
					    if (tab) {
 | 
				
			||||||
 | 
					      this.activeName = tab
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
  methods: {
 | 
					  methods: {
 | 
				
			||||||
    showCreatedTimes() {
 | 
					    showCreatedTimes() {
 | 
				
			||||||
      this.createdTimes = this.createdTimes + 1
 | 
					      this.createdTimes = this.createdTimes + 1
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,7 +35,7 @@
 | 
				
			|||||||
      style="width: 100%;"
 | 
					      style="width: 100%;"
 | 
				
			||||||
      @sort-change="sortChange"
 | 
					      @sort-change="sortChange"
 | 
				
			||||||
    >
 | 
					    >
 | 
				
			||||||
      <el-table-column label="ID" prop="id" sortable="custom" align="center" width="80">
 | 
					      <el-table-column label="ID" prop="id" sortable="custom" align="center" width="80" :class-name="getSortClass('id')">
 | 
				
			||||||
        <template slot-scope="scope">
 | 
					        <template slot-scope="scope">
 | 
				
			||||||
          <span>{{ scope.row.id }}</span>
 | 
					          <span>{{ scope.row.id }}</span>
 | 
				
			||||||
        </template>
 | 
					        </template>
 | 
				
			||||||
@@ -375,6 +375,14 @@ export default {
 | 
				
			|||||||
          return v[j]
 | 
					          return v[j]
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
      }))
 | 
					      }))
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    getSortClass: function(key) {
 | 
				
			||||||
 | 
					      const sort = this.listQuery.sort
 | 
				
			||||||
 | 
					      return sort === `+${key}`
 | 
				
			||||||
 | 
					        ? 'ascending'
 | 
				
			||||||
 | 
					        : sort === `-${key}`
 | 
				
			||||||
 | 
					          ? 'descending'
 | 
				
			||||||
 | 
					          : ''
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
<template>
 | 
					<template>
 | 
				
			||||||
  <div class="app-container">
 | 
					  <div class="app-container">
 | 
				
			||||||
    <el-input v-model="filename" placeholder="Please enter the file name (default file)" style="width:300px;" prefix-icon="el-icon-document" />
 | 
					    <el-input v-model="filename" placeholder="Please enter the file name (default file)" style="width:300px;" prefix-icon="el-icon-document" />
 | 
				
			||||||
    <el-button :loading="downloadLoading" style="margin-bottom:20px;" type="primary" icon="document" @click="handleDownload">
 | 
					    <el-button :loading="downloadLoading" style="margin-bottom:20px;" type="primary" icon="el-icon-document" @click="handleDownload">
 | 
				
			||||||
      Export Zip
 | 
					      Export Zip
 | 
				
			||||||
    </el-button>
 | 
					    </el-button>
 | 
				
			||||||
    <el-table v-loading="listLoading" :data="list" element-loading-text="拼命加载中" border fit highlight-current-row>
 | 
					    <el-table v-loading="listLoading" :data="list" element-loading-text="拼命加载中" border fit highlight-current-row>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,10 +7,13 @@ function resolve(dir) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const name = defaultSettings.title || 'vue Element Admin' // page title
 | 
					const name = defaultSettings.title || 'vue Element Admin' // page title
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// If your port is set to 80,
 | 
					// If your port is set to 80,
 | 
				
			||||||
// use administrator privileges to execute the command line.
 | 
					// use administrator privileges to execute the command line.
 | 
				
			||||||
// For example, Mac: sudo npm run
 | 
					// For example, Mac: sudo npm run
 | 
				
			||||||
const port = 9527 // dev port
 | 
					// You can change the port by the following method:
 | 
				
			||||||
 | 
					// port = 9527 npm run dev OR npm run dev --port = 9527
 | 
				
			||||||
 | 
					const port = process.env.port || process.env.npm_config_port || 9527 // dev port
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 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 = {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user