├── .babelrc
├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitattributes
├── .gitignore
├── .postcssrc.js
├── README.md
├── build
├── build.js
├── check-versions.js
├── logo.png
├── utils.js
├── vue-loader.conf.js
├── webpack.base.conf.js
├── webpack.dev.conf.js
└── webpack.prod.conf.js
├── config
├── dev.env.js
├── index.js
└── prod.env.js
├── dist
├── blog.html
├── blogadmin.html
├── demo.html
├── index.html
├── static
│ ├── css
│ │ ├── blog.8028fb813a54ba52c94e1cadeb65057d.css
│ │ ├── blog.8028fb813a54ba52c94e1cadeb65057d.css.map
│ │ ├── blogadmin.a4cab6a08be342d9b7ca97509432ad58.css
│ │ ├── blogadmin.a4cab6a08be342d9b7ca97509432ad58.css.map
│ │ ├── demo.bba70e7557c822a02cc2747d85cdbae3.css
│ │ ├── demo.bba70e7557c822a02cc2747d85cdbae3.css.map
│ │ ├── test.ca5e6e05b6084173f88cf3e1a20ca3b5.css
│ │ └── test.ca5e6e05b6084173f88cf3e1a20ca3b5.css.map
│ ├── fonts
│ │ ├── element-icons.6f0a763.ttf
│ │ ├── fontawesome-webfont.674f50d.eot
│ │ ├── fontawesome-webfont.af7ae50.woff2
│ │ ├── fontawesome-webfont.b06871f.ttf
│ │ ├── fontawesome-webfont.fee66e7.woff
│ │ ├── fontello.068ca2b.ttf
│ │ └── fontello.e73a064.eot
│ ├── img
│ │ ├── dahai.8ec2694.jpg
│ │ ├── dq.300298b.jpg
│ │ ├── fontawesome-webfont.912ec66.svg
│ │ └── fontello.9354499.svg
│ └── js
│ │ ├── 0.9f752bd9c93634ee848e.js
│ │ ├── 0.9f752bd9c93634ee848e.js.map
│ │ ├── 1.5c1d73ca1a23166c11c6.js
│ │ ├── 1.5c1d73ca1a23166c11c6.js.map
│ │ ├── 2.0f152ef7be38a252e8e5.js
│ │ ├── 2.0f152ef7be38a252e8e5.js.map
│ │ ├── 3.a95c7199f0ba9f756918.js
│ │ ├── 3.a95c7199f0ba9f756918.js.map
│ │ ├── 4.8050be44548abf62964d.js
│ │ ├── 4.8050be44548abf62964d.js.map
│ │ ├── 5.71d7f6fcdb635e463aee.js
│ │ ├── 5.71d7f6fcdb635e463aee.js.map
│ │ ├── 6.af307ff456dbfe28fccc.js
│ │ ├── 6.af307ff456dbfe28fccc.js.map
│ │ ├── 7.15ef295f11049e8c1071.js
│ │ ├── 7.15ef295f11049e8c1071.js.map
│ │ ├── 8.9c254b1a97383e9c1acd.js
│ │ ├── 8.9c254b1a97383e9c1acd.js.map
│ │ ├── 9.a6eca05e6f7b77ec8d5d.js
│ │ ├── 9.a6eca05e6f7b77ec8d5d.js.map
│ │ ├── blog.faaefe1c9142e1178169.js
│ │ ├── blog.faaefe1c9142e1178169.js.map
│ │ ├── blogadmin.16387c43da20612153c5.js
│ │ ├── blogadmin.16387c43da20612153c5.js.map
│ │ ├── demo.c6e17fb076eab0b4d237.js
│ │ ├── demo.c6e17fb076eab0b4d237.js.map
│ │ ├── manifest.0098f8ac3d0979b71c7d.js
│ │ ├── manifest.0098f8ac3d0979b71c7d.js.map
│ │ ├── test.84203f3b03b8cfdc623b.js
│ │ ├── test.84203f3b03b8cfdc623b.js.map
│ │ ├── vendor.96062eba1de96f6ecab0.js
│ │ └── vendor.96062eba1de96f6ecab0.js.map
└── test.html
├── index.html
├── multiSpa.iml
├── package.json
├── server
├── favicon.ico
├── init.js
├── models
│ ├── blog
│ │ ├── articles.js
│ │ ├── messages.js
│ │ ├── tags.js
│ │ └── users.js
│ ├── comment.js
│ ├── post.js
│ └── user.js
├── routes
│ ├── admin.js
│ ├── articles.js
│ ├── index.js
│ └── messages.js
├── server.js
├── static
│ └── .gitkeep
└── utils
│ ├── auth-required.js
│ ├── hbs-helper.js
│ ├── locals.js
│ ├── logger.js
│ ├── mailer.js
│ └── time.js
├── src
├── api
│ ├── api.js
│ └── index.js
├── assets
│ ├── bg1.jpg
│ ├── bingguo.jpg
│ ├── card.jpg
│ ├── favicon.ico
│ ├── images
│ │ ├── bg1.jpg
│ │ ├── bg6.jpg
│ │ ├── bg7.jpg
│ │ ├── bingguo.jpg
│ │ ├── border.png
│ │ ├── border1.png
│ │ ├── border2.png
│ │ ├── card.jpg
│ │ ├── controls.png
│ │ ├── dahai.jpg
│ │ ├── dahai1.jpg
│ │ ├── dq.jpg
│ │ ├── favicon.ico
│ │ ├── icons.png
│ │ ├── ie6
│ │ │ ├── borderBottomCenter.png
│ │ │ ├── borderBottomLeft.png
│ │ │ ├── borderBottomRight.png
│ │ │ ├── borderMiddleLeft.png
│ │ │ ├── borderMiddleRight.png
│ │ │ ├── borderTopCenter.png
│ │ │ ├── borderTopLeft.png
│ │ │ └── borderTopRight.png
│ │ ├── loading.gif
│ │ ├── loading_background.png
│ │ ├── login-bg.jpg
│ │ ├── login-cloud.png
│ │ ├── meteorshower1.jpg
│ │ ├── meteorshower2.jpg
│ │ ├── overlay.png
│ │ ├── pattern.jpg
│ │ ├── pattern.png
│ │ ├── pattern1.jpg
│ │ ├── sort_asc.png
│ │ ├── sort_asc_disabled.png
│ │ ├── sort_both.png
│ │ ├── sort_desc.png
│ │ ├── sort_desc_disabled.png
│ │ ├── spritemap.png
│ │ ├── spritemap@2x.png
│ │ └── xiyang.gif
│ ├── logo.png
│ ├── logo4.png
│ ├── theme
│ │ ├── theme-darkblue
│ │ │ ├── alert.css
│ │ │ ├── autocomplete.css
│ │ │ ├── badge.css
│ │ │ ├── base.css
│ │ │ ├── breadcrumb-item.css
│ │ │ ├── breadcrumb.css
│ │ │ ├── button-group.css
│ │ │ ├── button.css
│ │ │ ├── card.css
│ │ │ ├── carousel-item.css
│ │ │ ├── carousel.css
│ │ │ ├── cascader.css
│ │ │ ├── checkbox-group.css
│ │ │ ├── checkbox.css
│ │ │ ├── col.css
│ │ │ ├── collapse-item.css
│ │ │ ├── collapse.css
│ │ │ ├── color-picker.css
│ │ │ ├── date-picker.css
│ │ │ ├── dialog.css
│ │ │ ├── dropdown-item.css
│ │ │ ├── dropdown-menu.css
│ │ │ ├── dropdown.css
│ │ │ ├── fonts
│ │ │ │ ├── element-icons.ttf
│ │ │ │ └── element-icons.woff
│ │ │ ├── form-item.css
│ │ │ ├── form.css
│ │ │ ├── icon.css
│ │ │ ├── index.css
│ │ │ ├── input-number.css
│ │ │ ├── input.css
│ │ │ ├── loading.css
│ │ │ ├── menu-item-group.css
│ │ │ ├── menu-item.css
│ │ │ ├── menu.css
│ │ │ ├── message-box.css
│ │ │ ├── message.css
│ │ │ ├── notification.css
│ │ │ ├── option-group.css
│ │ │ ├── option.css
│ │ │ ├── pagination.css
│ │ │ ├── popover.css
│ │ │ ├── progress.css
│ │ │ ├── radio-button.css
│ │ │ ├── radio-group.css
│ │ │ ├── radio.css
│ │ │ ├── rate.css
│ │ │ ├── reset.css
│ │ │ ├── row.css
│ │ │ ├── scrollbar.css
│ │ │ ├── select-dropdown.css
│ │ │ ├── select.css
│ │ │ ├── slider.css
│ │ │ ├── spinner.css
│ │ │ ├── step.css
│ │ │ ├── steps.css
│ │ │ ├── submenu.css
│ │ │ ├── switch.css
│ │ │ ├── tab-pane.css
│ │ │ ├── table-column.css
│ │ │ ├── table.css
│ │ │ ├── tabs.css
│ │ │ ├── tag.css
│ │ │ ├── time-picker.css
│ │ │ ├── time-select.css
│ │ │ ├── tooltip.css
│ │ │ ├── tree.css
│ │ │ └── upload.css
│ │ └── theme-green
│ │ │ ├── alert.css
│ │ │ ├── autocomplete.css
│ │ │ ├── badge.css
│ │ │ ├── base.css
│ │ │ ├── breadcrumb-item.css
│ │ │ ├── breadcrumb.css
│ │ │ ├── button-group.css
│ │ │ ├── button.css
│ │ │ ├── card.css
│ │ │ ├── carousel-item.css
│ │ │ ├── carousel.css
│ │ │ ├── cascader.css
│ │ │ ├── checkbox-group.css
│ │ │ ├── checkbox.css
│ │ │ ├── col.css
│ │ │ ├── collapse-item.css
│ │ │ ├── collapse.css
│ │ │ ├── color-picker.css
│ │ │ ├── date-picker.css
│ │ │ ├── dialog.css
│ │ │ ├── dropdown-item.css
│ │ │ ├── dropdown-menu.css
│ │ │ ├── dropdown.css
│ │ │ ├── fonts
│ │ │ ├── element-icons.ttf
│ │ │ └── element-icons.woff
│ │ │ ├── form-item.css
│ │ │ ├── form.css
│ │ │ ├── icon.css
│ │ │ ├── index.css
│ │ │ ├── input-number.css
│ │ │ ├── input.css
│ │ │ ├── loading.css
│ │ │ ├── menu-item-group.css
│ │ │ ├── menu-item.css
│ │ │ ├── menu.css
│ │ │ ├── message-box.css
│ │ │ ├── message.css
│ │ │ ├── notification.css
│ │ │ ├── option-group.css
│ │ │ ├── option.css
│ │ │ ├── pagination.css
│ │ │ ├── popover.css
│ │ │ ├── progress.css
│ │ │ ├── radio-button.css
│ │ │ ├── radio-group.css
│ │ │ ├── radio.css
│ │ │ ├── rate.css
│ │ │ ├── reset.css
│ │ │ ├── row.css
│ │ │ ├── scrollbar.css
│ │ │ ├── select-dropdown.css
│ │ │ ├── select.css
│ │ │ ├── slider.css
│ │ │ ├── spinner.css
│ │ │ ├── step.css
│ │ │ ├── steps.css
│ │ │ ├── submenu.css
│ │ │ ├── switch.css
│ │ │ ├── tab-pane.css
│ │ │ ├── table-column.css
│ │ │ ├── table.css
│ │ │ ├── tabs.css
│ │ │ ├── tag.css
│ │ │ ├── time-picker.css
│ │ │ ├── time-select.css
│ │ │ ├── tooltip.css
│ │ │ ├── tree.css
│ │ │ └── upload.css
│ ├── user.png
│ └── xiyang.gif
├── images
│ ├── banner.jpeg
│ ├── cat.jpeg
│ ├── cloud.png
│ ├── default-avatar.jpeg
│ ├── favicon.ico
│ └── mac.png
├── javascripts
│ ├── account.js
│ ├── admin-post.js
│ ├── common.js
│ ├── home-post.js
│ ├── posts.js
│ ├── runTime.js
│ ├── scrollIt.js
│ ├── unique.js
│ └── util.js
├── mock
│ ├── data
│ │ └── user.js
│ ├── index.js
│ └── mock.js
├── router
│ ├── blog-routes.js
│ ├── demo-routes.js
│ ├── index.js
│ ├── qims-routes.js
│ └── test-router.js
├── styles
│ ├── account.css
│ ├── ace.css
│ ├── admin.css
│ ├── article.css
│ ├── blog.css
│ ├── container.css
│ ├── global.css
│ ├── header.css
│ ├── index.css
│ ├── md.bak.css
│ ├── md.css
│ ├── side.css
│ └── vars.scss
├── views
│ ├── 404.vue
│ ├── blog
│ │ ├── app.vue
│ │ ├── components
│ │ │ ├── About.vue
│ │ │ ├── Article.vue
│ │ │ ├── Blog.vue
│ │ │ ├── Footer.vue
│ │ │ ├── Header.vue
│ │ │ ├── Index.vue
│ │ │ ├── articleList.vue
│ │ │ ├── messages.vue
│ │ │ ├── runTime.vue
│ │ │ ├── scrollTop.vue
│ │ │ ├── sideSection.vue
│ │ │ └── test.vue
│ │ ├── index.js
│ │ └── router
│ │ │ └── index.js
│ ├── blogadmin
│ │ ├── app.vue
│ │ ├── components
│ │ │ ├── admin.vue
│ │ │ ├── adminArticle.vue
│ │ │ ├── adminArticleList.vue
│ │ │ ├── adminChange.vue
│ │ │ ├── loading.vue
│ │ │ └── login.vue
│ │ ├── index.js
│ │ └── router
│ │ │ └── index.js
│ ├── demo
│ │ ├── app.vue
│ │ ├── components
│ │ │ ├── 404.vue
│ │ │ ├── Home.vue
│ │ │ ├── Login.vue
│ │ │ ├── charts
│ │ │ │ └── echarts.vue
│ │ │ ├── nav1
│ │ │ │ ├── Form.vue
│ │ │ │ ├── Main.vue
│ │ │ │ ├── Table.vue
│ │ │ │ └── user.vue
│ │ │ ├── nav2
│ │ │ │ ├── Page4.vue
│ │ │ │ └── Page5.vue
│ │ │ ├── nav3
│ │ │ │ └── Page6.vue
│ │ │ └── sys
│ │ │ │ ├── AccessMon.vue
│ │ │ │ ├── Bridge.vue
│ │ │ │ ├── DataMon.vue
│ │ │ │ ├── Log.vue
│ │ │ │ ├── Menu.vue
│ │ │ │ ├── Permission.vue
│ │ │ │ └── User.vue
│ │ ├── index.js
│ │ └── router
│ │ │ └── index.js
│ ├── error.html
│ ├── index.html
│ └── test
│ │ ├── App.vue
│ │ ├── components
│ │ └── HelloWorld.vue
│ │ ├── main.js
│ │ └── router
│ │ └── index.js
└── vuex
│ ├── actions.js
│ ├── getters.js
│ └── store.js
└── static
└── .gitkeep
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "modules": false,
5 | "targets": {
6 | "browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
7 | }
8 | }],
9 | "stage-2"
10 | ],
11 | "plugins": ["transform-vue-jsx", "transform-runtime"]
12 | }
13 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/.eslintignore:
--------------------------------------------------------------------------------
1 | /build/
2 | /config/
3 | /dist/
4 | /*.js
5 |
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | // https://eslint.org/docs/user-guide/configuring
2 |
3 | module.exports = {
4 | root: true,
5 | parserOptions: {
6 | parser: 'babel-eslint'
7 | },
8 | env: {
9 | browser: true,
10 | },
11 | extends: [
12 | // https://github.com/vuejs/eslint-plugin-vue#priority-a-essential-error-prevention
13 | // consider switching to `plugin:vue/strongly-recommended` or `plugin:vue/recommended` for stricter rules.
14 | 'plugin:vue/essential',
15 | // https://github.com/standard/standard/blob/master/docs/RULES-en.md
16 | 'standard'
17 | ],
18 | // required to lint *.vue files
19 | plugins: [
20 | 'vue'
21 | ],
22 | // add your custom rules here
23 | rules: {
24 | // allow async-await
25 | 'generator-star-spacing': 'off',
26 | // allow debugger during development
27 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.css linguist-language=vue
2 | *.html linguist-language=vue
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | #/dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Editor directories and files
9 | .idea
10 | .vscode
11 | *.suo
12 | *.ntvs*
13 | *.njsproj
14 | *.sln
15 |
--------------------------------------------------------------------------------
/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | "postcss-import": {},
6 | "postcss-url": {},
7 | // to edit target browsers: use "browserslist" field in package.json
8 | "autoprefixer": {}
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # To start
2 | This is a project template for [vue-cli](https://github.com/vuejs/vue-cli)
3 |
4 | 本系统采用多页面方式(每个页面是个独立SPA) 整合多个子系统系统。
5 |
6 | * 测试环境
7 | ``` bash
8 | # run server-side
9 | npm run server
10 |
11 | # run client-side
12 | npm run dev-client
13 |
14 |
15 | ```
16 |
17 | * 生产环境
18 | ```bash
19 | # install dependencies
20 | npm install
21 |
22 | # build for production with minification
23 | npm run build
24 |
25 | # run
26 | npm run server
27 |
28 | ```
29 |
30 |
31 |
32 | # 文件结构
33 | ```
34 | |--server - 服务端(提供API服务和生产环境的web服务)
35 | |--build - 构建
36 | |--dist - 构建结果目录
37 | |--config - 系统配置
38 | | |--dev.env.js
39 | | |--index.js
40 | | |--prod.env.js
41 | |--models - 数据库模型文件
42 | |--src - 客户端目录
43 | | |--api - 外部api
44 | | |--assets - 资产目录
45 | | |--images - 图片
46 | | |--js - js
47 | | |--sytels - 样式
48 | | |--uploads - 上传
49 | | |--views - 视图
50 | | |--router - 客户端路由
51 | | |--vuex - 状态
52 | |--packga.json - 项目信息
53 | |--index.html - 模板html
54 |
55 | ```
56 |
57 |
58 |
59 |
--------------------------------------------------------------------------------
/build/build.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | require('./check-versions')()
3 |
4 | process.env.NODE_ENV = 'production'
5 |
6 | const ora = require('ora')
7 | const rm = require('rimraf')
8 | const path = require('path')
9 | const chalk = require('chalk')
10 | const webpack = require('webpack')
11 | const config = require('../config')
12 | const webpackConfig = require('./webpack.prod.conf')
13 |
14 | const spinner = ora('building for production...')
15 | spinner.start()
16 |
17 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
18 | if (err) throw err
19 | webpack(webpackConfig, (err, stats) => {
20 | spinner.stop()
21 | if (err) throw err
22 | process.stdout.write(stats.toString({
23 | colors: true,
24 | modules: false,
25 | children: false, // If you are using ts-loader, setting this to true will make TypeScript errors show up during build.
26 | chunks: false,
27 | chunkModules: false
28 | }) + '\n\n')
29 |
30 | if (stats.hasErrors()) {
31 | console.log(chalk.red(' Build failed with errors.\n'))
32 | process.exit(1)
33 | }
34 |
35 | console.log(chalk.cyan(' Build complete.\n'))
36 | console.log(chalk.yellow(
37 | ' Tip: built files are meant to be served over an HTTP server.\n' +
38 | ' Opening index.html over file:// won\'t work.\n'
39 | ))
40 | })
41 | })
42 |
--------------------------------------------------------------------------------
/build/check-versions.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const chalk = require('chalk')
3 | const semver = require('semver')
4 | const packageConfig = require('../package.json')
5 | const shell = require('shelljs')
6 |
7 | function exec (cmd) {
8 | return require('child_process').execSync(cmd).toString().trim()
9 | }
10 |
11 | const versionRequirements = [
12 | {
13 | name: 'node',
14 | currentVersion: semver.clean(process.version),
15 | versionRequirement: packageConfig.engines.node
16 | }
17 | ]
18 |
19 | if (shell.which('npm')) {
20 | versionRequirements.push({
21 | name: 'npm',
22 | currentVersion: exec('npm --version'),
23 | versionRequirement: packageConfig.engines.npm
24 | })
25 | }
26 |
27 | module.exports = function () {
28 | const warnings = []
29 |
30 | for (let i = 0; i < versionRequirements.length; i++) {
31 | const mod = versionRequirements[i]
32 |
33 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
34 | warnings.push(mod.name + ': ' +
35 | chalk.red(mod.currentVersion) + ' should be ' +
36 | chalk.green(mod.versionRequirement)
37 | )
38 | }
39 | }
40 |
41 | if (warnings.length) {
42 | console.log('')
43 | console.log(chalk.yellow('To use this template, you must update following to modules:'))
44 | console.log()
45 |
46 | for (let i = 0; i < warnings.length; i++) {
47 | const warning = warnings[i]
48 | console.log(' ' + warning)
49 | }
50 |
51 | console.log()
52 | process.exit(1)
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/build/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/build/logo.png
--------------------------------------------------------------------------------
/build/utils.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const path = require('path')
3 | const config = require('../config')
4 | const ExtractTextPlugin = require('extract-text-webpack-plugin')
5 | const packageConfig = require('../package.json')
6 |
7 | exports.assetsPath = function (_path) {
8 | const assetsSubDirectory = process.env.NODE_ENV === 'production'
9 | ? config.build.assetsSubDirectory
10 | : config.dev.assetsSubDirectory
11 |
12 | return path.posix.join(assetsSubDirectory, _path)
13 | }
14 |
15 | exports.cssLoaders = function (options) {
16 | options = options || {}
17 |
18 | const cssLoader = {
19 | loader: 'css-loader',
20 | options: {
21 | sourceMap: options.sourceMap
22 | }
23 | }
24 |
25 | const postcssLoader = {
26 | loader: 'postcss-loader',
27 | options: {
28 | sourceMap: options.sourceMap
29 | }
30 | }
31 |
32 | // generate loader string to be used with extract text plugin
33 | function generateLoaders (loader, loaderOptions) {
34 | const loaders = options.usePostCSS ? [cssLoader, postcssLoader] : [cssLoader]
35 |
36 | if (loader) {
37 | loaders.push({
38 | loader: loader + '-loader',
39 | options: Object.assign({}, loaderOptions, {
40 | sourceMap: options.sourceMap
41 | })
42 | })
43 | }
44 |
45 | // Extract CSS when that option is specified
46 | // (which is the case during production build)
47 | if (options.extract) {
48 | return ExtractTextPlugin.extract({
49 | use: loaders,
50 | fallback: 'vue-style-loader'
51 | })
52 | } else {
53 | return ['vue-style-loader'].concat(loaders)
54 | }
55 | }
56 |
57 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html
58 | return {
59 | css: generateLoaders(),
60 | postcss: generateLoaders(),
61 | less: generateLoaders('less'),
62 | sass: generateLoaders('sass', { indentedSyntax: true }),
63 | scss: generateLoaders('sass'),
64 | stylus: generateLoaders('stylus'),
65 | styl: generateLoaders('stylus')
66 | }
67 | }
68 |
69 | // Generate loaders for standalone style files (outside of .vue)
70 | exports.styleLoaders = function (options) {
71 | const output = []
72 | const loaders = exports.cssLoaders(options)
73 |
74 | for (const extension in loaders) {
75 | const loader = loaders[extension]
76 | output.push({
77 | test: new RegExp('\\.' + extension + '$'),
78 | use: loader
79 | })
80 | }
81 |
82 | return output
83 | }
84 |
85 | exports.createNotifierCallback = () => {
86 | const notifier = require('node-notifier')
87 |
88 | return (severity, errors) => {
89 | if (severity !== 'error') return
90 |
91 | const error = errors[0]
92 | const filename = error.file && error.file.split('!').pop()
93 |
94 | notifier.notify({
95 | title: packageConfig.name,
96 | message: severity + ': ' + error.name,
97 | subtitle: filename || '',
98 | icon: path.join(__dirname, 'logo.png')
99 | })
100 | }
101 | }
102 |
--------------------------------------------------------------------------------
/build/vue-loader.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const utils = require('./utils')
3 | const config = require('../config')
4 | const isProduction = process.env.NODE_ENV === 'production'
5 | const sourceMapEnabled = isProduction
6 | ? config.build.productionSourceMap
7 | : config.dev.cssSourceMap
8 |
9 | module.exports = {
10 | loaders: utils.cssLoaders({
11 | sourceMap: sourceMapEnabled,
12 | extract: isProduction
13 | }),
14 | cssSourceMap: sourceMapEnabled,
15 | cacheBusting: config.dev.cacheBusting,
16 | transformToRequire: {
17 | video: ['src', 'poster'],
18 | source: 'src',
19 | img: 'src',
20 | image: 'xlink:href'
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/build/webpack.base.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const path = require('path')
3 | const utils = require('./utils')
4 | const config = require('../config')
5 | const vueLoaderConfig = require('./vue-loader.conf')
6 |
7 | function resolve (dir) {
8 | return path.join(__dirname, '..', dir)
9 | }
10 |
11 | const createLintingRule = () => ({
12 | test: /\.(js|vue)$/,
13 | loader: 'eslint-loader',
14 | enforce: 'pre',
15 | include: [resolve('src'), resolve('test')],
16 | options: {
17 | formatter: require('eslint-friendly-formatter'),
18 | emitWarning: !config.dev.showEslintErrorsInOverlay
19 | }
20 | })
21 |
22 | module.exports = {
23 | context: path.resolve(__dirname, '../'),
24 | entry: {
25 | test:'./src/views/test/main.js',
26 | demo:'./src/views/demo/index.js',
27 | blog:'./src/views/blog/index.js',
28 | blogadmin:'./src/views/blogadmin/index.js'
29 | },
30 | output: {
31 | path: config.build.assetsRoot,
32 | filename: '[name].js',
33 | publicPath: process.env.NODE_ENV === 'production'
34 | ? config.build.assetsPublicPath
35 | : config.dev.assetsPublicPath
36 | },
37 | resolve: {
38 | extensions: ['.js', '.vue', '.json','.css'],
39 | alias: {
40 | 'vue$': 'vue/dist/vue.esm.js',
41 | '@': resolve('src'),
42 | 'scss_vars': '@/styles/vars.scss'
43 | }
44 | },
45 | module: {
46 | rules: [
47 | ...(config.dev.useEslint ? [createLintingRule()] : []),
48 | {
49 | test: /\.vue$/,
50 | loader: 'vue-loader',
51 | options: vueLoaderConfig
52 | },
53 | {
54 | test: /\.js$/,
55 | loader: 'babel-loader',
56 | include: [resolve('src'), resolve('test'), resolve('node_modules/webpack-dev-server/client')]
57 | },
58 | {
59 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
60 | loader: 'url-loader',
61 | options: {
62 | limit: 10000,
63 | name: utils.assetsPath('img/[name].[hash:7].[ext]')
64 | }
65 | },
66 | {
67 | test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
68 | loader: 'url-loader',
69 | options: {
70 | limit: 10000,
71 | name: utils.assetsPath('media/[name].[hash:7].[ext]')
72 | }
73 | },
74 | {
75 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
76 | loader: 'url-loader',
77 | options: {
78 | limit: 10000,
79 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]')
80 | }
81 | }
82 | ]
83 | },
84 | node: {
85 | // prevent webpack from injecting useless setImmediate polyfill because Vue
86 | // source contains it (although only uses it if it's native).
87 | setImmediate: false,
88 | // prevent webpack from injecting mocks to Node native modules
89 | // that does not make sense for the client
90 | dgram: 'empty',
91 | fs: 'empty',
92 | net: 'empty',
93 | tls: 'empty',
94 | child_process: 'empty'
95 | }
96 | }
97 |
--------------------------------------------------------------------------------
/config/dev.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const merge = require('webpack-merge')
3 | const prodEnv = require('./prod.env')
4 |
5 | module.exports = merge(prodEnv, {
6 | NODE_ENV: '"development"'
7 | })
8 |
--------------------------------------------------------------------------------
/config/index.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | // Template version: 1.3.1
3 | // see http://vuejs-templates.github.io/webpack for documentation.
4 |
5 | const path = require('path')
6 |
7 | module.exports = {
8 | server:{
9 | port:3001,
10 | mongodb: 'mongodb://192.168.1.16/tm-blog',
11 | },
12 | dev: {
13 |
14 | // Paths
15 | assetsSubDirectory: 'static',
16 | assetsPublicPath: '/',
17 | proxyTable: {
18 | '/api/*':{
19 | target: 'http://127.0.0.1:3001',
20 | },
21 | },
22 |
23 | // Various Dev Server settings
24 | host: 'localhost', // can be overwritten by process.env.HOST
25 | port: 3000, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
26 | autoOpenBrowser: false,
27 | errorOverlay: true,
28 | notifyOnErrors: true,
29 | poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-
30 |
31 | // Use Eslint Loader?
32 | // If true, your code will be linted during bundling and
33 | // linting errors and warnings will be shown in the console.
34 | useEslint: false,
35 | // If true, eslint errors and warnings will also be shown in the error overlay
36 | // in the browser.
37 | showEslintErrorsInOverlay: false,
38 |
39 | /**
40 | * Source Maps
41 | */
42 |
43 | // https://webpack.js.org/configuration/devtool/#development
44 | devtool: 'cheap-module-eval-source-map',
45 |
46 | // If you have problems debugging vue-files in devtools,
47 | // set this to false - it *may* help
48 | // https://vue-loader.vuejs.org/en/options.html#cachebusting
49 | cacheBusting: true,
50 |
51 | cssSourceMap: true
52 | },
53 |
54 | build: {
55 | // Template for index.html
56 | index: path.resolve(__dirname, '../dist/index.html'),
57 |
58 | // Paths
59 | assetsRoot: path.resolve(__dirname, '../dist'),
60 | assetsSubDirectory: 'static',
61 | assetsPublicPath: '/',
62 |
63 | /**
64 | * Source Maps
65 | */
66 |
67 | productionSourceMap: true,
68 | // https://webpack.js.org/configuration/devtool/#production
69 | devtool: '#source-map',
70 |
71 | // Gzip off by default as many popular static hosts such as
72 | // Surge or Netlify already gzip all static assets for you.
73 | // Before setting to `true`, make sure to:
74 | // npm install --save-dev compression-webpack-plugin
75 | productionGzip: false,
76 | productionGzipExtensions: ['js', 'css'],
77 |
78 | // Run the build command with an extra argument to
79 | // View the bundle analyzer report after build finishes:
80 | // `npm run build --report`
81 | // Set to `true` or `false` to always turn it on or off
82 | bundleAnalyzerReport: process.env.npm_config_report
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/config/prod.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = {
3 | NODE_ENV: '"production"'
4 | }
5 |
--------------------------------------------------------------------------------
/dist/blog.html:
--------------------------------------------------------------------------------
1 |
blog
--------------------------------------------------------------------------------
/dist/blogadmin.html:
--------------------------------------------------------------------------------
1 | blogadmin
--------------------------------------------------------------------------------
/dist/demo.html:
--------------------------------------------------------------------------------
1 | demo
--------------------------------------------------------------------------------
/dist/index.html:
--------------------------------------------------------------------------------
1 | Webpack App
--------------------------------------------------------------------------------
/dist/static/css/test.ca5e6e05b6084173f88cf3e1a20ca3b5.css:
--------------------------------------------------------------------------------
1 | #app{font-family:Avenir,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;color:#2c3e50;margin-top:60px}h1[data-v-3fccdafc],h2[data-v-3fccdafc]{font-weight:400}ul[data-v-3fccdafc]{list-style-type:none;padding:0}li[data-v-3fccdafc]{display:inline-block;margin:0 10px}a[data-v-3fccdafc]{color:#42b983}
2 | /*# sourceMappingURL=test.ca5e6e05b6084173f88cf3e1a20ca3b5.css.map */
--------------------------------------------------------------------------------
/dist/static/css/test.ca5e6e05b6084173f88cf3e1a20ca3b5.css.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["test.ca5e6e05b6084173f88cf3e1a20ca3b5.css"],"names":[],"mappings":"AACA,KACE,8CAAoD,AACpD,mCAAoC,AACpC,kCAAmC,AACnC,kBAAmB,AACnB,cAAe,AACf,eAAiB,CAClB,AAED,wCACE,eAAoB,CACrB,AACD,oBACE,qBAAsB,AACtB,SAAW,CACZ,AACD,oBACE,qBAAsB,AACtB,aAAe,CAChB,AACD,mBACE,aAAe,CAChB","file":"test.ca5e6e05b6084173f88cf3e1a20ca3b5.css","sourcesContent":["\n#app {\n font-family: 'Avenir', Helvetica, Arial, sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n text-align: center;\n color: #2c3e50;\n margin-top: 60px;\n}\n\nh1[data-v-3fccdafc], h2[data-v-3fccdafc] {\n font-weight: normal;\n}\nul[data-v-3fccdafc] {\n list-style-type: none;\n padding: 0;\n}\nli[data-v-3fccdafc] {\n display: inline-block;\n margin: 0 10px;\n}\na[data-v-3fccdafc] {\n color: #42b983;\n}\n"]}
--------------------------------------------------------------------------------
/dist/static/fonts/element-icons.6f0a763.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/dist/static/fonts/element-icons.6f0a763.ttf
--------------------------------------------------------------------------------
/dist/static/fonts/fontawesome-webfont.674f50d.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/dist/static/fonts/fontawesome-webfont.674f50d.eot
--------------------------------------------------------------------------------
/dist/static/fonts/fontawesome-webfont.af7ae50.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/dist/static/fonts/fontawesome-webfont.af7ae50.woff2
--------------------------------------------------------------------------------
/dist/static/fonts/fontawesome-webfont.b06871f.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/dist/static/fonts/fontawesome-webfont.b06871f.ttf
--------------------------------------------------------------------------------
/dist/static/fonts/fontawesome-webfont.fee66e7.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/dist/static/fonts/fontawesome-webfont.fee66e7.woff
--------------------------------------------------------------------------------
/dist/static/fonts/fontello.068ca2b.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/dist/static/fonts/fontello.068ca2b.ttf
--------------------------------------------------------------------------------
/dist/static/fonts/fontello.e73a064.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/dist/static/fonts/fontello.e73a064.eot
--------------------------------------------------------------------------------
/dist/static/img/dahai.8ec2694.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/dist/static/img/dahai.8ec2694.jpg
--------------------------------------------------------------------------------
/dist/static/img/dq.300298b.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/dist/static/img/dq.300298b.jpg
--------------------------------------------------------------------------------
/dist/static/js/6.af307ff456dbfe28fccc.js:
--------------------------------------------------------------------------------
1 | webpackJsonp([6],{aMlH:function(t,e){},yAjE:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=i("mtWM"),n=i.n(a),s={data:function(){return{value:"",content:"",visible2:!1}},mounted:function(){this.getValue()},methods:{getContent:function(t,e){this.content=t},imgAdd:function(t,e){var i=this;(new FormData).append("image",e),n.a.post("/api/imgAdd",{image:e}).then(function(e){i.$refs.md.$img2Url(t,e.data)})},getValue:function(){var t=this,e={articleId:this.$route.query.articleId};n.a.get("/api/articleDetial",{params:e}).then(function(e){var i=e.data;"0"==i.status?t.value=i.result.content:t.value=""})},modifyArticle:function(){var t=this,e=this.$route.query.articleId;n.a.post("/api/articleModify",{articleId:e,content:this.content}).then(function(e){"0"==e.data.status?(t.$message({type:"success",message:"文章已修改"}),t.visible2=!1):t.$message.error("未修改")})}}},o={render:function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"admin-container"},[i("mavon-editor",{ref:"md",staticClass:"set",attrs:{ishljs:!0},on:{imgAdd:t.imgAdd,change:t.getContent},model:{value:t.value,callback:function(e){t.value=e},expression:"value"}}),t._v(" "),i("div",{staticClass:"footer"},[i("el-popover",{ref:"popover5",attrs:{placement:"top",width:"160"},model:{value:t.visible2,callback:function(e){t.visible2=e},expression:"visible2"}},[i("p",[t._v("确定提交吗?")]),t._v(" "),i("div",{staticStyle:{"text-align":"right",margin:"0"}},[i("el-button",{attrs:{size:"mini",type:"text"},on:{click:function(e){t.visible2=!1}}},[t._v("取消")]),t._v(" "),i("el-button",{attrs:{type:"primary",size:"mini"},on:{click:t.modifyArticle}},[t._v("确定")])],1)]),t._v(" "),i("el-button",{directives:[{name:"popover",rawName:"v-popover:popover5",arg:"popover5"}],staticClass:"submit"},[t._v("修改")]),t._v(" "),i("div",{staticClass:"left"},[i("el-button",[t._v("修改信息")]),t._v(" "),i("el-button",[t._v("修改分类")])],1)],1)],1)},staticRenderFns:[]};var r=i("VU/8")(s,o,!1,function(t){i("aMlH")},null,null);e.default=r.exports}});
2 | //# sourceMappingURL=6.af307ff456dbfe28fccc.js.map
--------------------------------------------------------------------------------
/dist/static/js/8.9c254b1a97383e9c1acd.js:
--------------------------------------------------------------------------------
1 | webpackJsonp([8],{"+dWO":function(t,e){},Bfhk:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var s={data:function(){return{isCollapse:!1}},watch:{$route:"checkLogin"},created:function(){this.checkLogin()},methods:{collapse:function(){this.isCollapse=!this.isCollapse},checkLogin:function(){sessionStorage.getItem("user")||this.$router.push("/login")},logout:function(){sessionStorage.removeItem("user"),this.$router.push("/login")}}},a={render:function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{attrs:{id:"app"}},[i("el-row",[i("el-menu",{staticClass:"el-menu",attrs:{theme:"dark","default-active":t.$router.path,mode:"horizontal",router:!1}},[i("el-menu-item",{attrs:{index:"1"},on:{click:t.collapse}},[t._v("管理系统")]),t._v(" "),i("el-submenu",{attrs:{index:"2"}},[i("template",{slot:"title"},[t._v("我的工作台")]),t._v(" "),i("el-menu-item",{attrs:{index:"2-1"}},[t._v("选项1")]),t._v(" "),i("el-menu-item",{attrs:{index:"2-2"}},[t._v("选项2")]),t._v(" "),i("el-menu-item",{attrs:{index:"2-3"}},[t._v("选项3")])],2),t._v(" "),i("el-menu-item",{attrs:{index:"3"}},[i("a",{attrs:{href:"https://www.baidu.com",target:"_blank"}},[t._v("baiu")])]),t._v(" "),i("el-menu-item",{attrs:{index:"4"}},[i("a",{attrs:{href:"javascript:;"},on:{click:t.logout}},[t._v("退出")])])],1)],1),t._v(" "),i("el-row",{attrs:{type:"flex"}},[i("el-menu",{attrs:{"default-active":t.$router.index,router:!0,mode:"vertical",collapse:t.isCollapse}},[i("el-menu-item",{attrs:{index:"/admin/adminArticleList"}},[i("i",{staticClass:"el-icon-menu"}),t._v(" "),i("span",{attrs:{slot:"title"},slot:"title"},[t._v("文章列表")])]),t._v(" "),i("el-menu-item",{attrs:{index:"/admin/adminArticle"}},[i("i",{staticClass:"el-icon-setting"}),t._v(" "),i("span",{attrs:{slot:"title"},slot:"title"},[t._v("新建文章")])])],1),t._v(" "),i("el-col",{staticClass:"row-bg",attrs:{span:24}},[i("transition",{attrs:{name:"fade",mode:"out-in"}},[i("router-view")],1)],1)],1)],1)},staticRenderFns:[]};var n=i("VU/8")(s,a,!1,function(t){i("+dWO")},null,null);e.default=n.exports}});
2 | //# sourceMappingURL=8.9c254b1a97383e9c1acd.js.map
--------------------------------------------------------------------------------
/dist/static/js/9.a6eca05e6f7b77ec8d5d.js:
--------------------------------------------------------------------------------
1 | webpackJsonp([9],{"218W":function(t,e,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=a("mtWM"),l=a.n(n),i={data:function(){return{pageSize:20,page:1,tableData:[]}},methods:{init:function(){var t=this,e={page:this.page,pageSize:this.pageSize};l.a.get("/api/articleList_admin",{params:e}).then(function(e){var a=e.data;"0"==a.status?t.tableData=a.result.list:t.tableData=[]})},handleDelete:function(t){var e=this,a=this.tableData[t].articleId;this.$confirm("将删除该文章, 是否继续?","警告",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(function(){l.a.post("/api/articleDelete",{articleId:a}).then(function(t){"0"==t.data.status?(e.$message({type:"success",message:"文章已删除"}),e.init()):e.$message.error("未删除成功")})})},handle:function(t){var e=this.tableData[t].articleId;this.$router.push({path:"/admin/adminChange",query:{articleId:e}})}},mounted:function(){this.init()}},r={render:function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",[a("el-table",{staticStyle:{width:"100%"},attrs:{data:t.tableData,border:"","default-sort":{prop:"date",order:"descending"}}},[a("el-table-column",{attrs:{prop:"articleId",label:"编号",sortable:"",width:"150"}}),t._v(" "),a("el-table-column",{attrs:{prop:"title",label:"标题",width:"90"}}),t._v(" "),a("el-table-column",{attrs:{prop:"describtion",label:"描述",width:"150"}}),t._v(" "),a("el-table-column",{attrs:{prop:"tag",label:"标签",width:"70"}}),t._v(" "),a("el-table-column",{attrs:{prop:"createDate",label:"发布时间",width:"180"}}),t._v(" "),a("el-table-column",{attrs:{prop:"content",label:"摘要"}}),t._v(" "),a("el-table-column",{attrs:{label:"操作",width:"210"},scopedSlots:t._u([{key:"default",fn:function(e){return[a("el-button",{attrs:{type:"info",size:"small"},on:{click:function(a){t.handle(e.$index,e.row)}}},[t._v("查看/编辑\n ")]),t._v(" "),a("el-button",{attrs:{type:"danger",size:"small"},on:{click:function(a){t.handleDelete(e.$index,e.row)}}},[t._v("删除\n ")])]}}])})],1)],1)},staticRenderFns:[]};var s=a("VU/8")(i,r,!1,function(t){a("z/Ah")},null,null);e.default=s.exports},"z/Ah":function(t,e){}});
2 | //# sourceMappingURL=9.a6eca05e6f7b77ec8d5d.js.map
--------------------------------------------------------------------------------
/dist/static/js/blog.faaefe1c9142e1178169.js:
--------------------------------------------------------------------------------
1 | webpackJsonp([13],{"57cR":function(t,n){},"6TR5":function(t,n){},OsYA:function(t,n){},PIDi:function(t,n,e){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=e("7+uW"),u={render:function(){var t=this.$createElement,n=this._self._c||t;return n("div",{attrs:{id:"app"}},[n("router-view")],1)},staticRenderFns:[]};var c=e("VU/8")({name:"app"},u,!1,function(t){e("6TR5")},null,null).exports,i=e("zL8q"),a=e.n(i),r=(e("tvR6"),e("e0XP"),e("YtJ0")),f=(e("NYxO"),e("/ocq"));o.default.use(f.a);var s=new f.a({mode:"history",base:"/blog",routes:[{path:"/",name:"Blog",component:function(t){return e.e(1).then(function(){var n=[e("Aqrg")];t.apply(null,n)}.bind(this)).catch(e.oe)}},{path:"/about",name:"About",component:function(t){return e.e(4).then(function(){var n=[e("zfu0")];t.apply(null,n)}.bind(this)).catch(e.oe)}},{path:"/test",name:"Test",component:function(t){return e.e(2).then(function(){var n=[e("tOul")];t.apply(null,n)}.bind(this)).catch(e.oe)}},{path:"/article",name:"Article",component:function(t){return e.e(0).then(function(){var n=[e("Gj8k")];t.apply(null,n)}.bind(this)).catch(e.oe)}},{path:"/messages",name:"Messages",component:function(t){return e.e(3).then(function(){var n=[e("a2TI")];t.apply(null,n)}.bind(this)).catch(e.oe)}}]}),p=e("OS1Z"),l=e.n(p);e("pw1w"),e("ZRBX"),e("OsYA"),e("muqA"),e("TB7q"),e("57cR");function d(t){var n,e=new RegExp("(^| )"+t+"=([^;]*)(;|$)");return(n=document.cookie.match(e))?n[2]:null}o.default.use(a.a),o.default.use(l.a),o.default.prototype.setCookie=function(t,n,e){var o=new Date;o.setDate(o.getDate()+e),document.cookie=t+"="+escape(n)+(null==e?"":";expires="+o.toGMTString())},o.default.prototype.setCookie=function(t,n,e){var o=new Date;o.setDate(o.getDate()+e),document.cookie=t+"="+escape(n)+(null==e?"":";expires="+o.toGMTString())},o.default.prototype.getCookie=d,o.default.prototype.delCookie=function(t){var n=new Date;n.setTime(n.getTime()-1);var e=d(t);null!=e&&(document.cookie=t+"="+e+";expires="+n.toGMTString())},o.default.config.productionTip=!1,new o.default({router:s,store:r.a,render:function(t){return t(c)}}).$mount("#app")},TB7q:function(t,n){},YtJ0:function(t,n,e){"use strict";var o={};e.d(o,"increment",function(){return a}),e.d(o,"decrement",function(){return r});var u={};e.d(u,"getCount",function(){return f});var c=e("7+uW"),i=e("NYxO"),a=function(t){(0,t.commit)("INCREMENT")},r=function(t){(0,t.commit)("DECREMENT")},f=function(t){return t.count};c.default.use(i.a);n.a=new i.a.Store({actions:o,getters:u,state:{count:10},mutations:{INCREMENT:function(t){t.count++},DECREMENT:function(t){t.count--}}})},ZRBX:function(t,n){},e0XP:function(t,n){},muqA:function(t,n){},pw1w:function(t,n){},tvR6:function(t,n){}},["PIDi"]);
2 | //# sourceMappingURL=blog.faaefe1c9142e1178169.js.map
--------------------------------------------------------------------------------
/dist/static/js/blogadmin.16387c43da20612153c5.js:
--------------------------------------------------------------------------------
1 | webpackJsonp([12],{"57cR":function(n,t){},H4UM:function(n,t){},OsYA:function(n,t){},TB7q:function(n,t){},YtJ0:function(n,t,e){"use strict";var o={};e.d(o,"increment",function(){return c}),e.d(o,"decrement",function(){return r});var i={};e.d(i,"getCount",function(){return f});var u=e("7+uW"),a=e("NYxO"),c=function(n){(0,n.commit)("INCREMENT")},r=function(n){(0,n.commit)("DECREMENT")},f=function(n){return n.count};u.default.use(a.a);t.a=new a.a.Store({actions:o,getters:i,state:{count:10},mutations:{INCREMENT:function(n){n.count++},DECREMENT:function(n){n.count--}}})},ZRBX:function(n,t){},e0XP:function(n,t){},muqA:function(n,t){},pw1w:function(n,t){},tvR6:function(n,t){},wJBr:function(n,t,e){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var o=e("7+uW"),i={render:function(){var n=this.$createElement,t=this._self._c||n;return t("div",{attrs:{id:"app"}},[t("router-view")],1)},staticRenderFns:[]};var u=e("VU/8")({name:"app"},i,!1,function(n){e("H4UM")},null,null).exports,a=e("zL8q"),c=e.n(a),r=(e("tvR6"),e("e0XP"),e("YtJ0")),f=(e("NYxO"),e("/ocq"));o.default.use(f.a);var l=new f.a({mode:"history",base:"/blogadmin",routes:[{path:"/",name:"Admin",component:function(n){return e.e(8).then(function(){var t=[e("Bfhk")];n.apply(null,t)}.bind(this)).catch(e.oe)},redirect:{name:"adminArticle"},children:[{path:"/admin/adminArticle",component:function(n){return e.e(7).then(function(){var t=[e("9FpE")];n.apply(null,t)}.bind(this)).catch(e.oe)},name:"adminArticle"},{path:"/admin/adminChange",component:function(n){return e.e(6).then(function(){var t=[e("yAjE")];n.apply(null,t)}.bind(this)).catch(e.oe)},name:"adminChange"},{path:"/admin/adminArticleList",component:function(n){return e.e(9).then(function(){var t=[e("218W")];n.apply(null,t)}.bind(this)).catch(e.oe)},name:"adminArticleList"}]},{path:"/login",name:"Login",component:function(n){return e.e(5).then(function(){var t=[e("OC6a")];n.apply(null,t)}.bind(this)).catch(e.oe)}}]}),p=e("OS1Z"),d=e.n(p);e("pw1w"),e("ZRBX"),e("OsYA"),e("muqA"),e("TB7q"),e("57cR");function s(n){var t,e=new RegExp("(^| )"+n+"=([^;]*)(;|$)");return(t=document.cookie.match(e))?t[2]:null}o.default.use(c.a),o.default.use(d.a),o.default.prototype.setCookie=function(n,t,e){var o=new Date;o.setDate(o.getDate()+e),document.cookie=n+"="+escape(t)+(null==e?"":";expires="+o.toGMTString())},o.default.prototype.setCookie=function(n,t,e){var o=new Date;o.setDate(o.getDate()+e),document.cookie=n+"="+escape(t)+(null==e?"":";expires="+o.toGMTString())},o.default.prototype.getCookie=s,o.default.prototype.delCookie=function(n){var t=new Date;t.setTime(t.getTime()-1);var e=s(n);null!=e&&(document.cookie=n+"="+e+";expires="+t.toGMTString())},o.default.config.productionTip=!1,new o.default({router:l,store:r.a,render:function(n){return n(u)}}).$mount("#app")}},["wJBr"]);
2 | //# sourceMappingURL=blogadmin.16387c43da20612153c5.js.map
--------------------------------------------------------------------------------
/dist/static/js/manifest.0098f8ac3d0979b71c7d.js:
--------------------------------------------------------------------------------
1 | !function(e){var n=window.webpackJsonp;window.webpackJsonp=function(r,c,a){for(var f,i,u,s=0,d=[];sWebpack App
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | <%= htmlWebpackPlugin.options.title %>
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/multiSpa.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/server/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/server/favicon.ico
--------------------------------------------------------------------------------
/server/init.js:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/server/models/blog/articles.js:
--------------------------------------------------------------------------------
1 | var mongoose = require('mongoose')
2 | var schema = mongoose.Schema
3 |
4 | var articleSchema = new schema({
5 | "articleId": String,
6 | "title": String,
7 | "tag": String,
8 | "describtion": String,
9 | "createDate": String,
10 | "content": String,
11 | "comment": [
12 | {
13 | "name": String,
14 | "email": String,
15 | "content": String,
16 | "dateTime": String,
17 | "comment_response": [
18 | {
19 | "response_name": String,
20 | "response_email": String,
21 | "response_content": String,
22 | "response_dateTime": String
23 | }
24 | ]
25 | }
26 | ]
27 | })
28 |
29 | module.exports = mongoose.model('Article', articleSchema)
30 |
--------------------------------------------------------------------------------
/server/models/blog/messages.js:
--------------------------------------------------------------------------------
1 | var mongoose = require('mongoose')
2 | var schema = mongoose.Schema
3 |
4 | var messageSchema = new schema({
5 | "messageId": String,
6 | "name": String,
7 | "email": String,
8 | "content": String,
9 | "createDate": String
10 | })
11 |
12 | module.exports = mongoose.model('Message', messageSchema)
13 |
--------------------------------------------------------------------------------
/server/models/blog/tags.js:
--------------------------------------------------------------------------------
1 | var mongoose = require('mongoose')
2 | var schema = mongoose.Schema
3 |
4 | var tagsSchema = new schema({
5 | "name": String,
6 | })
7 |
8 | module.exports = mongoose.model('Tag', tagsSchema)
9 |
--------------------------------------------------------------------------------
/server/models/blog/users.js:
--------------------------------------------------------------------------------
1 | var mongoose = require('mongoose')
2 | var schema = mongoose.Schema
3 |
4 | var userSchema = new schema({
5 | "userId": String,
6 | "account": String,
7 | "password": String
8 | })
9 |
10 | module.exports = mongoose.model('User', userSchema)
11 |
--------------------------------------------------------------------------------
/server/models/comment.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by harttle on 1/12/15.
3 | */
4 |
5 | var mongoose = require('mongoose');
6 | var Schema = mongoose.Schema;
7 |
8 | var CommentSchema = new Schema({
9 | content: {type: String, required: true},
10 | date: {type: Date, default:Date.now},
11 | author: {type: String, ref: 'User'}
12 | });
13 |
14 | module.exports = mongoose.model('Comment', CommentSchema);
--------------------------------------------------------------------------------
/server/models/post.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by harttle on 1/5/15.
3 | */
4 |
5 | var mongoose = require('mongoose');
6 | var Schema = mongoose.Schema;
7 |
8 | var PostSchema = new Schema({
9 | title: {type: String, required: true},
10 | content: String,
11 | date: {type: Date, default:Date.now},
12 | author: {type: String, ref: 'User'},
13 | comments: [{type: String, ref: 'Comment'}]
14 | });
15 |
16 | module.exports = mongoose.model('Post', PostSchema);
17 |
--------------------------------------------------------------------------------
/server/models/user.js:
--------------------------------------------------------------------------------
1 | var mongoose = require('mongoose');
2 | var Schema = mongoose.Schema;
3 | var passportLocalMongoose = require('passport-local-mongoose');
4 |
5 | var UserSchema = new Schema({
6 | username: String,
7 | password: String,
8 | isAdmin:{
9 | type:Boolean,
10 | default:false
11 | },
12 | avatar: {
13 | type: String,
14 | default: '/images/default-avatar.jpeg'
15 | },
16 | title: {
17 | type: String,
18 | default: '未命名博客'
19 | },
20 | description: {
21 | type: String,
22 | default: '博主很懒,还没有添加任何描述……'
23 | },
24 | active: {
25 | type: Boolean,
26 | default: false
27 | },
28 | activeToken: String,
29 | activeExpires: Date,
30 | resetPasswordToken: String,
31 | resetPasswordExpires: Date
32 | });
33 |
34 | // UserSchema.plugin(passportLocalMongoose, {
35 | // incorrectUsernameError: '用户名不正确',
36 | // incorrectPasswordError: '密码不正确',
37 | // userExistsError: '用户名已存在'
38 | // });
39 |
40 |
41 | // UserSchema.path('username').validate(function (email) {
42 | // var emailRegex = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
43 | // return emailRegex.test(email);
44 | // }, '用户名不是有效的电子邮件地址');
45 |
46 | module.exports = mongoose.model('User', UserSchema);
47 |
--------------------------------------------------------------------------------
/server/routes/index.js:
--------------------------------------------------------------------------------
1 | const articles = require('./articles')
2 | const messages = require('./messages')
3 | const admin = require('./admin')
4 | const config = require('../../config')
5 | const path = require('path')
6 |
7 | module.exports = (app) => {
8 | app.use(articles)
9 | app.use(messages)
10 | app.use(admin)
11 |
12 |
13 |
14 |
15 | app.use('/demo(/*)?', function (req, res) {
16 | console.log("/demo")
17 | res.sendFile(config.build.assetsRoot + '/demo.html')
18 | });
19 |
20 | app.use('/blog(/*)?', function (req, res) {
21 | console.log("/blog")
22 | res.sendFile(config.build.assetsRoot + '/blog.html')
23 | });
24 | app.use('/blogadmin(/*)?', function (req, res) {
25 | console.log("/blogadmin")
26 | res.sendFile(config.build.assetsRoot + '/blogadmin.html')
27 | });
28 |
29 | app.use('/test', function (req, res) {
30 | res.json({message: ' welcome to our api!'});
31 | });
32 |
33 |
34 |
35 | }
36 |
--------------------------------------------------------------------------------
/server/routes/messages.js:
--------------------------------------------------------------------------------
1 | require('./../utils/time')
2 | var express = require('express');
3 | var router = express.Router();
4 | var md5 = require('md5')
5 |
6 | var Message = require('./../models/blog/messages')
7 |
8 | // 发布留言
9 | router.post("/api/messageSub", function (req,res) {
10 | let name = req.body.name
11 | let email = req.body.email
12 | let content = req.body.content
13 |
14 | let random = Math.floor(Math.random()*10)
15 | let sysDate = new Date().Format('yyyMMddhhmmss')
16 | let createDate = new Date().Format('yyyy-MM-dd hh:mm:ss')
17 |
18 | let messageId = sysDate +random
19 |
20 | let message = {
21 | "messageId": messageId,
22 | "name": name,
23 | "email": email,
24 | "content": content,
25 | "createDate": createDate
26 | }
27 |
28 | Message.create(message, function (err,doc) {
29 | if (err) {
30 | res.json ({
31 | status: "1",
32 | msg: err.message,
33 | result:''
34 | })
35 | } else {
36 | res.json ({
37 | status: '0',
38 | msg: '',
39 | result: 'suc'
40 | })
41 | }
42 | })
43 | })
44 |
45 | // 获取留言列表
46 | router.get("/api/messageList", function (req,res) {
47 | let limit = parseInt(req.query.limit)
48 | Message.find().sort({_id:-1}).limit(limit).lean().exec( function (err,doc) {
49 | if (err) {
50 | res.json ({
51 | status: "1",
52 | msg: err.message,
53 | result:''
54 | })
55 | } else {
56 | doc.forEach(function (item) {
57 | item.email = md5(item.email)
58 | })
59 | res.json ({
60 | status: '0',
61 | msg: '',
62 | result: doc
63 | })
64 | }
65 | })
66 | })
67 | module.exports = router
68 |
--------------------------------------------------------------------------------
/server/server.js:
--------------------------------------------------------------------------------
1 | var express = require('express');
2 | var path = require('path');
3 | var favicon = require('serve-favicon');
4 | var logger = require('morgan');
5 | var cookieParser = require('cookie-parser');
6 | var bodyParser = require('body-parser');
7 | var session = require('express-session');
8 | var swig = require('swig');
9 | var multipart = require('connect-multiparty');
10 |
11 |
12 | var mongoose = require('mongoose');
13 | var config = require('../config');
14 |
15 |
16 | // mongoose setup
17 | mongoose.connect(config.server.mongodb);
18 | mongoose.connection.on("connected", function () {
19 | console.log("MongoDB connect " + config.server.mongodb + " success");
20 | });
21 | mongoose.connection.on("error", function (error) {
22 | console.log("MongoDB connect " + config.server.mongodb + " fail:" + error);
23 | });
24 | mongoose.connection.on("disconnected", function () {
25 | console.log("MongoDB connect disconnected");
26 | });
27 |
28 |
29 | // passport setup
30 | //passport.use(User.createStrategy());
31 | //passport.serializeUser(User.serializeUser());
32 | //passport.deserializeUser(User.deserializeUser());
33 |
34 |
35 | // 默认开发模式,生产模式待开发
36 | var app = express();
37 |
38 | app.get('/', function (req, res) {
39 | console.log("redirect to /blog")
40 | res.redirect('/blog')
41 | });
42 |
43 | app.set('port', config.server.port);
44 |
45 |
46 | app.use(logger('dev'));
47 | app.use(bodyParser.json({limit: '50mb'}));
48 | app.use(bodyParser.urlencoded({limit: '50mb', extended: false}));
49 | app.use(cookieParser());
50 | //app.use(favicon(__dirname + '/favicon.ico'));
51 |
52 | app.use(express.static(config.build.assetsRoot));
53 |
54 | // routes
55 |
56 | var route = require('./routes')
57 | route(app)
58 |
59 |
60 | console.log('> Starting multiSpa server...')
61 |
62 |
63 | app.listen(app.get('port'), function () {
64 | var uri = 'http://localhost:' + app.get('port')
65 | console.log('> Server Started at uri:' + uri);
66 | });
67 |
68 |
69 | var _resolve
70 | var readyPromise = new Promise(resolve => {
71 | _resolve = resolve
72 | })
73 | module.exports = {
74 | ready: readyPromise,
75 | close: () => {
76 | server.close()
77 | }
78 | }
79 |
80 |
81 |
--------------------------------------------------------------------------------
/server/static/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/server/static/.gitkeep
--------------------------------------------------------------------------------
/server/utils/auth-required.js:
--------------------------------------------------------------------------------
1 |
2 | module.exports = function (req, res, next) {
3 | if (req.user && req.user.active) return next();
4 |
5 | res.redirect('/account/login?next=' + req.originalUrl);
6 | };
7 |
--------------------------------------------------------------------------------
/server/utils/hbs-helper.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by harttle on 1/7/15.
3 | */
4 |
5 | module.exports = function(hbs) {
6 | hbs.registerHelper('detailDate', function(date, block) {
7 | return dateFormat(date, 'yyyy-MM-dd hh:mm:ss');
8 | });
9 |
10 | hbs.registerHelper('excerpt', mdExcerpt);
11 |
12 | hbs.registerHelper('equal', function(v1, v2, opts) {
13 | return v1 == v2 ? opts.fn(this) : opts.inverse(this);
14 | });
15 |
16 | hbs.registerHelper('unless', function(v1, opts) {
17 | return v1 ? opts.inverse(this) : opts.fn(this);
18 | });
19 | };
20 |
21 | function mdExcerpt(content) {
22 | var result = content.replace(/[#\(\)\[\]\n!`]+/g, ' ');
23 | if (result.length > 300) result = result.slice(0, 300) + '...';
24 | return result;
25 | }
26 |
27 | function dateFormat(datetime, format) {
28 | var date = {
29 | "M+": datetime.getMonth() + 1,
30 | "d+": datetime.getDate(),
31 | "h+": datetime.getHours(),
32 | "m+": datetime.getMinutes(),
33 | "s+": datetime.getSeconds(),
34 | "q+": Math.floor((datetime.getMonth() + 3) / 3),
35 | "S+": datetime.getMilliseconds()
36 | };
37 | if (/(y+)/i.test(format)) {
38 | format = format.replace(RegExp.$1, (datetime.getFullYear() + '').substr(4 - RegExp.$1.length));
39 | }
40 | for (var k in date) {
41 | if (new RegExp("(" + k + ")").test(format)) {
42 | format = format.replace(RegExp.$1, RegExp.$1.length == 1 ?
43 | date[k] :
44 | ("00" + date[k]).substr(("" + date[k]).length));
45 | }
46 | }
47 | return format;
48 | }
--------------------------------------------------------------------------------
/server/utils/locals.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by harttle on 1/12/15.
3 | */
4 |
5 | var cfg = require('../config');
6 |
7 | module.exports = function (req, res, next) {
8 |
9 | res.locals.req = req;
10 | res.locals.res = res;
11 | res.locals.config = cfg;
12 |
13 | next();
14 | };
--------------------------------------------------------------------------------
/server/utils/logger.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by harttle on 1/5/15.
3 | */
4 |
5 |
6 | function requestLogger(req, res, next) {
7 | console.log('------------------------------');
8 | console.log('REQUEST');
9 | console.log(req.ip, req.method, req.protocol + '://' + req.get('host') + req.originalUrl);
10 | console.log(req.body);
11 | next();
12 | }
13 |
14 | function responseLogger(req, res, next) {
15 | var oldWrite = res.write,
16 | oldEnd = res.end;
17 | var chunks = [];
18 | res.write = function(chunk) {
19 | chunks.push(chunk);
20 | oldWrite.apply(res, arguments);
21 | };
22 | res.end = function(chunk) {
23 | if (chunk) chunks.push(chunk);
24 | var body = Buffer.concat(chunks).toString('utf8');
25 |
26 | console.log('------------------------------');
27 | console.log('RESPONSE');
28 | console.log(body);
29 |
30 | oldEnd.apply(res, arguments);
31 | };
32 | next();
33 | }
34 |
35 | function logger(){
36 | // 这里可以对log进行处理、存储等操作
37 | console.log.apply(this, arguments);
38 | }
39 |
40 | module.exports = {
41 | log: logger,
42 | request: requestLogger,
43 | response: responseLogger
44 | };
--------------------------------------------------------------------------------
/server/utils/mailer.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by harttle on 1/5/15.
3 | */
4 |
5 | var nodemailer = require('nodemailer');
6 | var _ = require('lodash');
7 | var config = require('../config');
8 |
9 | var transporter = nodemailer.createTransport(config.smtp);
10 |
11 | var defaultMail = {
12 | from: '天马营教程 <' + config.smtp.auth.user + '>',
13 | subject: 'test',
14 | //to: 'bar@blurdybloop.com, baz@blurdybloop.com',
15 | //text: 'test text',
16 | html: 'test html'
17 | };
18 |
19 | function sendMail(mail){
20 | mail = _.merge({}, defaultMail, mail);
21 |
22 | transporter.sendMail(mail, function(error, info){
23 | if(error) return console.log('mail sent error', config.smtp, mail, error);
24 | console.log('Message sent: ' + info.response);
25 | });
26 | }
27 |
28 | module.exports = {
29 | send: sendMail
30 | };
31 |
--------------------------------------------------------------------------------
/server/utils/time.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by jacksoft on 17/4/26.
3 | */
4 | Date.prototype.Format = function (fmt) {
5 | var o = {
6 | "M+": this.getMonth() + 1, //月份
7 | "d+": this.getDate(), //日
8 | "h+": this.getHours(), //小时
9 | "m+": this.getMinutes(), //分
10 | "s+": this.getSeconds(), //秒
11 | "q+": Math.floor((this.getMonth() + 3) / 3), //季度
12 | "S": this.getMilliseconds() //毫秒
13 | };
14 | if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
15 | for (var k in o)
16 | if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
17 | return fmt;
18 | }
19 |
20 | module.exports = {};
21 |
--------------------------------------------------------------------------------
/src/api/api.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 |
3 | let base = '';
4 |
5 | export const requestLogin = params => {
6 | return axios.post(`${base}/login`, params).then(res => res.data);
7 | };
8 |
9 | export const getUserList = params => { return axios.get(`${base}/user/list`, { params: params }); };
10 |
11 | export const getUserListPage = params => { return axios.get(`${base}/user/listpage`, { params: params }); };
12 |
13 | export const removeUser = params => { return axios.get(`${base}/user/remove`, { params: params }); };
14 |
15 | export const batchRemoveUser = params => { return axios.get(`${base}/user/batchremove`, { params: params }); };
16 |
17 | export const editUser = params => { return axios.get(`${base}/user/edit`, { params: params }); };
18 |
19 | export const addUser = params => { return axios.get(`${base}/user/add`, { params: params }); };
--------------------------------------------------------------------------------
/src/api/index.js:
--------------------------------------------------------------------------------
1 | import * as api from './api';
2 |
3 | export default api;
--------------------------------------------------------------------------------
/src/assets/bg1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/bg1.jpg
--------------------------------------------------------------------------------
/src/assets/bingguo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/bingguo.jpg
--------------------------------------------------------------------------------
/src/assets/card.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/card.jpg
--------------------------------------------------------------------------------
/src/assets/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/favicon.ico
--------------------------------------------------------------------------------
/src/assets/images/bg1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/bg1.jpg
--------------------------------------------------------------------------------
/src/assets/images/bg6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/bg6.jpg
--------------------------------------------------------------------------------
/src/assets/images/bg7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/bg7.jpg
--------------------------------------------------------------------------------
/src/assets/images/bingguo.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/bingguo.jpg
--------------------------------------------------------------------------------
/src/assets/images/border.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/border.png
--------------------------------------------------------------------------------
/src/assets/images/border1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/border1.png
--------------------------------------------------------------------------------
/src/assets/images/border2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/border2.png
--------------------------------------------------------------------------------
/src/assets/images/card.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/card.jpg
--------------------------------------------------------------------------------
/src/assets/images/controls.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/controls.png
--------------------------------------------------------------------------------
/src/assets/images/dahai.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/dahai.jpg
--------------------------------------------------------------------------------
/src/assets/images/dahai1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/dahai1.jpg
--------------------------------------------------------------------------------
/src/assets/images/dq.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/dq.jpg
--------------------------------------------------------------------------------
/src/assets/images/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/favicon.ico
--------------------------------------------------------------------------------
/src/assets/images/icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/icons.png
--------------------------------------------------------------------------------
/src/assets/images/ie6/borderBottomCenter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/ie6/borderBottomCenter.png
--------------------------------------------------------------------------------
/src/assets/images/ie6/borderBottomLeft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/ie6/borderBottomLeft.png
--------------------------------------------------------------------------------
/src/assets/images/ie6/borderBottomRight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/ie6/borderBottomRight.png
--------------------------------------------------------------------------------
/src/assets/images/ie6/borderMiddleLeft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/ie6/borderMiddleLeft.png
--------------------------------------------------------------------------------
/src/assets/images/ie6/borderMiddleRight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/ie6/borderMiddleRight.png
--------------------------------------------------------------------------------
/src/assets/images/ie6/borderTopCenter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/ie6/borderTopCenter.png
--------------------------------------------------------------------------------
/src/assets/images/ie6/borderTopLeft.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/ie6/borderTopLeft.png
--------------------------------------------------------------------------------
/src/assets/images/ie6/borderTopRight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/ie6/borderTopRight.png
--------------------------------------------------------------------------------
/src/assets/images/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/loading.gif
--------------------------------------------------------------------------------
/src/assets/images/loading_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/loading_background.png
--------------------------------------------------------------------------------
/src/assets/images/login-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/login-bg.jpg
--------------------------------------------------------------------------------
/src/assets/images/login-cloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/login-cloud.png
--------------------------------------------------------------------------------
/src/assets/images/meteorshower1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/meteorshower1.jpg
--------------------------------------------------------------------------------
/src/assets/images/meteorshower2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/meteorshower2.jpg
--------------------------------------------------------------------------------
/src/assets/images/overlay.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/overlay.png
--------------------------------------------------------------------------------
/src/assets/images/pattern.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/pattern.jpg
--------------------------------------------------------------------------------
/src/assets/images/pattern.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/pattern.png
--------------------------------------------------------------------------------
/src/assets/images/pattern1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/pattern1.jpg
--------------------------------------------------------------------------------
/src/assets/images/sort_asc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/sort_asc.png
--------------------------------------------------------------------------------
/src/assets/images/sort_asc_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/sort_asc_disabled.png
--------------------------------------------------------------------------------
/src/assets/images/sort_both.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/sort_both.png
--------------------------------------------------------------------------------
/src/assets/images/sort_desc.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/sort_desc.png
--------------------------------------------------------------------------------
/src/assets/images/sort_desc_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/sort_desc_disabled.png
--------------------------------------------------------------------------------
/src/assets/images/spritemap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/spritemap.png
--------------------------------------------------------------------------------
/src/assets/images/spritemap@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/spritemap@2x.png
--------------------------------------------------------------------------------
/src/assets/images/xiyang.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/images/xiyang.gif
--------------------------------------------------------------------------------
/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/logo.png
--------------------------------------------------------------------------------
/src/assets/logo4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/logo4.png
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/alert.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-alert{width:100%;padding:8px 16px;margin:0;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;color:#fff;opacity:1;display:table;transition:opacity .2s}.el-alert .el-alert__description{color:#fff;font-size:12px;margin:5px 0 0}.el-alert--success{background-color:#13ce66}.el-alert--info{background-color:#50bfff}.el-alert--warning{background-color:#f7ba2a}.el-alert--error{background-color:#ff4949}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px;display:table-cell;color:#fff;vertical-align:middle}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert__closebtn{font-size:12px;color:#fff;opacity:1;top:12px;right:15px;position:absolute;cursor:pointer}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-alert-fade-enter,.el-alert-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/badge.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#ff4949;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-dot{width:8px;height:8px;padding:0;right:0;border-radius:50%}.el-badge__content.is-fixed{top:0;right:10px;position:absolute;-ms-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-badge__content.is-fixed.is-dot{right:5px}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/breadcrumb-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-darkblue/breadcrumb-item.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/breadcrumb.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-breadcrumb{font-size:13px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:""}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 8px;color:rgb(191, 203, 217)}.el-breadcrumb__item{float:left}.el-breadcrumb__item:last-child .el-breadcrumb__item__inner,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner:hover{color:rgb(151, 168, 190);cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-breadcrumb__item__inner,.el-breadcrumb__item__inner a{transition:color .15s linear;color:rgb(72, 87, 106)}.el-breadcrumb__item__inner a:hover,.el-breadcrumb__item__inner:hover{color:#1d8ce0;cursor:pointer}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/button-group.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-darkblue/button-group.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/card.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-card{border:1px solid rgb(209, 219, 229);border-radius:4px;background-color:#fff;overflow:hidden;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-card__header{padding:18px 20px;border-bottom:1px solid rgb(209, 219, 229);box-sizing:border-box}.el-card__body{padding:20px}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/carousel-item.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-carousel__item,.el-carousel__mask{position:absolute;height:100%;top:0;left:0}.el-carousel__item{width:100%;display:inline-block;transition:.4s ease-in-out;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#fff;opacity:.24;transition:.2s}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/carousel.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-carousel__arrow,.el-carousel__button{outline:0;margin:0;cursor:pointer;transition:.3s}.el-carousel{overflow-x:hidden;position:relative}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;padding:0;width:36px;height:36px;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-ms-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__indicators{position:absolute;list-style:none;bottom:0;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%);margin:0;padding:0;z-index:2}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-ms-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:rgb(131, 145, 165);opacity:.24}.el-carousel__indicator{display:inline-block;background-color:transparent;padding:12px 4px;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;padding:0}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-ms-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-ms-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/checkbox-group.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-darkblue/checkbox-group.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/checkbox.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-checkbox,.el-checkbox__input{white-space:nowrap;cursor:pointer;display:inline-block;position:relative}.el-checkbox{color:rgb(31, 45, 61);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-checkbox+.el-checkbox{margin-left:15px}.el-checkbox__input{outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#1d8ce0;border-color:rgb(1, 130, 228)}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;border:1px solid #fff;margin-top:-1px;left:3px;right:3px;top:50%}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#1d8ce0}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#1d8ce0;border-color:rgb(1, 130, 228)}.el-checkbox__input.is-checked .el-checkbox__inner::after{-ms-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:rgb(238, 241, 246);border-color:rgb(209, 219, 229);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:rgb(238, 241, 246)}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:rgb(209, 219, 229);border-color:rgb(209, 219, 229)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#fff}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:rgb(209, 219, 229);border-color:rgb(209, 219, 229)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{border-color:#fff}.el-checkbox__input.is-disabled+.el-checkbox__label{color:#bbb;cursor:not-allowed}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid rgb(191, 203, 217);border-radius:4px;box-sizing:border-box;width:18px;height:18px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#1d8ce0}.el-checkbox__inner::after{box-sizing:content-box;content:"";border:2px solid #fff;border-left:0;border-top:0;height:8px;left:5px;position:absolute;top:1px;-ms-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:4px;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;-ms-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;left:-999px}.el-checkbox__label{font-size:14px;padding-left:5px}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/collapse-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-darkblue/collapse-item.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/collapse.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-collapse{border:1px solid rgb(223, 230, 236);border-radius:0}.el-collapse-item:last-child{margin-bottom:-1px}.el-collapse-item.is-active>.el-collapse-item__header .el-collapse-item__header__arrow{-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header{height:43px;line-height:43px;padding-left:15px;background-color:#fff;color:rgb(72, 87, 106);cursor:pointer;border-bottom:1px solid rgb(223, 230, 236);font-size:13px}.el-collapse-item__header__arrow{margin-right:8px;transition:transform .3s}.el-collapse-item__wrap{will-change:height;background-color:rgb(250, 253, 254);overflow:hidden;box-sizing:border-box;border-bottom:1px solid rgb(223, 230, 236)}.el-collapse-item__content{padding:10px 15px;font-size:13px;color:rgb(31, 45, 61);line-height:1.769230769230769}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/dialog.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.v-modal-enter{animation:v-modal-in .2s ease}.v-modal-leave{animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-dialog{position:absolute;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%);background:#fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box}.el-dialog--tiny{width:30%}.el-dialog--small{width:50%}.el-dialog--large{width:90%}.el-dialog--full{width:100%;top:0;height:100%;overflow:auto}.el-dialog__wrapper{top:0;right:0;bottom:0;left:0;position:fixed;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 0}.el-dialog__close{cursor:pointer;color:rgb(191, 203, 217)}.el-dialog__close:hover{color:#1d8ce0}.el-dialog__title{line-height:1;font-size:16px;font-weight:700;color:rgb(31, 45, 61)}.el-dialog__body{padding:30px 20px;color:rgb(72, 87, 106);font-size:14px}.el-dialog__headerbtn{float:right}.el-dialog__footer{padding:10px 20px 15px;text-align:right;box-sizing:border-box}.dialog-fade-enter-active{animation:dialog-fade-in .3s}.dialog-fade-leave-active{animation:dialog-fade-out .3s}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/dropdown-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-darkblue/dropdown-item.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/dropdown-menu.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-darkblue/dropdown-menu.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/fonts/element-icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-darkblue/fonts/element-icons.ttf
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/fonts/element-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-darkblue/fonts/element-icons.woff
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/form-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-darkblue/form-item.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/form.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-form--inline .el-form-item,.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form-item:after,.el-form-item__content:after{clear:both}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;padding:0 0 10px}.el-form--inline .el-form-item{margin-right:10px}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item:after,.el-form-item:before{display:table;content:""}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-form-item .el-form-item__content{margin-left:0!important}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner,.el-form-item.is-error .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-textarea__inner{border-color:#ff4949}.el-form-item.is-required .el-form-item__label:before{content:'*';color:#ff4949;margin-right:4px}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:rgb(72, 87, 106);line-height:1;padding:11px 12px 11px 0;box-sizing:border-box}.el-form-item__content{line-height:36px;position:relative;font-size:14px}.el-form-item__content:after,.el-form-item__content:before{display:table;content:""}.el-form-item__error{color:#ff4949;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/icon.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:element-icons;src:url(fonts/element-icons.woff?t=1472440741) format('woff'),url(fonts/element-icons.ttf?t=1472440741) format('truetype');font-weight:400;font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-arrow-down:before{content:"\e600"}.el-icon-arrow-left:before{content:"\e601"}.el-icon-arrow-right:before{content:"\e602"}.el-icon-arrow-up:before{content:"\e603"}.el-icon-caret-bottom:before{content:"\e604"}.el-icon-caret-left:before{content:"\e605"}.el-icon-caret-right:before{content:"\e606"}.el-icon-caret-top:before{content:"\e607"}.el-icon-check:before{content:"\e608"}.el-icon-circle-check:before{content:"\e609"}.el-icon-circle-close:before{content:"\e60a"}.el-icon-circle-cross:before{content:"\e60b"}.el-icon-close:before{content:"\e60c"}.el-icon-upload:before{content:"\e60d"}.el-icon-d-arrow-left:before{content:"\e60e"}.el-icon-d-arrow-right:before{content:"\e60f"}.el-icon-d-caret:before{content:"\e610"}.el-icon-date:before{content:"\e611"}.el-icon-delete:before{content:"\e612"}.el-icon-document:before{content:"\e613"}.el-icon-edit:before{content:"\e614"}.el-icon-information:before{content:"\e615"}.el-icon-loading:before{content:"\e616"}.el-icon-menu:before{content:"\e617"}.el-icon-message:before{content:"\e618"}.el-icon-minus:before{content:"\e619"}.el-icon-more:before{content:"\e61a"}.el-icon-picture:before{content:"\e61b"}.el-icon-plus:before{content:"\e61c"}.el-icon-search:before{content:"\e61d"}.el-icon-setting:before{content:"\e61e"}.el-icon-share:before{content:"\e61f"}.el-icon-star-off:before{content:"\e620"}.el-icon-star-on:before{content:"\e621"}.el-icon-time:before{content:"\e622"}.el-icon-warning:before{content:"\e623"}.el-icon-delete2:before{content:"\e624"}.el-icon-upload2:before{content:"\e627"}.el-icon-view:before{content:"\e626"}.el-icon-loading{animation:rotating 1s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotateZ(0)}100%{transform:rotateZ(360deg)}}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/loading.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-loading-mask{position:absolute;z-index:10000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{width:50px;height:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:#1d8ce0;margin:3px 0;font-size:14px}.el-loading-spinner .circular{width:42px;height:42px;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#1d8ce0;stroke-linecap:round}.el-loading-fade-enter,.el-loading-fade-leave-active{opacity:0}@keyframes loading-rotate{100%{transform:rotate(360deg)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/menu-item-group.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-darkblue/menu-item-group.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/menu-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-darkblue/menu-item.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/message.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-message{box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);min-width:300px;padding:10px 12px;box-sizing:border-box;border-radius:2px;position:fixed;left:50%;top:20px;-ms-transform:translateX(-50%);transform:translateX(-50%);background-color:#fff;transition:opacity .3s,transform .4s;overflow:hidden}.el-message .el-icon-circle-check{color:#13ce66}.el-message .el-icon-circle-cross{color:#ff4949}.el-message .el-icon-information{color:#50bfff}.el-message .el-icon-warning{color:#f7ba2a}.el-message__group{margin-left:38px;position:relative;height:20px;line-height:20px}.el-message__group p{font-size:14px;margin:0 34px 0 0;white-space:nowrap;color:rgb(131, 145, 165);text-align:justify}.el-message__group.is-with-icon{margin-left:0}.el-message__img{width:40px;height:40px;position:absolute;left:0;top:0}.el-message__icon{vertical-align:middle;margin-right:8px}.el-message__closeBtn{top:3px;right:0;position:absolute;cursor:pointer;color:rgb(191, 203, 217);font-size:14px}.el-message__closeBtn:hover{color:rgb(151, 168, 190)}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-ms-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/notification.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-notification{width:330px;padding:20px;box-sizing:border-box;border-radius:2px;position:fixed;right:16px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);transition:opacity .3s,transform .3s,right .3s,top .4s;overflow:hidden}.el-notification .el-icon-circle-check{color:#13ce66}.el-notification .el-icon-circle-cross{color:#ff4949}.el-notification .el-icon-information{color:#50bfff}.el-notification .el-icon-warning{color:#f7ba2a}.el-notification__group{margin-left:0}.el-notification__group.is-with-icon{margin-left:55px}.el-notification__title{font-weight:400;font-size:16px;color:rgb(31, 45, 61);margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:10px 0 0;color:rgb(131, 145, 165);text-align:justify}.el-notification__icon{width:40px;height:40px;font-size:40px;float:left;position:relative;top:3px}.el-notification__closeBtn{top:20px;right:20px;position:absolute;cursor:pointer;color:rgb(191, 203, 217);font-size:14px}.el-notification__closeBtn:hover{color:rgb(151, 168, 190)}.el-notification-fade-enter{-ms-transform:translateX(100%);transform:translateX(100%);right:0}.el-notification-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/option-group.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-select-group{margin:0;padding:0}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select-group__wrap{list-style:none;margin:0;padding:0}.el-select-group__title{padding-left:10px;font-size:12px;color:#999;height:30px;line-height:30px}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/option.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-select-dropdown__item{font-size:14px;padding:8px 10px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:rgb(72, 87, 106);height:36px;line-height:1.5;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.hover{background-color:rgb(228, 232, 241)}.el-select-dropdown__item.selected{color:#fff;background-color:#1d8ce0}.el-select-dropdown__item.selected.hover{background-color:rgb(26, 123, 197)}.el-select-dropdown__item span{line-height:1.5!important}.el-select-dropdown__item.is-disabled{color:rgb(191, 203, 217);cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/popover.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:2px;border:1px solid rgb(209, 219, 229);padding:10px;z-index:2000;font-size:12px;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-popover .popper__arrow,.el-popover .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popover .popper__arrow{border-width:6px}.el-popover .popper__arrow::after{content:" ";border-width:6px}.el-popover[x-placement^=top]{margin-bottom:12px}.el-popover[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:rgb(209, 219, 229);border-bottom-width:0}.el-popover[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popover[x-placement^=bottom]{margin-top:12px}.el-popover[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:rgb(209, 219, 229)}.el-popover[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popover[x-placement^=right]{margin-left:12px}.el-popover[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:rgb(209, 219, 229);border-left-width:0}.el-popover[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popover[x-placement^=left]{margin-right:12px}.el-popover[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:rgb(209, 219, 229)}.el-popover[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-popover__title{color:rgb(31, 45, 61);font-size:13px;line-height:1;margin-bottom:9px}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/progress.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-progress-bar__inner:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-progress{position:relative;line-height:1}.el-progress.is-exception .el-progress-bar__inner{background-color:#ff4949}.el-progress.is-exception .el-progress__text{color:#ff4949}.el-progress.is-success .el-progress-bar__inner{background-color:#13ce66}.el-progress.is-success .el-progress__text{color:#13ce66}.el-progress__text{font-size:14px;color:rgb(72, 87, 106);display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle{display:inline-block}.el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-ms-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:rgb(228, 232, 241);overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#1d8ce0;text-align:right;border-radius:100px;line-height:1}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/radio-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-darkblue/radio-button.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/radio-group.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-darkblue/radio-group.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/rate.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:rgb(191, 203, 217);transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-ms-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-rate__text{font-size:14px;vertical-align:middle}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/row.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-row:after,.el-row:before{display:table;content:""}.el-row:after{clear:both}.el-row{position:relative;box-sizing:border-box}.el-row--flex{display:-ms-flexbox;display:flex}.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-align-bottom{-ms-flex-align:end;align-items:flex-end}.el-row--flex.is-align-middle{-ms-flex-align:center;align-items:center}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-justify-space-between{-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-end{-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-center{-ms-flex-pack:center;justify-content:center}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/scrollbar.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active .el-scrollbar__bar,.el-scrollbar:focus .el-scrollbar__bar,.el-scrollbar:hover .el-scrollbar__bar{opacity:1;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(151,168,190,.3);transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(151,168,190,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/select-dropdown.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-select-dropdown{position:absolute;z-index:1001;border:1px solid rgb(209, 219, 229);border-radius:2px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);box-sizing:border-box;margin:5px 0}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#1d8ce0;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:rgb(228, 232, 241)}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:10px;font-family:element-icons;content:"\E608";font-size:11px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/spinner.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/step.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-step.is-horizontal,.el-step.is-vertical .el-step__head,.el-step.is-vertical .el-step__main,.el-step__line{display:inline-block}.el-step{position:relative;vertical-align:top}.el-step.is-vertical .el-step__main{padding-left:10px}.el-step__line{position:absolute;border-color:inherit;background-color:rgb(191, 203, 217)}.el-step__line.is-vertical{width:2px;box-sizing:border-box;top:32px;bottom:0;left:15px}.el-step__line.is-horizontal{top:15px;height:2px;left:32px;right:0}.el-step__line.is-icon.is-horizontal{right:4px}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:all 150ms;width:0;height:0}.el-step__icon{display:block;line-height:28px}.el-step__icon>*{line-height:inherit;vertical-align:middle}.el-step__head{width:28px;height:28px;border-radius:50%;background-color:transparent;text-align:center;line-height:28px;font-size:28px;vertical-align:top;transition:all 150ms}.el-step__head.is-finish{color:#1d8ce0;border-color:#1d8ce0}.el-step__head.is-error{color:#ff4949;border-color:#ff4949}.el-step__head.is-success{color:#13ce66;border-color:#13ce66}.el-step__head.is-process,.el-step__head.is-wait{color:rgb(191, 203, 217);border-color:rgb(191, 203, 217)}.el-step__head.is-text{font-size:14px;border-width:2px;border-style:solid}.el-step__head.is-text.is-finish{color:#fff;background-color:#1d8ce0;border-color:#1d8ce0}.el-step__head.is-text.is-error{color:#fff;background-color:#ff4949;border-color:#ff4949}.el-step__head.is-text.is-success{color:#fff;background-color:#13ce66;border-color:#13ce66}.el-step__head.is-text.is-wait{color:rgb(191, 203, 217);background-color:#fff;border-color:rgb(191, 203, 217)}.el-step__head.is-text.is-process{color:#fff;background-color:rgb(191, 203, 217);border-color:rgb(191, 203, 217)}.el-step__main{white-space:normal;padding-right:10px;text-align:left}.el-step__title{font-size:14px;line-height:32px;display:inline-block}.el-step__title.is-finish{font-weight:700;color:#1d8ce0}.el-step__title.is-error{font-weight:700;color:#ff4949}.el-step__title.is-success{font-weight:700;color:#13ce66}.el-step__title.is-wait{font-weight:400;color:rgb(151, 168, 190)}.el-step__title.is-process{font-weight:700;color:rgb(72, 87, 106)}.el-step__description{font-size:12px;font-weight:400;line-height:14px}.el-step__description.is-finish{color:#1d8ce0}.el-step__description.is-error{color:#ff4949}.el-step__description.is-success{color:#13ce66}.el-step__description.is-wait{color:rgb(191, 203, 217)}.el-step__description.is-process{color:rgb(131, 145, 165)}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/steps.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-steps{font-size:0}.el-steps>:last-child .el-step__line{display:none}.el-steps.is-horizontal{white-space:nowrap}.el-steps.is-horizontal.is-center{text-align:center}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/submenu.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-darkblue/submenu.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/switch.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-switch{display:inline-block;position:relative;font-size:14px;line-height:22px;height:22px;vertical-align:middle}.el-switch__label,.el-switch__label *{position:absolute;font-size:14px;display:inline-block}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-switch.is-disabled .el-switch__core{border-color:rgb(228, 232, 241)!important;background:rgb(228, 232, 241)!important}.el-switch.is-disabled .el-switch__core span{background-color:rgb(250, 253, 254)!important}.el-switch.is-disabled .el-switch__core~.el-switch__label *{color:rgb(250, 253, 254)!important}.el-switch.is-disabled .el-switch__input:checked+.el-switch__core{border-color:rgb(228, 232, 241);background-color:rgb(228, 232, 241)}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__core,.el-switch__label{width:46px;height:22px;cursor:pointer}.el-switch__label{transition:.2s;z-index:10;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-switch__label *{line-height:1;top:4px;color:#fff}.el-switch__label--left i{left:6px}.el-switch__label--right i{right:6px}.el-switch__input{display:none}.el-switch__input:checked+.el-switch__core{border-color:#1d8ce0;background-color:#1d8ce0}.el-switch__core{margin:0;display:inline-block;position:relative;border:1px solid rgb(191, 203, 217);outline:0;border-radius:12px;box-sizing:border-box;background:rgb(191, 203, 217);transition:border-color .3s,background-color .3s}.el-switch__core .el-switch__button{top:0;left:0;position:absolute;border-radius:100%;transition:transform .3s;width:16px;height:16px;z-index:20;background-color:#fff}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/tab-pane.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-darkblue/tab-pane.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/tag.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-tag{background-color:rgb(131, 145, 165);display:inline-block;padding:0 5px;height:24px;line-height:22px;font-size:12px;color:#fff;border-radius:4px;box-sizing:border-box;border:1px solid transparent;white-space:nowrap}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;-ms-transform:scale(.75,.75);transform:scale(.75,.75);height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-2px}.el-tag .el-icon-close:hover{background-color:#fff;color:rgb(131, 145, 165)}.el-tag--gray{background-color:rgb(228, 232, 241);border-color:rgb(228, 232, 241);color:rgb(72, 87, 106)}.el-tag--gray .el-tag__close:hover{background-color:rgb(72, 87, 106);color:#fff}.el-tag--gray.is-hit{border-color:rgb(72, 87, 106)}.el-tag--primary{background-color:rgba(32,160,255,.1);border-color:rgba(32,160,255,.2);color:#1d8ce0}.el-tag--primary .el-tag__close:hover{background-color:#1d8ce0;color:#fff}.el-tag--primary.is-hit{border-color:#1d8ce0}.el-tag--success{background-color:rgba(18,206,102,.1);border-color:rgba(18,206,102,.2);color:#13ce66}.el-tag--success .el-tag__close:hover{background-color:#13ce66;color:#fff}.el-tag--success.is-hit{border-color:#13ce66}.el-tag--warning{background-color:rgba(247,186,41,.1);border-color:rgba(247,186,41,.2);color:#f7ba2a}.el-tag--warning .el-tag__close:hover{background-color:#f7ba2a;color:#fff}.el-tag--warning.is-hit{border-color:#f7ba2a}.el-tag--danger{background-color:rgba(255,73,73,.1);border-color:rgba(255,73,73,.2);color:#ff4949}.el-tag--danger .el-tag__close:hover{background-color:#ff4949;color:#fff}.el-tag--danger.is-hit{border-color:#ff4949}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/tooltip.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:rgb(31, 45, 61);border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:rgb(31, 45, 61);border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:rgb(31, 45, 61)}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:rgb(31, 45, 61)}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:rgb(31, 45, 61);border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:rgb(31, 45, 61);border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:rgb(31, 45, 61)}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:rgb(31, 45, 61)}.el-tooltip__popper.is-light{background:#fff;border:1px solid rgb(31, 45, 61)}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:rgb(31, 45, 61)}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:rgb(31, 45, 61)}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:rgb(31, 45, 61)}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:rgb(31, 45, 61)}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.el-tooltip__popper.is-dark{background:rgb(31, 45, 61);color:#fff}
--------------------------------------------------------------------------------
/src/assets/theme/theme-darkblue/tree.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-tree{cursor:default;background:#fff;border:1px solid rgb(209, 219, 229)}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#5e7382}.el-tree-node{white-space:nowrap}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree-node__expand-icon,.el-tree-node__label,.el-tree-node__loading-icon{display:inline-block;vertical-align:middle}.el-tree-node__content{line-height:36px;height:36px;cursor:pointer}.el-tree-node__content>.el-checkbox,.el-tree-node__content>.el-tree-node__expand-icon{margin-right:8px}.el-tree-node__content>.el-checkbox{vertical-align:middle}.el-tree-node__content:hover{background:rgb(228, 232, 241)}.el-tree-node__expand-icon{cursor:pointer;width:0;height:0;margin-left:10px;border:6px solid transparent;border-right-width:0;border-left-color:rgb(151, 168, 190);border-left-width:7px;-ms-transform:rotate(0);transform:rotate(0);transition:transform .3s ease-in-out}.el-tree-node__expand-icon:hover{border-left-color:#999}.el-tree-node__expand-icon.expanded{-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{border-color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:4px;font-size:14px;color:rgb(151, 168, 190)}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:rgb(237, 246, 253)}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/alert.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-alert{width:100%;padding:8px 16px;margin:0;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;color:#fff;opacity:1;display:table;transition:opacity .2s}.el-alert .el-alert__description{color:#fff;font-size:12px;margin:5px 0 0}.el-alert--success{background-color:#13ce66}.el-alert--info{background-color:#50bfff}.el-alert--warning{background-color:#f7ba2a}.el-alert--error{background-color:#ff4949}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px;display:table-cell;color:#fff;vertical-align:middle}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert__closebtn{font-size:12px;color:#fff;opacity:1;top:12px;right:15px;position:absolute;cursor:pointer}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-alert-fade-enter,.el-alert-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/badge.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#ff4949;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-dot{width:8px;height:8px;padding:0;right:0;border-radius:50%}.el-badge__content.is-fixed{top:0;right:10px;position:absolute;-ms-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-badge__content.is-fixed.is-dot{right:5px}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/breadcrumb-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-green/breadcrumb-item.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/breadcrumb.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-breadcrumb{font-size:13px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:""}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 8px;color:rgb(191, 217, 214)}.el-breadcrumb__item{float:left}.el-breadcrumb__item:last-child .el-breadcrumb__item__inner,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner:hover{color:rgb(151, 190, 187);cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-breadcrumb__item__inner,.el-breadcrumb__item__inner a{transition:color .15s linear;color:rgb(72, 106, 103)}.el-breadcrumb__item__inner a:hover,.el-breadcrumb__item__inner:hover{color:#18c79c;cursor:pointer}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/button-group.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-green/button-group.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/card.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-card{border:1px solid rgb(209, 229, 227);border-radius:4px;background-color:#fff;overflow:hidden;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-card__header{padding:18px 20px;border-bottom:1px solid rgb(209, 229, 227);box-sizing:border-box}.el-card__body{padding:20px}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/carousel-item.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-carousel__item,.el-carousel__mask{position:absolute;height:100%;top:0;left:0}.el-carousel__item{width:100%;display:inline-block;transition:.4s ease-in-out;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#fff;opacity:.24;transition:.2s}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/carousel.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-carousel__arrow,.el-carousel__button{outline:0;margin:0;cursor:pointer;transition:.3s}.el-carousel{overflow-x:hidden;position:relative}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;padding:0;width:36px;height:36px;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-ms-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__indicators{position:absolute;list-style:none;bottom:0;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%);margin:0;padding:0;z-index:2}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-ms-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:rgb(131, 165, 162);opacity:.24}.el-carousel__indicator{display:inline-block;background-color:transparent;padding:12px 4px;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;padding:0}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-ms-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-ms-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/checkbox-group.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-green/checkbox-group.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/checkbox.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-checkbox,.el-checkbox__input{white-space:nowrap;cursor:pointer;display:inline-block;position:relative}.el-checkbox{color:rgb(31, 61, 57);-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-checkbox+.el-checkbox{margin-left:15px}.el-checkbox__input{outline:0;line-height:1;vertical-align:middle}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:#18c79c;border-color:rgb(1, 203, 152)}.el-checkbox__input.is-indeterminate .el-checkbox__inner::before{content:'';position:absolute;display:block;border:1px solid #fff;margin-top:-1px;left:3px;right:3px;top:50%}.el-checkbox__input.is-indeterminate .el-checkbox__inner::after{display:none}.el-checkbox__input.is-focus .el-checkbox__inner{border-color:#18c79c}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:#18c79c;border-color:rgb(1, 203, 152)}.el-checkbox__input.is-checked .el-checkbox__inner::after{-ms-transform:rotate(45deg) scaleY(1);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:rgb(238, 246, 246);border-color:rgb(209, 229, 227);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner::after{cursor:not-allowed;border-color:rgb(238, 246, 246)}.el-checkbox__input.is-disabled .el-checkbox__inner+.el-checkbox__label{cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:rgb(209, 229, 227);border-color:rgb(209, 229, 227)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after{border-color:#fff}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:rgb(209, 229, 227);border-color:rgb(209, 229, 227)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner::before{border-color:#fff}.el-checkbox__input.is-disabled+.el-checkbox__label{color:#bbb;cursor:not-allowed}.el-checkbox__inner{display:inline-block;position:relative;border:1px solid rgb(191, 217, 214);border-radius:4px;box-sizing:border-box;width:18px;height:18px;background-color:#fff;z-index:1;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46)}.el-checkbox__inner:hover{border-color:#18c79c}.el-checkbox__inner::after{box-sizing:content-box;content:"";border:2px solid #fff;border-left:0;border-top:0;height:8px;left:5px;position:absolute;top:1px;-ms-transform:rotate(45deg) scaleY(0);transform:rotate(45deg) scaleY(0);width:4px;transition:transform .15s cubic-bezier(.71,-.46,.88,.6) .05s;-ms-transform-origin:center;transform-origin:center}.el-checkbox__original{opacity:0;outline:0;position:absolute;margin:0;left:-999px}.el-checkbox__label{font-size:14px;padding-left:5px}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/collapse-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-green/collapse-item.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/collapse.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-collapse{border:1px solid rgb(223, 236, 234);border-radius:0}.el-collapse-item:last-child{margin-bottom:-1px}.el-collapse-item.is-active>.el-collapse-item__header .el-collapse-item__header__arrow{-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header{height:43px;line-height:43px;padding-left:15px;background-color:#fff;color:rgb(72, 106, 103);cursor:pointer;border-bottom:1px solid rgb(223, 236, 234);font-size:13px}.el-collapse-item__header__arrow{margin-right:8px;transition:transform .3s}.el-collapse-item__wrap{will-change:height;background-color:rgb(250, 254, 253);overflow:hidden;box-sizing:border-box;border-bottom:1px solid rgb(223, 236, 234)}.el-collapse-item__content{padding:10px 15px;font-size:13px;color:rgb(31, 61, 57);line-height:1.769230769230769}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/dialog.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.v-modal-enter{animation:v-modal-in .2s ease}.v-modal-leave{animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-dialog{position:absolute;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%);background:#fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box}.el-dialog--tiny{width:30%}.el-dialog--small{width:50%}.el-dialog--large{width:90%}.el-dialog--full{width:100%;top:0;height:100%;overflow:auto}.el-dialog__wrapper{top:0;right:0;bottom:0;left:0;position:fixed;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 0}.el-dialog__close{cursor:pointer;color:rgb(191, 217, 214)}.el-dialog__close:hover{color:#18c79c}.el-dialog__title{line-height:1;font-size:16px;font-weight:700;color:rgb(31, 61, 57)}.el-dialog__body{padding:30px 20px;color:rgb(72, 106, 103);font-size:14px}.el-dialog__headerbtn{float:right}.el-dialog__footer{padding:10px 20px 15px;text-align:right;box-sizing:border-box}.dialog-fade-enter-active{animation:dialog-fade-in .3s}.dialog-fade-leave-active{animation:dialog-fade-out .3s}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/dropdown-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-green/dropdown-item.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/dropdown-menu.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-green/dropdown-menu.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/fonts/element-icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-green/fonts/element-icons.ttf
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/fonts/element-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-green/fonts/element-icons.woff
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/form-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-green/form-item.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/form.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-form--inline .el-form-item,.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form-item:after,.el-form-item__content:after{clear:both}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;padding:0 0 10px}.el-form--inline .el-form-item{margin-right:10px}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item:after,.el-form-item:before{display:table;content:""}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-form-item .el-form-item__content{margin-left:0!important}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner,.el-form-item.is-error .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-textarea__inner{border-color:#ff4949}.el-form-item.is-required .el-form-item__label:before{content:'*';color:#ff4949;margin-right:4px}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:rgb(72, 106, 103);line-height:1;padding:11px 12px 11px 0;box-sizing:border-box}.el-form-item__content{line-height:36px;position:relative;font-size:14px}.el-form-item__content:after,.el-form-item__content:before{display:table;content:""}.el-form-item__error{color:#ff4949;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/icon.css:
--------------------------------------------------------------------------------
1 | @font-face{font-family:element-icons;src:url(fonts/element-icons.woff?t=1472440741) format('woff'),url(fonts/element-icons.ttf?t=1472440741) format('truetype');font-weight:400;font-style:normal}[class*=" el-icon-"],[class^=el-icon-]{font-family:element-icons!important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;vertical-align:baseline;display:inline-block;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-icon-arrow-down:before{content:"\e600"}.el-icon-arrow-left:before{content:"\e601"}.el-icon-arrow-right:before{content:"\e602"}.el-icon-arrow-up:before{content:"\e603"}.el-icon-caret-bottom:before{content:"\e604"}.el-icon-caret-left:before{content:"\e605"}.el-icon-caret-right:before{content:"\e606"}.el-icon-caret-top:before{content:"\e607"}.el-icon-check:before{content:"\e608"}.el-icon-circle-check:before{content:"\e609"}.el-icon-circle-close:before{content:"\e60a"}.el-icon-circle-cross:before{content:"\e60b"}.el-icon-close:before{content:"\e60c"}.el-icon-upload:before{content:"\e60d"}.el-icon-d-arrow-left:before{content:"\e60e"}.el-icon-d-arrow-right:before{content:"\e60f"}.el-icon-d-caret:before{content:"\e610"}.el-icon-date:before{content:"\e611"}.el-icon-delete:before{content:"\e612"}.el-icon-document:before{content:"\e613"}.el-icon-edit:before{content:"\e614"}.el-icon-information:before{content:"\e615"}.el-icon-loading:before{content:"\e616"}.el-icon-menu:before{content:"\e617"}.el-icon-message:before{content:"\e618"}.el-icon-minus:before{content:"\e619"}.el-icon-more:before{content:"\e61a"}.el-icon-picture:before{content:"\e61b"}.el-icon-plus:before{content:"\e61c"}.el-icon-search:before{content:"\e61d"}.el-icon-setting:before{content:"\e61e"}.el-icon-share:before{content:"\e61f"}.el-icon-star-off:before{content:"\e620"}.el-icon-star-on:before{content:"\e621"}.el-icon-time:before{content:"\e622"}.el-icon-warning:before{content:"\e623"}.el-icon-delete2:before{content:"\e624"}.el-icon-upload2:before{content:"\e627"}.el-icon-view:before{content:"\e626"}.el-icon-loading{animation:rotating 1s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotateZ(0)}100%{transform:rotateZ(360deg)}}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/loading.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-loading-mask{position:absolute;z-index:10000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{width:50px;height:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:#18c79c;margin:3px 0;font-size:14px}.el-loading-spinner .circular{width:42px;height:42px;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#18c79c;stroke-linecap:round}.el-loading-fade-enter,.el-loading-fade-leave-active{opacity:0}@keyframes loading-rotate{100%{transform:rotate(360deg)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/menu-item-group.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-green/menu-item-group.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/menu-item.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-green/menu-item.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/message.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-message{box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);min-width:300px;padding:10px 12px;box-sizing:border-box;border-radius:2px;position:fixed;left:50%;top:20px;-ms-transform:translateX(-50%);transform:translateX(-50%);background-color:#fff;transition:opacity .3s,transform .4s;overflow:hidden}.el-message .el-icon-circle-check{color:#13ce66}.el-message .el-icon-circle-cross{color:#ff4949}.el-message .el-icon-information{color:#50bfff}.el-message .el-icon-warning{color:#f7ba2a}.el-message__group{margin-left:38px;position:relative;height:20px;line-height:20px}.el-message__group p{font-size:14px;margin:0 34px 0 0;white-space:nowrap;color:rgb(131, 165, 162);text-align:justify}.el-message__group.is-with-icon{margin-left:0}.el-message__img{width:40px;height:40px;position:absolute;left:0;top:0}.el-message__icon{vertical-align:middle;margin-right:8px}.el-message__closeBtn{top:3px;right:0;position:absolute;cursor:pointer;color:rgb(191, 217, 214);font-size:14px}.el-message__closeBtn:hover{color:rgb(151, 190, 187)}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-ms-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/notification.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-notification{width:330px;padding:20px;box-sizing:border-box;border-radius:2px;position:fixed;right:16px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);transition:opacity .3s,transform .3s,right .3s,top .4s;overflow:hidden}.el-notification .el-icon-circle-check{color:#13ce66}.el-notification .el-icon-circle-cross{color:#ff4949}.el-notification .el-icon-information{color:#50bfff}.el-notification .el-icon-warning{color:#f7ba2a}.el-notification__group{margin-left:0}.el-notification__group.is-with-icon{margin-left:55px}.el-notification__title{font-weight:400;font-size:16px;color:rgb(31, 61, 57);margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:10px 0 0;color:rgb(131, 165, 162);text-align:justify}.el-notification__icon{width:40px;height:40px;font-size:40px;float:left;position:relative;top:3px}.el-notification__closeBtn{top:20px;right:20px;position:absolute;cursor:pointer;color:rgb(191, 217, 214);font-size:14px}.el-notification__closeBtn:hover{color:rgb(151, 190, 187)}.el-notification-fade-enter{-ms-transform:translateX(100%);transform:translateX(100%);right:0}.el-notification-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/option-group.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-select-group{margin:0;padding:0}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select-group__wrap{list-style:none;margin:0;padding:0}.el-select-group__title{padding-left:10px;font-size:12px;color:#999;height:30px;line-height:30px}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/option.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-select-dropdown__item{font-size:14px;padding:8px 10px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:rgb(72, 106, 103);height:36px;line-height:1.5;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.hover{background-color:rgb(228, 241, 241)}.el-select-dropdown__item.selected{color:#fff;background-color:#18c79c}.el-select-dropdown__item.selected.hover{background-color:rgb(21, 175, 137)}.el-select-dropdown__item span{line-height:1.5!important}.el-select-dropdown__item.is-disabled{color:rgb(191, 217, 214);cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/popover.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:2px;border:1px solid rgb(209, 229, 227);padding:10px;z-index:2000;font-size:12px;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-popover .popper__arrow,.el-popover .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popover .popper__arrow{border-width:6px}.el-popover .popper__arrow::after{content:" ";border-width:6px}.el-popover[x-placement^=top]{margin-bottom:12px}.el-popover[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:rgb(209, 229, 227);border-bottom-width:0}.el-popover[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popover[x-placement^=bottom]{margin-top:12px}.el-popover[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:rgb(209, 229, 227)}.el-popover[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popover[x-placement^=right]{margin-left:12px}.el-popover[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:rgb(209, 229, 227);border-left-width:0}.el-popover[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popover[x-placement^=left]{margin-right:12px}.el-popover[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:rgb(209, 229, 227)}.el-popover[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-popover__title{color:rgb(31, 61, 57);font-size:13px;line-height:1;margin-bottom:9px}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/progress.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-progress-bar__inner:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-progress{position:relative;line-height:1}.el-progress.is-exception .el-progress-bar__inner{background-color:#ff4949}.el-progress.is-exception .el-progress__text{color:#ff4949}.el-progress.is-success .el-progress-bar__inner{background-color:#13ce66}.el-progress.is-success .el-progress__text{color:#13ce66}.el-progress__text{font-size:14px;color:rgb(72, 106, 103);display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle{display:inline-block}.el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-ms-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:rgb(228, 241, 241);overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#18c79c;text-align:right;border-radius:100px;line-height:1}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/radio-button.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-green/radio-button.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/radio-group.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-green/radio-group.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/rate.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:rgb(191, 217, 214);transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-ms-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-rate__text{font-size:14px;vertical-align:middle}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/row.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-row:after,.el-row:before{display:table;content:""}.el-row:after{clear:both}.el-row{position:relative;box-sizing:border-box}.el-row--flex{display:-ms-flexbox;display:flex}.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-align-bottom{-ms-flex-align:end;align-items:flex-end}.el-row--flex.is-align-middle{-ms-flex-align:center;align-items:center}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-justify-space-between{-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-end{-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-center{-ms-flex-pack:center;justify-content:center}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/scrollbar.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active .el-scrollbar__bar,.el-scrollbar:focus .el-scrollbar__bar,.el-scrollbar:hover .el-scrollbar__bar{opacity:1;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(151,168,190,.3);transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(151,168,190,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/select-dropdown.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-select-dropdown{position:absolute;z-index:1001;border:1px solid rgb(209, 229, 227);border-radius:2px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);box-sizing:border-box;margin:5px 0}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#18c79c;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:rgb(228, 241, 241)}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:10px;font-family:element-icons;content:"\E608";font-size:11px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/spinner.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/step.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-step.is-horizontal,.el-step.is-vertical .el-step__head,.el-step.is-vertical .el-step__main,.el-step__line{display:inline-block}.el-step{position:relative;vertical-align:top}.el-step.is-vertical .el-step__main{padding-left:10px}.el-step__line{position:absolute;border-color:inherit;background-color:rgb(191, 217, 214)}.el-step__line.is-vertical{width:2px;box-sizing:border-box;top:32px;bottom:0;left:15px}.el-step__line.is-horizontal{top:15px;height:2px;left:32px;right:0}.el-step__line.is-icon.is-horizontal{right:4px}.el-step__line-inner{display:block;border-width:1px;border-style:solid;border-color:inherit;transition:all 150ms;width:0;height:0}.el-step__icon{display:block;line-height:28px}.el-step__icon>*{line-height:inherit;vertical-align:middle}.el-step__head{width:28px;height:28px;border-radius:50%;background-color:transparent;text-align:center;line-height:28px;font-size:28px;vertical-align:top;transition:all 150ms}.el-step__head.is-finish{color:#18c79c;border-color:#18c79c}.el-step__head.is-error{color:#ff4949;border-color:#ff4949}.el-step__head.is-success{color:#13ce66;border-color:#13ce66}.el-step__head.is-process,.el-step__head.is-wait{color:rgb(191, 217, 214);border-color:rgb(191, 217, 214)}.el-step__head.is-text{font-size:14px;border-width:2px;border-style:solid}.el-step__head.is-text.is-finish{color:#fff;background-color:#18c79c;border-color:#18c79c}.el-step__head.is-text.is-error{color:#fff;background-color:#ff4949;border-color:#ff4949}.el-step__head.is-text.is-success{color:#fff;background-color:#13ce66;border-color:#13ce66}.el-step__head.is-text.is-wait{color:rgb(191, 217, 214);background-color:#fff;border-color:rgb(191, 217, 214)}.el-step__head.is-text.is-process{color:#fff;background-color:rgb(191, 217, 214);border-color:rgb(191, 217, 214)}.el-step__main{white-space:normal;padding-right:10px;text-align:left}.el-step__title{font-size:14px;line-height:32px;display:inline-block}.el-step__title.is-finish{font-weight:700;color:#18c79c}.el-step__title.is-error{font-weight:700;color:#ff4949}.el-step__title.is-success{font-weight:700;color:#13ce66}.el-step__title.is-wait{font-weight:400;color:rgb(151, 190, 187)}.el-step__title.is-process{font-weight:700;color:rgb(72, 106, 103)}.el-step__description{font-size:12px;font-weight:400;line-height:14px}.el-step__description.is-finish{color:#18c79c}.el-step__description.is-error{color:#ff4949}.el-step__description.is-success{color:#13ce66}.el-step__description.is-wait{color:rgb(191, 217, 214)}.el-step__description.is-process{color:rgb(131, 165, 162)}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/steps.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-steps{font-size:0}.el-steps>:last-child .el-step__line{display:none}.el-steps.is-horizontal{white-space:nowrap}.el-steps.is-horizontal.is-center{text-align:center}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/submenu.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-green/submenu.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/switch.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-switch{display:inline-block;position:relative;font-size:14px;line-height:22px;height:22px;vertical-align:middle}.el-switch__label,.el-switch__label *{position:absolute;font-size:14px;display:inline-block}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-switch.is-disabled .el-switch__core{border-color:rgb(228, 241, 241)!important;background:rgb(228, 241, 241)!important}.el-switch.is-disabled .el-switch__core span{background-color:rgb(250, 254, 253)!important}.el-switch.is-disabled .el-switch__core~.el-switch__label *{color:rgb(250, 254, 253)!important}.el-switch.is-disabled .el-switch__input:checked+.el-switch__core{border-color:rgb(228, 241, 241);background-color:rgb(228, 241, 241)}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__core,.el-switch__label{width:46px;height:22px;cursor:pointer}.el-switch__label{transition:.2s;z-index:10;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-switch__label *{line-height:1;top:4px;color:#fff}.el-switch__label--left i{left:6px}.el-switch__label--right i{right:6px}.el-switch__input{display:none}.el-switch__input:checked+.el-switch__core{border-color:#18c79c;background-color:#18c79c}.el-switch__core{margin:0;display:inline-block;position:relative;border:1px solid rgb(191, 217, 214);outline:0;border-radius:12px;box-sizing:border-box;background:rgb(191, 217, 214);transition:border-color .3s,background-color .3s}.el-switch__core .el-switch__button{top:0;left:0;position:absolute;border-radius:100%;transition:transform .3s;width:16px;height:16px;z-index:20;background-color:#fff}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/tab-pane.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/theme/theme-green/tab-pane.css
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/tag.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-tag{background-color:rgb(131, 165, 162);display:inline-block;padding:0 5px;height:24px;line-height:22px;font-size:12px;color:#fff;border-radius:4px;box-sizing:border-box;border:1px solid transparent;white-space:nowrap}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;-ms-transform:scale(.75,.75);transform:scale(.75,.75);height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-2px}.el-tag .el-icon-close:hover{background-color:#fff;color:rgb(131, 165, 162)}.el-tag--gray{background-color:rgb(228, 241, 241);border-color:rgb(228, 241, 241);color:rgb(72, 106, 103)}.el-tag--gray .el-tag__close:hover{background-color:rgb(72, 106, 103);color:#fff}.el-tag--gray.is-hit{border-color:rgb(72, 106, 103)}.el-tag--primary{background-color:rgba(32,160,255,.1);border-color:rgba(32,160,255,.2);color:#18c79c}.el-tag--primary .el-tag__close:hover{background-color:#18c79c;color:#fff}.el-tag--primary.is-hit{border-color:#18c79c}.el-tag--success{background-color:rgba(18,206,102,.1);border-color:rgba(18,206,102,.2);color:#13ce66}.el-tag--success .el-tag__close:hover{background-color:#13ce66;color:#fff}.el-tag--success.is-hit{border-color:#13ce66}.el-tag--warning{background-color:rgba(247,186,41,.1);border-color:rgba(247,186,41,.2);color:#f7ba2a}.el-tag--warning .el-tag__close:hover{background-color:#f7ba2a;color:#fff}.el-tag--warning.is-hit{border-color:#f7ba2a}.el-tag--danger{background-color:rgba(255,73,73,.1);border-color:rgba(255,73,73,.2);color:#ff4949}.el-tag--danger .el-tag__close:hover{background-color:#ff4949;color:#fff}.el-tag--danger.is-hit{border-color:#ff4949}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/tooltip.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-tooltip__popper{position:absolute;border-radius:4px;padding:10px;z-index:2000;font-size:12px;line-height:1.2}.el-tooltip__popper .popper__arrow,.el-tooltip__popper .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-tooltip__popper .popper__arrow{border-width:6px}.el-tooltip__popper .popper__arrow::after{content:" ";border-width:5px}.el-tooltip__popper[x-placement^=top]{margin-bottom:12px}.el-tooltip__popper[x-placement^=top] .popper__arrow{bottom:-6px;border-top-color:rgb(31, 61, 57);border-bottom-width:0}.el-tooltip__popper[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-5px;border-top-color:rgb(31, 61, 57);border-bottom-width:0}.el-tooltip__popper[x-placement^=bottom]{margin-top:12px}.el-tooltip__popper[x-placement^=bottom] .popper__arrow{top:-6px;border-top-width:0;border-bottom-color:rgb(31, 61, 57)}.el-tooltip__popper[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-5px;border-top-width:0;border-bottom-color:rgb(31, 61, 57)}.el-tooltip__popper[x-placement^=right]{margin-left:12px}.el-tooltip__popper[x-placement^=right] .popper__arrow{left:-6px;border-right-color:rgb(31, 61, 57);border-left-width:0}.el-tooltip__popper[x-placement^=right] .popper__arrow::after{bottom:-5px;left:1px;border-right-color:rgb(31, 61, 57);border-left-width:0}.el-tooltip__popper[x-placement^=left]{margin-right:12px}.el-tooltip__popper[x-placement^=left] .popper__arrow{right:-6px;border-right-width:0;border-left-color:rgb(31, 61, 57)}.el-tooltip__popper[x-placement^=left] .popper__arrow::after{right:1px;bottom:-5px;margin-left:-5px;border-right-width:0;border-left-color:rgb(31, 61, 57)}.el-tooltip__popper.is-light{background:#fff;border:1px solid rgb(31, 61, 57)}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow{border-top-color:rgb(31, 61, 57)}.el-tooltip__popper.is-light[x-placement^=top] .popper__arrow::after{border-top-color:#fff}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow{border-bottom-color:rgb(31, 61, 57)}.el-tooltip__popper.is-light[x-placement^=bottom] .popper__arrow::after{border-bottom-color:#fff}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow{border-left-color:rgb(31, 61, 57)}.el-tooltip__popper.is-light[x-placement^=left] .popper__arrow::after{border-left-color:#fff}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow{border-right-color:rgb(31, 61, 57)}.el-tooltip__popper.is-light[x-placement^=right] .popper__arrow::after{border-right-color:#fff}.el-tooltip__popper.is-dark{background:rgb(31, 61, 57);color:#fff}
--------------------------------------------------------------------------------
/src/assets/theme/theme-green/tree.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-tree{cursor:default;background:#fff;border:1px solid rgb(209, 229, 227)}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#5e7382}.el-tree-node{white-space:nowrap}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree-node__expand-icon,.el-tree-node__label,.el-tree-node__loading-icon{display:inline-block;vertical-align:middle}.el-tree-node__content{line-height:36px;height:36px;cursor:pointer}.el-tree-node__content>.el-checkbox,.el-tree-node__content>.el-tree-node__expand-icon{margin-right:8px}.el-tree-node__content>.el-checkbox{vertical-align:middle}.el-tree-node__content:hover{background:rgb(228, 241, 241)}.el-tree-node__expand-icon{cursor:pointer;width:0;height:0;margin-left:10px;border:6px solid transparent;border-right-width:0;border-left-color:rgb(151, 190, 187);border-left-width:7px;-ms-transform:rotate(0);transform:rotate(0);transition:transform .3s ease-in-out}.el-tree-node__expand-icon:hover{border-left-color:#999}.el-tree-node__expand-icon.expanded{-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{border-color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:4px;font-size:14px;color:rgb(151, 190, 187)}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:rgb(237, 251, 247)}
--------------------------------------------------------------------------------
/src/assets/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/user.png
--------------------------------------------------------------------------------
/src/assets/xiyang.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/assets/xiyang.gif
--------------------------------------------------------------------------------
/src/images/banner.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/images/banner.jpeg
--------------------------------------------------------------------------------
/src/images/cat.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/images/cat.jpeg
--------------------------------------------------------------------------------
/src/images/cloud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/images/cloud.png
--------------------------------------------------------------------------------
/src/images/default-avatar.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/images/default-avatar.jpeg
--------------------------------------------------------------------------------
/src/images/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/images/favicon.ico
--------------------------------------------------------------------------------
/src/images/mac.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/src/images/mac.png
--------------------------------------------------------------------------------
/src/javascripts/account.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by harttle on 1/6/15.
3 | */
4 |
5 | var msgMap = {
6 | "Unauthorized": '用户名或密码不正确',
7 | "Unactived": '该用户尚未激活'
8 | };
9 |
10 | function login(){
11 | if(!simpleValidate()) return;
12 | $.post('', $('form').serialize())
13 | .done(function(){
14 | window.location = getQueryStringValue('next') || '/home';
15 | })
16 | .fail(function(e){
17 | warn(msgMap[e.responseText] || '未知错误');
18 | });
19 |
20 | function getQueryStringValue (key) {
21 | return unescape(window.location.search.replace(new RegExp("^(?:.*[&\\?]" + escape(key).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1"));
22 | }
23 | }
24 |
25 | function resetPassword(){
26 | var p = $('#password').val();
27 | var p1 = $('#password1').val();
28 | if(p===''){
29 | warn('密码不能为空');
30 | return false;
31 | }
32 | if(p !== p1){
33 | warn('两次输入的密码不一致');
34 | return false;
35 | }
36 | return true;
37 | }
38 |
39 | function signup(){
40 | if(!simpleValidate()) return;
41 |
42 | var password = $('[name=password]').val();
43 | var password1 = $('#password1').val();
44 | if(password != password1){
45 | warn('两次输入的密码不一致');
46 | return;
47 | }
48 | $.post('', $('form').serialize())
49 | .done(info)
50 | .fail(function(res){
51 | warn(res.responseText);
52 | });
53 | }
54 |
55 | function simpleValidate(){
56 | var username = $('[name=username]').val().trim();
57 | var password = $('[name=password]').val();
58 |
59 | if(username.length === 0){
60 | warn('邮件不能为空');
61 | return false;
62 | }
63 | if(!validateEmail(username)){
64 | warn('邮件不合法');
65 | return false;
66 | }
67 | if(password.length === 0){
68 | warn('密码不能为空');
69 | return false;
70 | }
71 | return true;
72 | }
73 |
74 | function warn(msg){
75 | $('.alert').hide();
76 | $('.alert-danger').html(msg).show();
77 | }
78 |
79 | function info(msg){
80 | $('.alert').hide();
81 | $('.alert-success').html(msg).show();
82 | }
83 |
84 | function validateEmail(email) {
85 | var 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,}))$/;
86 | return re.test(email);
87 | }
--------------------------------------------------------------------------------
/src/javascripts/admin-post.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by harttle on 1/7/15.
3 | */
4 |
5 | function save(){// validation
6 | if($('#title').val().trim()==='')
7 | return $('.alert-danger').html('标题不能为空').show();
8 | $('form').submit();
9 | }
10 |
11 | $(function(){
12 | if($('body#edit').length === 0) return;
13 |
14 | $('#content').bind('input propertychange', function(){
15 | $('#preview').html(marked($('#content').val()));
16 | });
17 | $('#content').trigger('input');
18 | });
--------------------------------------------------------------------------------
/src/javascripts/common.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by harttle on 1/8/15.
3 | */
4 |
5 |
6 | marked.setOptions({
7 | highlight: function (code) {
8 | return hljs.highlightAuto(code).value;
9 | }
10 | });
--------------------------------------------------------------------------------
/src/javascripts/home-post.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by harttle on 1/8/15.
3 | */
4 |
5 | $(function(){
6 | if($('body#post').length === 0) return;
7 |
8 | $('.post-content').each(function(i, ele){
9 | var $ele = $(ele);
10 | $ele.html(marked($ele.find('#content').html()));
11 | });
12 | });
13 |
14 | function comment(){
15 | var content = $('#new-comment').val();
16 | if(content.trim() === ''){
17 | return $('.alert').html('评论不能为空').show();
18 | }
19 | $('#new-comment').val('');
20 |
21 | $.post('', {content: content})
22 | .done(function(){
23 | location.reload();
24 | })
25 | .fail(function(data){
26 | return $('.alert').html('评论失败:'+data).show();
27 | });
28 | }
--------------------------------------------------------------------------------
/src/javascripts/posts.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by harttle on 1/7/15.
3 | */
4 |
5 | function delPost(id) {
6 | $.ajax({
7 | url: '/admin/post/' + id,
8 | type: 'DELETE',
9 | success: function (result) {
10 | location.reload();
11 | }
12 | });
13 | }
--------------------------------------------------------------------------------
/src/javascripts/runTime.js:
--------------------------------------------------------------------------------
1 | export function runTime() {
2 | let seconds = 1000
3 | let minutes = seconds * 60
4 | let hours = minutes * 60
5 | let days = hours * 24
6 | let years = days * 365
7 | let today = new Date()
8 | let todayYear = today.getFullYear()
9 | let todayMonth = today.getMonth()
10 | let todayDate = today.getDate()
11 | let todayHour = today.getHours()
12 | let todayMinute = today.getMinutes()
13 | let todaySecond = today.getSeconds()
14 | /* Date.UTC() -- 返回date对象距世界标准时间(UTC)1970年1月1日午夜之间的毫秒数(时间戳)
15 | year - 作为date对象的年份,为4位年份值
16 | month - 0-11之间的整数,做为date对象的月份
17 | day - 1-31之间的整数,做为date对象的天数
18 | hours - 0(午夜24点)-23之间的整数,做为date对象的小时数
19 | minutes - 0-59之间的整数,做为date对象的分钟数
20 | seconds - 0-59之间的整数,做为date对象的秒数
21 | microseconds - 0-999之间的整数,做为date对象的毫秒数 */
22 | let t1 = Date.UTC(2014,0,14,11,19,0)
23 | let t2 = Date.UTC(todayYear,todayMonth,todayDate,todayHour,todayMinute,todaySecond)
24 | let diff = t2-t1
25 | let diffYears = Math.floor(diff/years)
26 | let diffDays = Math.floor((diff/days)-diffYears*365)
27 | let diffHours = Math.floor((diff-(diffYears*365+diffDays)*days)/hours)
28 | let diffMinutes = Math.floor((diff-(diffYears*365+diffDays)*days-diffHours*hours)/minutes)
29 | let diffSeconds = Math.floor((diff-(diffYears*365+diffDays)*days-diffHours*hours-diffMinutes*minutes)/seconds)
30 | time =" "+diffYears+" 年 "+diffDays+" 天 "+diffHours+" 小时 "+diffMinutes+" 分钟 "+diffSeconds+" 秒"
31 | return time
32 | }
33 |
--------------------------------------------------------------------------------
/src/javascripts/unique.js:
--------------------------------------------------------------------------------
1 | // 数组去重
2 | // export function unique (array) {
3 | // var n = []; //一个新的临时数组
4 | // //遍历当前数组
5 | // for(var i = 0; i < array.length; i++){
6 | // //如果当前数组的第i已经保存进了临时数组,那么跳过,
7 | // //否则把当前项push到临时数组里面
8 | // if (n.indexOf(array[i]) == -1) n.push(array[i]);
9 | // }
10 | // return n;
11 | // }
12 |
13 | // 数组中对象去重
14 | export function unique (arr) {
15 | var unique = {};
16 | arr.forEach(function(a){ unique[ JSON.stringify(a) ] = 1 });
17 | arr= Object.keys(unique).map(function(u){return JSON.parse(u) });
18 | return arr
19 | }
20 |
--------------------------------------------------------------------------------
/src/javascripts/util.js:
--------------------------------------------------------------------------------
1 | var SIGN_REGEXP = /([yMdhsm])(\1*)/g;
2 | var DEFAULT_PATTERN = 'yyyy-MM-dd';
3 | function padding(s, len) {
4 | var len = len - (s + '').length;
5 | for (var i = 0; i < len; i++) { s = '0' + s; }
6 | return s;
7 | };
8 |
9 | export default {
10 | getQueryStringByName: function (name) {
11 | var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
12 | var r = window.location.search.substr(1).match(reg);
13 | var context = "";
14 | if (r != null)
15 | context = r[2];
16 | reg = null;
17 | r = null;
18 | return context == null || context == "" || context == "undefined" ? "" : context;
19 | },
20 | formatDate: {
21 |
22 |
23 | format: function (date, pattern) {
24 | pattern = pattern || DEFAULT_PATTERN;
25 | return pattern.replace(SIGN_REGEXP, function ($0) {
26 | switch ($0.charAt(0)) {
27 | case 'y': return padding(date.getFullYear(), $0.length);
28 | case 'M': return padding(date.getMonth() + 1, $0.length);
29 | case 'd': return padding(date.getDate(), $0.length);
30 | case 'w': return date.getDay() + 1;
31 | case 'h': return padding(date.getHours(), $0.length);
32 | case 'm': return padding(date.getMinutes(), $0.length);
33 | case 's': return padding(date.getSeconds(), $0.length);
34 | }
35 | });
36 | },
37 | parse: function (dateString, pattern) {
38 | var matchs1 = pattern.match(SIGN_REGEXP);
39 | var matchs2 = dateString.match(/(\d)+/g);
40 | if (matchs1.length == matchs2.length) {
41 | var _date = new Date(1970, 0, 1);
42 | for (var i = 0; i < matchs1.length; i++) {
43 | var _int = parseInt(matchs2[i]);
44 | var sign = matchs1[i];
45 | switch (sign.charAt(0)) {
46 | case 'y': _date.setFullYear(_int); break;
47 | case 'M': _date.setMonth(_int - 1); break;
48 | case 'd': _date.setDate(_int); break;
49 | case 'h': _date.setHours(_int); break;
50 | case 'm': _date.setMinutes(_int); break;
51 | case 's': _date.setSeconds(_int); break;
52 | }
53 | }
54 | return _date;
55 | }
56 | return null;
57 | }
58 |
59 | }
60 |
61 | };
62 |
--------------------------------------------------------------------------------
/src/mock/data/user.js:
--------------------------------------------------------------------------------
1 | import Mock from 'mockjs';
2 | const LoginUsers = [
3 | {
4 | id: 1,
5 | username: 'admin',
6 | password: '123456',
7 | avatar: 'https://raw.githubusercontent.com/taylorchen709/markdown-images/master/vueadmin/user.png',
8 | name: '张某某'
9 | }
10 | ];
11 |
12 | const Users = [];
13 |
14 | for (let i = 0; i < 86; i++) {
15 | Users.push(Mock.mock({
16 | id: Mock.Random.guid(),
17 | name: Mock.Random.cname(),
18 | addr: Mock.mock('@county(true)'),
19 | 'age|18-60': 1,
20 | birth: Mock.Random.date(),
21 | sex: Mock.Random.integer(0, 1)
22 | }));
23 | }
24 |
25 | export { LoginUsers, Users };
26 |
--------------------------------------------------------------------------------
/src/mock/index.js:
--------------------------------------------------------------------------------
1 | import mock from './mock';
2 |
3 | export default mock;
4 |
--------------------------------------------------------------------------------
/src/router/blog-routes.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 | // import Index from '@/views/Index'
4 | // import Blog from '@/views/Blog'
5 | // import About from '@/views/About'
6 | // import Article from '@/views/Article'
7 | // import Messages from '@/views/Messages'
8 | // import admin from '@/admin/admin'
9 | // import adminArticle from '@/admin/adminArticle'
10 | // import change from '@/admin/change'
11 | // import adminArticleList from '@/admin/adminArticleList'
12 | import login from '@/views/blog/login'
13 |
14 | const Blog = resolve => require(['@/views/blog/Blog'], resolve)
15 | const About = resolve => require(['@/views/blog/About'], resolve)
16 | const Article = resolve => require(['@/views/blog/Article'], resolve)
17 | const Messages = resolve => require(['@/views/blog/messages'], resolve)
18 | const Test = resolve => require(['@/views/blog/test'], resolve)
19 |
20 | const admin = resolve => require(['@/views/blog/admin/admin'], resolve)
21 | const adminArticle = resolve => require(['@/views/blog/admin/adminArticle'], resolve)
22 | const adminChange = resolve => require(['@/views/blog/admin/adminChange'], resolve)
23 | const adminArticleList = resolve => require(['@/views/blog/admin/adminArticleList'], resolve)
24 |
25 | Vue.use(Router)
26 |
27 | export default new Router({
28 | mode: 'history',
29 | base: '/blog',
30 | routes: [
31 | {
32 | path: '/',
33 | name: 'Blog',
34 | component: Blog
35 | },
36 | {
37 | path: '/about',
38 | name: 'About',
39 | component: About
40 | },
41 | {
42 | path: '/test',
43 | name: 'Test',
44 | component: Test
45 | },
46 | {
47 | path: '/article',
48 | name: 'Article',
49 | component: Article
50 | },
51 | {
52 | path: '/messages',
53 | name: 'Messages',
54 | component: Messages
55 | },
56 | {
57 | path: '/admin',
58 | name: 'Admin',
59 | component: admin,
60 | redirect: { name: 'adminArticle'},
61 | children: [
62 | { path: '/admin/adminArticle', component: adminArticle, name: 'adminArticle'},
63 | { path: '/admin/adminChange', component: adminChange, name: 'adminChange'},
64 | { path: '/admin/adminArticleList', component: adminArticleList, name: 'adminArticleList'},
65 | ]
66 | },
67 | {
68 | path: '/login',
69 | name: 'Login',
70 | component: login,
71 | }
72 | ]
73 | })
74 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 | import HelloWorld from '@/components/HelloWorld'
4 |
5 | Vue.use(Router)
6 |
7 | export default new Router({
8 | routes: [
9 | {
10 | path: '/',
11 | name: 'HelloWorld',
12 | component: HelloWorld
13 | }
14 | ]
15 | })
16 |
--------------------------------------------------------------------------------
/src/router/qims-routes.js:
--------------------------------------------------------------------------------
1 | import Login from '../views/qims/Login.vue'
2 |
3 | let routes = [
4 | {
5 | path: '/qims/login',
6 | component: Login,
7 | name: '',
8 | hidden: true
9 | },
10 | ];
11 |
12 | export default routes;
--------------------------------------------------------------------------------
/src/router/test-router.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 | import HelloWorld from '@/components/HelloWorld'
4 |
5 | Vue.use(Router)
6 |
7 | export default new Router({
8 | routes: [
9 | {
10 | path: '/',
11 | name: 'HelloWorld',
12 | component: HelloWorld
13 | }
14 | ]
15 | })
16 |
--------------------------------------------------------------------------------
/src/styles/account.css:
--------------------------------------------------------------------------------
1 |
2 | .center-wrapper{
3 | display: table;
4 | text-align: center;
5 | height: 100%;
6 | width: 100%;
7 | }
8 |
9 | .center{
10 | display: table-cell;
11 | vertical-align: middle;
12 | }
13 |
14 | body#login, body#register{
15 | background: #3c3c3c;
16 | }
17 |
18 | #login, #register h3{
19 | color: #ffffff;
20 | margin-bottom: 30px;
21 | }
22 |
23 | #login form{
24 | margin-bottom: 0;
25 | }
26 | #login .operation{
27 | width: 450px;
28 | margin: 0 auto;
29 | text-align: right;
30 | }
31 | #login .alert{
32 | max-width: 400px;
33 | margin-top: 10px;
34 | display: inline-block;
35 | }
36 |
37 | #register form{
38 | max-width: 300px;
39 | margin: 0 auto;
40 | }
41 | #register input{
42 | margin-bottom: 5px;
43 | }
44 | #forgot #username{
45 | width: 300px;
46 | }
47 | #reset form{
48 | width: 400px;
49 | }
--------------------------------------------------------------------------------
/src/styles/admin.css:
--------------------------------------------------------------------------------
1 |
2 | #profile .container, #edit .container, #posts .container {
3 | margin-bottom: 20px;
4 | }
5 |
6 | #profile img.avatar {
7 | height: 65px;
8 | width: 65px;
9 | margin-right: 15px;
10 | }
11 |
12 | #edit #content {
13 | height: 385px;
14 | resize: vertical;
15 | }
16 |
17 | #edit #preview {
18 | border: solid 1px #ccc;
19 | height: 435px;
20 | overflow: auto;
21 | padding: 15px;
22 | }
23 |
24 | #posts .table {
25 | margin-top: 30px;
26 | }
27 |
28 | #posts .table .title {
29 |
30 | }
31 |
32 | #posts .table .date {
33 | width: 300px;
34 | vertical-align: middle;
35 | }
36 |
37 | #posts .table .operation {
38 | width: 100px;
39 | }
--------------------------------------------------------------------------------
/src/styles/blog.css:
--------------------------------------------------------------------------------
1 | .headpic {
2 | height: 280px;
3 | background: url(../assets/images/dahai.jpg) center -52px no-repeat;
4 | -webkit-background-size: cover;
5 | background-size: cover;
6 | position: relative;
7 | }
8 |
9 | .headtitle {
10 | top: 100px;
11 | max-width: 1100px;
12 | margin: 0 auto;
13 | padding: 0 50px;
14 | position: relative;
15 | font-family: 'Geo', sans-serif;
16 | font-size: 34px;
17 | text-shadow: 0 3px 3px #616066;
18 | }
19 |
20 | .title {
21 | float: left;
22 | }
23 |
24 | .title h1 {
25 | color: #fff;
26 | font-weight: 300;
27 | margin: -5px 0 6px 0;
28 | font-size: 78px;
29 | font-weight: bold;
30 | line-height: 1;
31 | letter-spacing: .02em;
32 | }
33 |
34 | .blog .article {
35 | font-family: PingFang TC, Avenir Next, Helvetica, Arial, Hiragino Sans GB, Microsoft YaHei, sans-serif;
36 | font-size: 15px;
37 | color: #444!important;
38 | }
39 |
40 | .content {
41 | position: relative;
42 | }
43 |
44 | .list {
45 | margin-top: 38px;
46 | }
47 |
48 | .list .main {
49 | width: 67%;
50 | float: left;
51 | margin-top: -90px;
52 | -webkit-transition: all .5s ease-out;
53 | transition: all .5s ease-out;
54 | }
55 |
56 | .list .side {
57 | width: 30%;
58 | float: right;
59 | }
60 |
61 | @media (max-width: 1000px) {
62 | .list .main {
63 | width: 100%!important;
64 | }
65 | .list .side {
66 | display: none!important;
67 | }
68 | .headtitle {
69 | text-align: center;
70 | top: 100px;
71 | }
72 | .back-to-top {
73 | right: 20px!important;
74 | }
75 | }
76 |
77 | @media (max-width: 700px) {
78 | .headpic {
79 | height: 300px!important;
80 | }
81 | .headtitle {
82 | text-align: center;
83 | top: 100px;
84 | }
85 | .back-to-top {
86 | display: none;
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/src/styles/container.css:
--------------------------------------------------------------------------------
1 | .container {
2 | max-width: 80%;
3 | margin: 0 auto;
4 | position: relative;
5 | }
6 | .container.full {
7 | max-width: 66%;
8 | }
9 | .container:after {
10 | clear: both;
11 | content: "";
12 | display: table;
13 | }
14 |
15 | @media (max-width: 800px) {
16 | .container {
17 | max-width: 100%!important;
18 | }
19 | .container.full {
20 | max-width: 100%!important;
21 | }
22 | .back-to-top {
23 | display: none;
24 | }
25 | .main-full {
26 | border-radius: 0px!important;
27 | }
28 | .full-content header {
29 | width: 80%!important;
30 | }
31 | .post-content {
32 | width: 80%!important;
33 | margin: 0 auto;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/styles/global.css:
--------------------------------------------------------------------------------
1 | /* GLOBAL
2 | -------------------------------------------------- */
3 | body {
4 | color: #5a5a5a;
5 | }
6 | footer{
7 | background: #000000;
8 | padding: 15px;
9 | }
10 | footer a{
11 | color: white;
12 | }
13 |
14 | .banner{
15 | position: relative;
16 | height: 280px;
17 | background-image: url('/images/banner.jpeg');
18 | background-repeat: no-repeat;
19 | background-size: cover;
20 | background-position: 50% 30%;
21 | text-align: center;
22 | }
23 |
24 | .banner .blog-intro{
25 | margin-top: 120px;
26 | padding: 15px;
27 | color: white;
28 | }
29 | .banner .blog-intro .avatar{
30 | width: 50px;
31 | height: 50px;
32 | }
33 | .banner .blog-intro .title{
34 | font-size: 28px;
35 | }
36 | .banner .blog-intro .description{
37 | font-size: 18px;
38 | }
39 |
40 | .post .post-title a{
41 | color: #777;
42 | }
43 | .post .post-title a:hover{
44 | color: #333;
45 | text-decoration: none;
46 | }
47 |
48 | #home-header .navbar-nav>li>a, #home-header .navbar-brand{
49 | color: #ccc;
50 | }
51 | #home-header .navbar-nav>li>a:hover{
52 | color: white;
53 | }
54 |
55 | .comment img{
56 | height: 45px;
57 | width: 45px;
58 | border-radius: 45px;
59 | margin-right: 10px;
60 | }
--------------------------------------------------------------------------------
/src/styles/index.css:
--------------------------------------------------------------------------------
1 | /* NAVBAR
2 | -------------------------------------------------- */
3 | .navbar-wrapper {
4 | position: absolute;
5 | top: 0;
6 | right: 0;
7 | left: 0;
8 | z-index: 20;
9 | }
10 | .navbar-wrapper > .container {
11 | padding-right: 0;
12 | padding-left: 0;
13 | }
14 | .navbar-wrapper .navbar {
15 | padding-right: 15px;
16 | padding-left: 15px;
17 | }
18 | .navbar-wrapper .navbar .container {
19 | width: auto;
20 | }
21 |
22 |
23 | /* CUSTOMIZE THE CAROUSEL
24 | -------------------------------------------------- */
25 | .carousel {
26 | height: 500px;
27 | margin-bottom: 60px;
28 | }
29 | .carousel-caption {
30 | z-index: 10;
31 | }
32 | .carousel .item {
33 | height: 500px;
34 | background-color: #777;
35 | }
36 | .carousel-inner > .item > img {
37 | position: absolute;
38 | top: 0;
39 | left: 0;
40 | min-width: 100%;
41 | height: 500px;
42 | filter: blur(20px);
43 | -ms-filter: blur(20px);
44 | -o-filter: blur(20px);
45 | -moz-filter: blur(20px);
46 | -webkit-filter: blur(20px);
47 | }
48 |
49 |
50 | /* MARKETING CONTENT
51 | -------------------------------------------------- */
52 | .marketing .col-lg-4 {
53 | margin-bottom: 20px;
54 | text-align: center;
55 | }
56 | .marketing h2 {
57 | font-weight: normal;
58 | }
59 | .marketing .col-lg-4 p {
60 | margin-right: 10px;
61 | margin-left: 10px;
62 | }
63 |
64 | /* RESPONSIVE CSS
65 | -------------------------------------------------- */
66 |
67 | @media (min-width: 768px) {
68 | .navbar-wrapper {
69 | margin-top: 20px;
70 | }
71 | .navbar-wrapper .container {
72 | padding-right: 15px;
73 | padding-left: 15px;
74 | }
75 | .navbar-wrapper .navbar {
76 | padding-right: 0;
77 | padding-left: 0;
78 | }
79 | .navbar-wrapper .navbar {
80 | border-radius: 4px;
81 | }
82 | .carousel-caption p {
83 | margin-bottom: 20px;
84 | font-size: 18px;
85 | line-height: 1.4;
86 | }
87 | }
--------------------------------------------------------------------------------
/src/styles/side.css:
--------------------------------------------------------------------------------
1 | .secondary .section {
2 | margin: 0 0 10px 0;
3 | /*padding: 0 0 25px 0;*/
4 | /*border-bottom: 1px solid #ddd;*/
5 | position: relative;
6 | padding: 15px;
7 | }
8 |
9 |
10 | /*.widget {
11 | margin-left: 10px;
12 | margin-right: 10px;
13 | -webkit-transition: all .2s linear;
14 | transition: all .2s linear;
15 | }
16 | .widget:hover {
17 | z-index: 2;
18 | -webkit-box-shadow: 0px 10px 30px rgba(0,0,0,0.1);
19 | box-shadow: 0px 10px 30px rgba(0,0,0,0.1);
20 | -webkit-transform: translate3d(0px,-5px,0);
21 | transform: translate3d(0px,-5px,0);
22 | }*/
23 |
--------------------------------------------------------------------------------
/src/views/404.vue:
--------------------------------------------------------------------------------
1 |
2 | 404 page not found
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/views/blog/app.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
25 |
--------------------------------------------------------------------------------
/src/views/blog/components/About.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
11 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
40 |
41 |
51 |
--------------------------------------------------------------------------------
/src/views/blog/components/Footer.vue:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 |
20 |
21 |
32 |
--------------------------------------------------------------------------------
/src/views/blog/components/Header.vue:
--------------------------------------------------------------------------------
1 |
2 |
23 |
24 |
25 |
71 |
--------------------------------------------------------------------------------
/src/views/blog/components/articleList.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {{item.title}}
5 | 发布于 {{item.createDate}}
6 |
9 |
10 |
11 | 阅读全文
12 |
13 |
17 |
18 |
19 |
20 |
97 |
98 |
109 |
--------------------------------------------------------------------------------
/src/views/blog/components/runTime.vue:
--------------------------------------------------------------------------------
1 |
2 | 已默默运行了
3 | {{moment}}
4 |
5 |
6 |
7 |
82 |
--------------------------------------------------------------------------------
/src/views/blog/components/sideSection.vue:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
--------------------------------------------------------------------------------
/src/views/blog/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import App from './app.vue'
3 |
4 | import ElementUI from 'element-ui'
5 | import 'element-ui/lib/theme-chalk/index.css'
6 | import 'font-awesome/css/font-awesome.min.css'
7 | import store from '@/vuex/store'
8 | import Vuex from 'vuex'
9 | import router from './router'
10 |
11 | import mavonEditor from 'mavon-editor'
12 | import 'mavon-editor/dist/css/index.css'
13 |
14 | import '@/styles/container.css'
15 | import '@/styles/header.css'
16 | import '@/styles/article.css'
17 | import '@/styles/side.css'
18 | import '@/styles/blog.css'
19 |
20 |
21 | Vue.use(ElementUI)
22 | Vue.use(mavonEditor)
23 | //Vue.use(Vuex)
24 |
25 |
26 |
27 |
28 |
29 |
30 | Vue.prototype.setCookie = (c_name, value, expiredays) => {
31 | var exdate = new Date();
32 | exdate.setDate(exdate.getDate() + expiredays);
33 | document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
34 | }
35 |
36 | Vue.prototype.setCookie = (c_name, value, expiredays) => {
37 | var exdate = new Date();
38 | exdate.setDate(exdate.getDate() + expiredays);
39 | document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
40 | }
41 | function getCookie(name) {
42 | var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
43 | if (arr = document.cookie.match(reg))
44 | return (arr[2]);
45 | else
46 | return null;
47 | }
48 | Vue.prototype.getCookie = getCookie;
49 | Vue.prototype.delCookie =(name) => {
50 | var exp = new Date();
51 | exp.setTime(exp.getTime() - 1);
52 | var cval = getCookie(name);
53 | if (cval != null)
54 | document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
55 | }
56 |
57 | Vue.config.productionTip = false
58 |
59 | new Vue({
60 | router,
61 | store,
62 | render: h => h(App)
63 | }).$mount('#app')
64 |
--------------------------------------------------------------------------------
/src/views/blog/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 |
4 |
5 | const Blog = resolve => require(['../components/Blog'], resolve)
6 | const About = resolve => require(['../components/About'], resolve)
7 | const Article = resolve => require(['../components/Article'], resolve)
8 | const Messages = resolve => require(['../components/messages'], resolve)
9 | const Test = resolve => require(['../components/test'], resolve)
10 |
11 | Vue.use(Router)
12 |
13 | export default new Router({
14 | mode: 'history',
15 | base: '/blog',
16 | routes: [
17 | {
18 | path: '/',
19 | name: 'Blog',
20 | component: Blog
21 | },
22 | {
23 | path: '/about',
24 | name: 'About',
25 | component: About
26 | },
27 | {
28 | path: '/test',
29 | name: 'Test',
30 | component: Test
31 | },
32 | {
33 | path: '/article',
34 | name: 'Article',
35 | component: Article
36 | },
37 | {
38 | path: '/messages',
39 | name: 'Messages',
40 | component: Messages
41 | }
42 | ]
43 | })
44 |
--------------------------------------------------------------------------------
/src/views/blogadmin/app.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
12 |
13 |
25 |
--------------------------------------------------------------------------------
/src/views/blogadmin/components/admin.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
15 |
16 |
17 |
18 |
19 |
20 |
21 | 文章列表
22 |
23 |
24 |
25 | 新建文章
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
66 |
67 |
80 |
--------------------------------------------------------------------------------
/src/views/blogadmin/components/loading.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
20 |
21 |
96 |
--------------------------------------------------------------------------------
/src/views/blogadmin/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import App from './app.vue'
3 |
4 | import ElementUI from 'element-ui'
5 | import 'element-ui/lib/theme-chalk/index.css'
6 | import 'font-awesome/css/font-awesome.min.css'
7 | import store from '@/vuex/store'
8 | import Vuex from 'vuex'
9 | import router from './router'
10 |
11 | import mavonEditor from 'mavon-editor'
12 | import 'mavon-editor/dist/css/index.css'
13 |
14 | import '@/styles/container.css'
15 | import '@/styles/header.css'
16 | import '@/styles/article.css'
17 | import '@/styles/side.css'
18 | import '@/styles/blog.css'
19 |
20 |
21 | Vue.use(ElementUI)
22 | Vue.use(mavonEditor)
23 | //Vue.use(Vuex)
24 |
25 |
26 |
27 |
28 |
29 |
30 | Vue.prototype.setCookie = (c_name, value, expiredays) => {
31 | var exdate = new Date();
32 | exdate.setDate(exdate.getDate() + expiredays);
33 | document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
34 | }
35 |
36 | Vue.prototype.setCookie = (c_name, value, expiredays) => {
37 | var exdate = new Date();
38 | exdate.setDate(exdate.getDate() + expiredays);
39 | document.cookie = c_name + "=" + escape(value) + ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
40 | }
41 | function getCookie(name) {
42 | var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
43 | if (arr = document.cookie.match(reg))
44 | return (arr[2]);
45 | else
46 | return null;
47 | }
48 | Vue.prototype.getCookie = getCookie;
49 | Vue.prototype.delCookie =(name) => {
50 | var exp = new Date();
51 | exp.setTime(exp.getTime() - 1);
52 | var cval = getCookie(name);
53 | if (cval != null)
54 | document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString();
55 | }
56 |
57 | Vue.config.productionTip = false
58 |
59 |
60 |
61 |
62 | new Vue({
63 | router,
64 | store,
65 | render: h => h(App)
66 | }).$mount('#app')
67 |
--------------------------------------------------------------------------------
/src/views/blogadmin/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 |
4 |
5 |
6 |
7 | const login = resolve => require(['../components/login'], resolve)
8 | const admin = resolve => require(['../components/admin'], resolve)
9 | const adminArticle = resolve => require(['../components/adminArticle'], resolve)
10 | const adminChange = resolve => require(['../components/adminChange'], resolve)
11 | const adminArticleList = resolve => require(['../components/adminArticleList'], resolve)
12 |
13 | Vue.use(Router)
14 |
15 | export default new Router({
16 | mode: 'history',
17 | base: '/blogadmin',
18 | routes: [
19 | {
20 | path: '/',
21 | name: 'Admin',
22 | component: admin,
23 | redirect: { name: 'adminArticle'},
24 | children: [
25 | { path: '/admin/adminArticle', component: adminArticle, name: 'adminArticle'},
26 | { path: '/admin/adminChange', component: adminChange, name: 'adminChange'},
27 | { path: '/admin/adminArticleList', component: adminArticleList, name: 'adminArticleList'},
28 | ]
29 | },
30 | {
31 | path: '/login',
32 | name: 'Login',
33 | component: login,
34 | }
35 | ]
36 | })
37 |
--------------------------------------------------------------------------------
/src/views/demo/app.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
18 |
19 |
--------------------------------------------------------------------------------
/src/views/demo/components/404.vue:
--------------------------------------------------------------------------------
1 |
2 | 404 page not found
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/views/demo/components/nav1/Form.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | -
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | 立即创建
43 | 取消
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/src/views/demo/components/nav1/Main.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
16 |
17 |
--------------------------------------------------------------------------------
/src/views/demo/components/nav1/user.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | 查询
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
76 |
77 |
80 |
--------------------------------------------------------------------------------
/src/views/demo/components/nav2/Page4.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
vuex 测试
4 | Clicked: {{ getCount }} times
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/src/views/demo/components/nav2/Page5.vue:
--------------------------------------------------------------------------------
1 |
2 |
4 |
--------------------------------------------------------------------------------
/src/views/demo/components/nav3/Page6.vue:
--------------------------------------------------------------------------------
1 |
2 |
4 |
--------------------------------------------------------------------------------
/src/views/demo/components/sys/AccessMon.vue:
--------------------------------------------------------------------------------
1 |
2 | 404 page not found
3 |
--------------------------------------------------------------------------------
/src/views/demo/components/sys/Bridge.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/src/views/demo/components/sys/DataMon.vue:
--------------------------------------------------------------------------------
1 |
2 | 数据监控
3 |
4 |
5 |
--------------------------------------------------------------------------------
/src/views/demo/components/sys/Log.vue:
--------------------------------------------------------------------------------
1 |
2 | 404 page not found
3 |
--------------------------------------------------------------------------------
/src/views/demo/components/sys/Menu.vue:
--------------------------------------------------------------------------------
1 |
2 | 404 page not found
3 |
4 |
--------------------------------------------------------------------------------
/src/views/demo/components/sys/Permission.vue:
--------------------------------------------------------------------------------
1 |
2 | 404 page not found
3 |
--------------------------------------------------------------------------------
/src/views/demo/components/sys/User.vue:
--------------------------------------------------------------------------------
1 |
2 | 404 page not found
3 |
--------------------------------------------------------------------------------
/src/views/demo/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue';
2 | import App from './app'
3 |
4 | import ElementUI from 'element-ui'
5 | import 'element-ui/lib/theme-chalk/index.css'
6 | import VueRouter from 'vue-router'
7 | import store from '@/vuex/store'
8 | import Vuex from 'vuex'
9 | import router from './router'
10 | import 'font-awesome/css/font-awesome.min.css'
11 | import Mock from '@/mock'
12 |
13 |
14 | Vue.use(ElementUI)
15 | Vue.use(Vuex)
16 | //NProgress.configure({ showSpinner: false });
17 |
18 |
19 |
20 |
21 | Mock.bootstrap();
22 | router.beforeEach((to, from, next) => {
23 | console.log( "GOTO =>"+to.path)
24 | //该内容每次跳转链接时才会执行
25 | //NProgress.start();
26 | //先清除已登录信息
27 |
28 | if (to.path == '/login') {
29 | sessionStorage.removeItem('user');
30 | }
31 | let user = JSON.parse(sessionStorage.getItem('user'));
32 | //无登录信息则跳转到登录
33 |
34 | if (!user && to.path != '/login') {
35 | sessionStorage.setItem('last',to.path)
36 | console.log("save:"+to.path)
37 | next({ path: '/login' })
38 | } else {
39 | next()
40 | }
41 | })
42 |
43 | //router.afterEach(transition => {
44 | //NProgress.done();
45 | //});
46 |
47 | new Vue({
48 | router,
49 | store,
50 | render: h => h(App)
51 | }).$mount('#app')
52 |
53 |
54 |
--------------------------------------------------------------------------------
/src/views/error.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | 404
7 |
8 |
9 | {{status}} {{message}}
10 | {{stack}}
11 |
12 |
13 |
--------------------------------------------------------------------------------
/src/views/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | <%= htmlWebpackPlugin.options.title %>
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/src/views/test/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |

4 |
5 |
6 |
7 |
8 |
13 |
14 |
24 |
--------------------------------------------------------------------------------
/src/views/test/components/HelloWorld.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{ msg }}
4 |
Essential Links
5 |
48 |
Ecosystem
49 |
83 |
84 |
85 |
86 |
96 |
97 |
98 |
114 |
--------------------------------------------------------------------------------
/src/views/test/main.js:
--------------------------------------------------------------------------------
1 | // The Vue build version to load with the `import` command
2 | // (runtime-only or standalone) has been set in webpack.base.conf with an alias.
3 | import Vue from 'vue'
4 | import App from './App'
5 | import router from './router'
6 |
7 | Vue.config.productionTip = false
8 |
9 | /* eslint-disable no-new */
10 | new Vue({
11 | el: '#app',
12 | router,
13 | components: { App },
14 | template: ''
15 | })
16 |
--------------------------------------------------------------------------------
/src/views/test/router/index.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Router from 'vue-router'
3 | import HelloWorld from '../components/HelloWorld'
4 |
5 | Vue.use(Router)
6 |
7 | export default new Router({
8 | mode: 'history',
9 | base: '/test/',
10 | routes: [
11 | {
12 | path: '/',
13 | name: 'HelloWorld',
14 | component: HelloWorld
15 | }
16 | ]
17 | })
18 |
--------------------------------------------------------------------------------
/src/vuex/actions.js:
--------------------------------------------------------------------------------
1 | //test
2 | export const increment = ({commit}) => {
3 | commit('INCREMENT')
4 | }
5 | export const decrement = ({commit}) => {
6 | commit('DECREMENT')
7 | }
8 |
--------------------------------------------------------------------------------
/src/vuex/getters.js:
--------------------------------------------------------------------------------
1 | //test
2 | export const getCount = state => {
3 | return state.count
4 | }
5 |
--------------------------------------------------------------------------------
/src/vuex/store.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 | import * as actions from './actions'
4 | import * as getters from './getters'
5 |
6 | Vue.use(Vuex)
7 |
8 | // 应用初始状态
9 | const state = {
10 | count: 10
11 | }
12 |
13 | // 定义所需的 mutations
14 | const mutations = {
15 | INCREMENT(state) {
16 | state.count++
17 | },
18 | DECREMENT(state) {
19 | state.count--
20 | }
21 | }
22 |
23 | // 创建 store 实例
24 | export default new Vuex.Store({
25 | actions,
26 | getters,
27 | state,
28 | mutations
29 | })
--------------------------------------------------------------------------------
/static/.gitkeep:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/csuduan/vue-mpa/0be0c2c9c4f54846b1d4f6c460a5ee7a65cc0c2b/static/.gitkeep
--------------------------------------------------------------------------------