├── .babelrc ├── .editorconfig ├── .gitignore ├── .postcssrc.js ├── README.md ├── build ├── build.js ├── check-versions.js ├── dev-client.js ├── dev-server.js ├── utils.js ├── vendor-manifest.json ├── vue-loader.conf.js ├── webpack.base.conf.js ├── webpack.dev.conf.js ├── webpack.dll.conf.js └── webpack.prod.conf.js ├── config ├── dev.env.js ├── index.js ├── prod.env.js └── sit.env.js ├── index.html ├── package.json ├── src ├── App.vue ├── api │ ├── aggregate.js │ ├── index.js │ ├── manage.js │ ├── messages.js │ ├── sts.js │ ├── users.js │ └── userstats.js ├── assets │ ├── 401.gif │ ├── 404.png │ ├── 404_cloud.png │ ├── bg1.jpg │ ├── iconfont │ │ └── iconfont.js │ ├── 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 ├── components │ ├── common │ │ ├── HomeMenu.vue │ │ ├── Icon-svg │ │ │ └── index.vue │ │ ├── ShowVideo.vue │ │ └── error │ │ │ ├── 401.vue │ │ │ └── 404.vue │ └── page │ │ ├── Login.vue │ │ ├── dashboard │ │ ├── Dashboard.vue │ │ ├── HelloSys.vue │ │ └── index.vue │ │ ├── friends │ │ ├── FriendRows.vue │ │ ├── FriendsInRow.vue │ │ ├── FriendsManage.vue │ │ ├── UserRelationInfo.vue │ │ └── stat │ │ │ └── FrisNumCycleCharts.vue │ │ ├── msg │ │ └── stat │ │ │ └── MsgNumCycleCharts.vue │ │ ├── operation │ │ ├── AnchorMsgMass.vue │ │ ├── AutoReplyCfg.vue │ │ ├── AutoReplyCfgList.vue │ │ └── OperatingAccountManage.vue │ │ ├── uploadOSS │ │ └── UploadOSS.vue │ │ ├── userDataStat │ │ ├── GeoUserNumCityRanked.vue │ │ ├── LoggedUserNumCycleCharts.vue │ │ └── UserNumCycleCharts.vue │ │ └── userManage │ │ └── UserManage.vue ├── config │ └── index.js ├── filters │ └── index.js ├── main.js ├── mock │ ├── data │ │ ├── dashboard.js │ │ ├── msgData.js │ │ ├── ststoken.js │ │ ├── trendData.js │ │ └── users.js │ ├── index.js │ └── mock.js ├── routes.js ├── store │ ├── actions.js │ ├── getters.js │ ├── index.js │ ├── modules │ │ ├── permission.js │ │ └── user.js │ ├── mutations.js │ └── state.js ├── styles │ └── vars.scss ├── utils │ ├── fetch.js │ └── index.js └── vendor │ ├── Blob.js │ └── Export2Excel.js └── static ├── .gitkeep ├── channelCode.json ├── css ├── AdminLTE.min.css ├── bootstrap.min.css ├── color-dark.css ├── datasource.css ├── main.css └── theme-green │ ├── color-green.css │ ├── fonts │ ├── element-icons.ttf │ └── element-icons.woff │ └── index.css ├── data.json ├── errCodeCN.json ├── img ├── avatar.gif ├── bluchat-logo.svg ├── favicon.ico ├── hero_image.png ├── jiagou.png └── video-bg.png ├── js └── vendor.dll.js ├── map └── china.json └── requestList ├── activeAppVersion.json ├── activeDevType.json ├── activePhoneBrand.json ├── activePhoneModel.json ├── appVersion.json ├── channel.json ├── cycleFrisNum.json ├── cycleLoggedUserNum.json ├── cycleMsgNum.json ├── cycleUserNum.json ├── devType.json ├── formatTest.json ├── friendNumsRanked.json ├── phoneBrand.json ├── phoneModel.json ├── sendMsgCount.json ├── sendMsgNumsRanked.json └── userNumByGeo.json /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | ["env", { "modules": false }], 4 | "stage-2" 5 | ], 6 | "plugins": ["transform-runtime"], 7 | "comments": false, 8 | "env": { 9 | "test": { 10 | "presets": ["env", "stage-2"], 11 | "plugins": [ "istanbul" ] 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 4 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | dist/ 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | .idea 8 | package-lock.js 9 | package-lock.json 10 | -------------------------------------------------------------------------------- /.postcssrc.js: -------------------------------------------------------------------------------- 1 | // https://github.com/michael-ciniawsky/postcss-load-config 2 | 3 | module.exports = { 4 | "plugins": { 5 | // to edit target browsers: use "browserlist" field in package.json 6 | "autoprefixer": {} 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 有同学反馈 启动报错,应该是npm 依赖的问题 2 | 3 | 我的版本信息附上,供参考,但以上版本应该都支持 4 | 5 | - npm 5.4.1 6 | - node v8.4.0 7 | - vue 大于 2.4.4 8 | - vue-echarts-v3 的版本要注意下,之前开发时就发现不同的版本,引入的玩法会变 9 | --- 10 | 更新: 11 | 12 | 主分支master 更新为动态加载菜单: 13 | 14 | 根据用户的权限,动态分配加载菜单,主要通过使用addRoutes,meta,等特性实现 15 | 16 | 17 | --- 18 | 19 | # DEMO 20 | 21 | 展示数据通过mock.js 构造 22 | 23 | [Demo 地址](https://fantasykai.github.io/vue-admin-manager) 24 | 25 | # vue-admin-manager 26 | 27 | > 后端研发一枚,初创公司,目前没有web端开发,逐步需要做运维,运营的页面,想要快速开展工作, 28 | 29 | > 就去了解了下目前比较火的,react 、vue 、angular,对比之后,感觉目前vue是最合适的, 30 | 31 | > 去官网熟悉了一下,写了几个demo,就开始做这个后台,借鉴很多github上的优秀作品,自己也 32 | 33 | > 输出一下,也方便自己回顾 34 | 35 | # 简介 36 | 37 | 项目为SPA,前后端分离,前端使用vue-cli构建,认证使用JWT,后端数据库为mongodb,后端提供 38 | 39 | restful接口,统计功能非常方便,在前端封装好aggregate,mapReduce,条件, 40 | 41 | 类似于前端组装好查询条件,后端直接吐对应的结果。 42 | 43 | ## 项目架构 44 | 45 | ![](static/img/jiagou.png) 46 | 47 | ## Build Setup 48 | 49 | ``` bash 50 | # install dependencies 51 | npm install 52 | 53 | # serve with hot reload at localhost:8080 54 | npm run dev 55 | 56 | # 发布测试环境 包含 webpack ananalyzer 57 | npm run build:sit-preview 58 | 59 | # 构建生成环境 60 | npm run build:prod 61 | 62 | ``` 63 | 64 | ## 目录结构 65 | ```shell 66 | ├── build // 构建相关   67 | ├── config // 配置相关 68 | ├── src // 源代码 69 | │   ├── api // 所有请求 70 | │   ├── assets // 主题 字体等静态资源 71 | │   ├── components // 全局公用组件(及页面) 72 | │   ├── config // 配置项 73 | │   ├── directive // 全局指令 74 | │   ├── filtres // 全局filter 75 | │   ├── mock // mock数据 76 | │   ├── router // 路由 77 | │   ├── store // 全局store管理 78 | │   ├── styles // 全局样式 79 | │   ├── utils // 全局公用方法 80 | │   ├── App.vue // 入口页面 81 | │   └── main.js // 入口 加载组件 初始化等 82 | ├── static // 第三方不打包资源 83 | ├── .babelrc // babel-loader 配置 84 | ├── .editorconfig // 代码风格文件,前提是要你的编辑器支持 85 | ├── .gitignore // 用于Git配置不需要加入版本管理的文件 86 | ├── .postcssrc.js // autoprefixer的配置文件 87 | └── package.json // 项目依赖管理 88 | 89 | ``` 90 | 91 | ## 技术栈 92 | 93 | - axios 94 | - element-ui 95 | - moment 日期处理 96 | - vue2X、vue-router、vuex 97 | 98 | ### 工具集 99 | 100 | - vue-datasource 101 | - vue-echarts-v3 102 | - vue-quill-editor 103 | - vue-simplemde 104 | - vue-video-player 105 | 106 | ### UI方案 107 | 108 | #### UI 109 | 110 | - element-ui 111 | - bootstrap(AdminLTE) 112 | 113 | #### 扩展图标 114 | 115 | - font-awesome 116 | - ionicons 117 | 118 | ### 项目模块 119 | 120 | - [x] 登录认证(目前基于JWT,)todo 支持Oauth2,支持第三方登录 121 | 122 | - [x] 应用概况 Dashboard 各种图标统计 123 | 124 | - [x] 数据趋势:注册用户,活跃用户,用户关系,等 125 | 126 | - [x] 用户管理 目前只做了查询 127 | 128 | - [x] 数据维护 支持视频,图片的查看 129 | 130 | ### TODO 131 | 132 | - [x] 已完成 折叠导航栏 133 | 134 | - [x] 已完成 登录获取用户昵称 135 | 136 | - [x] 已完成 统计图标抽取 137 | 138 | - [x] 已完成 接入阿里云OSS,STS(临时认证服务) 139 | 140 | - [x] 已完成 支持视频播放 141 | 142 | - [x] vuex状态管理 (目前只记录了用户token信息) 143 | 144 | - [] Dashboard中的echart图标,组件化重构 (第一次使用时,写的,代码比较冗余,后续拆成组件) 145 | 146 | - [x] 404页面组件(目前空白),考虑使用自己博客上的腾讯公益 147 | 148 | - [] 401页面组件 149 | 150 | - [] 响应式,支持手机 151 | 152 | 153 | ### 备注 154 | 155 | Dashboard 页面使用了vue-echarts-v3组件,是刚开始熟悉vue时,硬撸出来的,无美感可言啊。后面逐步熟悉及应用起来组件的思想才, 156 | 157 | 代码尚需逐步优化,哈哈 158 | 159 | 160 | - [个人博客 https://aimak.cn](https://aimak.cn) 161 | -------------------------------------------------------------------------------- /build/build.js: -------------------------------------------------------------------------------- 1 | require('./check-versions')(); 2 | var server = require('pushstate-server'); 3 | var opn = require('opn') 4 | var ora = require('ora') 5 | var rm = require('rimraf') 6 | var path = require('path') 7 | var chalk = require('chalk') 8 | var webpack = require('webpack') 9 | var config = require('../config') 10 | var webpackConfig = require('./webpack.prod.conf') 11 | 12 | console.log(process.env.NODE_ENV) 13 | 14 | var spinner = ora('building for ' + process.env.NODE_ENV + '...') 15 | spinner.start() 16 | 17 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => { 18 | if (err) throw err 19 | webpack(webpackConfig, function (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, 26 | chunks: false, 27 | chunkModules: false 28 | }) + '\n\n') 29 | 30 | console.log(chalk.cyan(' Build complete.\n')) 31 | if(process.env.npm_config_preview){ 32 | server.start({ 33 | port: 18086, 34 | directory: './dist', 35 | file: '/index.html' 36 | }); 37 | console.log('> Listening at ' + 'http://localhost:18086' + '\n') 38 | } 39 | }) 40 | }) 41 | -------------------------------------------------------------------------------- /build/check-versions.js: -------------------------------------------------------------------------------- 1 | var chalk = require('chalk') 2 | var semver = require('semver') 3 | var packageConfig = require('../package.json') 4 | var shell = require('shelljs') 5 | function exec (cmd) { 6 | return require('child_process').execSync(cmd).toString().trim() 7 | } 8 | 9 | var versionRequirements = [ 10 | { 11 | name: 'node', 12 | currentVersion: semver.clean(process.version), 13 | versionRequirement: packageConfig.engines.node 14 | }, 15 | ] 16 | 17 | if (shell.which('npm')) { 18 | versionRequirements.push({ 19 | name: 'npm', 20 | currentVersion: exec('npm --version'), 21 | versionRequirement: packageConfig.engines.npm 22 | }) 23 | } 24 | 25 | module.exports = function () { 26 | var warnings = [] 27 | for (var i = 0; i < versionRequirements.length; i++) { 28 | var mod = versionRequirements[i] 29 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { 30 | warnings.push(mod.name + ': ' + 31 | chalk.red(mod.currentVersion) + ' should be ' + 32 | chalk.green(mod.versionRequirement) 33 | ) 34 | } 35 | } 36 | 37 | if (warnings.length) { 38 | console.log('') 39 | console.log(chalk.yellow('To use this template, you must update following to modules:')) 40 | console.log() 41 | for (var i = 0; i < warnings.length; i++) { 42 | var warning = warnings[i] 43 | console.log(' ' + warning) 44 | } 45 | console.log() 46 | process.exit(1) 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /build/dev-client.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | require('eventsource-polyfill') 3 | var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') 4 | 5 | hotClient.subscribe(function (event) { 6 | if (event.action === 'reload') { 7 | window.location.reload() 8 | } 9 | }) 10 | -------------------------------------------------------------------------------- /build/dev-server.js: -------------------------------------------------------------------------------- 1 | //检查NodeJS和npm的版本 2 | require('./check-versions')() 3 | 4 | // 获取配置 5 | var config = require('../config') 6 | 7 | // 如果Node的环境变量中没有设置当前的环境(NODE_ENV),则使用config中的配置作为当前的环境 8 | if (!process.env.NODE_ENV) { 9 | process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) 10 | } 11 | 12 | // 一个可以调用默认软件打开网址、图片、文件等内容的插件 13 | // 这里用它来调用默认浏览器打开dev-server监听的端口,例如:localhost:8080 14 | var opn = require('opn') 15 | var path = require('path') 16 | var express = require('express') 17 | var webpack = require('webpack') 18 | 19 | // 一个express中间件,用于将http请求代理到其他服务器 20 | // 例:localhost:8080/api/xxx --> localhost:3000/api/xxx 21 | // 这里使用该插件可以将前端开发中涉及到的请求代理到API服务器上,方便与服务器对接 22 | var proxyMiddleware = require('http-proxy-middleware') 23 | var webpackConfig = require('./webpack.dev.conf') 24 | 25 | var port = process.env.PORT || config.dev.port 26 | // automatically open browser, if not set will be false 27 | var autoOpenBrowser = !!config.dev.autoOpenBrowser 28 | // Define HTTP proxies to your custom API backend 29 | // https://github.com/chimurai/http-proxy-middleware 30 | var proxyTable = config.dev.proxyTable 31 | 32 | var app = express() 33 | var compiler = webpack(webpackConfig) 34 | 35 | var devMiddleware = require('webpack-dev-middleware')(compiler, { 36 | publicPath: webpackConfig.output.publicPath, 37 | quiet: true 38 | }) 39 | 40 | var hotMiddleware = require('webpack-hot-middleware')(compiler, { 41 | log: () => { 42 | } 43 | }) 44 | // force page reload when html-webpack-plugin template changes 45 | compiler.plugin('compilation', function (compilation) { 46 | compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { 47 | hotMiddleware.publish({action: 'reload'}) 48 | cb() 49 | }) 50 | }) 51 | 52 | // proxy api requests 53 | Object.keys(proxyTable).forEach(function (context) { 54 | var options = proxyTable[context] 55 | if (typeof options === 'string') { 56 | options = {target: options} 57 | } 58 | app.use(proxyMiddleware(options.filter || context, options)) 59 | }) 60 | 61 | // handle fallback for HTML5 history API 62 | app.use(require('connect-history-api-fallback')()) 63 | 64 | // serve webpack bundle output 65 | app.use(devMiddleware) 66 | 67 | // enable hot-reload and state-preserving 68 | // compilation error display 69 | app.use(hotMiddleware) 70 | 71 | // serve pure static assets 72 | var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory) 73 | app.use(staticPath, express.static('./static')) 74 | 75 | var uri = 'http://localhost:' + port 76 | 77 | var _resolve 78 | var readyPromise = new Promise(resolve => { 79 | _resolve = resolve 80 | }) 81 | 82 | console.log('> Starting dev server...') 83 | devMiddleware.waitUntilValid(() => { 84 | console.log('> Listening at ' + uri + '\n') 85 | // when env is testing, don't need open it 86 | if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') { 87 | opn(uri) 88 | } 89 | _resolve() 90 | }) 91 | 92 | var server = app.listen(port) 93 | 94 | module.exports = { 95 | ready: readyPromise, 96 | close: () => { 97 | server.close() 98 | } 99 | } 100 | -------------------------------------------------------------------------------- /build/utils.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var config = require('../config') 3 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 4 | 5 | exports.assetsPath = function (_path) { 6 | var assetsSubDirectory = process.env.NODE_ENV === 'production' 7 | ? config.build.assetsSubDirectory 8 | : config.dev.assetsSubDirectory 9 | return path.posix.join(assetsSubDirectory, _path) 10 | } 11 | 12 | exports.cssLoaders = function (options) { 13 | options = options || {} 14 | 15 | var cssLoader = { 16 | loader: 'css-loader', 17 | options: { 18 | minimize: process.env.NODE_ENV === 'production', 19 | sourceMap: options.sourceMap 20 | } 21 | } 22 | 23 | // generate loader string to be used with extract text plugin 24 | function generateLoaders (loader, loaderOptions) { 25 | var loaders = [cssLoader] 26 | if (loader) { 27 | loaders.push({ 28 | loader: loader + '-loader', 29 | options: Object.assign({}, loaderOptions, { 30 | sourceMap: options.sourceMap 31 | }) 32 | }) 33 | } 34 | 35 | // Extract CSS when that option is specified 36 | // (which is the case during production build) 37 | if (options.extract) { 38 | return ExtractTextPlugin.extract({ 39 | use: loaders, 40 | fallback: 'vue-style-loader' 41 | }) 42 | } else { 43 | return ['vue-style-loader'].concat(loaders) 44 | } 45 | } 46 | 47 | // https://vue-loader.vuejs.org/en/configurations/extract-css.html 48 | return { 49 | css: generateLoaders(), 50 | postcss: generateLoaders(), 51 | less: generateLoaders('less'), 52 | sass: generateLoaders('sass', { indentedSyntax: true }), 53 | scss: generateLoaders('sass'), 54 | stylus: generateLoaders('stylus'), 55 | styl: generateLoaders('stylus') 56 | } 57 | } 58 | 59 | // Generate loaders for standalone style files (outside of .vue) 60 | exports.styleLoaders = function (options) { 61 | var output = [] 62 | var loaders = exports.cssLoaders(options) 63 | for (var extension in loaders) { 64 | var loader = loaders[extension] 65 | output.push({ 66 | test: new RegExp('\\.' + extension + '$'), 67 | use: loader 68 | }) 69 | } 70 | return output 71 | } 72 | -------------------------------------------------------------------------------- /build/vue-loader.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils') 2 | var config = require('../config') 3 | var isProduction = process.env.NODE_ENV === 'production' 4 | 5 | module.exports = { 6 | loaders: utils.cssLoaders({ 7 | sourceMap: isProduction 8 | ? config.build.productionSourceMap 9 | : config.dev.cssSourceMap, 10 | extract: isProduction 11 | }), 12 | postcss: [ 13 | require('autoprefixer')({ 14 | browsers: ['last 2 versions'] 15 | }) 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /build/webpack.base.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var utils = require('./utils'); 3 | var config = require('../config'); 4 | var vueLoaderConfig = require('./vue-loader.conf'); 5 | 6 | function resolve (dir) { 7 | return path.join(__dirname, '..', dir) 8 | } 9 | var src = path.resolve(__dirname, '../src'); 10 | 11 | module.exports = { 12 | entry: { 13 | app: './src/main.js' 14 | }, 15 | output: { 16 | path: config.build.assetsRoot, 17 | filename: '[name].js', 18 | publicPath: process.env.NODE_ENV !== 'development' ? config.build.assetsPublicPath: config.dev.assetsPublicPath 19 | 20 | }, 21 | resolve: { 22 | extensions: ['.js', '.vue', '.json'], 23 | alias: { 24 | 'vue$': 'vue/dist/vue.esm.js', 25 | '@': resolve('src'), 26 | 'src': path.resolve(__dirname, '../src'), 27 | 'scss_vars': '@/styles/vars.scss', 28 | 'assets': path.resolve(__dirname, '../src/assets'), 29 | 'api': path.resolve(__dirname, '../src/api'), 30 | 'utils': path.resolve(__dirname, '../src/utils'), 31 | 'vendor': path.resolve(__dirname, '../src/vendor'), 32 | 'static': path.resolve(__dirname, '../static'), 33 | } 34 | }, 35 | module: { 36 | rules: [ 37 | { 38 | test: /\.vue$/, 39 | loader: 'vue-loader', 40 | options: vueLoaderConfig 41 | }, 42 | { 43 | test: /\.js$/, 44 | loader: 'babel-loader', 45 | include: [resolve('src'), resolve('test')] 46 | }, 47 | { 48 | test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, 49 | loader: 'url-loader', 50 | options: { 51 | limit: 10000, 52 | name: utils.assetsPath('img/[name].[hash:7].[ext]') 53 | } 54 | }, 55 | { 56 | test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, 57 | loader: 'url-loader', 58 | options: { 59 | limit: 10000, 60 | name: utils.assetsPath('fonts/[name].[hash:7].[ext]') 61 | } 62 | } 63 | ] 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /build/webpack.dev.conf.js: -------------------------------------------------------------------------------- 1 | var utils = require('./utils') 2 | var webpack = require('webpack') 3 | var config = require('../config') 4 | var merge = require('webpack-merge') 5 | var baseWebpackConfig = require('./webpack.base.conf') 6 | var HtmlWebpackPlugin = require('html-webpack-plugin') 7 | var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') 8 | 9 | // add hot-reload related code to entry chunks 10 | Object.keys(baseWebpackConfig.entry).forEach(function (name) { 11 | baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) 12 | }) 13 | 14 | module.exports = merge(baseWebpackConfig, { 15 | module: { 16 | rules: utils.styleLoaders({ sourceMap: config.dev.cssSourceMap }) 17 | }, 18 | // cheap-module-eval-source-map is faster for development 19 | devtool: '#cheap-module-eval-source-map', 20 | plugins: [ 21 | new webpack.DefinePlugin({ 22 | 'process.env': config.dev.env 23 | }), 24 | // https://github.com/glenjamin/webpack-hot-middleware#installation--usage 25 | new webpack.HotModuleReplacementPlugin(), 26 | new webpack.NoEmitOnErrorsPlugin(), 27 | // https://github.com/ampedandwired/html-webpack-plugin 28 | new HtmlWebpackPlugin({ 29 | filename: 'index.html', 30 | template: 'index.html', 31 | inject: true 32 | }), 33 | new FriendlyErrorsPlugin() 34 | ] 35 | }) 36 | -------------------------------------------------------------------------------- /build/webpack.dll.conf.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const webpack = require('webpack'); 3 | 4 | module.exports = { 5 | entry: { 6 | vendor: ['vue/dist/vue.common.js','vue-router', 'babel-polyfill','axios','vue-echarts-v3'] 7 | }, 8 | output: { 9 | path: path.join(__dirname, '../static/js'), 10 | filename: '[name].dll.js', 11 | library: '[name]_library' 12 | }, 13 | plugins: [ 14 | new webpack.DllPlugin({ 15 | path: path.join(__dirname, '.', '[name]-manifest.json'), 16 | name: '[name]_library' 17 | }), 18 | new webpack.optimize.UglifyJsPlugin({ 19 | compress: { 20 | warnings: false 21 | } 22 | }), 23 | new webpack.DefinePlugin({ 24 | 'process.env': { 25 | NODE_ENV: '"production"' 26 | } 27 | }) 28 | ] 29 | }; -------------------------------------------------------------------------------- /build/webpack.prod.conf.js: -------------------------------------------------------------------------------- 1 | var path = require('path') 2 | var utils = require('./utils') 3 | var webpack = require('webpack') 4 | var config = require('../config') 5 | var merge = require('webpack-merge') 6 | var baseWebpackConfig = require('./webpack.base.conf') 7 | var CopyWebpackPlugin = require('copy-webpack-plugin') 8 | var HtmlWebpackPlugin = require('html-webpack-plugin') 9 | var ExtractTextPlugin = require('extract-text-webpack-plugin') 10 | var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') 11 | 12 | var env = process.env.NODE_ENV === 'production' ? config.build.prodEnv : config.build.sitEnv 13 | 14 | function resolveApp(relativePath) { 15 | return path.resolve(relativePath); 16 | } 17 | 18 | var webpackConfig = merge(baseWebpackConfig, { 19 | module: { 20 | rules: utils.styleLoaders({ 21 | sourceMap: config.build.productionSourceMap, 22 | extract: true 23 | }) 24 | }, 25 | devtool: config.build.productionSourceMap ? '#source-map' : false, 26 | output: { 27 | path: config.build.assetsRoot, 28 | filename: utils.assetsPath('js/[name].[chunkhash].js'), 29 | chunkFilename: utils.assetsPath('js/[id].[chunkhash].js') 30 | }, 31 | plugins: [ 32 | // http://vuejs.github.io/vue-loader/en/workflow/production.html 33 | new webpack.DefinePlugin({ 34 | 'process.env': env 35 | }), 36 | new webpack.optimize.UglifyJsPlugin({ 37 | compress: { 38 | warnings: false 39 | }, 40 | sourceMap: true 41 | }), 42 | // extract css into its own file 43 | new ExtractTextPlugin({ 44 | filename: utils.assetsPath('css/[name].[contenthash].css') 45 | }), 46 | // Compress extracted CSS. We are using this plugin so that possible 47 | // duplicated CSS from different components can be deduped. 48 | new OptimizeCSSPlugin({ 49 | cssProcessorOptions: { 50 | safe: true 51 | } 52 | }), 53 | // generate dist index.html with correct asset hash for caching. 54 | // you can customize output by editing /index.html 55 | // see https://github.com/ampedandwired/html-webpack-plugin 56 | new HtmlWebpackPlugin({ 57 | filename: config.build.index, 58 | template: 'index.html', 59 | inject: true, 60 | minify: { 61 | removeComments: true, 62 | collapseWhitespace: true, 63 | removeAttributeQuotes: true 64 | // more options: 65 | // https://github.com/kangax/html-minifier#options-quick-reference 66 | }, 67 | // necessary to consistently work with multiple chunks via CommonsChunkPlugin 68 | chunksSortMode: 'dependency' 69 | }), 70 | // split vendor js into its own file 71 | new webpack.optimize.CommonsChunkPlugin({ 72 | name: 'vendor', 73 | minChunks: function (module, count) { 74 | // any required modules inside node_modules are extracted to vendor 75 | return ( 76 | module.resource && 77 | /\.js$/.test(module.resource) && 78 | module.resource.indexOf( 79 | path.join(__dirname, '../node_modules') 80 | ) === 0 81 | ) 82 | } 83 | }), 84 | // extract webpack runtime and module manifest to its own file in order to 85 | // prevent vendor hash from being updated whenever app bundle is updated 86 | new webpack.optimize.CommonsChunkPlugin({ 87 | name: 'manifest', 88 | chunks: ['vendor'] 89 | }), 90 | // copy custom static assets 91 | new CopyWebpackPlugin([ 92 | { 93 | from: path.resolve(__dirname, '../static'), 94 | to: config.build.assetsSubDirectory, 95 | ignore: ['.*'] 96 | } 97 | ]) 98 | ] 99 | }) 100 | 101 | if (config.build.productionGzip) { 102 | var CompressionWebpackPlugin = require('compression-webpack-plugin') 103 | 104 | webpackConfig.plugins.push( 105 | new CompressionWebpackPlugin({ 106 | asset: '[path].gz[query]', 107 | algorithm: 'gzip', 108 | test: new RegExp( 109 | '\\.(' + 110 | config.build.productionGzipExtensions.join('|') + 111 | ')$' 112 | ), 113 | threshold: 10240, 114 | minRatio: 0.8 115 | }) 116 | ) 117 | } 118 | 119 | if (config.build.bundleAnalyzerReport) { 120 | var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin 121 | webpackConfig.plugins.push(new BundleAnalyzerPlugin()) 122 | } 123 | 124 | module.exports = webpackConfig 125 | -------------------------------------------------------------------------------- /config/dev.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"development"', 3 | BASE_API: '""', 4 | }; 5 | -------------------------------------------------------------------------------- /config/index.js: -------------------------------------------------------------------------------- 1 | // see http://vuejs-templates.github.io/webpack for documentation. 2 | var path = require('path'); 3 | 4 | module.exports = { 5 | build: { 6 | sitEnv: require('./sit.env'), 7 | prodEnv: require('./prod.env'), 8 | index: path.resolve(__dirname, '../dist/index.html'), 9 | assetsRoot: path.resolve(__dirname, '../dist'), 10 | assetsSubDirectory: 'static', 11 | assetsPublicPath: './', 12 | productionSourceMap: false, 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 | // Run the build command with an extra argument to 20 | // View the bundle analyzer report after build finishes: 21 | // `npm run build --report` 22 | // Set to `true` or `false` to always turn it on or off 23 | bundleAnalyzerReport: process.env.npm_config_report 24 | }, 25 | dev: { 26 | env: require('./dev.env'), 27 | port: 18085, 28 | autoOpenBrowser: true, 29 | assetsSubDirectory: 'static', 30 | assetsPublicPath: '/', 31 | proxyTable: { 32 | '/charts/v1': { 33 | target: 'https://api.fantasykai.cc/charts/v1', 34 | changeOrigin: true, 35 | pathRewrite: { 36 | '/charts/v1': '' 37 | } 38 | }, 39 | '/manage/v1': { 40 | target: 'https://api.fantasykai.cc/manage/v1', 41 | changeOrigin: true, 42 | pathRewrite: { 43 | '/manage/v1': '' 44 | } 45 | }, 46 | '/api': { 47 | target: 'https://api.fantasykai.cc/api/v1', 48 | changeOrigin: true, 49 | pathRewrite: { 50 | '/api/v1': '' 51 | } 52 | } 53 | }, 54 | // CSS Sourcemaps off by default because relative paths are "buggy" 55 | // with this option, according to the CSS-Loader README 56 | // (https://github.com/webpack/css-loader#sourcemaps) 57 | // In our experience, they generally work as expected, 58 | // just be aware of this issue when enabling this option. 59 | cssSourceMap: false 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /config/prod.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"', 3 | BASE_API: '"https://api-prod.com"' 4 | }; 5 | -------------------------------------------------------------------------------- /config/sit.env.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | NODE_ENV: '"production"', 3 | BASE_API: '"https://api-sit.com"' 4 | }; 5 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Sys-Admin 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-admin-manager", 3 | "version": "1.0.0", 4 | "description": "后台管理系统", 5 | "author": "fantasykai ", 6 | "private": true, 7 | "scripts": { 8 | "dev": "node build/dev-server.js", 9 | "build:prod": "cross-env NODE_ENV=production node build/build.js", 10 | "build:sit": "cross-env NODE_ENV=sit node build/build.js", 11 | "build:sit-preview": "cross-env NODE_ENV=sit npm_config_preview=true npm_config_report=true node build/build.js" 12 | }, 13 | "dependencies": { 14 | "axios": "^0.16.2", 15 | "element-ui": "^1.3.7", 16 | "file-saver": "^1.3.3", 17 | "moment": "^2.18.1", 18 | "nprogress": "^0.2.0", 19 | "uuid": "^3.1.0", 20 | "vue": "^2.4.4", 21 | "vue-datasource": "^2.0.1", 22 | "vue-echarts-v3": "^1.0.4", 23 | "vue-quill-editor": "^2.3.2", 24 | "vue-router": "^2.6.0", 25 | "vue-simplemde": "^0.4.4", 26 | "vue-video-player": "^4.0.4", 27 | "vuex": "^2.4.1", 28 | "vuex-router-sync": "^4.3.2", 29 | "xlsx": "^0.11.4" 30 | }, 31 | "devDependencies": { 32 | "autoprefixer": "^7.1.4", 33 | "axios-mock-adapter": "^1.9.0", 34 | "babel-core": "^6.25.0", 35 | "babel-loader": "^7.0.0", 36 | "babel-plugin-transform-runtime": "^6.23.0", 37 | "babel-polyfill": "^6.23.0", 38 | "babel-preset-env": "^1.5.2", 39 | "babel-preset-stage-2": "^6.24.1", 40 | "babel-register": "^6.24.1", 41 | "babel-runtime": "^6.23.0", 42 | "chalk": "^2.1.0", 43 | "connect-history-api-fallback": "^1.3.0", 44 | "copy-webpack-plugin": "^4.0.1", 45 | "cross-env": "^5.0.1", 46 | "css-loader": "^0.28.7", 47 | "cssnano": "^3.10.0", 48 | "del": "^3.0.0", 49 | "eventsource-polyfill": "^0.9.6", 50 | "express": "^4.15.5", 51 | "extract-text-webpack-plugin": "^3.0.0", 52 | "file-loader": "^0.11.2", 53 | "friendly-errors-webpack-plugin": "^1.6.1", 54 | "function-bind": "^1.1.1", 55 | "gulp": "^3.9.1", 56 | "gulp-ssh": "^0.6.0", 57 | "html-webpack-plugin": "^2.28.0", 58 | "http-proxy-middleware": "^0.17.4", 59 | "mockjs": "^1.0.1-beta3", 60 | "node-sass": "^4.5.3", 61 | "opn": "^5.1.0", 62 | "optimize-css-assets-webpack-plugin": "^3.2.0", 63 | "ora": "^1.3.0", 64 | "pushstate-server": "^3.0.0", 65 | "rimraf": "^2.6.2", 66 | "sass-loader": "^6.0.6", 67 | "script-loader": "^0.7.1", 68 | "semver": "^5.3.0", 69 | "shelljs": "^0.7.8", 70 | "url-loader": "^0.5.9", 71 | "vue-loader": "^13.0.5", 72 | "vue-style-loader": "^3.0.3", 73 | "vue-template-compiler": "^2.4.4", 74 | "webpack": "^3.6.0", 75 | "webpack-bundle-analyzer": "^2.8.2", 76 | "webpack-dev-middleware": "^1.10.2", 77 | "webpack-hot-middleware": "^2.19.1", 78 | "webpack-merge": "^4.1.0" 79 | }, 80 | "engines": { 81 | "node": ">= 4.0.0", 82 | "npm": ">= 3.0.0" 83 | }, 84 | "browserslist": [ 85 | "> 1%", 86 | "last 2 versions", 87 | "not ie <= 8" 88 | ] 89 | } 90 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 18 | 19 | 76 | -------------------------------------------------------------------------------- /src/api/aggregate.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kai.fantasy on 2017/6/15 0015. 3 | */ 4 | import fetch from '../utils/fetch'; 5 | 6 | export function aggregate(data) { 7 | return fetch({ 8 | url: '/charts/v1/aggregate', 9 | method: 'post', 10 | data 11 | }).then(res => res.data.result); 12 | } 13 | 14 | -------------------------------------------------------------------------------- /src/api/manage.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kai.fantasy on 2017/6/19 0019. 3 | */ 4 | import fetch from '../utils/fetch' 5 | 6 | /** 7 | * 设置定时任务 8 | * @param data 9 | * @returns {*|Promise.} 10 | */ 11 | export function setMsgTimingTask(data) { 12 | return fetch({ 13 | url: '/manage/v1/apschedul/sendtousera', 14 | method: 'post', 15 | data 16 | }).then(res => res.data); 17 | } 18 | 19 | /** 20 | * 取消定时任务 21 | * @param data 22 | * @returns {*|Promise.} 23 | */ 24 | export function cancelMsgTimingTask(params) { 25 | let data = params.patchBody; 26 | return fetch({ 27 | url: params.uri, 28 | method: 'patch', 29 | data 30 | }).then(res => res.data); 31 | } 32 | 33 | /** 34 | * 获取账号自动回复设置信息 35 | * @param params 36 | * @returns {*} 37 | */ 38 | export function getMsgConfigs(params) { 39 | return fetch({ 40 | url: '/api/v1/msgconfigs', 41 | headers: {'cache-control': 'max-age=0,no-cache'}, 42 | params: params, 43 | method: 'get' 44 | }); 45 | } 46 | 47 | /** 48 | * 设置自动回复配置 49 | * @param data 50 | * @returns {*|Promise.} 51 | */ 52 | export function setMsgConfigs(data) { 53 | return fetch({ 54 | url: '/api/v1/msgconfigs', 55 | method: 'post', 56 | data 57 | }).then(res => res.data); 58 | } 59 | 60 | /** 61 | * 触发消息发送任务 62 | * @param data 63 | * @returns {*|Promise.} 64 | */ 65 | export function sendToUsersSchedul(data) { 66 | return fetch({ 67 | url: '/manage/v1/apschedul/sendtousers', 68 | method: 'post', 69 | data 70 | }).then(res => res.data); 71 | } 72 | 73 | /** 74 | * 更新自动回复配置 75 | * @param data 76 | * @returns {*|Promise.} 77 | */ 78 | export function updateMsgConfigs(params) { 79 | let data = params.patchBody; 80 | return fetch({ 81 | url: params.uri, 82 | method: 'patch', 83 | data 84 | }).then(res => res.data); 85 | } 86 | /** 87 | * 删除自动回复配置信息 88 | * @param params 89 | * @returns {*} 90 | */ 91 | export function deleteMsgConfigs(params) { 92 | return fetch({ 93 | url: '/api/v1/msgconfigs/' + params, 94 | method: 'delete' 95 | }).then(res => res.data); 96 | } 97 | -------------------------------------------------------------------------------- /src/api/messages.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kai.fantasy on 2017/6/15 0015. 3 | */ 4 | import fetch from '../utils/fetch' 5 | 6 | /** 7 | * 获取消息记录,强制不使用缓存 8 | * @param params 9 | * @returns {*} 10 | */ 11 | export function getChatRecordPage(params) { 12 | return fetch({ 13 | url: '/api/v1/messages', 14 | headers: {'cache-control': 'max-age=0,no-cache'}, 15 | params: params, 16 | method: 'get' 17 | }); 18 | } 19 | -------------------------------------------------------------------------------- /src/api/sts.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kai.fantasy on 2017/6/15 0015. 3 | */ 4 | import fetch from 'utils/fetch'; 5 | 6 | export function getSTSToken() { 7 | return fetch({ 8 | url: '/api/v1/ststoken', 9 | method: 'get' 10 | }).then(res => res.data); 11 | } 12 | 13 | -------------------------------------------------------------------------------- /src/api/users.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kai.fantasy on 2017/6/15 0015. 3 | */ 4 | import fetch from '../utils/fetch' 5 | /** 6 | * 获取用户昵称 7 | * @returns {*|Promise.} 8 | */ 9 | export function getNickname(uid) { 10 | return fetch({ 11 | url: `/api/v1/users/` + uid + `?projection={"nickname":1,"usertype":1,"manage":1}`, 12 | method: 'get' 13 | }).then(res => res.data); 14 | } 15 | 16 | /** 17 | * 获取用户列表 18 | * @param params 19 | * @returns {*} 20 | */ 21 | export function getUsersPage(params) { 22 | return fetch({ 23 | url: '/api/v1/users', 24 | method: 'get', 25 | params: params 26 | }); 27 | } 28 | 29 | /** 30 | * 更新用户信息 31 | * @param data 32 | * @returns {*|Promise.} 33 | */ 34 | export function updateUserInfo(params) { 35 | let data = params.patchBody; 36 | return fetch({ 37 | url: params.uri, 38 | method: 'patch', 39 | data 40 | }).then(res => res.data); 41 | } 42 | 43 | /** 44 | * 根据用户userId/seqid/tel 查询用户的uid 45 | * @param params 46 | * @returns {*} 47 | */ 48 | export function getBluUid(params) { 49 | return fetch({ 50 | url: '/api/v1/users', 51 | method: 'get', 52 | params: params 53 | }); 54 | } 55 | 56 | /** 57 | * 查询好友列表 58 | * @param params 59 | * @returns {Promise.|*} 60 | */ 61 | export function getFriendsPage(params) { 62 | return fetch({ 63 | url: `/api/v1/users/` + params.userId + `/fris`, 64 | headers: {'cache-control': 'max-age=0,no-cache'}, 65 | method: 'get', 66 | params: params.queryParams 67 | }).then(res => res.data); 68 | } 69 | 70 | /** 71 | * 查询好友分组 72 | * @param params 73 | * @returns {Promise.|*} 74 | */ 75 | export function getFriendRows(params) { 76 | return fetch({ 77 | url: `/api/v1/users/` + params.userId + `/rows`, 78 | headers: {'cache-control': 'max-age=0,no-cache'}, 79 | method: 'get', 80 | params: params.queryParams 81 | }).then(res => res.data); 82 | } 83 | 84 | /** 85 | * 查询好友分组内的好友 86 | * @param params 87 | * @returns {Promise.|*} 88 | */ 89 | export function getFriendsInRow(params) { 90 | return fetch({ 91 | url: `/api/v1/users/` + params.userId + `/fris`, 92 | headers: {'cache-control': 'max-age=0,no-cache'}, 93 | method: 'get', 94 | params: params.queryParams 95 | }).then(res => res.data); 96 | } 97 | -------------------------------------------------------------------------------- /src/api/userstats.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kai.fantasy on 2017/6/15 0015. 3 | */ 4 | import fetch from '../utils/fetch' 5 | 6 | /** 7 | * 获取主播数据统计信息 8 | * @param params 9 | * @returns {Promise.|*} 10 | */ 11 | export function getAnchorDataStatPage(params) { 12 | return fetch({ 13 | url: '/api/v1/userstats', 14 | headers: {'cache-control': 'max-age=0,no-cache'}, 15 | method: 'get', 16 | params: params 17 | }); 18 | } 19 | -------------------------------------------------------------------------------- /src/assets/401.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/401.gif -------------------------------------------------------------------------------- /src/assets/404.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/404.png -------------------------------------------------------------------------------- /src/assets/404_cloud.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/404_cloud.png -------------------------------------------------------------------------------- /src/assets/bg1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/bg1.jpg -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/logo.png -------------------------------------------------------------------------------- /src/assets/logo4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/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/base.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";.el-fade-in-enter,.el-fade-in-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active,.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-ms-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-ms-transform:scaleY(1);transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;-ms-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-ms-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-ms-transform:scaleY(1);transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;-ms-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-ms-transform:scaleY(0);transform:scaleY(0)}.collapse-transition{transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.list-enter-active,.list-leave-active{transition:all 1s}.list-enter,.list-leave-active{opacity:0;-ms-transform:translateY(-30px);transform:translateY(-30px)}@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/breadcrumb-item.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/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/color-picker.css: -------------------------------------------------------------------------------- 1 | .el-color-hue-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-hue-slider__bar{position:relative;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-ms-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(to bottom,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-alpha-slider__bar{position:relative;background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:rgb(31, 45, 61)}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#1d8ce0;border-color:#1d8ce0}.el-color-dropdown__link-btn{cursor:pointer;color:#1d8ce0;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:rgb(74, 163, 230)}.el-color-picker{display:inline-block;position:relative}.el-color-picker__trigger{display:inline-block;box-sizing:border-box;height:36px;padding:6px;border:1px solid rgb(191, 203, 217);border-radius:4px;font-size:0}.el-color-picker__color{position:relative;display:inline-block;box-sizing:border-box;vertical-align:middle;border:1px solid #666;width:22px;height:22px;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty{font-size:12px;vertical-align:middle;margin-top:4px;color:#666}.el-color-picker__icon{display:inline-block;position:relative;vertical-align:middle;margin-left:8px;width:12px;color:#888;font-size:12px}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;background-color:#fff;border:1px solid rgb(209, 219, 229);box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.12)} -------------------------------------------------------------------------------- /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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-darkblue/dropdown-item.css -------------------------------------------------------------------------------- /src/assets/theme/theme-darkblue/dropdown-menu.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-darkblue/dropdown-menu.css -------------------------------------------------------------------------------- /src/assets/theme/theme-darkblue/fonts/element-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-darkblue/fonts/element-icons.ttf -------------------------------------------------------------------------------- /src/assets/theme/theme-darkblue/fonts/element-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-darkblue/fonts/element-icons.woff -------------------------------------------------------------------------------- /src/assets/theme/theme-darkblue/form-item.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-darkblue/menu-item-group.css -------------------------------------------------------------------------------- /src/assets/theme/theme-darkblue/menu-item.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-darkblue/menu-item.css -------------------------------------------------------------------------------- /src/assets/theme/theme-darkblue/menu.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";.el-menu,.el-menu li{list-style:none}.el-menu:after,.el-menu:before{display:table;content:""}.el-menu:after{clear:both}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;font-size:14px;color:rgb(72, 87, 106);padding:0 20px;cursor:pointer;position:relative;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box;white-space:nowrap}.el-menu{border-radius:2px;position:relative;margin:0;padding-left:0;background-color:rgb(238, 241, 246)}.el-menu--dark{background-color:rgb(50, 65, 87)}.el-menu--dark .el-menu-item,.el-menu--dark .el-submenu__title{color:rgb(191, 203, 217)}.el-menu--dark .el-menu-item:hover,.el-menu--dark .el-submenu__title:hover{background-color:rgb(72, 87, 106)}.el-menu--dark .el-submenu .el-menu{background-color:rgb(31, 45, 61)}.el-menu--dark .el-submenu .el-menu .el-menu-item:hover{background-color:rgb(72, 87, 106)}.el-menu--horizontal .el-menu-item{float:left;height:60px;line-height:60px;margin:0;cursor:pointer;position:relative;box-sizing:border-box;border-bottom:5px solid transparent}.el-menu--horizontal .el-menu-item a,.el-menu--horizontal .el-menu-item a:hover{color:inherit}.el-menu--horizontal .el-submenu{float:left;position:relative}.el-menu--horizontal .el-submenu>.el-menu{position:absolute;top:65px;left:0;border:1px solid rgb(209, 219, 229);padding:5px 0;background-color:#fff;z-index:100;min-width:100%;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-menu--horizontal .el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:5px solid transparent}.el-menu--horizontal .el-submenu .el-menu-item{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px}.el-menu--horizontal .el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:5px;color:rgb(151, 168, 190);margin-top:-3px}.el-menu--horizontal .el-menu-item:hover,.el-menu--horizontal .el-submenu__title:hover{background-color:rgb(238, 241, 246)}.el-menu--horizontal>.el-menu-item:hover,.el-menu--horizontal>.el-submenu.is-active .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{border-bottom:5px solid #1d8ce0}.el-menu--horizontal.el-menu--dark .el-menu-item:hover,.el-menu--horizontal.el-menu--dark .el-submenu__title:hover{background-color:rgb(50, 65, 87)}.el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item:hover,.el-menu--horizontal.el-menu--dark .el-submenu .el-submenu-title:hover,.el-menu-item:hover{background-color:rgb(209, 219, 229)}.el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item,.el-menu--horizontal.el-menu--dark .el-submenu .el-submenu-title{color:rgb(72, 87, 106)}.el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item.is-active,.el-menu-item.is-active{color:#1d8ce0}.el-menu-item [class^=el-icon-]{vertical-align:baseline;margin-right:10px}.el-menu-item:first-child{margin-left:0}.el-menu-item:last-child{margin-right:0}.el-submenu [class^=el-icon-]{vertical-align:baseline;margin-right:10px}.el-submenu .el-menu{background-color:rgb(228, 232, 241)}.el-submenu .el-menu-item:hover,.el-submenu__title:hover{background-color:rgb(209, 219, 229)}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-ms-transform:rotate(180deg);transform:rotateZ(180deg)}.el-submenu.is-active .el-submenu__title{border-bottom-color:#1d8ce0}.el-submenu__title{position:relative}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;transition:transform .3s;font-size:12px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding-top:15px;line-height:normal;font-size:14px;padding-left:20px;color:rgb(151, 168, 190)} -------------------------------------------------------------------------------- /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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-darkblue/radio-button.css -------------------------------------------------------------------------------- /src/assets/theme/theme-darkblue/radio-group.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-darkblue/radio-group.css -------------------------------------------------------------------------------- /src/assets/theme/theme-darkblue/radio.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";.el-radio-button__inner,.el-radio__input{line-height:1;vertical-align:middle;outline:0}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-radio,.el-radio-button__inner{white-space:nowrap;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-radio{color:rgb(31, 45, 61);cursor:pointer}.el-radio+.el-radio{margin-left:15px}.el-radio__input{white-space:nowrap;cursor:pointer}.el-radio__input.is-focus .el-radio__inner{border-color:#1d8ce0}.el-radio__input.is-checked .el-radio__inner{border-color:#1d8ce0;background:#1d8ce0}.el-radio__input.is-checked .el-radio__inner::after{-ms-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-disabled .el-radio__inner{background-color:rgb(238, 241, 246);border-color:rgb(209, 219, 229);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:rgb(238, 241, 246)}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:rgb(209, 219, 229);border-color:rgb(209, 219, 229)}.el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#fff}.el-radio__input.is-disabled+.el-radio__label{color:#bbb;cursor:not-allowed}.el-radio__inner{border:1px solid rgb(191, 203, 217);width:18px;height:18px;border-radius:50%;cursor:pointer;box-sizing:border-box}.el-radio__inner:hover{border-color:#1d8ce0}.el-radio__inner::after{width:6px;height:6px;border-radius:50%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-ms-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);transition:transform .15s cubic-bezier(.71,-.46,.88,.6)}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio-button,.el-radio-button__inner{display:inline-block;position:relative}.el-radio__label{font-size:14px;padding-left:5px}.el-radio-group{display:inline-block;font-size:0;line-height:1}.el-radio-group .el-radio{font-size:14px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid rgb(191, 203, 217);border-radius:4px 0 0 4px;box-shadow:none!important}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button__inner{background:#fff;border:1px solid rgb(191, 203, 217);border-left:0;color:rgb(31, 45, 61);-webkit-appearance:none;text-align:center;box-sizing:border-box;margin:0;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:10px 15px;font-size:14px;border-radius:0}.el-radio-button__inner:hover{color:#1d8ce0}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1;left:-999px}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#1d8ce0;border-color:#1d8ce0;box-shadow:-1px 0 0 0 #1d8ce0}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:rgb(191, 203, 217);cursor:not-allowed;background-image:none;background-color:rgb(238, 241, 246);border-color:rgb(209, 219, 229)}.el-radio-button--large .el-radio-button__inner{padding:11px 19px;font-size:16px;border-radius:0}.el-radio-button--small .el-radio-button__inner{padding:7px 9px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner{padding:4px;font-size:12px;border-radius:0} -------------------------------------------------------------------------------- /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/reset.css: -------------------------------------------------------------------------------- 1 | progress,sub,sup{vertical-align:baseline}button,hr,input{overflow:visible}[type=checkbox],[type=radio],legend{box-sizing:border-box;padding:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects;color:#1d8ce0;text-decoration:none}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}dfn{font-style:italic}mark{background-color:#ff0;color:#000}sub,sup{line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;vertical-align:middle}optgroup{font-weight:700}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{color:inherit;display:table;max-width:100%;white-space:normal}textarea{overflow:auto;resize:none;vertical-align:top}input,select,textarea{outline:0}[disabled]{cursor:default}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}input::-moz-placeholder,textarea::-moz-placeholder{color:inherit;opacity:.54}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:inherit;opacity:.54}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:inherit;opacity:.54}input::-ms-clear,input::-ms-reveal{display:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}blockquote,figure,form,h1,h2,h3,h4,h5,h6,p{margin:0}dd,dl,li,ol,ul{margin:0;padding:0}ol,ul{list-style:none}body{margin:0;font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;font-weight:400;font-size:14px;color:rgb(31, 45, 61)}a:focus,a:hover{color:rgb(74, 163, 230)}a:active{color:rgb(26, 126, 202)}h1,h2,h3,h4,h5,h6{color:rgb(31, 45, 61);font-weight:inherit}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child,p:first-child{margin-top:0}h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child,h6:last-child,p:last-child{margin-bottom:0}h1{font-size:20px}h2{font-size:18px}h3{font-size:16px}h4,h5,h6,p{font-size:inherit}p{line-height:1.8}sub,sup{font-size:13px}small{font-size:12px} -------------------------------------------------------------------------------- /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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-darkblue/tab-pane.css -------------------------------------------------------------------------------- /src/assets/theme/theme-darkblue/tabs.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";.el-tabs__header{border-bottom:1px solid rgb(209, 219, 229);padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:3px;background-color:#1d8ce0;z-index:1;transition:transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;transition:all .15s}.el-tabs__new-tab .el-icon-plus{-ms-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#1d8ce0}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap.is-scrollable{padding:0 15px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:rgb(131, 145, 165)}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:transform .3s;float:left}.el-tabs__item{padding:0 16px;height:42px;box-sizing:border-box;line-height:42px;display:inline-block;list-style:none;font-size:14px;color:rgb(131, 145, 165);position:relative}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-ms-transform:scale(.7,.7);transform:scale(.7,.7);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:rgb(151, 168, 190);color:#fff}.el-tabs__item:hover{color:rgb(31, 45, 61);cursor:pointer}.el-tabs__item.is-disabled{color:#bbb;cursor:default}.el-tabs__item.is-active{color:#1d8ce0}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-ms-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border:1px solid transparent;transition:all .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-right:9px;padding-left:9px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border:1px solid rgb(209, 219, 229);border-bottom-color:#fff;border-radius:4px 4px 0 0}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-right:16px;padding-left:16px}.el-tabs--border-card{background:#fff;border:1px solid rgb(209, 219, 229);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:rgb(238, 241, 246);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;border-top:0;margin-right:-1px;margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:#fff;border-right-color:rgb(209, 219, 229);border-left-color:rgb(209, 219, 229)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active:first-child{border-left-color:rgb(209, 219, 229)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active:last-child{border-right-color:rgb(209, 219, 229)}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave .3s}.slideInLeft-enter{animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave .3s}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(-100%);opacity:0}} -------------------------------------------------------------------------------- /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/base.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";.el-fade-in-enter,.el-fade-in-leave-active,.fade-in-linear-enter,.fade-in-linear-leave,.fade-in-linear-leave-active{opacity:0}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:opacity .2s linear}.el-fade-in-enter-active,.el-fade-in-leave-active,.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all .3s cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter,.el-zoom-in-center-leave-active{opacity:0;-ms-transform:scaleX(0);transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;-ms-transform:scaleY(1);transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;-ms-transform-origin:center top;transform-origin:center top}.el-zoom-in-top-enter,.el-zoom-in-top-leave-active{opacity:0;-ms-transform:scaleY(0);transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;-ms-transform:scaleY(1);transform:scaleY(1);transition:transform .3s cubic-bezier(.23,1,.32,1) .1s,opacity .3s cubic-bezier(.23,1,.32,1) .1s;-ms-transform-origin:center bottom;transform-origin:center bottom}.el-zoom-in-bottom-enter,.el-zoom-in-bottom-leave-active{opacity:0;-ms-transform:scaleY(0);transform:scaleY(0)}.collapse-transition{transition:.3s height ease-in-out,.3s padding-top ease-in-out,.3s padding-bottom ease-in-out}.list-enter-active,.list-leave-active{transition:all 1s}.list-enter,.list-leave-active{opacity:0;-ms-transform:translateY(-30px);transform:translateY(-30px)}@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/breadcrumb-item.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/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/color-picker.css: -------------------------------------------------------------------------------- 1 | .el-color-hue-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-hue-slider__bar{position:relative;background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-ms-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(to bottom,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-alpha-slider__bar{position:relative;background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,1) 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;box-sizing:border-box;left:0;top:0;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6);z-index:1}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:rgb(31, 61, 57)}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#18c79c;border-color:#18c79c}.el-color-dropdown__link-btn{cursor:pointer;color:#18c79c;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:rgb(70, 210, 176)}.el-color-picker{display:inline-block;position:relative}.el-color-picker__trigger{display:inline-block;box-sizing:border-box;height:36px;padding:6px;border:1px solid rgb(191, 217, 214);border-radius:4px;font-size:0}.el-color-picker__color{position:relative;display:inline-block;box-sizing:border-box;vertical-align:middle;border:1px solid #666;width:22px;height:22px;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty{font-size:12px;vertical-align:middle;margin-top:4px;color:#666}.el-color-picker__icon{display:inline-block;position:relative;vertical-align:middle;margin-left:8px;width:12px;color:#888;font-size:12px}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;background-color:#fff;border:1px solid rgb(209, 229, 227);box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.12)} -------------------------------------------------------------------------------- /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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-green/dropdown-item.css -------------------------------------------------------------------------------- /src/assets/theme/theme-green/dropdown-menu.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-green/dropdown-menu.css -------------------------------------------------------------------------------- /src/assets/theme/theme-green/fonts/element-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-green/fonts/element-icons.ttf -------------------------------------------------------------------------------- /src/assets/theme/theme-green/fonts/element-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-green/fonts/element-icons.woff -------------------------------------------------------------------------------- /src/assets/theme/theme-green/form-item.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/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/input.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";.el-input{position:relative;font-size:14px;display:inline-block;width:100%}.el-input.is-disabled .el-input__inner{background-color:rgb(238, 246, 246);border-color:rgb(209, 229, 227);color:#bbb;cursor:not-allowed}.el-input.is-disabled .el-input__inner::-webkit-input-placeholder{color:rgb(191, 217, 214)}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:rgb(191, 217, 214)}.el-input.is-disabled .el-input__inner:-ms-input-placeholder{color:rgb(191, 217, 214)}.el-input.is-disabled .el-input__inner::placeholder{color:rgb(191, 217, 214)}.el-input.is-active .el-input__inner{outline:0;border-color:#18c79c}.el-input__inner{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;background-image:none;border-radius:4px;border:1px solid rgb(191, 217, 214);box-sizing:border-box;color:rgb(31, 61, 57);display:block;font-size:inherit;height:36px;line-height:1;outline:0;padding:3px 10px;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%}.el-input__inner::-webkit-input-placeholder{color:rgb(151, 190, 187)}.el-input__inner::-moz-placeholder{color:rgb(151, 190, 187)}.el-input__inner:-ms-input-placeholder{color:rgb(151, 190, 187)}.el-input__inner::placeholder{color:rgb(151, 190, 187)}.el-input__inner:hover{border-color:rgb(131, 165, 162)}.el-input__inner:focus{outline:0;border-color:#18c79c}.el-input__icon{position:absolute;width:35px;height:100%;right:0;top:0;text-align:center;color:rgb(191, 217, 214);transition:all .3s}.el-input__icon:after{content:'';height:100%;width:0;display:inline-block;vertical-align:middle}.el-input__icon+.el-input__inner{padding-right:35px}.el-input__icon.is-clickable:hover{cursor:pointer;color:rgb(131, 165, 162)}.el-input__icon.is-clickable:hover+.el-input__inner{border-color:rgb(131, 165, 162)}.el-input--large{font-size:16px}.el-input--large .el-input__inner{height:42px}.el-input--small{font-size:13px}.el-input--small .el-input__inner{height:30px}.el-input--mini{font-size:12px}.el-input--mini .el-input__inner{height:22px}.el-input-group{line-height:normal;display:inline-table;width:100%;border-collapse:separate}.el-input-group>.el-input__inner{vertical-align:middle;display:table-cell}.el-input-group__append,.el-input-group__prepend{background-color:rgb(250, 254, 253);color:rgb(151, 190, 187);vertical-align:middle;display:table-cell;position:relative;border:1px solid rgb(191, 217, 214);border-radius:4px;padding:0 10px;width:1%;white-space:nowrap}.el-input-group--prepend .el-input__inner,.el-input-group__append{border-top-left-radius:0;border-bottom-left-radius:0}.el-input-group--append .el-input__inner,.el-input-group__prepend{border-top-right-radius:0;border-bottom-right-radius:0}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:block;margin:-10px}.el-input-group__append .el-button,.el-input-group__append .el-select .el-input__inner,.el-input-group__append .el-select:hover .el-input__inner,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select .el-input__inner,.el-input-group__prepend .el-select:hover .el-input__inner{border-color:transparent;background-color:transparent;color:inherit;border-top:0;border-bottom:0}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-right:0}.el-input-group__append{border-left:0}.el-textarea{display:inline-block;width:100%;vertical-align:bottom}.el-textarea.is-disabled .el-textarea__inner{background-color:rgb(238, 246, 246);border-color:rgb(209, 229, 227);color:#bbb;cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-webkit-input-placeholder{color:rgb(191, 217, 214)}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:rgb(191, 217, 214)}.el-textarea.is-disabled .el-textarea__inner:-ms-input-placeholder{color:rgb(191, 217, 214)}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:rgb(191, 217, 214)}.el-textarea__inner{display:block;resize:vertical;padding:5px 7px;line-height:1.5;box-sizing:border-box;width:100%;font-size:14px;color:rgb(31, 61, 57);background-color:#fff;background-image:none;border:1px solid rgb(191, 217, 214);border-radius:4px;transition:border-color .2s cubic-bezier(.645,.045,.355,1)}.el-textarea__inner::-webkit-input-placeholder{color:rgb(151, 190, 187)}.el-textarea__inner::-moz-placeholder{color:rgb(151, 190, 187)}.el-textarea__inner:-ms-input-placeholder{color:rgb(151, 190, 187)}.el-textarea__inner::placeholder{color:rgb(151, 190, 187)}.el-textarea__inner:hover{border-color:rgb(131, 165, 162)}.el-textarea__inner:focus{outline:0;border-color:#18c79c} -------------------------------------------------------------------------------- /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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-green/menu-item-group.css -------------------------------------------------------------------------------- /src/assets/theme/theme-green/menu-item.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-green/menu-item.css -------------------------------------------------------------------------------- /src/assets/theme/theme-green/menu.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";.el-menu,.el-menu li{list-style:none}.el-menu:after,.el-menu:before{display:table;content:""}.el-menu:after{clear:both}.el-menu-item,.el-submenu__title{height:56px;line-height:56px;font-size:14px;color:rgb(72, 106, 103);padding:0 20px;cursor:pointer;position:relative;transition:border-color .3s,background-color .3s,color .3s;box-sizing:border-box;white-space:nowrap}.el-menu{border-radius:2px;position:relative;margin:0;padding-left:0;background-color:rgb(238, 246, 246)}.el-menu--dark{background-color:rgb(50, 87, 86)}.el-menu--dark .el-menu-item,.el-menu--dark .el-submenu__title{color:rgb(191, 217, 214)}.el-menu--dark .el-menu-item:hover,.el-menu--dark .el-submenu__title:hover{background-color:rgb(72, 106, 103)}.el-menu--dark .el-submenu .el-menu{background-color:rgb(31, 61, 57)}.el-menu--dark .el-submenu .el-menu .el-menu-item:hover{background-color:rgb(72, 106, 103)}.el-menu--horizontal .el-menu-item{float:left;height:60px;line-height:60px;margin:0;cursor:pointer;position:relative;box-sizing:border-box;border-bottom:5px solid transparent}.el-menu--horizontal .el-menu-item a,.el-menu--horizontal .el-menu-item a:hover{color:inherit}.el-menu--horizontal .el-submenu{float:left;position:relative}.el-menu--horizontal .el-submenu>.el-menu{position:absolute;top:65px;left:0;border:1px solid rgb(209, 229, 227);padding:5px 0;background-color:#fff;z-index:100;min-width:100%;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-menu--horizontal .el-submenu .el-submenu__title{height:60px;line-height:60px;border-bottom:5px solid transparent}.el-menu--horizontal .el-submenu .el-menu-item{background-color:#fff;float:none;height:36px;line-height:36px;padding:0 10px}.el-menu--horizontal .el-submenu .el-submenu__icon-arrow{position:static;vertical-align:middle;margin-left:5px;color:rgb(151, 190, 187);margin-top:-3px}.el-menu--horizontal .el-menu-item:hover,.el-menu--horizontal .el-submenu__title:hover{background-color:rgb(238, 246, 246)}.el-menu--horizontal>.el-menu-item:hover,.el-menu--horizontal>.el-submenu.is-active .el-submenu__title,.el-menu--horizontal>.el-submenu:hover .el-submenu__title{border-bottom:5px solid #18c79c}.el-menu--horizontal.el-menu--dark .el-menu-item:hover,.el-menu--horizontal.el-menu--dark .el-submenu__title:hover{background-color:rgb(50, 87, 86)}.el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item:hover,.el-menu--horizontal.el-menu--dark .el-submenu .el-submenu-title:hover,.el-menu-item:hover{background-color:rgb(209, 229, 227)}.el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item,.el-menu--horizontal.el-menu--dark .el-submenu .el-submenu-title{color:rgb(72, 106, 103)}.el-menu--horizontal.el-menu--dark .el-submenu .el-menu-item.is-active,.el-menu-item.is-active{color:#18c79c}.el-menu-item [class^=el-icon-]{vertical-align:baseline;margin-right:10px}.el-menu-item:first-child{margin-left:0}.el-menu-item:last-child{margin-right:0}.el-submenu [class^=el-icon-]{vertical-align:baseline;margin-right:10px}.el-submenu .el-menu{background-color:rgb(228, 241, 241)}.el-submenu .el-menu-item:hover,.el-submenu__title:hover{background-color:rgb(209, 229, 227)}.el-submenu .el-menu-item{height:50px;line-height:50px;padding:0 45px}.el-submenu.is-opened>.el-submenu__title .el-submenu__icon-arrow{-ms-transform:rotate(180deg);transform:rotateZ(180deg)}.el-submenu.is-active .el-submenu__title{border-bottom-color:#18c79c}.el-submenu__title{position:relative}.el-submenu__icon-arrow{position:absolute;top:50%;right:20px;margin-top:-7px;transition:transform .3s;font-size:12px}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{padding-top:15px;line-height:normal;font-size:14px;padding-left:20px;color:rgb(151, 190, 187)} -------------------------------------------------------------------------------- /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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-green/radio-button.css -------------------------------------------------------------------------------- /src/assets/theme/theme-green/radio-group.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-green/radio-group.css -------------------------------------------------------------------------------- /src/assets/theme/theme-green/radio.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";.el-radio-button__inner,.el-radio__input{line-height:1;vertical-align:middle;outline:0}.el-radio,.el-radio__inner,.el-radio__input{position:relative;display:inline-block}.el-radio,.el-radio-button__inner{white-space:nowrap;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.el-radio{color:rgb(31, 61, 57);cursor:pointer}.el-radio+.el-radio{margin-left:15px}.el-radio__input{white-space:nowrap;cursor:pointer}.el-radio__input.is-focus .el-radio__inner{border-color:#18c79c}.el-radio__input.is-checked .el-radio__inner{border-color:#18c79c;background:#18c79c}.el-radio__input.is-checked .el-radio__inner::after{-ms-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-disabled .el-radio__inner{background-color:rgb(238, 246, 246);border-color:rgb(209, 229, 227);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner::after{cursor:not-allowed;background-color:rgb(238, 246, 246)}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:rgb(209, 229, 227);border-color:rgb(209, 229, 227)}.el-radio__inner,.el-radio__input.is-disabled.is-checked .el-radio__inner::after{background-color:#fff}.el-radio__input.is-disabled+.el-radio__label{color:#bbb;cursor:not-allowed}.el-radio__inner{border:1px solid rgb(191, 217, 214);width:18px;height:18px;border-radius:50%;cursor:pointer;box-sizing:border-box}.el-radio__inner:hover{border-color:#18c79c}.el-radio__inner::after{width:6px;height:6px;border-radius:50%;background-color:#fff;content:"";position:absolute;left:50%;top:50%;-ms-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0);transition:transform .15s cubic-bezier(.71,-.46,.88,.6)}.el-radio__original{opacity:0;outline:0;position:absolute;z-index:-1;top:0;left:0;right:0;bottom:0;margin:0}.el-radio-button,.el-radio-button__inner{display:inline-block;position:relative}.el-radio__label{font-size:14px;padding-left:5px}.el-radio-group{display:inline-block;font-size:0;line-height:1}.el-radio-group .el-radio{font-size:14px}.el-radio-button:first-child .el-radio-button__inner{border-left:1px solid rgb(191, 217, 214);border-radius:4px 0 0 4px;box-shadow:none!important}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 4px 4px 0}.el-radio-button__inner{background:#fff;border:1px solid rgb(191, 217, 214);border-left:0;color:rgb(31, 61, 57);-webkit-appearance:none;text-align:center;box-sizing:border-box;margin:0;cursor:pointer;transition:all .3s cubic-bezier(.645,.045,.355,1);padding:10px 15px;font-size:14px;border-radius:0}.el-radio-button__inner:hover{color:#18c79c}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button__orig-radio{opacity:0;outline:0;position:absolute;z-index:-1;left:-999px}.el-radio-button__orig-radio:checked+.el-radio-button__inner{color:#fff;background-color:#18c79c;border-color:#18c79c;box-shadow:-1px 0 0 0 #18c79c}.el-radio-button__orig-radio:disabled+.el-radio-button__inner{color:rgb(191, 217, 214);cursor:not-allowed;background-image:none;background-color:rgb(238, 246, 246);border-color:rgb(209, 229, 227)}.el-radio-button--large .el-radio-button__inner{padding:11px 19px;font-size:16px;border-radius:0}.el-radio-button--small .el-radio-button__inner{padding:7px 9px;font-size:12px;border-radius:0}.el-radio-button--mini .el-radio-button__inner{padding:4px;font-size:12px;border-radius:0} -------------------------------------------------------------------------------- /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/reset.css: -------------------------------------------------------------------------------- 1 | progress,sub,sup{vertical-align:baseline}button,hr,input{overflow:visible}[type=checkbox],[type=radio],legend{box-sizing:border-box;padding:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}article,aside,details,figcaption,figure,footer,header,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent;-webkit-text-decoration-skip:objects;color:#18c79c;text-decoration:none}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}dfn{font-style:italic}mark{background-color:#ff0;color:#000}sub,sup{line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}svg:not(:root){overflow:hidden}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;vertical-align:middle}optgroup{font-weight:700}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:ButtonText dotted 1px}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{color:inherit;display:table;max-width:100%;white-space:normal}textarea{overflow:auto;resize:none;vertical-align:top}input,select,textarea{outline:0}[disabled]{cursor:default}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}input::-moz-placeholder,textarea::-moz-placeholder{color:inherit;opacity:.54}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:inherit;opacity:.54}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:inherit;opacity:.54}input::-ms-clear,input::-ms-reveal{display:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}blockquote,figure,form,h1,h2,h3,h4,h5,h6,p{margin:0}dd,dl,li,ol,ul{margin:0;padding:0}ol,ul{list-style:none}body{margin:0;font-family:"Helvetica Neue",Helvetica,"PingFang SC","Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif;font-weight:400;font-size:14px;color:rgb(31, 61, 57)}a:focus,a:hover{color:rgb(70, 210, 176)}a:active{color:rgb(22, 179, 140)}h1,h2,h3,h4,h5,h6{color:rgb(31, 61, 57);font-weight:inherit}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child,p:first-child{margin-top:0}h1:last-child,h2:last-child,h3:last-child,h4:last-child,h5:last-child,h6:last-child,p:last-child{margin-bottom:0}h1{font-size:20px}h2{font-size:18px}h3{font-size:16px}h4,h5,h6,p{font-size:inherit}p{line-height:1.8}sub,sup{font-size:13px}small{font-size:12px} -------------------------------------------------------------------------------- /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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/theme/theme-green/tab-pane.css -------------------------------------------------------------------------------- /src/assets/theme/theme-green/tabs.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8";.el-tabs__header{border-bottom:1px solid rgb(209, 229, 227);padding:0;position:relative;margin:0 0 15px}.el-tabs__active-bar{position:absolute;bottom:0;left:0;height:3px;background-color:#18c79c;z-index:1;transition:transform .3s cubic-bezier(.645,.045,.355,1);list-style:none}.el-tabs__new-tab{float:right;border:1px solid #d3dce6;height:18px;width:18px;line-height:18px;margin:12px 0 9px 10px;border-radius:3px;text-align:center;font-size:12px;color:#d3dce6;cursor:pointer;transition:all .15s}.el-tabs__new-tab .el-icon-plus{-ms-transform:scale(.8,.8);transform:scale(.8,.8)}.el-tabs__new-tab:hover{color:#18c79c}.el-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.el-tabs__nav-wrap.is-scrollable{padding:0 15px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{position:absolute;cursor:pointer;line-height:44px;font-size:12px;color:rgb(131, 165, 162)}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{white-space:nowrap;position:relative;transition:transform .3s;float:left}.el-tabs__item{padding:0 16px;height:42px;box-sizing:border-box;line-height:42px;display:inline-block;list-style:none;font-size:14px;color:rgb(131, 165, 162);position:relative}.el-tabs__item .el-icon-close{border-radius:50%;text-align:center;transition:all .3s cubic-bezier(.645,.045,.355,1);margin-left:5px}.el-tabs__item .el-icon-close:before{-ms-transform:scale(.7,.7);transform:scale(.7,.7);display:inline-block}.el-tabs__item .el-icon-close:hover{background-color:rgb(151, 190, 187);color:#fff}.el-tabs__item:hover{color:rgb(31, 61, 57);cursor:pointer}.el-tabs__item.is-disabled{color:#bbb;cursor:default}.el-tabs__item.is-active{color:#18c79c}.el-tabs__content{overflow:hidden;position:relative}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .el-icon-close{position:relative;font-size:12px;width:0;height:14px;vertical-align:middle;line-height:15px;overflow:hidden;top:-1px;right:-2px;-ms-transform-origin:100% 50%;transform-origin:100% 50%}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .el-icon-close,.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .el-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item{border:1px solid transparent;transition:all .3s cubic-bezier(.645,.045,.355,1)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-right:9px;padding-left:9px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border:1px solid rgb(209, 229, 227);border-bottom-color:#fff;border-radius:4px 4px 0 0}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-right:16px;padding-left:16px}.el-tabs--border-card{background:#fff;border:1px solid rgb(209, 229, 227);box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:rgb(238, 246, 246);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__item{transition:all .3s cubic-bezier(.645,.045,.355,1);border:1px solid transparent;border-top:0;margin-right:-1px;margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:#fff;border-right-color:rgb(209, 229, 227);border-left-color:rgb(209, 229, 227)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active:first-child{border-left-color:rgb(209, 229, 227)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active:last-child{border-right-color:rgb(209, 229, 227)}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter .3s}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave .3s}.slideInLeft-enter{animation:slideInLeft-enter .3s}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave .3s}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(-100%);opacity:0}} -------------------------------------------------------------------------------- /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/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/src/assets/user.png -------------------------------------------------------------------------------- /src/components/common/Icon-svg/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 23 | -------------------------------------------------------------------------------- /src/components/common/ShowVideo.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 104 | 105 | -------------------------------------------------------------------------------- /src/components/common/error/401.vue: -------------------------------------------------------------------------------- 1 | 29 | 30 | 51 | 52 | 88 | -------------------------------------------------------------------------------- /src/components/page/dashboard/HelloSys.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 25 | 26 | 42 | -------------------------------------------------------------------------------- /src/components/page/dashboard/index.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 33 | -------------------------------------------------------------------------------- /src/components/page/operation/AutoReplyCfg.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 49 | 50 | 60 | -------------------------------------------------------------------------------- /src/config/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kai.fantasy on 2017/4/11 0011. 3 | */ 4 | export default { 5 | serverURI: '', 6 | // serverURI: 'https://api-sit.com', 7 | // serverURI: 'https://api-prod.com', 8 | 9 | msgStatToUserId: 'msgStatToUserId', 10 | 11 | promoteMain: { 12 | main0: 'main0', 13 | main1: 'main1', 14 | main2: 'main2', 15 | } 16 | }; 17 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | // import babelpolyfill from 'babel-polyfill' 2 | import Vue from 'vue' 3 | import App from './App.vue' 4 | import ElementUI from 'element-ui' 5 | import 'element-ui/lib/theme-default/index.css' 6 | import NProgress from 'nprogress'; // Progress 进度条 7 | import 'nprogress/nprogress.css';// Progress 进度条 样式 8 | import './assets/iconfont/iconfont'; 9 | import IconSvg from './components/common/Icon-svg';// svg 组件 10 | import store from './store' 11 | import router from './routes' 12 | import {sync} from 'vuex-router-sync' 13 | import VueVideoPlayer from 'vue-video-player' 14 | import * as filters from './filters'; // 全局vue filter 15 | 16 | // 开启Mock测试 17 | import Mock from './mock'; 18 | Mock.bootstrap(); 19 | 20 | Vue.component('icon-svg', IconSvg); 21 | Vue.use(ElementUI); 22 | Vue.use(VueVideoPlayer); 23 | 24 | // register global utility filters. 25 | Object.keys(filters).forEach(key => { 26 | Vue.filter(key, filters[key]) 27 | }); 28 | 29 | // permissiom judge 30 | function hasPermission(roles, permissionRoles) { 31 | if (roles.indexOf('admin') >= 0) return true; // admin权限 直接通过 32 | if (!permissionRoles) return true; 33 | return roles.some(role => permissionRoles.indexOf(role) >= 0) 34 | } 35 | 36 | // register global progress. 37 | const whiteList = ['/login'];// 不重定向白名单 38 | router.beforeEach((to, from, next) => { 39 | NProgress.start(); // 开启Progress 40 | if (localStorage.getItem("token")) { // 判断是否有token 41 | if (to.path === '/login') { 42 | localStorage.removeItem('account'); 43 | localStorage.removeItem('token'); 44 | localStorage.removeItem('expiration'); 45 | localStorage.removeItem('nickname'); 46 | next({path: '/'}); 47 | } else { 48 | if (store.getters.roles.length === 0) { // 判断当前用户是否已拉取完user_info信息 49 | store.dispatch('GetUserInfo').then(() => { // 拉取user_info 50 | const roles = store.getters.roles; 51 | store.dispatch('GenerateRoutes', {roles}).then(() => { // 生成可访问的路由表 52 | router.addRoutes(store.getters.addRouters); // 动态添加可访问路由表 53 | next({...to}); // hack方法 确保addRoutes已完成 54 | }) 55 | }).catch(() => { 56 | store.dispatch('LogOut').then(() => { 57 | next({path: '/login'}); 58 | }) 59 | }) 60 | } else { 61 | // 没有动态改变权限的需求可直接next() 删除下方权限判断 ↓ 62 | if (hasPermission(store.getters.roles, to.meta.role)) { 63 | next();// 64 | } else { 65 | next({path: '/401', query: {noGoBack: true}}); 66 | } 67 | // 可删 ↑ 68 | } 69 | } 70 | } else { 71 | if (whiteList.indexOf(to.path) !== -1) { // 在免登录白名单,直接进入 72 | next() 73 | } else { 74 | next('/login'); // 否则全部重定向到登录页 75 | NProgress.done(); // 在hash模式下 改变手动改变hash 重定向回来 不会触发afterEach 暂时hack方案 ps:history模式下无问题,可删除该行! 76 | } 77 | } 78 | }); 79 | 80 | router.afterEach(() => { 81 | NProgress.done(); // 结束Progress 82 | }); 83 | 84 | 85 | sync(store, router); 86 | 87 | new Vue({ 88 | router, 89 | store, 90 | render: h => h(App) 91 | }).$mount('#app'); 92 | 93 | -------------------------------------------------------------------------------- /src/mock/data/msgData.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kai.fantasy on 2017/6/22 0022. 3 | */ 4 | import Mock from 'mockjs'; 5 | 6 | const MsgData = []; 7 | 8 | for (let i = 0; i < 82; i++) { 9 | MsgData.push(Mock.mock({ 10 | _created: Mock.Random.datetime(), 11 | _updated: Mock.Random.datetime(), 12 | _id: Mock.Random.guid(), 13 | fromUserId: { 14 | "userId": Mock.Random.integer(10000000, 99999999), 15 | "nickname": Mock.Random.cname(), 16 | }, 17 | 'objectName|1': ['app:image', 'app:video'], 18 | msgTimestamp: Mock.Random.datetime(), 19 | content: { 20 | 'path|1': ['https://ws1.sinaimg.cn/large/7108d6c2ly1fguwgogowkj20gt0gtduk.jpg', 'https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm'], 21 | "thumbnail": '' 22 | }, 23 | })); 24 | } 25 | 26 | export {MsgData}; 27 | -------------------------------------------------------------------------------- /src/mock/data/ststoken.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kai.fantasy on 2017/6/21 0021. 3 | */ 4 | 5 | const StsToken = { 6 | "AccessKeySecret": "Dne12K9TUPjpsSWXSZ49h9C4NA1qm2KehwayxaJTBZbp", 7 | "SecurityToken": "asadfa3234123ASDFAEQERadsfae3asedfasdfasdf", 8 | "Expiration": "2017-07-21T05:12:05Z", 9 | "AccessKeyId": "STS.testabcdef123456" 10 | }; 11 | 12 | export {StsToken}; 13 | -------------------------------------------------------------------------------- /src/mock/data/users.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kai.fantasy on 2017/6/20 0020. 3 | */ 4 | import Mock from 'mockjs'; 5 | 6 | const Token = { 7 | "account": "56abcdef12345678", 8 | "expiration": "2018-09-18 09:24:33", 9 | "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9" 10 | }; 11 | 12 | const LoginMap = { 13 | admin: { 14 | "_id": "56abcdef12345678", 15 | "nickname": "Sys管理员", 16 | "usertype": 9, 17 | "manage": { 18 | "remark": "admin", 19 | "agent": "admin" 20 | }, 21 | }, 22 | // intern 23 | intern: { 24 | "_id": "56abcdef12345678", 25 | "nickname": "见习领航员", 26 | "usertype": 9, 27 | "manage": { 28 | "remark": "intern", 29 | "agent": "水星~" 30 | }, 31 | } 32 | }; 33 | 34 | const Users = []; 35 | 36 | for (let i = 0; i < 99; i++) { 37 | Users.push(Mock.mock({ 38 | _created: Mock.Random.datetime(), 39 | _updated: Mock.Random.datetime(), 40 | id: Mock.Random.guid(), 41 | nickname: Mock.Random.cname(), 42 | avatar: Mock.Random.dataImage('48x48', 'Avatar'), 43 | seqid: Mock.Random.integer(10000000, 99999999), 44 | userId: Mock.Random.first(), 45 | telphone: /^1[0-9]{10}$/, 46 | sex: Mock.Random.integer(0, 2), 47 | sexual: Mock.Random.integer(0, 3), 48 | constellation: Mock.Random.integer(0, 11), 49 | sign: Mock.Random.cparagraph(), 50 | birthday: Mock.Random.date(), 51 | jobs: { 52 | "province": Mock.Random.province(), 53 | "city": Mock.Random.city(), 54 | "c": Mock.Random.csentence(), 55 | "b": Mock.Random.csentence(), 56 | "a": Mock.Random.csentence() 57 | }, 58 | address: { 59 | "item2": { 60 | "province": Mock.Random.province(), 61 | "city": Mock.Random.city(), 62 | "region": Mock.Random.county(), 63 | "detail": Mock.Random.ctitle() 64 | }, 65 | "item0": { 66 | "province": Mock.Random.province(), 67 | "city": Mock.Random.city(), 68 | "region": Mock.Random.county(), 69 | "detail": Mock.Random.ctitle() 70 | }, 71 | "item1": { 72 | "province": Mock.Random.province(), 73 | "city": Mock.Random.city(), 74 | "region": Mock.Random.county(), 75 | "detail": Mock.Random.ctitle() 76 | } 77 | }, 78 | schools: { 79 | "item0": { 80 | "city": Mock.Random.city(), 81 | "school": Mock.Random.cparagraph(), 82 | "region": Mock.Random.county() 83 | }, 84 | "item1": { 85 | "city": Mock.Random.city(), 86 | "school": Mock.Random.cparagraph(), 87 | "region": Mock.Random.county() 88 | } 89 | }, 90 | firsNum: Mock.Random.integer(100, 10000), 91 | newActiveNum: Mock.Random.integer(200, 20000), 92 | sendNum: Mock.Random.integer(1000, 999999), 93 | receNum: Mock.Random.integer(1000, 999999), 94 | })); 95 | } 96 | 97 | export {Token, LoginMap, Users}; 98 | -------------------------------------------------------------------------------- /src/mock/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kai.fantasy on 2017/6/20 0020. 3 | */ 4 | 5 | import mock from './mock'; 6 | 7 | export default mock; 8 | -------------------------------------------------------------------------------- /src/store/actions.js: -------------------------------------------------------------------------------- 1 | export default {} 2 | -------------------------------------------------------------------------------- /src/store/getters.js: -------------------------------------------------------------------------------- 1 | const getters = { 2 | token: state => state.user.token, 3 | roles: state => state.user.roles, 4 | avatar: state => state.user.avatar, 5 | nickname: state => state.user.nickname, 6 | uid: state => state.user.account, 7 | ossSts: state => state.user.ossSts, 8 | ossClient: state => state.user.ossClient, 9 | permission_routers: state => state.permission.routers, 10 | addRouters: state => state.permission.addRouters, 11 | }; 12 | export default getters 13 | -------------------------------------------------------------------------------- /src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | import state from './state' 4 | import actions from './actions' 5 | import mutations from './mutations' 6 | import user from './modules/user'; 7 | import permission from './modules/permission'; 8 | import getters from './getters' 9 | 10 | Vue.use(Vuex); 11 | 12 | const store = new Vuex.Store({ 13 | modules: { 14 | user, 15 | permission 16 | }, 17 | getters, 18 | state, 19 | actions, 20 | mutations 21 | }); 22 | 23 | export default store 24 | -------------------------------------------------------------------------------- /src/store/modules/permission.js: -------------------------------------------------------------------------------- 1 | import {asyncRouterMap, defaultRouterMap} from '../../routes'; 2 | import {deepClone} from '../../utils'; 3 | 4 | /** 5 | * 通过meta.role判断是否与当前用户权限匹配 6 | * @param roles 7 | * @param route 8 | */ 9 | function hasPermission(roles, route) { 10 | if (route.meta && route.meta.role) { 11 | return roles.some(role => route.meta.role.indexOf(role) >= 0) 12 | } else { 13 | return true 14 | } 15 | } 16 | 17 | /** 18 | * 递归过滤异步路由表,返回符合用户角色权限的路由表 19 | * @param asyncRouterMap 20 | * @param roles 21 | */ 22 | function filterAsyncRouter(asyncRouterMap, roles) { 23 | const accessedRouters = asyncRouterMap.filter(route => { 24 | if (hasPermission(roles, route)) { 25 | if (route.children && route.children.length) { 26 | route.children = filterAsyncRouter(route.children, roles) 27 | } 28 | return true 29 | } 30 | return false 31 | }); 32 | return accessedRouters 33 | } 34 | 35 | const permission = { 36 | state: { 37 | routers: defaultRouterMap, 38 | addRouters: [] 39 | }, 40 | mutations: { 41 | SET_ROUTERS: (state, routers) => { 42 | state.addRouters = deepClone(routers); 43 | state.routers = deepClone(defaultRouterMap.concat(routers)) 44 | } 45 | }, 46 | actions: { 47 | GenerateRoutes({commit}, data) { 48 | return new Promise(resolve => { 49 | const {roles} = data; 50 | let accessedRouters; 51 | if (roles.indexOf('admin') >= 0) { 52 | 53 | accessedRouters = asyncRouterMap 54 | } else { 55 | accessedRouters = filterAsyncRouter(asyncRouterMap, roles) 56 | } 57 | commit('SET_ROUTERS', accessedRouters); 58 | resolve(); 59 | }) 60 | } 61 | } 62 | }; 63 | 64 | export default permission; 65 | -------------------------------------------------------------------------------- /src/store/mutations.js: -------------------------------------------------------------------------------- 1 | export default { 2 | TOGGLE_LOADING (state) { 3 | state.callingAPI = !state.callingAPI 4 | }, 5 | TOGGLE_SEARCHING (state) { 6 | state.searching = (state.searching === '') ? 'loading' : '' 7 | }, 8 | // SET_USER (state, user) { 9 | // state.user = user 10 | // }, 11 | // SET_TOKEN (state, token) { 12 | // state.token = token 13 | // } 14 | } 15 | -------------------------------------------------------------------------------- /src/store/state.js: -------------------------------------------------------------------------------- 1 | export default { 2 | callingAPI: false, 3 | searching: '', 4 | serverURI: 'https://api-prod.com', 5 | // user: null, 6 | // token: null, 7 | // userInfo: { 8 | // messages: [{1: 'test', 2: 'test'}], 9 | // notifications: [], 10 | // tasks: [] 11 | // } 12 | } 13 | -------------------------------------------------------------------------------- /src/styles/vars.scss: -------------------------------------------------------------------------------- 1 | $color-primary: #95afdf;//#20a0ff; #18c79c; #2E363F; 2 | -------------------------------------------------------------------------------- /src/utils/fetch.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kai.fantasy on 2017/6/15 0015. 3 | */ 4 | import axios from 'axios'; 5 | import {Message} from 'element-ui'; 6 | import store from '../store'; 7 | import router from '../routes'; 8 | 9 | // 创建axios实例 10 | const service = axios.create({ 11 | baseURL: process.env.BASE_API, 12 | timeout: 5000 13 | }); 14 | 15 | // request 拦截器 16 | service.interceptors.request.use(config => { 17 | //发送请求前,统一加上token 18 | if (store.getters.token) { 19 | config.headers['token'] = 'Bearer ' + store.getters.token; 20 | } 21 | return config; 22 | }, error => { 23 | console.log(error); 24 | Promise.reject(error); 25 | }); 26 | 27 | // response 拦截器 28 | service.interceptors.response.use( 29 | response => { 30 | const code = response.data.code; 31 | if (401 === code) { 32 | Message({ 33 | message: response.message, 34 | type: 'error', 35 | duration: 5 * 1000 36 | }); 37 | // 退出登录 38 | localStorage.removeItem('account'); 39 | localStorage.removeItem('token'); 40 | localStorage.removeItem('expiration'); 41 | localStorage.removeItem('nickname'); 42 | router.push({path: '/login'}); 43 | } else { 44 | return response; 45 | } 46 | }, 47 | error => { 48 | console.log('err' + error);// for debug 49 | Message({ 50 | message: error.message, 51 | type: 'error', 52 | duration: 5 * 1000 53 | }); 54 | return Promise.reject(error); 55 | }); 56 | 57 | export default service; 58 | -------------------------------------------------------------------------------- /src/utils/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by kai.fantasy on 2017/7/19 0019. 3 | */ 4 | export function deepClone(source) { 5 | if (!source && typeof source !== 'object') { 6 | throw new Error('error arguments', 'shallowClone'); 7 | } 8 | const targetObj = source.constructor === Array ? [] : {}; 9 | for (const keys in source) { 10 | if (source.hasOwnProperty(keys)) { 11 | if (source[keys] && typeof source[keys] === 'object') { 12 | targetObj[keys] = source[keys].constructor === Array ? [] : {}; 13 | targetObj[keys] = deepClone(source[keys]); 14 | } else { 15 | targetObj[keys] = source[keys]; 16 | } 17 | } 18 | } 19 | return targetObj; 20 | } 21 | -------------------------------------------------------------------------------- /static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/static/.gitkeep -------------------------------------------------------------------------------- /static/channelCode.json: -------------------------------------------------------------------------------- 1 | { 2 | "AppStore": "AppStore", 3 | "20036811": "应用宝", 4 | "20036812": "豌豆荚" 5 | } 6 | -------------------------------------------------------------------------------- /static/css/color-dark.css: -------------------------------------------------------------------------------- 1 | .header{ 2 | background-color: #242f42; 3 | } 4 | .login-wrap{ 5 | background: #324157; 6 | } 7 | .plugins-tips{ 8 | background: #eef1f6; 9 | } 10 | .plugins-tips a{ 11 | color: #20a0ff; 12 | } 13 | .el-upload--text em { 14 | color: #20a0ff; 15 | } 16 | .pure-button{ 17 | background: #20a0ff; 18 | } -------------------------------------------------------------------------------- /static/css/main.css: -------------------------------------------------------------------------------- 1 | *{margin:0;padding:0;} 2 | html,body,#app,.wrapper{ 3 | width:100%; 4 | height:100%; 5 | overflow: hidden; 6 | } 7 | body{ 8 | font-family:"Helvetica Neue",Helvetica, "microsoft yahei", arial, STHeiTi, sans-serif; 9 | } 10 | a{text-decoration: none} 11 | .content{ 12 | background: none repeat scroll 0 0 #fff; 13 | position: absolute; 14 | left: 250px; 15 | right: 0; 16 | top: 70px; 17 | bottom:0; 18 | width: auto; 19 | padding:40px; 20 | box-sizing: border-box; 21 | overflow-y: scroll; 22 | } 23 | .crumbs{ 24 | margin-bottom: 20px; 25 | } 26 | .pagination{ 27 | margin: 20px 0; 28 | text-align: right; 29 | } 30 | .plugins-tips{ 31 | padding:20px 10px; 32 | margin-bottom: 20px; 33 | } 34 | .el-button+.el-tooltip { 35 | margin-left: 10px; 36 | } 37 | .el-table td,.el-table th{ 38 | padding:5px 18px; 39 | } 40 | .el-table tr:hover{ 41 | background: #f6faff; 42 | } 43 | .mgb20{ 44 | margin-bottom: 20px; 45 | } 46 | 47 | .move-enter-active,.move-leave-active{ 48 | transition: opacity .5s; 49 | } 50 | .move-enter,.move-leave{ 51 | opacity: 0; 52 | } 53 | /*BaseForm*/ 54 | .form-box{ 55 | width:600px; 56 | } 57 | .form-box .line{ 58 | text-align: center; 59 | } 60 | .el-time-panel__content::after, .el-time-panel__content::before { 61 | margin-top: -7px; 62 | } 63 | /*Readme*/ 64 | .ms-doc .el-checkbox__input.is-disabled+.el-checkbox__label{ 65 | color: #333; 66 | cursor: pointer; 67 | } 68 | /*Upload*/ 69 | .pure-button{ 70 | width:150px; 71 | height:40px; 72 | line-height: 40px; 73 | text-align: center; 74 | color: #fff; 75 | border-radius: 3px; 76 | } 77 | .g-core-image-corp-container .info-aside{ 78 | height:45px; 79 | } 80 | .el-upload--text { 81 | background-color: #fff; 82 | border: 1px dashed #d9d9d9; 83 | border-radius: 6px; 84 | box-sizing: border-box; 85 | width: 360px; 86 | height: 180px; 87 | text-align: center; 88 | cursor: pointer; 89 | position: relative; 90 | overflow: hidden; 91 | } 92 | .el-upload--text .el-icon-upload { 93 | font-size: 67px; 94 | color: #97a8be; 95 | margin: 40px 0 16px; 96 | line-height: 50px; 97 | } 98 | .el-upload--text { 99 | color: #97a8be; 100 | font-size: 14px; 101 | text-align: center; 102 | } 103 | .el-upload--text em { 104 | font-style: normal; 105 | } 106 | /*VueEditor*/ 107 | .ql-container{ 108 | min-height: 400px; 109 | } 110 | .ql-snow .ql-tooltip{ 111 | transform: translateX(117.5px) translateY(10px) !important; 112 | } 113 | .editor-btn{ 114 | margin-top: 20px; 115 | } -------------------------------------------------------------------------------- /static/css/theme-green/color-green.css: -------------------------------------------------------------------------------- 1 | .header{ 2 | background-color: #00d1b2; 3 | } 4 | .login-wrap{ 5 | background: rgba(56, 157, 170, 0.82);; 6 | } 7 | .plugins-tips{ 8 | background: #f2f2f2; 9 | } 10 | .plugins-tips a{ 11 | color: #00d1b2; 12 | } 13 | .el-upload--text em { 14 | color: #00d1b2; 15 | } 16 | .pure-button{ 17 | background: #00d1b2; 18 | } 19 | .vue-datasource .btn-primary { 20 | color: #fff; 21 | background-color: #00d1b2 !important; 22 | border-color: #00d1b2 !important; 23 | } 24 | .pagination > .active > a, .pagination > .active > a:hover, .pagination > .active > a:focus, .pagination > .active > span, .pagination > .active > span:hover, .pagination > .active > span:focus { 25 | background-color: #00d1b2 !important; 26 | border-color: #00d1b2 !important; 27 | } -------------------------------------------------------------------------------- /static/css/theme-green/fonts/element-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/static/css/theme-green/fonts/element-icons.ttf -------------------------------------------------------------------------------- /static/css/theme-green/fonts/element-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/static/css/theme-green/fonts/element-icons.woff -------------------------------------------------------------------------------- /static/errCodeCN.json: -------------------------------------------------------------------------------- 1 | { 2 | "601101": "登录密码错误" 3 | } 4 | -------------------------------------------------------------------------------- /static/img/avatar.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/static/img/avatar.gif -------------------------------------------------------------------------------- /static/img/bluchat-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 7 | 8 | 10 | 17 | 19 | 21 | 23 | 25 | 30 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/static/img/favicon.ico -------------------------------------------------------------------------------- /static/img/hero_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/static/img/hero_image.png -------------------------------------------------------------------------------- /static/img/jiagou.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/static/img/jiagou.png -------------------------------------------------------------------------------- /static/img/video-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fantasykai/vue-admin-manager/985096c77cdfef93cf2679440068ea1431fecdf3/static/img/video-bg.png -------------------------------------------------------------------------------- /static/requestList/activeAppVersion.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$match": { 5 | } 6 | }, 7 | { 8 | "$group": { 9 | "_id": { 10 | } 11 | } 12 | }, 13 | { 14 | "$group": { 15 | "_id": { 16 | }, 17 | "num": { 18 | "$sum": 1 19 | } 20 | } 21 | }, 22 | { 23 | "$sort": { 24 | } 25 | }, 26 | { 27 | "$limit": 20 28 | } 29 | ], 30 | "collections": "collections" 31 | } 32 | -------------------------------------------------------------------------------- /static/requestList/activeDevType.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$match": { 5 | } 6 | }, 7 | { 8 | "$group": { 9 | "_id": { 10 | 11 | } 12 | } 13 | }, 14 | { 15 | "$group": { 16 | "_id": { 17 | }, 18 | "num": { 19 | } 20 | } 21 | }, 22 | { 23 | "$sort": { 24 | } 25 | } 26 | ], 27 | "collections": "collections" 28 | } 29 | -------------------------------------------------------------------------------- /static/requestList/activePhoneBrand.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$match": { 5 | 6 | } 7 | }, 8 | { 9 | "$group": { 10 | "_id": { 11 | 12 | } 13 | } 14 | }, 15 | { 16 | "$group": { 17 | "_id": { 18 | 19 | }, 20 | "num": { 21 | "$sum": 1 22 | } 23 | } 24 | }, 25 | { 26 | "$sort": { 27 | 28 | } 29 | }, 30 | { 31 | 32 | } 33 | ], 34 | "collections": "collections" 35 | } 36 | -------------------------------------------------------------------------------- /static/requestList/activePhoneModel.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$match": { 5 | 6 | } 7 | },{ 8 | "$group": { 9 | "_id": { 10 | 11 | }} 12 | }, 13 | { 14 | "$group": { 15 | "_id": { 16 | 17 | }} 18 | } 19 | ], 20 | "collections":"collections" 21 | } 22 | -------------------------------------------------------------------------------- /static/requestList/appVersion.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$group": { 5 | "_id": { 6 | } 7 | } 8 | } 9 | ], 10 | "collections": "collections" 11 | } 12 | -------------------------------------------------------------------------------- /static/requestList/channel.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [{ 3 | "$group": { 4 | "_id": { 5 | }, 6 | "num": {"$sum": 1}} 7 | }, 8 | {"$sort": {"num": 1}} 9 | ], 10 | "collections":"collections" 11 | } 12 | -------------------------------------------------------------------------------- /static/requestList/cycleFrisNum.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$group": { 5 | "_id": { 6 | }, 7 | "num": { 8 | "$sum": 1 9 | } 10 | } 11 | } 12 | ], 13 | "collections": "collections" 14 | } 15 | -------------------------------------------------------------------------------- /static/requestList/cycleLoggedUserNum.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$match": { 5 | } 6 | }, 7 | { 8 | "$group": { 9 | "_id": { 10 | } 11 | } 12 | }, 13 | { 14 | "$group": { 15 | "_id": { 16 | }, 17 | "num": { 18 | "$sum": 1 19 | } 20 | } 21 | } 22 | ], 23 | "collections": "collections" 24 | } 25 | -------------------------------------------------------------------------------- /static/requestList/cycleMsgNum.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$group": { 5 | "_id": { 6 | }, 7 | "num": { 8 | "$sum": 1 9 | } 10 | } 11 | } 12 | ], 13 | "collections": "collections" 14 | } 15 | -------------------------------------------------------------------------------- /static/requestList/cycleUserNum.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$group": { 5 | "_id": { 6 | }, 7 | "num": { 8 | "$sum": 1 9 | } 10 | } 11 | } 12 | ], 13 | "collections": "collections" 14 | } 15 | -------------------------------------------------------------------------------- /static/requestList/devType.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$group": { 5 | "_id": { 6 | 7 | }, 8 | "num": { 9 | "$sum": 1 10 | } 11 | } 12 | }, 13 | { 14 | "$sort": { 15 | "num": -1 16 | } 17 | } 18 | ], 19 | "collections": "collections" 20 | } 21 | -------------------------------------------------------------------------------- /static/requestList/formatTest.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$match": { 5 | } 6 | }, 7 | { 8 | "$group": { 9 | "_id": { 10 | }, 11 | "num": { 12 | "$sum": 1 13 | } 14 | } 15 | } 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /static/requestList/friendNumsRanked.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$match": { 5 | } 6 | }, 7 | { 8 | "$group": { 9 | "_id": { 10 | }, 11 | "num": { 12 | "$sum": 1 13 | } 14 | } 15 | }, 16 | { 17 | "$sort": { 18 | "num": -1 19 | } 20 | }, 21 | { 22 | "$limit": 50 23 | } 24 | ], 25 | "collections": "collections" 26 | } 27 | -------------------------------------------------------------------------------- /static/requestList/phoneBrand.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$group": { 5 | "_id": { 6 | }, 7 | "num": { 8 | "$sum": 1 9 | } 10 | } 11 | }, 12 | { 13 | "$sort": { 14 | "num": -1 15 | } 16 | }, 17 | { 18 | "$limit": 20 19 | } 20 | ], 21 | "collections": "collections" 22 | } 23 | -------------------------------------------------------------------------------- /static/requestList/phoneModel.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$group": { 5 | "_id": { 6 | }, 7 | "num": { 8 | "$sum": 1 9 | } 10 | } 11 | } 12 | ], 13 | "collections": "collections" 14 | } 15 | -------------------------------------------------------------------------------- /static/requestList/sendMsgCount.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$group": { 5 | "_id": { 6 | } 7 | } 8 | } 9 | ], 10 | "collections": "collections" 11 | } 12 | -------------------------------------------------------------------------------- /static/requestList/sendMsgNumsRanked.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$match": { 5 | } 6 | }, 7 | { 8 | "$group": { 9 | "_id": { 10 | }, 11 | "num": { 12 | "$sum": 1 13 | } 14 | } 15 | }, 16 | { 17 | "$sort": { 18 | "num": -1 19 | } 20 | }, 21 | { 22 | "$limit": 50 23 | } 24 | ], 25 | "collections": "collections" 26 | } 27 | -------------------------------------------------------------------------------- /static/requestList/userNumByGeo.json: -------------------------------------------------------------------------------- 1 | { 2 | "pipeline": [ 3 | { 4 | "$match": { 5 | "operate": "operate" 6 | } 7 | }, 8 | { 9 | "$group": { 10 | "_id": { 11 | "city": "$geo.city", 12 | "latitude": "$geo.latitude", 13 | "longitude": "$geo.longitude", 14 | "userId": "$user_id" 15 | } 16 | } 17 | }, 18 | { 19 | "$group": { 20 | "_id": { 21 | "city": "$_id.city", 22 | "latitude": "$_id.latitude", 23 | "longitude": "$_id.longitude" 24 | }, 25 | "num": { 26 | "$sum": 1 27 | } 28 | } 29 | }, 30 | { 31 | "$sort": { 32 | "num": -1 33 | } 34 | } 35 | ], 36 | "starttime":"2017-07-28 02:30:00", 37 | "collections": "collections" 38 | } 39 | --------------------------------------------------------------------------------