├── src ├── utils │ └── .gitkeep ├── assets │ └── .gitkeep ├── components │ ├── .gitkeep │ ├── index.js │ └── breadcrumb.vue ├── mock │ ├── index.js │ ├── user.js │ └── mock.js ├── pages │ ├── common │ │ ├── 404.vue │ │ └── abstract.vue │ ├── login │ │ └── login.vue │ ├── chart │ │ └── chart.vue │ ├── list │ │ └── with-filters.vue │ └── form │ │ └── big-form.vue ├── api │ ├── index.js │ └── api.js ├── styles │ ├── _variables.scss │ └── _global.scss ├── style.scss ├── resources │ ├── work-durations.js │ ├── academics.js │ ├── user.js │ └── schools.js ├── app.js ├── routes.js └── app.vue ├── config ├── prod.env.js ├── dev.env.js └── index.js ├── .babelrc ├── .gitignore ├── Makefile ├── docs ├── static │ ├── fonts │ │ ├── element-icons.a61be9c.eot │ │ └── element-icons.b02bdc1.ttf │ ├── js │ │ ├── manifest.10d67edc14ae1e536fbc.js │ │ ├── manifest.10d67edc14ae1e536fbc.js.map │ │ └── app.454eedb1d5bc0641b2fe.js │ └── img │ │ └── element-icons.09162bc.svg └── index.html ├── .eslintrc ├── index.html ├── README.md └── package.json /src/utils/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/assets/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/mock/index.js: -------------------------------------------------------------------------------- 1 | import mock from './mock'; 2 | 3 | export default mock; 4 | -------------------------------------------------------------------------------- /src/pages/common/404.vue: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/api/index.js: -------------------------------------------------------------------------------- 1 | import * as api from './api'; 2 | 3 | export default api; 4 | -------------------------------------------------------------------------------- /src/styles/_variables.scss: -------------------------------------------------------------------------------- 1 | // the variables and mixins 2 | 3 | $dark-gray: #35405b 4 | -------------------------------------------------------------------------------- /src/style.scss: -------------------------------------------------------------------------------- 1 | // Project specific 2 | @import "styles/global"; 3 | 4 | // third party css 5 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | module.exports = { 3 | NODE_ENV: '"production"' 4 | } 5 | -------------------------------------------------------------------------------- /src/components/index.js: -------------------------------------------------------------------------------- 1 | import Breadcrumb from './breadcrumb'; 2 | 3 | export default { 4 | Breadcrumb 5 | }; 6 | -------------------------------------------------------------------------------- /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015", "stage-2"], 3 | "plugins": ["transform-runtime"], 4 | "comments": false 5 | } 6 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | logs/* 2 | npm-debug.log 3 | node_modules/ 4 | tmp 5 | *.swp 6 | *.log 7 | .idea 8 | .DS_Store 9 | .tags 10 | .tags1 11 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: dist test build 2 | install: 3 | @npm install 4 | 5 | dev: install 6 | @npm run dev 7 | 8 | build: 9 | @npm run build 10 | -------------------------------------------------------------------------------- /docs/static/fonts/element-icons.a61be9c.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjj5855/element-dashboard/master/docs/static/fonts/element-icons.a61be9c.eot -------------------------------------------------------------------------------- /docs/static/fonts/element-icons.b02bdc1.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yjj5855/element-dashboard/master/docs/static/fonts/element-icons.b02bdc1.ttf -------------------------------------------------------------------------------- /.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "eslint-config-elemefe", 3 | "plugins": [ 4 | 'vue' 5 | ], 6 | "globals": { 7 | "Promise": true 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var merge = require('webpack-merge') 3 | var prodEnv = require('./prod.env') 4 | 5 | module.exports = merge(prodEnv, { 6 | NODE_ENV: '"development"' 7 | }) 8 | -------------------------------------------------------------------------------- /src/resources/work-durations.js: -------------------------------------------------------------------------------- 1 | export const WorkDurationOptions = [ 2 | { 3 | label: '在校学生', 4 | value: 0 5 | }, 6 | { 7 | label: '1年经验', 8 | value: 1 9 | }, 10 | { 11 | label: '1~3年经验', 12 | value: 2 13 | }, 14 | { 15 | label: '3~5年经验', 16 | value: 3 17 | }, 18 | { 19 | label: '5年以上经验', 20 | value: 4 21 | } 22 | ]; 23 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | element-dashboard 6 | 7 | 8 |
9 | 10 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/resources/academics.js: -------------------------------------------------------------------------------- 1 | export const AcademicOptions = [ 2 | { 3 | label: '小学', 4 | value: 0 5 | }, 6 | { 7 | label: '初中', 8 | value: 1 9 | }, 10 | { 11 | label: '高中', 12 | value: 2 13 | }, 14 | { 15 | label: '大专', 16 | value: 3 17 | }, 18 | { 19 | label: '本科', 20 | value: 4 21 | }, 22 | { 23 | label: '硕士', 24 | value: 5 25 | }, 26 | { 27 | label: '博士', 28 | value: 6 29 | } 30 | ]; 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Element-Dashboard 2 | 3 | ### install 4 | ``` 5 | git clone git@github.com:ElemeFE/element-dashboard.git 6 | ``` 7 | 8 | ### develop 9 | ``` 10 | make dev 11 | ``` 12 | 13 | ### build 14 | ``` 15 | make build 16 | ``` 17 | 18 | ### 文件目录 19 | 20 | + src 21 | - api —— API请求 22 | - assets —— 图片等资源文件 23 | - components —— 通用组件 24 | - mock —— API请求拦截器 25 | - pages —— 页面文件夹 26 | - resources —— mock 数据源 27 | - styles —— 全局通用样式文件夹 28 | - utils —— 工具库文件夹 29 | -------------------------------------------------------------------------------- /src/styles/_global.scss: -------------------------------------------------------------------------------- 1 | // global styles 2 | html{ 3 | height: 100%; 4 | margin: 0; 5 | font-size: 62.5%; 6 | } 7 | 8 | body { 9 | font-size: 1.4rem; 10 | padding: 0; 11 | margin: 0; 12 | font-family: Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,SimSun,sans-serif; 13 | font-weight: 400; 14 | -webkit-font-smoothing: antialiased; 15 | } 16 | 17 | a { 18 | text-decoration: none; 19 | color: inherit; 20 | } 21 | 22 | // override element style 23 | // hack 24 | .el-loading-mask { 25 | z-index: 1000; 26 | } 27 | -------------------------------------------------------------------------------- /src/resources/user.js: -------------------------------------------------------------------------------- 1 | import Mock from 'mockjs'; 2 | const LoginUsers = [ 3 | { 4 | id: 1, 5 | username: 'vvliebe', 6 | password: '123456', 7 | avatar: 'https://o0p2nwku4.qnssl.com/favicon.ico' 8 | } 9 | ]; 10 | 11 | const Users = []; 12 | const userCount = 200; 13 | 14 | for (let i = 0; i < userCount; i++) { 15 | Users.push(Mock.mock({ 16 | id: Mock.Random.guid(), 17 | name: Mock.Random.cname(), 18 | address: Mock.mock('@county(true)'), 19 | 'age|18-60': 1, 20 | date: Number(Mock.Random.datetime('T')) 21 | })); 22 | } 23 | 24 | export { LoginUsers, Users }; 25 | -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | element-dashboard
-------------------------------------------------------------------------------- /src/components/breadcrumb.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 25 | 26 | 31 | -------------------------------------------------------------------------------- /docs/static/js/manifest.10d67edc14ae1e536fbc.js: -------------------------------------------------------------------------------- 1 | !function(e){function t(a){if(n[a])return n[a].exports;var r=n[a]={exports:{},id:a,loaded:!1};return e[a].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var a=window.webpackJsonp;window.webpackJsonp=function(o,c){for(var s,l,p=0,d=[];p { 30 | if (to.matched.some(record => record.meta.requiresAuth)) { 31 | let user = JSON.parse(localStorage.getItem('user')); 32 | if (!user) { 33 | next({path: '/login', query: {redirect: to.fullPath}}); 34 | } 35 | } 36 | next(); 37 | }); 38 | 39 | new Vue({ 40 | render: h => h(App), 41 | router 42 | }).$mount('#app'); 43 | -------------------------------------------------------------------------------- /src/api/api.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | 3 | let base = ''; 4 | 5 | export const fetchList = params => { return axios.get(`${ base }/user/list`, {params: params}); }; 6 | 7 | export const addUser = params => { return axios.post(`${ base }/user/add`, params); }; 8 | 9 | export const editUser = params => { return axios.post(`${ base }/user/edit`, params); }; 10 | 11 | export const removeUser = params => { return axios.post(`${ base }/user/remove`, params); }; 12 | 13 | export const postError = params => { return axios.get(`${ base }/error`, {params: params}); }; 14 | 15 | export const requestLogin = params => { return axios.post(`${ base }/login`, params).then(res => res.data); }; 16 | 17 | export const fetchSchoolList = params => {return axios.get(`${ base }/schools`).then(res => res.data); }; 18 | 19 | export const fetchWorkDurationOptions = params => {return axios.get(`${ base }/work_durations`).then(res => res.data); }; 20 | 21 | export const fetchAcademicOptions = params => {return axios.get(`${ base }/academics`).then(res => res.data); }; 22 | 23 | export const postResume = params => {return axios.post(`${ base }/resume`, params).then(res => res.data);}; 24 | 25 | export const createResume = params => { return axios.post(`${ base }/resume/add`).then(res => res.data); }; 26 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // see http://vuejs-templates.github.io/webpack for documentation. 3 | var path = require('path') 4 | 5 | module.exports = { 6 | build: { 7 | env: require('./prod.env'), 8 | index: path.resolve(__dirname, '../docs/index.html'), 9 | assetsRoot: path.resolve(__dirname, '../docs'), 10 | assetsSubDirectory: 'static', 11 | assetsPublicPath: '/element-dashboard/', 12 | productionSourceMap: true, 13 | // Gzip off by default as many popular static hosts such as 14 | // Surge or Netlify already gzip all static assets for you. 15 | // Before setting to `true`, make sure to: 16 | // npm install --save-dev compression-webpack-plugin 17 | productionGzip: false, 18 | productionGzipExtensions: ['js', 'css'] 19 | }, 20 | dev: { 21 | env: require('./dev.env'), 22 | port: 8080, 23 | assetsSubDirectory: 'static', 24 | assetsPublicPath: '/', 25 | proxyTable: {}, 26 | // CSS Sourcemaps off by default because relative paths are "buggy" 27 | // with this option, according to the CSS-Loader README 28 | // (https://github.com/webpack/css-loader#sourcemaps) 29 | // In our experience, they generally work as expected, 30 | // just be aware of this issue when enabling this option. 31 | cssSourceMap: false 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/pages/common/abstract.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 51 | 52 | 75 | -------------------------------------------------------------------------------- /src/routes.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Abstract from './pages/common/abstract'; 3 | import NotFound from './pages/common/404'; 4 | 5 | // list with filters page 6 | import ListWithFilters from './pages/list/with-filters'; 7 | import BigForm from './pages/form/big-form'; 8 | import Login from './pages/login/login'; 9 | import chart from './pages/chart/chart'; 10 | 11 | const root = Vue.component('root', { 12 | template: '' 13 | }); 14 | 15 | let routes = [ 16 | { 17 | path: '/login', 18 | component: Login, 19 | name: 'login', 20 | meta: { 21 | hidden: true 22 | } 23 | }, 24 | { 25 | path: '/404', 26 | component: NotFound, 27 | name: '404', 28 | meta: { 29 | requiresAuth: true 30 | } 31 | }, 32 | { 33 | path: '/', 34 | component: root, 35 | meta: { 36 | requiresAuth: true 37 | }, 38 | children: [ 39 | { 40 | path: 'list', 41 | component: Abstract, 42 | name: '列表', 43 | iconClass: 'el-icon-message', 44 | children: [ 45 | { 46 | path: 'filters', 47 | name: '搜索条件', 48 | component: ListWithFilters, 49 | imgUrl: 'https://o0p2g4ul8.qnssl.com/vsite%2Fbackground.jpg' 50 | } 51 | ] 52 | }, 53 | { 54 | path: 'form', 55 | component: Abstract, 56 | name: '表单', 57 | iconClass: 'el-icon-document', 58 | children: [ 59 | { 60 | path: 'big-form', 61 | name: '简历管理', 62 | component: BigForm, 63 | imgUrl: 'https://o0p2g4ul8.qnssl.com/vsite%2Fbackground.jpg' 64 | } 65 | ] 66 | }, 67 | { 68 | path: 'chart', 69 | component: chart, 70 | name: '图表', 71 | iconClass: 'el-icon-document' 72 | /* children: [ 73 | { 74 | path: 'big-form', 75 | name: '简历管理', 76 | component: BigForm, 77 | imgUrl: 'https://o0p2g4ul8.qnssl.com/vsite%2Fbackground.jpg' 78 | } 79 | ]*/ 80 | } 81 | ] 82 | }, 83 | { 84 | path: '*', 85 | redirect: {path: '/404'} 86 | } 87 | ]; 88 | let menuCount = routes.length; 89 | routes[menuCount - 2].children.forEach(route => { 90 | if (route.children) { 91 | if (!route.meta) route.meta = {}; 92 | route.meta.children = route.children; 93 | } 94 | }); 95 | 96 | export default routes; 97 | -------------------------------------------------------------------------------- /src/mock/user.js: -------------------------------------------------------------------------------- 1 | import Mock from 'mockjs'; 2 | import { Users } from '../resources/user'; 3 | let _Users = Users; 4 | 5 | export default { 6 | list: config => { 7 | let {page, sortWay, startTime, endTime, userName, age} = config.params; 8 | let mockUsers = _Users.filter(user => { 9 | if (startTime && user.date < startTime) return false; 10 | if (endTime && user.date > endTime) return false; 11 | if (userName && user.name !== userName) return false; 12 | if (age && user.age !== age) return false; 13 | return true; 14 | }); 15 | if (sortWay) { 16 | let {order, prop} = sortWay; 17 | mockUsers = mockUsers.sort((u1, u2) => order === 'ascending' ? u1[prop] - u2[prop] : u2[prop] - u1[prop]); 18 | } 19 | if (page === 0) page++; 20 | mockUsers = mockUsers.filter((u, index) => index < 20 * page && index >= 20 * (page - 1)); 21 | return new Promise((resolve, reject) => { 22 | setTimeout(() => { 23 | resolve([200, { 24 | total: _Users.length, 25 | users: mockUsers 26 | } ]); 27 | }, 500); 28 | }); 29 | }, 30 | add: config => { 31 | let { name, address, age, time } = JSON.parse(config.data); 32 | _Users.push({ 33 | id: Mock.Random.guid(), 34 | name, 35 | address, 36 | age, 37 | date: new Date(time).getTime() 38 | }); 39 | return new Promise((resolve, reject) => { 40 | setTimeout(() => { 41 | resolve([200, { 42 | code: 200, 43 | msg: '添加成功' 44 | }]); 45 | }); 46 | }); 47 | }, 48 | remove: config => { 49 | let { id } = JSON.parse(config.data); 50 | _Users = _Users.filter(u => u.id !== id); 51 | return new Promise((resolve, reject) => { 52 | setTimeout(() => { 53 | resolve([200, { 54 | code: 200, 55 | msg: '删除成功' 56 | }]); 57 | }); 58 | }); 59 | }, 60 | edit: config => { 61 | let { id, name, address, age, time } = JSON.parse(config.data); 62 | _Users.some(u => { 63 | if (u.id === id) { 64 | u.name = name || u.name; 65 | u.address = address || u.address; 66 | u.age = age || u.age; 67 | u.date = time ? new Date(time).getTime() : u.date; 68 | return true; 69 | } 70 | }); 71 | return new Promise((resolve, reject) => { 72 | setTimeout(() => { 73 | resolve([200, { 74 | code: 200, 75 | msg: '编辑成功' 76 | }]); 77 | }); 78 | }); 79 | } 80 | }; 81 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "element-dashboard", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "dev": "node build/dev-server.js", 8 | "build": "node build/build.js" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/ElemeFE/element-dashboard.git" 13 | }, 14 | "author": [ 15 | "zheng.yu@ele.me", 16 | "hanbiao.xiong@ele.me" 17 | ], 18 | "license": "MIT", 19 | "bugs": { 20 | "url": "https://github.com/ElemeFE/element-dashboard/issues" 21 | }, 22 | "homepage": "https://github.com/ElemeFE/element-dashboard#readme", 23 | "dependencies": { 24 | "axios": "^0.15.2", 25 | "babel-polyfill": "*", 26 | "core-js": "^2.4.1", 27 | "echarts": "^3.4.0", 28 | "element-ui": "^1.0.0", 29 | "moment": "^2.17.1", 30 | "vue": "^2.0.1", 31 | "vue-router": "^2.0.3" 32 | }, 33 | "devDependencies": { 34 | "autoprefixer": "^6.4.0", 35 | "axios-mock-adapter": "^1.7.1", 36 | "babel-core": "^6.0.0", 37 | "babel-eslint": "^7.0.0", 38 | "babel-loader": "^6.0.0", 39 | "babel-plugin-transform-runtime": "^6.0.0", 40 | "babel-preset-es2015": "^6.0.0", 41 | "babel-preset-stage-2": "^6.0.0", 42 | "babel-register": "^6.0.0", 43 | "chalk": "^1.1.3", 44 | "connect-history-api-fallback": "^1.1.0", 45 | "cooking-vue2": "^0.3.0", 46 | "css-loader": "^0.25.0", 47 | "eslint": "^3.7.1", 48 | "eslint-config-elemefe": "^0.1.1", 49 | "eslint-config-standard": "^6.1.0", 50 | "eslint-config-vue": "^2.0.1", 51 | "eslint-friendly-formatter": "^2.0.5", 52 | "eslint-loader": "^1.5.0", 53 | "eslint-plugin-html": "^1.3.0", 54 | "eslint-plugin-promise": "^3.4.0", 55 | "eslint-plugin-standard": "^2.0.1", 56 | "eslint-plugin-vue": "^1.0.0", 57 | "eventsource-polyfill": "^0.9.6", 58 | "express": "^4.13.3", 59 | "extract-text-webpack-plugin": "^2.1.0", 60 | "file-loader": "^0.9.0", 61 | "function-bind": "^1.0.2", 62 | "html-webpack-plugin": "^2.8.1", 63 | "http-proxy-middleware": "^0.17.2", 64 | "json-loader": "^0.5.4", 65 | "mockjs": "^1.0.1-beta3", 66 | "node-sass": "^4.1.1", 67 | "opn": "^4.0.2", 68 | "ora": "^0.3.0", 69 | "sass-loader": "^4.1.1", 70 | "semver": "^5.3.0", 71 | "shelljs": "^0.7.4", 72 | "url-loader": "^0.5.7", 73 | "vue-loader": "^10.0.0", 74 | "vue-style-loader": "^1.0.0", 75 | "vue-template-compiler": "^2.1.0", 76 | "webpack": "^2.3.0", 77 | "webpack-dev-middleware": "^1.10.1", 78 | "webpack-hot-middleware": "^2.17.1", 79 | "webpack-merge": "^4.1.0" 80 | }, 81 | "engines": { 82 | "node": ">= 4.0.0", 83 | "npm": ">= 3.0.0" 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /src/mock/mock.js: -------------------------------------------------------------------------------- 1 | import axios from 'axios'; 2 | import MockAdapter from 'axios-mock-adapter'; 3 | import { LoginUsers } from '../resources/user'; 4 | import { Schools } from '../resources/schools'; 5 | import { WorkDurationOptions } from '../resources/work-durations'; 6 | import { AcademicOptions } from '../resources/academics'; 7 | import UserAPI from './user'; 8 | import Mock from 'mockjs'; 9 | 10 | export default { 11 | /** 12 | * mock bootstrap 13 | */ 14 | bootstrap() { 15 | let mock = new MockAdapter(axios); 16 | 17 | // mock list request 18 | mock.onGet('/user/list').reply(UserAPI.list); 19 | 20 | mock.onPost('/user/add').reply(UserAPI.add); 21 | 22 | mock.onPost('/user/remove').reply(UserAPI.remove); 23 | 24 | mock.onPost('/user/edit').reply(UserAPI.edit); 25 | // mock success request 26 | mock.onPost('/resume/add').reply(200, { 27 | msg: 'success' 28 | }); 29 | 30 | // mock error request 31 | mock.onGet('/error').reply(500, { 32 | msg: 'failure' 33 | }); 34 | 35 | mock.onPost('/login').reply(config => { 36 | let {username, password} = JSON.parse(config.data); 37 | return new Promise((resolve, reject) => { 38 | let user = null; 39 | setTimeout(() => { 40 | let hasUser = LoginUsers.some(u => { 41 | if (u.username === username && u.password === password) { 42 | user = JSON.parse(JSON.stringify(u)); 43 | user.password = undefined; 44 | return true; 45 | } 46 | }); 47 | 48 | if (hasUser) { 49 | resolve([200, { code: 200, msg: '请求成功!!!', user }]); 50 | } else { 51 | resolve([200, { code: 500, msg: '用户名或密码错误!!!' }]); 52 | } 53 | }, Math.random() * 1000 + 1000); 54 | }); 55 | }); 56 | 57 | mock.onGet('/schools').reply(config => { 58 | return new Promise((resolve, reject) => { 59 | setTimeout(() => { 60 | let school_list = JSON.parse(JSON.stringify(Schools)); 61 | resolve([200, {code: 200, msg: '请求成功!!!', school_list}]); 62 | }, Math.random() * 200 + 50); 63 | }); 64 | }); 65 | 66 | mock.onGet('/work_durations').reply(config => { 67 | return new Promise((resolve, reject) => { 68 | setTimeout(() => { 69 | let workDurationOptions = JSON.parse(JSON.stringify(WorkDurationOptions)); 70 | resolve([200, {code: 200, msg: '请求成功!!!', workDurationOptions}]); 71 | }, Math.random() * 200 + 50); 72 | }); 73 | }); 74 | 75 | mock.onGet('/academics').reply(config => { 76 | return new Promise((resolve, reject) => { 77 | setTimeout(() => { 78 | let academicOptions = JSON.parse(JSON.stringify(AcademicOptions)); 79 | resolve([200, {code: 200, msg: '请求成功!!!', academicOptions}]); 80 | }, Math.random() * 200 + 50); 81 | }); 82 | }); 83 | 84 | mock.onPost('/resume').reply(config => { 85 | return new Promise((resolve, reject) => { 86 | setTimeout(() => { 87 | resolve([200, {code: 200, msg: '上传成功', resume_id: Mock.Random.guid()}]); 88 | }, Math.random() * 200 + 50); 89 | }); 90 | }); 91 | } 92 | }; 93 | -------------------------------------------------------------------------------- /src/pages/login/login.vue: -------------------------------------------------------------------------------- 1 | 35 | 36 | 83 | 84 | 123 | -------------------------------------------------------------------------------- /src/app.vue: -------------------------------------------------------------------------------- 1 | 60 | 61 | 97 | 98 | 173 | -------------------------------------------------------------------------------- /src/pages/chart/chart.vue: -------------------------------------------------------------------------------- 1 | 37 | 38 | 260 | 261 | 269 | -------------------------------------------------------------------------------- /docs/static/js/manifest.10d67edc14ae1e536fbc.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["webpack:///static/js/manifest.10d67edc14ae1e536fbc.js","webpack:///webpack/bootstrap 20a8e6f5cfeba9bcec8c"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","parentJsonpFunction","window","chunkIds","moreModules","chunkId","i","callbacks","length","installedChunks","push","apply","shift","0","e","callback","undefined","head","document","getElementsByTagName","script","createElement","type","charset","async","src","p","1","2","appendChild","m","c"],"mappings":"CAAS,SAAUA,GCmCnB,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAE,OAGA,IAAAC,GAAAF,EAAAD,IACAE,WACAE,GAAAJ,EACAK,QAAA,EAUA,OANAP,GAAAE,GAAAM,KAAAH,EAAAD,QAAAC,IAAAD,QAAAH,GAGAI,EAAAE,QAAA,EAGAF,EAAAD,QAtDA,GAAAK,GAAAC,OAAA,YACAA,QAAA,sBAAAC,EAAAC,GAIA,IADA,GAAAV,GAAAW,EAAAC,EAAA,EAAAC,KACQD,EAAAH,EAAAK,OAAoBF,IAC5BD,EAAAF,EAAAG,GACAG,EAAAJ,IACAE,EAAAG,KAAAC,MAAAJ,EAAAE,EAAAJ,IACAI,EAAAJ,GAAA,CAEA,KAAAX,IAAAU,GACAZ,EAAAE,GAAAU,EAAAV,EAGA,KADAO,KAAAE,EAAAC,GACAG,EAAAC,QACAD,EAAAK,QAAAZ,KAAA,KAAAP,EACA,IAAAW,EAAA,GAEA,MADAT,GAAA,KACAF,EAAA,GAKA,IAAAE,MAKAc,GACAI,EAAA,EA6BApB,GAAAqB,EAAA,SAAAT,EAAAU,GAEA,OAAAN,EAAAJ,GACA,MAAAU,GAAAf,KAAA,KAAAP,EAGA,IAAAuB,SAAAP,EAAAJ,GACAI,EAAAJ,GAAAK,KAAAK,OACI,CAEJN,EAAAJ,IAAAU,EACA,IAAAE,GAAAC,SAAAC,qBAAA,WACAC,EAAAF,SAAAG,cAAA,SACAD,GAAAE,KAAA,kBACAF,EAAAG,QAAA,QACAH,EAAAI,OAAA,EAEAJ,EAAAK,IAAAhC,EAAAiC,EAAA,aAAArB,EAAA,KAAyEsB,EAAA,uBAAAC,EAAA,wBAAsDvB,GAAA,MAC/HY,EAAAY,YAAAT,KAKA3B,EAAAqC,EAAAtC,EAGAC,EAAAsC,EAAApC,EAGAF,EAAAiC,EAAA","file":"static/js/manifest.10d67edc14ae1e536fbc.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId])\n/******/ \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n/******/ \t\twhile(callbacks.length)\n/******/ \t\t\tcallbacks.shift().call(null, __webpack_require__);\n/******/ \t\tif(moreModules[0]) {\n/******/ \t\t\tinstalledModules[0] = 0;\n/******/ \t\t\treturn __webpack_require__(0);\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// object to store loaded and loading chunks\n/******/ \t// \"0\" means \"already loaded\"\n/******/ \t// Array means \"loading\", array contains callbacks\n/******/ \tvar installedChunks = {\n/******/ \t\t0:0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n/******/ \t\t// \"0\" is the signal for \"already loaded\"\n/******/ \t\tif(installedChunks[chunkId] === 0)\n/******/ \t\t\treturn callback.call(null, __webpack_require__);\n/******/\n/******/ \t\t// an array means \"currently loading\".\n/******/ \t\tif(installedChunks[chunkId] !== undefined) {\n/******/ \t\t\tinstalledChunks[chunkId].push(callback);\n/******/ \t\t} else {\n/******/ \t\t\t// start chunk loading\n/******/ \t\t\tinstalledChunks[chunkId] = [callback];\n/******/ \t\t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\t\tvar script = document.createElement('script');\n/******/ \t\t\tscript.type = 'text/javascript';\n/******/ \t\t\tscript.charset = 'utf-8';\n/******/ \t\t\tscript.async = true;\n/******/\n/******/ \t\t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"1\":\"6190c7a13d9bea8967da\",\"2\":\"454eedb1d5bc0641b2fe\"}[chunkId] + \".js\";\n/******/ \t\t\thead.appendChild(script);\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/element-dashboard/\";\n/******/ })\n/************************************************************************/\n/******/ ([]);\n\n\n// WEBPACK FOOTER //\n// static/js/manifest.10d67edc14ae1e536fbc.js"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, callbacks = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId])\n \t\t\t\tcallbacks.push.apply(callbacks, installedChunks[chunkId]);\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);\n \t\twhile(callbacks.length)\n \t\t\tcallbacks.shift().call(null, __webpack_require__);\n \t\tif(moreModules[0]) {\n \t\t\tinstalledModules[0] = 0;\n \t\t\treturn __webpack_require__(0);\n \t\t}\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// \"0\" means \"already loaded\"\n \t// Array means \"loading\", array contains callbacks\n \tvar installedChunks = {\n \t\t0:0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId])\n \t\t\treturn installedModules[moduleId].exports;\n\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.loaded = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId, callback) {\n \t\t// \"0\" is the signal for \"already loaded\"\n \t\tif(installedChunks[chunkId] === 0)\n \t\t\treturn callback.call(null, __webpack_require__);\n\n \t\t// an array means \"currently loading\".\n \t\tif(installedChunks[chunkId] !== undefined) {\n \t\t\tinstalledChunks[chunkId].push(callback);\n \t\t} else {\n \t\t\t// start chunk loading\n \t\t\tinstalledChunks[chunkId] = [callback];\n \t\t\tvar head = document.getElementsByTagName('head')[0];\n \t\t\tvar script = document.createElement('script');\n \t\t\tscript.type = 'text/javascript';\n \t\t\tscript.charset = 'utf-8';\n \t\t\tscript.async = true;\n\n \t\t\tscript.src = __webpack_require__.p + \"static/js/\" + chunkId + \".\" + {\"1\":\"6190c7a13d9bea8967da\",\"2\":\"454eedb1d5bc0641b2fe\"}[chunkId] + \".js\";\n \t\t\thead.appendChild(script);\n \t\t}\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/element-dashboard/\";\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 20a8e6f5cfeba9bcec8c"],"sourceRoot":""} -------------------------------------------------------------------------------- /src/pages/list/with-filters.vue: -------------------------------------------------------------------------------- 1 | 105 | 106 | 265 | 266 | 296 | -------------------------------------------------------------------------------- /src/pages/form/big-form.vue: -------------------------------------------------------------------------------- 1 | 138 | 139 | 323 | 324 | 335 | -------------------------------------------------------------------------------- /docs/static/img/element-icons.09162bc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Created by FontForge 20120731 at Tue Sep 6 12:16:07 2016 6 | By admin 7 | 8 | 9 | 10 | 24 | 26 | 28 | 30 | 32 | 36 | 38 | 40 | 42 | 44 | 46 | 48 | 50 | 52 | 54 | 57 | 60 | 63 | 66 | 69 | 72 | 75 | 77 | 79 | 83 | 85 | 87 | 90 | 93 | 96 | 99 | 101 | 104 | 107 | 109 | 112 | 117 | 121 | 125 | 128 | 131 | 134 | 138 | 142 | 145 | 146 | 147 | -------------------------------------------------------------------------------- /docs/static/js/app.454eedb1d5bc0641b2fe.js: -------------------------------------------------------------------------------- 1 | webpackJsonp([2,0],{0:function(e,t,a){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.router=void 0;var n=a(18),o=r(n),i=a(564),s=r(i),l=a(525),u=r(l);a(539);var d=a(549),c=r(d),m=a(241),f=r(m),p=a(548),v=r(p),h=a(247),g=r(h);a(540),f.default.bootstrap(),o.default.use(s.default),o.default.use(u.default),o.default.component("db-breadcrumb",c.default);var b=t.router=new s.default({routes:g.default,mode:"hash",linkActiveClass:"active"});b.beforeEach(function(e,t,a){if(e.matched.some(function(e){return e.meta.requiresAuth})){var r=JSON.parse(localStorage.getItem("user"));r||a({path:"/login",query:{redirect:e.fullPath}})}a()}),new o.default({render:function(e){return e(v.default)},router:b}).$mount("#app")},79:function(e,t,a){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.createResume=t.postResume=t.fetchAcademicOptions=t.fetchWorkDurationOptions=t.fetchSchoolList=t.requestLogin=t.postError=t.removeUser=t.editUser=t.addUser=t.fetchList=void 0;var n=a(77),o=r(n),i="";t.fetchList=function(e){return o.default.get(i+"/user/list",{params:e})},t.addUser=function(e){return o.default.post(i+"/user/add",e)},t.editUser=function(e){return o.default.post(i+"/user/edit",e)},t.removeUser=function(e){return o.default.post(i+"/user/remove",e)},t.postError=function(e){return o.default.get(i+"/error",{params:e})},t.requestLogin=function(e){return o.default.post(i+"/login",e).then(function(e){return e.data})},t.fetchSchoolList=function(e){return o.default.get(i+"/schools").then(function(e){return e.data})},t.fetchWorkDurationOptions=function(e){return o.default.get(i+"/work_durations").then(function(e){return e.data})},t.fetchAcademicOptions=function(e){return o.default.get(i+"/academics").then(function(e){return e.data})},t.postResume=function(e){return o.default.post(i+"/resume",e).then(function(e){return e.data})},t.createResume=function(e){return o.default.post(i+"/resume/add").then(function(e){return e.data})}},123:function(e,t,a){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0}),t.Users=t.LoginUsers=void 0;for(var n=a(110),o=r(n),i=[{id:1,username:"vvliebe",password:"123456",avatar:"https://o0p2nwku4.qnssl.com/favicon.ico"}],s=[],l=200,u=0;ui)&&((!s||e.name===s)&&(!l||e.age===l)))});if(r){var c=r.order,m=r.prop;d=d.sort(function(e,t){return"ascending"===c?e[m]-t[m]:t[m]-e[m]})}return 0===a&&a++,d=d.filter(function(e,t){return t<20*a&&t>=20*(a-1)}),new o.default(function(e,t){setTimeout(function(){e([200,{total:u.length,users:d}])},500)})},add:function(e){var t=JSON.parse(e.data),a=t.name,r=t.address,n=t.age,i=t.time;return u.push({id:s.default.Random.guid(),name:a,address:r,age:n,date:new Date(i).getTime()}),new o.default(function(e,t){setTimeout(function(){e([200,{code:200,msg:"添加成功"}])})})},remove:function(e){var t=JSON.parse(e.data),a=t.id;return u=u.filter(function(e){return e.id!==a}),new o.default(function(e,t){setTimeout(function(){e([200,{code:200,msg:"删除成功"}])})})},edit:function(e){var t=JSON.parse(e.data),a=t.id,r=t.name,n=t.address,i=t.age,s=t.time;return u.some(function(e){if(e.id===a)return e.name=r||e.name,e.address=n||e.address,e.age=i||e.age,e.date=s?new Date(s).getTime():e.date,!0}),new o.default(function(e,t){setTimeout(function(){e([200,{code:200,msg:"编辑成功"}])})})}}},244:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.AcademicOptions=[{label:"小学",value:0},{label:"初中",value:1},{label:"高中",value:2},{label:"大专",value:3},{label:"本科",value:4},{label:"硕士",value:5},{label:"博士",value:6}]},245:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.Schools=[{id:1,name:"北京航空航天大学",major_list:[{id:1,name:"高等工程学院"},{id:2,name:"电子工程学院"},{id:3,name:"软件工程"}]},{id:2,name:"北京大学",major_list:[{id:1,name:"地球化学"},{id:2,name:"电子工程学院"},{id:3,name:"软件工程"}]},{id:3,name:"中国人民大学",major_list:[{id:1,name:"法学院"},{id:2,name:"电子工程学院"},{id:3,name:"软件工程"}]}]},246:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.WorkDurationOptions=[{label:"在校学生",value:0},{label:"1年经验",value:1},{label:"1~3年经验",value:2},{label:"3~5年经验",value:3},{label:"5年以上经验",value:4}]},247:function(e,t,a){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=a(18),o=r(n),i=a(552),s=r(i),l=a(551),u=r(l),d=a(554),c=r(d),m=a(553),f=r(m),p=a(555),v=r(p),h=a(550),g=r(h),b=o.default.component("root",{template:""}),_=[{path:"/login",component:v.default,name:"login",meta:{hidden:!0}},{path:"/404",component:u.default,name:"404",meta:{requiresAuth:!0}},{path:"/",component:b,meta:{requiresAuth:!0},children:[{path:"list",component:s.default,name:"列表",iconClass:"el-icon-message",children:[{path:"filters",name:"搜索条件",component:c.default,imgUrl:"https://o0p2g4ul8.qnssl.com/vsite%2Fbackground.jpg"}]},{path:"form",component:s.default,name:"表单",iconClass:"el-icon-document",children:[{path:"big-form",name:"简历管理",component:f.default,imgUrl:"https://o0p2g4ul8.qnssl.com/vsite%2Fbackground.jpg"}]},{path:"chart",component:g.default,name:"图表",iconClass:"el-icon-document"}]},{path:"*",redirect:{path:"/404"}}],w=_.length;_[w-2].children.forEach(function(e){e.children&&(e.meta||(e.meta={}),e.meta.children=e.children)}),t.default=_},248:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={data:function(){return{user:{id:"",username:"",avatar:""},activeMenu:""}},created:function(){this.activeMenu=this.$route.name,this.user=JSON.parse(localStorage.getItem("user"))},watch:{$route:function(e,t){this.activeMenu=this.$route.name,this.user=JSON.parse(localStorage.getItem("user"))}},methods:{logout:function(){var e=this;this.$confirm("确定要注销吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"info"}).then(function(){localStorage.removeItem("user"),e.$router.push({path:"/login"})}).catch(function(){})}}}},249:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={name:"db-breadcrumb",data:function(){return{breadcrumbs:[]}},mounted:function(){this.breadcrumbs=this.$parent&&this.$parent.$route&&this.$parent.$route.matched||[]}}},250:function(e,t,a){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=a(293),o=r(n);t.default={data:function(){return{}},mounted:function(){var e=document.getElementById("chart-page");o.default.init(e).setOption({title:{text:"柱形图示例"},tooltip:{},xAxis:{data:["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]},yAxis:{},series:[{name:"销量",type:"bar",data:[5,20,36,10,10,20,30]}]});var t=document.getElementById("line-chart");o.default.init(t).setOption({title:{text:"折线图示例",subtext:"纯属虚构"},tooltip:{trigger:"axis"},legend:{data:["意向","预购","成交"]},toolbox:{show:!0,feature:{magicType:{show:!0,type:["stack","tiled"]},saveAsImage:{show:!0}}},xAxis:{type:"category",boundaryGap:!1,data:["周一","周二","周三","周四","周五","周六","周日"]},yAxis:{type:"value"},series:[{name:"成交",type:"line",smooth:!0,data:[10,12,21,54,260,830,710]},{name:"预购",type:"line",smooth:!0,data:[30,182,434,791,390,30,10]},{name:"意向",type:"line",smooth:!0,data:[1320,1132,601,234,120,90,20]}]});var a=document.getElementById("chart-pie");o.default.init(a).setOption({backgroundColor:"#2c343c",title:{text:"饼图",top:20,textStyle:{color:"#ccc"}},tooltip:{trigger:"item",formatter:"{a}
{b} : {c} ({d}%)"},visualMap:{show:!1,min:80,max:600,inRange:{colorLightness:[0,1]}},series:[{name:"访问来源",type:"pie",radius:"55%",center:["50%","50%"],data:[{value:335,name:"直接访问"},{value:310,name:"邮件营销"},{value:274,name:"联盟广告"},{value:235,name:"视频广告"},{value:400,name:"搜索引擎"}].sort(function(e,t){return e.value-t.value}),roseType:"angle",label:{normal:{textStyle:{color:"rgba(255, 255, 255, 0.3)"}}},labelLine:{normal:{lineStyle:{color:"rgba(255, 255, 255, 0.3)"},smooth:.2,length:10,length2:20}},itemStyle:{normal:{color:"#c23531",shadowBlur:200,shadowColor:"rgba(0, 0, 0, 0.5)"}},animationType:"scale",animationEasing:"elasticOut",animationDelay:function(e){return 200*Math.random()}}]});var r=document.getElementById("funnel-chart");o.default.init(r).setOption({title:{text:"漏斗图",subtext:"纯属虚构"},tooltip:{trigger:"item",formatter:"{a}
{b} : {c}%"},toolbox:{feature:{dataView:{readOnly:!1},restore:{},saveAsImage:{}}},legend:{data:["展现","点击","访问","咨询","订单"]},calculable:!0,series:[{name:"漏斗图",type:"funnel",left:"10%",top:60,bottom:60,width:"80%",min:0,max:100,minSize:"0%",maxSize:"100%",sort:"descending",gap:2,label:{normal:{show:!0,position:"inside"},emphasis:{textStyle:{fontSize:20}}},labelLine:{normal:{length:10,lineStyle:{width:1,type:"solid"}}},itemStyle:{normal:{borderColor:"#fff",borderWidth:1}},data:[{value:60,name:"访问"},{value:40,name:"咨询"},{value:20,name:"订单"},{value:80,name:"点击"},{value:100,name:"展现"}]}]})},methods:{}}},251:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={data:function(){return{children:null}},beforeRouteEnter:function(e,t,a){a(function(e){var t=e.$route.meta.children;t?e.children=t:e.children=null})},watch:{$route:function(e,t){var a=this.$route.meta.children;a?this.children=a:this.children=null}}}},252:function(e,t,a){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=a(80),o=r(n),i=a(79);t.default={data:function(){return{form:{name:"",school:"",major:"",company:"",position:"",gender:"",birthday:"",workDuration:null,academic:null,city:"",phone:"",email:"",website:"",skills:[],resumeId:""},schoolList:[],selectedSchoolId:null,workDurationOptions:[],academicOptions:[],resume:[],rules:{name:[{required:!0,message:"请输入姓名",trigger:"blur"}],school:[{required:!0,message:"请选择学校",trigger:"change"}],major:[{required:!0,message:"请选择专业",trigger:"change"}],company:[{required:!0,message:"请输入公司",trigger:"blur"}],position:[{required:!0,message:"请输入职位",trigger:"blur"}],gender:[{required:!0,message:"请选择性别",trigger:"change"}],birthday:[{type:"date",required:!0,message:"请输入生日",trigger:"change"}],workDuration:[{type:"number",required:!0,message:"请选择工作年限",trigger:"change"}],academic:[{type:"number",required:!0,message:"请选择学历",trigger:"change"}],city:[{required:!0,message:"请输入意向城市",trigger:"blur"}],phone:[{required:!0,message:"请输入联系方式",trigger:"blur"}],email:[{required:!0,message:"请输入邮箱",trigger:"blur"}],website:[{required:!0,message:"请输入网站",trigger:"blur"}],skills:[{type:"array",required:!0,message:"请至少输入一条技能",trigger:"blur"}]}}},mounted:function(){this.getSchoolList(),this.getWorkDurationOptions(),this.getAcademicOptions()},methods:{getSchoolList:function(){var e=this;(0,i.fetchSchoolList)().then(function(t){var a=t.code,r=t.school_list;200===a&&(r.forEach(function(e){e.value=e.name,e.major_list.forEach(function(e){e.value=e.name})}),e.schoolList=r,e.selectedSchoolId=r[0]?r[0].id:null)})},getWorkDurationOptions:function(){var e=this;(0,i.fetchWorkDurationOptions)().then(function(t){var a=t.code,r=t.workDurationOptions;200===a&&(e.workDurationOptions=r)})},getAcademicOptions:function(){var e=this;(0,i.fetchAcademicOptions)().then(function(t){var a=t.code,r=t.academicOptions;200===a&&(e.academicOptions=r)})},getSchoolsInfo:function(e,t){var a=this.schoolList.filter(function(t){return t.name.indexOf(e)>-1});t(a)},getMajorsInfo:function(e,t){var a=this.majorList.filter(function(t){return t.name.indexOf(e)>-1});t(a)},handleSelectSchool:function(e){this.selectedSchoolId=e.id},addSkill:function(){this.form.skills.push({name:"",value:0})},saveSkill:function(){},deleteSkill:function(e){this.form.skills.splice(e,1)},handleRemove:function(e,t){},handlePreview:function(e){},handleSuccess:function(){},handleError:function(){},uploadResume:function(){var e=this;return(0,i.postResume)({data:this.resume[0]}).then(function(t){var a=t.code,r=t.msg,n=t.resume_id;200===a?e.form.resumeId=n:e.$message.error(r)}),!1},reset:function(){this.$refs.form.resetFields()},submit:function(){var e=this;this.$refs.form.validate(function(t){return!!t&&(console.log(JSON.parse((0,o.default)(e.form))),void(0,i.createResume)(e.form).then(function(){e.$message({message:"提交成功",type:"success"})}))})}},computed:{majorList:function(){var e=this;return 0!==this.schoolList.length&&this.selectedSchoolId?this.schoolList.filter(function(t){return t.id===e.selectedSchoolId})[0].major_list:[]}}}},253:function(e,t,a){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=a(79);t.default={data:function(){return{users:[],total:0,page:0,loading:!0,multipleSelection:[],reserveSelection:!1,editDialog:!1,createDialog:!1,filters:{sortWay:"",userName:"",startEndTime:"",labelVal:"1",age:""},editForm:{id:"",name:"",time:""},createForm:{name:"",time:"",address:""},selectedOptions:[{value:"1",label:"年龄"},{value:"2",label:"姓名"}]}},methods:{formatDate:function(e){return new Date(e.date).toLocaleDateString()},handleSortChange:function(e){this.filters.sortWay={prop:e.prop,order:e.order},this.fetchData()},handleEditSave:function(){var e=this;(0,r.editUser)(this.editForm).then(function(){e.fetchData(),e.editDialog=!1,e.$message({message:"编辑成功",type:"success"})})},handleSave:function(){var e=this;(0,r.addUser)(this.createForm).then(function(){e.fetchData(),e.createDialog=!1,e.$message({message:"保存成功",type:"success"})})},handleEdit:function(e,t){this.editForm.id=t.id,this.editDialog=!0},handleDelete:function(e,t){var a=this;this.$confirm("是否删除此条信息?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(function(){(0,r.removeUser)({id:t.id}).then(function(){a.fetchData(),a.$message({message:"删除成功",type:"success"})})})},handleSelectionChange:function(e){this.multipleSelection=e},handleSearch:function(){this.fetchData()},handleCurrentChange:function(e){this.fetchData(e)},fetchData:function(e){var t=this,a=this.filters.sortWay&&this.filters.sortWay.prop?this.filters.sortWay:"";this.page=e||this.page;var n=this.filters.startEndTime?this.filters.startEndTime[0].getTime():"",o=this.filters.startEndTime?this.filters.startEndTime[1].getTime():"";console.log("this.filters.labelVal",this.filters.labelVal);var i={page:this.page,userName:"2"===this.filters.labelVal?this.filters.userName:null,startTime:n,endTime:o,sortWay:a,age:"1"===this.filters.labelVal?parseInt(this.filters.age,10):null};this.loading=!0,(0,r.fetchList)(i).then(function(e){t.$refs.table.clearSelection(),t.users=e.data.users,t.total=e.data.total,t.loading=!1})}},mounted:function(){this.fetchData()}}},254:function(e,t,a){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"__esModule",{value:!0});var n=a(80),o=r(n),i=a(79);t.default={data:function(){return{username:"vvliebe",password:"123456",rememberMe:!1,isBtnLoading:!1}},computed:{btnText:function(){return this.isBtnLoading?"登录中...":"登录"}},methods:{login:function(){var e=this;if(!this.username)return void this.$message.error("请填写用户名!!!");if(!this.password)return void this.$message.error("请填写密码");var t={username:this.username,password:this.password};this.isBtnLoading=!0,(0,i.requestLogin)(t).then(function(t){e.isBtnLoading=!1;var a=t.msg,r=t.code,n=t.user;200!==r?e.$message.error(a):(localStorage.setItem("user",(0,o.default)(n)),e.$route.query.redirect?e.$router.push({path:e.$route.query.redirect}):e.$router.push({path:"/list"}))})}}}},539:function(e,t){},540:function(e,t){},541:function(e,t){},542:function(e,t){},543:function(e,t){},544:function(e,t){},545:function(e,t){},546:function(e,t){},547:function(e,t){},548:function(e,t,a){a(547);var r=a(31)(a(248),a(563),null,null);e.exports=r.exports},549:function(e,t,a){a(545);var r=a(31)(a(249),a(561),null,null);e.exports=r.exports},550:function(e,t,a){a(544);var r=a(31)(a(250),a(559),"data-v-522a188d",null);e.exports=r.exports},551:function(e,t,a){var r=a(31)(null,a(560),null,null);e.exports=r.exports},552:function(e,t,a){a(541);var r=a(31)(a(251),a(556),null,null);e.exports=r.exports},553:function(e,t,a){a(543);var r=a(31)(a(252),a(558),"data-v-51dad2fc",null);e.exports=r.exports},554:function(e,t,a){a(542);var r=a(31)(a(253),a(557),null,null);e.exports=r.exports},555:function(e,t,a){a(546);var r=a(31)(a(254),a(562),"data-v-90a44f3a",null);e.exports=r.exports},556:function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"abstract"},[e.children?a("el-row",e._l(e.children,function(t,r){return a("el-col",{attrs:{xs:10,sm:8,md:6,lg:4,offset:r>0?2:0}},[a("el-card",{attrs:{"body-style":{padding:"0px"}}},[a("div",{staticClass:"card-wrapper"},[a("div",{staticClass:"img"},[a("img",{attrs:{src:t.imgUrl,type:"image/webp"}})]),e._v(" "),a("div",{staticClass:"text"},[a("p",[e._v(e._s(t.name))]),e._v(" "),a("router-link",{attrs:{to:{name:t.name}}},[e._v("查看")])],1)])])],1)})):e._e(),e._v(" "),a("router-view")],1)},staticRenderFns:[]}},557:function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{attrs:{id:"ListWithFiltersPage"}},[a("db-breadcrumb"),e._v(" "),a("div",{staticClass:"db-content-inner"},[a("div",{staticClass:"filters"},[a("div",{staticClass:"filter"},[a("el-select",{directives:[{name:"model",rawName:"v-model",value:e.filters.labelVal,expression:"filters.labelVal"}],attrs:{clearable:"",placeholder:"请选择"},domProps:{value:e.filters.labelVal},on:{input:function(t){e.filters.labelVal=t}}},e._l(e.selectedOptions,function(e){return a("el-option",{attrs:{label:e.label,value:e.value}})})),e._v(" "),a("el-input",{directives:[{name:"model",rawName:"v-model",value:e.filters.age,expression:"filters.age"},{name:"show",rawName:"v-show",value:"1"==e.filters.labelVal,expression:"filters.labelVal == '1'"}],attrs:{placeholder:"请输入年龄"},domProps:{value:e.filters.age},on:{input:function(t){e.filters.age=t}}}),e._v(" "),a("el-input",{directives:[{name:"model",rawName:"v-model",value:e.filters.userName,expression:"filters.userName"},{name:"show",rawName:"v-show",value:"2"==e.filters.labelVal,expression:"filters.labelVal == '2'"}],attrs:{placeholder:"请输入姓名"},domProps:{value:e.filters.userName},on:{input:function(t){e.filters.userName=t}}})],1),e._v(" "),a("div",{staticClass:"filter"},[e._v("\n 起止时间:\n "),a("el-date-picker",{directives:[{name:"model",rawName:"v-model",value:e.filters.startEndTime,expression:"filters.startEndTime"}],staticStyle:{width:"350px"},attrs:{type:"datetimerange",placeholder:"选择时间范围"},domProps:{value:e.filters.startEndTime},on:{input:function(t){e.filters.startEndTime=t}}})],1),e._v(" "),a("el-button",{attrs:{type:"primary"},on:{click:function(t){e.handleSearch()}}},[e._v("搜索")]),e._v(" "),a("el-button",{attrs:{type:"primary"},on:{click:function(t){e.createDialog=!0}}},[e._v("创建")])],1),e._v(" "),a("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],ref:"table",staticStyle:{width:"100%"},attrs:{data:e.users,"element-loading-text":"拼命加载中",stripe:""},on:{"selection-change":e.handleSelectionChange,"sort-change":e.handleSortChange}},[a("el-table-column",{attrs:{type:"selection",width:"55","reserve-selection":e.reserveSelection}}),e._v(" "),a("el-table-column",{attrs:{prop:"date",label:"出生日期",formatter:e.formatDate,width:"180"}}),e._v(" "),a("el-table-column",{attrs:{prop:"name",label:"姓名"}}),e._v(" "),a("el-table-column",{attrs:{prop:"age",sortable:"custom",label:"年龄"}}),e._v(" "),a("el-table-column",{attrs:{prop:"address",label:"地址"}}),e._v(" "),a("el-table-column",{attrs:{context:e._self,width:"150",label:"操作"},inlineTemplate:{render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("el-button",{attrs:{size:"small"},on:{click:function(t){e.handleEdit(e.$index,e.row)}}},[e._v("编辑")]),e._v(" "),a("el-button",{attrs:{size:"small",type:"danger"},on:{click:function(t){e.handleDelete(e.$index,e.row)}}},[e._v("删除")])],1)},staticRenderFns:[]}})],1),e._v(" "),a("div",{directives:[{name:"show",rawName:"v-show",value:!e.loading,expression:"!loading"}],staticClass:"pagination-wrapper"},[a("el-pagination",{attrs:{layout:"prev, pager, next","page-size":20},on:{"current-change":e.handleCurrentChange}})],1),e._v(" "),a("el-dialog",{directives:[{name:"model",rawName:"v-model",value:e.editDialog,expression:"editDialog"}],attrs:{title:"编辑",size:"tiny"},domProps:{value:e.editDialog},on:{input:function(t){e.editDialog=t}}},[a("el-form",{ref:"editForm",attrs:{model:e.editForm,"label-width":"80px"}},[a("el-form-item",{attrs:{label:"姓名"}},[a("el-input",{directives:[{name:"model",rawName:"v-model",value:e.editForm.name,expression:"editForm.name"}],staticClass:"el-col-24",domProps:{value:e.editForm.name},on:{input:function(t){e.editForm.name=t}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"出生日期"}},[a("el-date-picker",{directives:[{name:"model",rawName:"v-model",value:e.editForm.time,expression:"editForm.time"}],staticClass:"el-col-24",attrs:{type:"datetime",placeholder:"选择日期时间"},domProps:{value:e.editForm.time},on:{input:function(t){e.editForm.time=t}}})],1)],1),e._v(" "),a("span",{staticClass:"dialog-footer",slot:"footer"},[a("el-button",{on:{click:function(t){e.editDialog=!1}}},[e._v("取 消")]),e._v(" "),a("el-button",{attrs:{type:"primary"},on:{click:function(t){e.handleEditSave()}}},[e._v("确 定")])],1)],1),e._v(" "),a("el-dialog",{directives:[{name:"model",rawName:"v-model",value:e.createDialog,expression:"createDialog"}],attrs:{title:"保存",size:"tiny"},domProps:{value:e.createDialog},on:{input:function(t){e.createDialog=t}}},[a("el-form",{ref:"createFrom",attrs:{model:e.createForm,"label-width":"80px"}},[a("el-form-item",{attrs:{label:"姓名"}},[a("el-input",{directives:[{name:"model",rawName:"v-model",value:e.createForm.name,expression:"createForm.name"}],staticClass:"el-col-24",domProps:{value:e.createForm.name},on:{input:function(t){e.createForm.name=t}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"出生日期"}},[a("el-date-picker",{directives:[{name:"model",rawName:"v-model",value:e.createForm.time,expression:"createForm.time"}],staticClass:"el-col-24",attrs:{type:"datetime",placeholder:"选择日期时间"},domProps:{value:e.createForm.time},on:{input:function(t){e.createForm.time=t}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"地址"}},[a("el-input",{directives:[{name:"model",rawName:"v-model",value:e.createForm.address,expression:"createForm.address"}],staticClass:"el-col-24",domProps:{value:e.createForm.address},on:{input:function(t){e.createForm.address=t}}})],1)],1),e._v(" "),a("span",{staticClass:"dialog-footer",slot:"footer"},[a("el-button",{on:{click:function(t){e.createDialog=!1}}},[e._v("取 消")]),e._v(" "),a("el-button",{attrs:{type:"primary"},on:{click:function(t){e.handleSave()}}},[e._v("确 定")])],1)],1)],1)],1)},staticRenderFns:[]}},558:function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{attrs:{id:"big-form"}},[a("db-breadcrumb"),e._v(" "),a("div",{staticClass:"db-content-inner"},[a("el-form",{ref:"form",attrs:{rules:e.rules,model:e.form,"label-width":"100px"}},[a("el-form-item",{attrs:{label:"姓名",prop:"name"}},[a("el-input",{directives:[{name:"model",rawName:"v-model",value:e.form.name,expression:"form.name"}],attrs:{placeholder:"请输入您的姓名"},domProps:{value:e.form.name},on:{input:function(t){e.form.name=t}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"性别",prop:"gender"}},[a("el-radio-group",{directives:[{name:"model",rawName:"v-model",value:e.form.gender,expression:"form.gender"}],domProps:{value:e.form.gender},on:{input:function(t){e.form.gender=t}}},[a("el-radio",{attrs:{label:"男"}},[e._v("男")]),e._v(" "),a("el-radio",{attrs:{label:"女"}},[e._v("女")])],1)],1),e._v(" "),a("el-form-item",{attrs:{label:"生日",prop:"birthday"}},[a("el-date-picker",{directives:[{name:"model",rawName:"v-model",value:e.form.birthday,expression:"form.birthday"}],attrs:{type:"date",placeholder:"请输入您的生日"},domProps:{value:e.form.birthday},on:{input:function(t){e.form.birthday=t}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"工作年限",prop:"workDuration"}},[a("el-select",{directives:[{name:"model",rawName:"v-model",value:e.form.workDuration,expression:"form.workDuration"}],attrs:{placeholder:"请选择"},domProps:{value:e.form.workDuration},on:{input:function(t){e.form.workDuration=t}}},e._l(e.workDurationOptions,function(e){return a("el-option",{attrs:{label:e.label,value:e.value}})}))],1),e._v(" "),a("el-form-item",{attrs:{label:"最高学历",prop:"academic"}},[a("el-select",{directives:[{name:"model",rawName:"v-model",value:e.form.academic,expression:"form.academic"}],attrs:{placeholder:"请选择"},domProps:{value:e.form.academic},on:{input:function(t){e.form.academic=t}}},e._l(e.academicOptions,function(e){return a("el-option",{attrs:{label:e.label,value:e.value}})}))],1),e._v(" "),a("el-form-item",{attrs:{label:"学校",prop:"school"}},[a("el-autocomplete",{directives:[{name:"model",rawName:"v-model",value:e.form.school,expression:"form.school"}],attrs:{"fetch-suggestions":e.getSchoolsInfo,placeholder:"请输入您的学校"},domProps:{value:e.form.school},on:{select:e.handleSelectSchool,input:function(t){e.form.school=t}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"专业",prop:"major"}},[a("el-autocomplete",{directives:[{name:"model",rawName:"v-model",value:e.form.major,expression:"form.major"}],attrs:{disabled:!e.form.school,"fetch-suggestions":e.getMajorsInfo,placeholder:"请输入您的专业"},domProps:{value:e.form.major},on:{input:function(t){e.form.major=t}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"在职公司",prop:"company"}},[a("el-input",{directives:[{name:"model",rawName:"v-model",value:e.form.company,expression:"form.company"}],attrs:{placeholder:"请输入您目前所在的公司名称"},domProps:{value:e.form.company},on:{input:function(t){e.form.company=t}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"职位",prop:"position"}},[a("el-input",{directives:[{name:"model",rawName:"v-model",value:e.form.position,expression:"form.position"}],attrs:{placeholder:"请输入您的职位名称"},domProps:{value:e.form.position},on:{input:function(t){e.form.position=t}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"城市",prop:"city"}},[a("el-input",{directives:[{name:"model",rawName:"v-model",value:e.form.city,expression:"form.city"}],attrs:{placeholder:"请输入您意向的工作地点"},domProps:{value:e.form.city},on:{input:function(t){e.form.city=t}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"联系方式",prop:"phone"}},[a("el-input",{directives:[{name:"model",rawName:"v-model",value:e.form.phone,expression:"form.phone"}],attrs:{placeholder:"请输入您的联系方式"},domProps:{value:e.form.phone},on:{input:function(t){e.form.phone=t}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"邮箱",prop:"email"}},[a("el-input",{directives:[{name:"model",rawName:"v-model",value:e.form.email,expression:"form.email"}],attrs:{placeholder:"请输入您的邮箱"},domProps:{value:e.form.email},on:{input:function(t){e.form.email=t}}})],1),e._v(" "),a("el-form-item",{attrs:{label:"网站",prop:"website"}},[a("el-input",{directives:[{name:"model",rawName:"v-model",value:e.form.website,expression:"form.website"}],attrs:{placeholder:"请输入您的个人博客"},domProps:{value:e.form.website},on:{input:function(t){e.form.website=t}}},[a("template",{slot:"prepend"},[e._v("http://")])],2)],1),e._v(" "),a("el-form-item",{attrs:{label:"技能",prop:"skills"}},[e._l(e.form.skills,function(t,r){return a("el-row",{staticClass:"skill-line",attrs:{type:"flex",align:"middle"}},[a("el-col",{attrs:{span:5}},[a("el-input",{directives:[{name:"model",rawName:"v-model",value:t.name,expression:"skill.name"}],attrs:{placeholder:"请输入技能"},domProps:{value:t.name},on:{input:function(e){t.name=e}}})],1),e._v(" "),a("el-col",{attrs:{span:12,offset:1}},[a("el-slider",{directives:[{name:"model",rawName:"v-model",value:t.value,expression:"skill.value"}],domProps:{value:t.value},on:{input:function(e){t.value=e}}})],1),e._v(" "),a("el-col",{attrs:{span:6,offset:1}},[a("el-button",{attrs:{type:"primary",icon:"delete"},on:{click:function(t){e.deleteSkill(r)}}}),e._v(" "),r===e.form.skills.length-1?a("el-button",{attrs:{type:"primary",icon:"plus"},on:{click:e.addSkill}}):e._e()],1)],1)}),e._v(" "),e.form.skills.length<=0?a("el-row",[a("el-col",{attrs:{span:6,offset:1}},[a("el-button",{attrs:{type:"primary",icon:"plus"},on:{click:e.addSkill}},[e._v("添加技能")])],1)],1):e._e()],2),e._v(" "),a("el-form-item",{attrs:{label:"个人简历"}},[a("el-upload",{attrs:{action:"/resume",type:"drag",accept:"pdf","before-upload":e.uploadResume,"on-preview":e.handlePreview,"on-remove":e.handleRemove,"on-success":e.handleSuccess,"on-error":e.handleError,"default-file-list":e.resume}},[a("i",{staticClass:"el-icon-upload"}),e._v(" "),a("div",{staticClass:"el-dragger__text"},[e._v("将文件拖到此处,或"),a("em",[e._v("点击上传")])]),e._v(" "),a("div",{staticClass:"el-upload__tip",slot:"tip"},[e._v("只能上传pdf文件,且不超过5M")])])],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary"},on:{click:e.submit}},[e._v("立即创建")]),e._v(" "),a("el-button",{on:{click:e.reset}},[e._v("重置")])],1)],1)],1)],1)},staticRenderFns:[]}},559:function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"main"},[a("el-row",{attrs:{gutter:20}},[a("el-col",{attrs:{span:8}},[a("div",{staticClass:"grid-content"},[a("div",{attrs:{id:"chart-page"}})])]),e._v(" "),a("el-col",{attrs:{span:8}},[a("div",{staticClass:"grid-content"},[a("div",{attrs:{id:"line-chart"}})])]),e._v(" "),a("el-col",{attrs:{span:8}},[a("div",{staticClass:"grid-content"})])],1),e._v(" "),a("el-row",{ 2 | attrs:{gutter:20}},[a("el-col",{attrs:{span:8}},[a("div",{staticClass:"grid-content"},[a("div",{attrs:{id:"chart-pie"}})])]),e._v(" "),a("el-col",{attrs:{span:8}},[a("div",{staticClass:"grid-content"},[a("div",{attrs:{id:"funnel-chart"}})])]),e._v(" "),a("el-col",{attrs:{span:8}},[a("div",{staticClass:"grid-content"})])],1)],1)},staticRenderFns:[]}},560:function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("p",[e._v("页面未找到!")])},staticRenderFns:[]}},561:function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-breadcrumb",{attrs:{separator:"/"}},[a("span",{staticClass:"db-breadcrumb-loc"},[e._v("位置:")]),e._v(" "),e._l(e.breadcrumbs,function(t){return a("el-breadcrumb-item",{attrs:{to:t}},[e._v("\n "+e._s(t.name)+"\n ")])})],2)},staticRenderFns:[]}},562:function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{attrs:{id:"login-page"},on:{keyup:function(t){e._k(t.keyCode,"enter",13)||e.login(t)}}},[a("div",{staticClass:"login-form"},[a("div",{staticClass:"input-group"},[a("div",{staticClass:"title"},[e._v("Element Dashboard")]),e._v(" "),a("el-input",{directives:[{name:"model",rawName:"v-model",value:e.username,expression:"username"}],attrs:{autofocus:!0,placeholder:"请输入用户名",icon:"time"},domProps:{value:e.username},on:{input:function(t){e.username=t}}})],1),e._v(" "),a("div",{staticClass:"input-group"},[a("el-input",{directives:[{name:"model",rawName:"v-model",value:e.password,expression:"password"}],attrs:{placeholder:"请输入密码",type:"password",icon:"time"},domProps:{value:e.password},on:{input:function(t){e.password=t}}})],1),e._v(" "),a("div",{staticClass:"input-group"},[a("label",[e._v("记住我?")]),e._v(" "),a("el-switch",{directives:[{name:"model",rawName:"v-model",value:e.rememberMe,expression:"rememberMe"}],attrs:{"on-text":"","off-text":""},domProps:{value:e.rememberMe},on:{input:function(t){e.rememberMe=t}}})],1),e._v(" "),a("div",{staticClass:"input-group"},[a("el-button",{attrs:{type:"primary",loading:e.isBtnLoading},nativeOn:{click:function(t){e.login(t)}}},[e._v(e._s(e.btnText))])],1)])])},staticRenderFns:[]}},563:function(e,t){e.exports={render:function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("section",{staticClass:"db"},[e.$route.meta.hidden?[a("router-view")]:[a("header",{staticClass:"db-header"},[a("router-link",{staticClass:"logo",attrs:{to:{path:"/list/filters"}}},[e._v("Element Dashboard")]),e._v(" "),e.user.id?a("div",{staticClass:"user-info"},[a("span",{domProps:{textContent:e._s(e.user.username)}}),e._v(" "),a("el-dropdown",{attrs:{trigger:"click"}},[a("span",{staticClass:"el-dropdown-link"},[a("img",{attrs:{src:e.user.avatar}})]),e._v(" "),a("el-dropdown-menu",{slot:"dropdown"},[a("el-dropdown-item",[e._v("个人信息")]),e._v(" "),a("el-dropdown-item",[e._v("设置")]),e._v(" "),a("el-dropdown-item",{nativeOn:{click:function(t){e.logout(t)}}},[e._v("注销")])],1)],1)],1):e._e()],1),e._v(" "),a("div",{staticClass:"db-body"},[a("aside",{staticClass:"db-menu-wrapper"},[a("el-menu",{staticClass:"db-menu-bar",attrs:{"default-active":e.activeMenu,router:""}},[e._l(e.$router.options.routes[e.$router.options.routes.length-2].children,function(t,r){return[t.children&&t.name?[a("el-submenu",{attrs:{index:t.name}},[a("template",{slot:"title"},[a("i",{class:t.iconClass}),e._v(e._s(t.name))]),e._v(" "),e._l(t.children,function(t,r){return a("el-menu-item",{attrs:{index:t.name,route:t}},[e._v(e._s(t.name))])})],2)]:e._e(),e._v(" "),!t.children&&t.name?[a("el-menu-item",{attrs:{index:t.name,route:t}},[a("i",{class:t.iconClass}),e._v(e._s(t.name))])]:e._e()]})],2)],1),e._v(" "),a("div",{staticClass:"db-content-wrapper"},[a("section",{staticClass:"db-content"},[a("router-view")],1)])])]],2)},staticRenderFns:[]}}}); 3 | //# sourceMappingURL=app.454eedb1d5bc0641b2fe.js.map --------------------------------------------------------------------------------