├── .gitignore ├── LICENSE ├── README.md ├── elementui ├── .eslintrc.json ├── .gitignore ├── README.md ├── hey.conf.js ├── index.html ├── package-lock.json ├── package.json └── src │ ├── App.vue │ └── main.js ├── heyadmin ├── LICENSE ├── README.md ├── README_en.md ├── hey.conf.js ├── index.html ├── package-lock.json ├── package.json ├── src │ ├── app.js │ ├── components │ │ ├── App.vue │ │ ├── app │ │ │ ├── app-footer.vue │ │ │ ├── app-frame.vue │ │ │ ├── app-header.vue │ │ │ ├── app-logo.vue │ │ │ ├── app-menu.vue │ │ │ └── modules │ │ │ │ ├── app-header-message.vue │ │ │ │ └── app-layout-setting.vue │ │ ├── common-item │ │ │ ├── a-item.vue │ │ │ └── b-item.vue │ │ ├── common │ │ │ ├── address-picker.vue │ │ │ ├── baidu-map │ │ │ │ ├── baidu-map.vue │ │ │ │ ├── index.js │ │ │ │ └── load.js │ │ │ ├── chart │ │ │ │ ├── echarts.vue │ │ │ │ ├── index.js │ │ │ │ └── theme.js │ │ │ ├── code-editor │ │ │ │ ├── code-editor.vue │ │ │ │ ├── index.js │ │ │ │ └── props.js │ │ │ ├── markdown-editor.vue │ │ │ ├── qiniu.vue │ │ │ ├── richtext-editor.vue │ │ │ ├── search-filter.vue │ │ │ ├── sub-menu.vue │ │ │ └── sys-tabs │ │ │ │ ├── index.js │ │ │ │ ├── sys-tabs.vue │ │ │ │ └── utils.js │ │ ├── demo-components │ │ │ ├── account │ │ │ │ ├── account-setting.vue │ │ │ │ ├── account.vue │ │ │ │ └── modules │ │ │ │ │ ├── account-info-edit.vue │ │ │ │ │ ├── account-info-show.vue │ │ │ │ │ ├── notice-setting.vue │ │ │ │ │ └── security-setting.vue │ │ │ ├── autocomplete1.vue │ │ │ ├── autocomplete2.vue │ │ │ ├── autocomplete3.vue │ │ │ ├── components │ │ │ │ ├── address-picker.vue │ │ │ │ ├── baidu-map.vue │ │ │ │ ├── chart.vue │ │ │ │ ├── code-editor.vue │ │ │ │ ├── datas │ │ │ │ │ ├── data1.js │ │ │ │ │ ├── data2.js │ │ │ │ │ ├── data3.js │ │ │ │ │ ├── data4.js │ │ │ │ │ └── data5.js │ │ │ │ ├── markdown-editor.vue │ │ │ │ └── richtext-editor.vue │ │ │ ├── form-detail.vue │ │ │ ├── form.vue │ │ │ ├── form │ │ │ │ ├── basic.vue │ │ │ │ └── create.vue │ │ │ ├── icons.vue │ │ │ ├── info │ │ │ │ ├── basic.vue │ │ │ │ └── detail.vue │ │ │ └── table │ │ │ │ ├── basic.vue │ │ │ │ ├── detail.vue │ │ │ │ └── search.vue │ │ ├── error-pages │ │ │ ├── 403.vue │ │ │ ├── 404.vue │ │ │ └── 500.vue │ │ ├── home │ │ │ └── index.vue │ │ ├── login │ │ │ └── index.vue │ │ └── management │ │ │ ├── authorization.vue │ │ │ └── users.vue │ ├── css │ │ ├── app.less │ │ ├── common.less │ │ ├── fonts │ │ │ ├── Read Me.txt │ │ │ ├── demo-files │ │ │ │ ├── demo.css │ │ │ │ └── demo.js │ │ │ ├── demo.html │ │ │ ├── fonts │ │ │ │ ├── heyuiadmin.eot │ │ │ │ ├── heyuiadmin.svg │ │ │ │ ├── heyuiadmin.ttf │ │ │ │ └── heyuiadmin.woff │ │ │ ├── selection.json │ │ │ ├── style.css │ │ │ ├── style.less │ │ │ └── variables.less │ │ ├── frame.less │ │ ├── markdown.less │ │ ├── overwrite.less │ │ ├── richtext-editor.less │ │ ├── var.js │ │ └── var.less │ ├── images │ │ ├── avatar.png │ │ ├── error-pages │ │ │ ├── 403.png │ │ │ ├── 404.png │ │ │ └── 500.png │ │ ├── folders.png │ │ ├── logo.ico │ │ └── logo.png │ ├── js │ │ ├── common │ │ │ ├── ajax.js │ │ │ ├── request.js │ │ │ └── utils.js │ │ ├── config │ │ │ ├── autocomplete-config.js │ │ │ ├── category-config.js │ │ │ ├── demo-components.js │ │ │ ├── dict-config.js │ │ │ ├── heyui-config.js │ │ │ ├── menu-config.js │ │ │ ├── router-config.js │ │ │ └── tree-config.js │ │ ├── model │ │ │ ├── Form.js │ │ │ └── login │ │ │ │ └── Login.js │ │ ├── vue │ │ │ ├── components.js │ │ │ ├── directives.js │ │ │ └── filters.js │ │ └── vuex │ │ │ └── store.js │ └── mock │ │ ├── index.js │ │ └── users.js └── vue-cli │ ├── babel.config.js │ ├── package-lock.json │ ├── package.json │ └── vue.config.js ├── heyui ├── .eslintrc.json ├── .gitignore ├── README.md ├── hey.conf.js ├── index.html ├── package-lock.json ├── package.json └── src │ ├── App.vue │ ├── css │ ├── index.less │ └── var.less │ └── main.js ├── iviewui ├── .eslintrc.json ├── .gitignore ├── README.md ├── hey.conf.js ├── index.html ├── package.json └── src │ ├── App.vue │ └── main.js ├── react ├── README.md ├── hey.conf.js ├── index.html ├── package-lock.json ├── package.json └── src │ └── main.js ├── simple ├── .eslintrc.json ├── .gitignore ├── README.md ├── hey.conf.js ├── index.html ├── package.json └── src │ ├── app.js │ └── css │ └── index.less ├── viewui ├── .eslintrc.json ├── .gitignore ├── README.md ├── hey.conf.js ├── index.html ├── package.json └── src │ ├── App.vue │ └── main.js └── vue ├── .babelrc ├── .editorconfig ├── .gitignore ├── README.md ├── hey.conf.js ├── index.html ├── package.json └── src ├── App.vue ├── assets └── logo.png └── main.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | dist/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 heyui 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # hey-template 2 | vue template 3 | 4 | ## Compatibility 5 | In order to compatible with win10 system, we changed config file from `hey.js` to `hey.conf.js`; 6 | Please use hey-cli at least version 1.2.2. 7 | 8 | ## simple 9 | simple webpack project. 10 | [https://github.com/heyui/hey-cli-template/tree/master/simple](https://github.com/heyui/hey-cli-template/tree/master/simple) 11 | 12 | ## react 13 | simple react project. 14 | [https://github.com/heyui/hey-cli-template/tree/master/react](https://github.com/heyui/hey-cli-template/tree/master/react) 15 | 16 | ## vue 17 | simple vue project. 18 | [https://github.com/heyui/hey-cli-template/tree/master/vue](https://github.com/heyui/hey-cli-template/tree/master/vue) 19 | 20 | ## heyui 21 | simple heyui project. 22 | [https://github.com/heyui/hey-cli-template/tree/master/heyui](https://github.com/heyui/hey-cli-template/tree/master/heyui) 23 | 24 | ## heyadmin 25 | simple heyadmin project. 26 | [https://github.com/heyui/hey-cli-template/tree/master/heyadmin](https://github.com/heyui/hey-cli-template/tree/master/heyadmin) 27 | 28 | ## iviewui 29 | simple iviewui project. 30 | [https://github.com/heyui/hey-cli-template/tree/master/iviewui](https://github.com/heyui/hey-cli-template/tree/master/iviewui) 31 | 32 | ## viewui 33 | simple viewui project. 34 | [https://github.com/heyui/hey-cli-template/tree/master/viewui](https://github.com/heyui/hey-cli-template/tree/master/viewui) 35 | 36 | ## elementui 37 | simple elementui project. 38 | [https://github.com/heyui/hey-cli-template/tree/master/elementui](https://github.com/heyui/hey-cli-template/tree/master/elementui) 39 | -------------------------------------------------------------------------------- /elementui/.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "env": { 4 | "browser": true, 5 | "commonjs": true, 6 | "es6": true 7 | }, 8 | "globals": { 9 | "WEBPACK_DEBUG": false, 10 | "request": false, 11 | "require": false, 12 | "module": false 13 | }, 14 | "plugins": [ 15 | "html" 16 | ], 17 | "extends": "airbnb-base", 18 | "rules": { 19 | "no-underscore-dangle": [ 20 | "error", { 21 | "allow": [ 22 | "_status", 23 | "_msg", 24 | "_body", 25 | ] 26 | } 27 | ], 28 | "prefer-arrow-callback": [ 29 | "off", { 30 | "allowNamedFunctions": false, 31 | "allowUnboundThis": true 32 | } 33 | ], 34 | "prefer-const": [ 35 | "off" 36 | ], 37 | "eqeqeq": [ 38 | "off" 39 | ], 40 | "no-plusplus": [ 41 | "error", { 42 | "allowForLoopAfterthoughts": true 43 | } 44 | ], 45 | "no-restricted-syntax": [ 46 | "off", 47 | "ForInStatement", 48 | "ForOfStatement" 49 | ], 50 | "semi-spacing": [ 51 | "off" 52 | ], 53 | "semi": [ 54 | "off" 55 | ], 56 | "padding-blocks": [ 57 | "off" 58 | ], 59 | "quotes": [ 60 | "off" 61 | ], 62 | "comma-dangle": [ 63 | "off", { 64 | "arrays": "never", 65 | "objects": "never", 66 | "imports": "never", 67 | "exports": "never", 68 | "functions": "never" 69 | } 70 | ], 71 | "func-names": "off", 72 | "spaced-comment": "off", 73 | "consistent-return": "off", 74 | "radix": "off", 75 | "new-cap": "off" 76 | } 77 | } 78 | -------------------------------------------------------------------------------- /elementui/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /elementui/README.md: -------------------------------------------------------------------------------- 1 | # vue 2 | 3 | > A Vue.js project 4 | 5 | ## Build Setup 6 | 7 | ``` bash 8 | # install dependencies 9 | npm install 10 | 11 | # serve with hot reload at localhost:9008 12 | hey dev 13 | 14 | # build for production with minification 15 | hey build 16 | ``` 17 | 18 | For detailed explanation on how things work, consult the [docs for hey-cli](https://github.com/heyui/hey-cli). 19 | -------------------------------------------------------------------------------- /elementui/hey.conf.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | port: 9008, 3 | root: "dist", 4 | webpack: { 5 | publicPath: "/", 6 | output: { 7 | "./*html": { 8 | entry: "./src/main" 9 | } 10 | }, 11 | global: {}, 12 | devServer: {}, 13 | externals: {} 14 | }, 15 | copy: [] 16 | }; 17 | -------------------------------------------------------------------------------- /elementui/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | vue 6 | 7 | 8 |
9 | 10 | 11 | -------------------------------------------------------------------------------- /elementui/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "async-validator": { 8 | "version": "1.8.2", 9 | "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.2.tgz", 10 | "integrity": "sha1-t3WXIm6WJC+NUxwNRq4pX2JCK6Q=", 11 | "requires": { 12 | "babel-runtime": "6.26.0" 13 | } 14 | }, 15 | "babel-helper-vue-jsx-merge-props": { 16 | "version": "2.0.3", 17 | "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz", 18 | "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg==" 19 | }, 20 | "babel-runtime": { 21 | "version": "6.26.0", 22 | "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", 23 | "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", 24 | "requires": { 25 | "core-js": "2.5.3", 26 | "regenerator-runtime": "0.11.1" 27 | } 28 | }, 29 | "core-js": { 30 | "version": "2.5.3", 31 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.3.tgz", 32 | "integrity": "sha1-isw4NFgk8W2DZbfJtCWRaOjtYD4=" 33 | }, 34 | "deepmerge": { 35 | "version": "1.5.2", 36 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", 37 | "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==" 38 | }, 39 | "element-ui": { 40 | "version": "2.2.0", 41 | "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.2.0.tgz", 42 | "integrity": "sha512-hC2E1Rn+V7E9aHoQ7vyXgTP60HtePdUyNzcFJahMdFzjlXYT05Cj/FmJZTthy1fyXyBmaDmU2FZe/wxCQv4fag==", 43 | "requires": { 44 | "async-validator": "1.8.2", 45 | "babel-helper-vue-jsx-merge-props": "2.0.3", 46 | "deepmerge": "1.5.2", 47 | "normalize-wheel": "1.0.1", 48 | "throttle-debounce": "1.0.1" 49 | } 50 | }, 51 | "normalize-wheel": { 52 | "version": "1.0.1", 53 | "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz", 54 | "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU=" 55 | }, 56 | "regenerator-runtime": { 57 | "version": "0.11.1", 58 | "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", 59 | "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==" 60 | }, 61 | "throttle-debounce": { 62 | "version": "1.0.1", 63 | "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.0.1.tgz", 64 | "integrity": "sha1-2tD+Ew+drzcZ/eoz3Dao5rp/MLU=" 65 | }, 66 | "vue": { 67 | "version": "2.5.13", 68 | "resolved": "https://registry.npmjs.org/vue/-/vue-2.5.13.tgz", 69 | "integrity": "sha512-3D+lY7HTkKbtswDM4BBHgqyq+qo8IAEE8lz8va1dz3LLmttjgo0FxairO4r1iN2OBqk8o1FyL4hvzzTFEdQSEw==" 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /elementui/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "element-ui-sample", 3 | "description": "A element-ui project", 4 | "version": "1.0.0", 5 | "author": "vvpvvp ", 6 | "license": "MIT", 7 | "private": true, 8 | "scripts": {}, 9 | "dependencies": { 10 | "element-ui": "^2.2.0", 11 | "vue": "^2.5.11" 12 | }, 13 | "browserslist": [ 14 | "> 1%", 15 | "last 2 versions", 16 | "not ie <= 8" 17 | ], 18 | "devDependencies": {} 19 | } 20 | -------------------------------------------------------------------------------- /elementui/src/App.vue: -------------------------------------------------------------------------------- 1 | 58 | 59 | 83 | 84 | 118 | -------------------------------------------------------------------------------- /elementui/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import ElementUI from 'element-ui' 3 | import 'element-ui/lib/theme-chalk/index.css' 4 | import App from './App.vue' 5 | 6 | Vue.use(ElementUI) 7 | 8 | new Vue({ 9 | el: '#app', 10 | render: h => h(App) 11 | }) -------------------------------------------------------------------------------- /heyadmin/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018-present, Lan (vvpvvp) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /heyadmin/README.md: -------------------------------------------------------------------------------- 1 |

HeyUI-Admin

2 | 3 |

4 | 5 | vue 6 | 7 | 8 | heyui 9 | 10 | 11 | license 12 | 13 |

14 | 15 |
16 | 17 | ![image](https://user-images.githubusercontent.com/8186664/51449312-6cc17c00-1d66-11e9-9ec2-33e0ed703af9.png) 18 | 19 |
20 | 21 | 简体中文 | [English](./README_en.md) 22 | 23 | ## 介绍 24 | 25 | heyui-admin 是一个成熟的企业应用解决方案,基于 vue2.0 和 heyui 组件库的中后端系统。 26 | 27 | 这是一个成熟的前端开发解决方案,你可以使用这个架构完成几乎 90%的前端开发工作。 28 | 29 | ## 在线示例 30 | 31 | 我们启动了线上的项目,方便用户查看 heyui-admin 的实际使用效果。 32 | 33 | [在线预览](http://admin.heyui.top) 34 | 35 | ## 教学文档 36 | 37 | 我们为 heyui-admin 提供了相关的教程说明,如果你在使用的过程中有疑问,建议先查阅相关文档。 38 | 39 | [教学文档](https://heyui.github.io/heyui-admin-docs) 40 | 41 | ## 准备 42 | 43 | 项目基于以下依赖: 44 | 45 | - [hey-ui](https://www.heyui.top/) 46 | - [vue](https://cn.vuejs.org/index.html) 47 | - [vuex](https://vuex.vuejs.org/zh-cn/) 48 | - [vue-router](https://router.vuejs.org/zh-cn/) 49 | - [axios](https://github.com/axios/axios) 50 | - [js-model](https://www.npmjs.com/package/js-model) 51 | - [manba](https://www.npmjs.com/package/manba) 52 | - [hey-utils](https://www.npmjs.com/package/hey-utils) 53 | - [hey-global](https://www.npmjs.com/package/hey-global) 54 | - [hey-log](https://www.npmjs.com/package/hey-log) 55 | 56 | 提前了解和学习这些知识将大大有助于这个项目的使用。 57 | 58 | ## 功能 59 | 60 | ``` 61 | - Js 62 | - common / 通用 63 | - ajax / 封装axios 64 | - request / 封装所有的请求 65 | - utils / 通用方法 66 | - model / Js模型 67 | - config / 配置 68 | - router-config / 路由配置 69 | - heyui-config / heyui配置 70 | - dict-config / 字典配置 71 | - autocomplete-config / autocomplete配置 72 | - category-config / category配置 73 | - tree-config / 树配置 74 | - menu-config / 系统菜单配置 75 | - vue 76 | - components / 通用组件 77 | - filters / 通用filters 78 | - directives / 通用directives 79 | - vuex 80 | - store 81 | 82 | - 框架组件 83 | - App 84 | - App头部 85 | - 消息 86 | - 全局搜索 87 | - App左侧菜单 88 | - 登录 89 | 90 | - 组件 91 | - 仪表盘 92 | - Icons 93 | - 信息页 94 | - 详情信息 95 | - Form 96 | - 基本的表单 97 | - 创建 98 | - Table 99 | - 基本表格 100 | - 搜索 101 | - 详情弹框 102 | - Components 103 | - 图表 104 | - 富文本编辑器Editor 105 | - 代码编辑器 106 | - Markdown编辑器 107 | - 剪贴板 108 | - 个人中心 109 | - 基本信息 110 | - 安全中心 111 | - 登出 112 | 113 | - 错误页面 114 | - 403 115 | - 404 116 | - 500 117 | ``` 118 | 119 | ## 开始 120 | 121 | ### 使用 hey-cli 122 | 123 | 需要全局安装 hey-cli@1.13.0+ 124 | 125 | **我们建议使用[hey-cli](https://github.com/heyui/hey-cli)脚手架。** 126 | 127 | ```bash 128 | # clone the project 129 | git clone https://github.com/heyui/heyui-admin.git 130 | 131 | cd heyui-admin 132 | 133 | # install dependency 134 | npm install 135 | 136 | # develop, 你需要首先安装 hey-cli 137 | hey dev 138 | ``` 139 | 140 | 系统将自动打开页面 http://localhost:9012, 或者你可以通过 hey.conf.js 文件修改端口号. 141 | 142 | 143 | ### 使用 vue-cli 144 | 145 | 需要全局安装 vue-cli@3.0.0+ 146 | 147 | ```bash 148 | # clone the project 149 | git clone https://github.com/heyui/heyui-admin.git 150 | 151 | cd heyui-admin 152 | 153 | # 将vue-cli文件夹内的文件复制到根目录。 154 | mv -f ./vue-cli/* ./ 155 | 156 | # install dependency 157 | npm install 158 | 159 | # develop 160 | npm run serve 161 | ``` 162 | 163 | ## 开发 164 | 165 | **hey.conf.js**,将反向代理地址修改至真正的项目后端地址. 166 | 167 | ```js 168 | devServer: { 169 | "proxy": { 170 | "/api": { 171 | //proxy address 172 | "target": "http://umock.ch-un.com" 173 | } 174 | }, 175 | historyApiFallback: true 176 | }, 177 | ``` 178 | 179 | ## 构建 180 | 181 | 我们建议所有构建环境使用相同的代码,具体方案请参考开发文档。 182 | 183 | ``` 184 | # build 185 | hey build 186 | ``` 187 | 188 | ## 浏览器支持 189 | 190 | 现代浏览器以及 Internet Explorer 9+. 191 | 192 | **系统已经自动安装配置好 polyfill.** 193 | 194 | ## 打赏 195 | 196 | 如果你觉得这个项目帮助到了你,你可以帮作者买一杯茶🍵表示鼓励。 197 | 198 | ![image](https://heyui.github.io/heyui-admin-docs/images/docs/tea.jpg) 199 | 200 | 201 | ## License 202 | 203 | [MIT](https://github.com/heyui/heyui-admin/blob/master/LICENSE) 204 | 205 | Copyright (c) 2018-present Lan (vvpvvp) 206 | -------------------------------------------------------------------------------- /heyadmin/hey.conf.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | 3 | module.exports = { 4 | port: 9012, 5 | root: 'dist', 6 | stat: false, 7 | webpack: { 8 | console: true, 9 | publicPath: '/', 10 | output: { 11 | './index.html': { 12 | entry: './src/app' 13 | } 14 | }, 15 | alias: { 16 | model: './src/js/model/', 17 | js: './src/js/', 18 | components: './src/components/' 19 | }, 20 | global: { 21 | Utils: [path.resolve(__dirname, 'src/js/common/utils'), 'default'], 22 | Manba: 'manba', 23 | HeyUI: 'heyui', 24 | Model: 'js-model', 25 | G: 'hey-global', 26 | log: 'hey-log', 27 | R: [path.resolve(__dirname, 'src/js/common/request'), 'default'] 28 | }, 29 | devServer: { 30 | proxy: { 31 | // 此处应该配置为开发服务器的后台地址 32 | // '/api': { 33 | // target: 'http://xxx.xx.xx' 34 | // } 35 | }, 36 | historyApiFallback: true 37 | }, 38 | globalVars: './src/css/var.less', 39 | externals: {} 40 | }, 41 | copy: ['static/images/*', 'call/*', './baidu_verify_7O2vpVMzwg.html'] 42 | }; 43 | -------------------------------------------------------------------------------- /heyadmin/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | HeyUI Admin管理平台 14 | 15 | 16 |
17 | 20 |
21 | 22 | 35 | 36 | -------------------------------------------------------------------------------- /heyadmin/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "heyui-admin", 3 | "version": "1.0.0", 4 | "description": "HeyUI components framework.", 5 | "main": "index.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/heyui/heyui-admin.git" 9 | }, 10 | "homepage": "http://admin.heyui.top/", 11 | "keywords": [ 12 | "vue", 13 | "ui", 14 | "framework" 15 | ], 16 | "author": { 17 | "name": "vvpvvp" 18 | }, 19 | "license": "MIT", 20 | "dependencies": { 21 | "@babel/polyfill": "^7.4.4", 22 | "axios": "^0.19.0", 23 | "brace": "^0.11.1", 24 | "core-js": "^2.6.9", 25 | "echarts": "^4.2.0-rc.2", 26 | "fetch-jsonp": "^1.1.3", 27 | "hey-global": "0.0.1", 28 | "hey-log": "0.0.8", 29 | "hey-utils": "^1.0.2", 30 | "heyui": "^1.24.2", 31 | "js-model": "^1.4.2", 32 | "lodash.debounce": "^4.0.8", 33 | "manba": "^1.3.2", 34 | "marked": "^0.7.0", 35 | "plupload-es6": "^2.1.11", 36 | "qiniu-js-es6": "^1.0.31", 37 | "qs": "^6.4.0", 38 | "regenerator-runtime": "^0.13.2", 39 | "vue": "^2.6.10", 40 | "vue-router": "^2.5.3", 41 | "vuex": "^2.3.1", 42 | "wangeditor": "^3.1.1" 43 | }, 44 | "devDependencies": { 45 | "@vue/eslint-config-standard": "^4.0.0", 46 | "babel-eslint": "^10.0.1", 47 | "eslint": "^5.3.0", 48 | "eslint-plugin-html": "^5.0.3", 49 | "eslint-plugin-import": "^2.16.0", 50 | "eslint-plugin-vue": "^5.2.2", 51 | "mockjs": "^1.0.1-beta3" 52 | }, 53 | "readmeFilename": "README.md", 54 | "scripts": { 55 | "serve": "hey dev", 56 | "build": "hey build", 57 | "lint": "eslint --fix --ext .js,.vue src" 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /heyadmin/src/app.js: -------------------------------------------------------------------------------- 1 | // import 'core-js/stable'; 2 | // import 'regenerator-runtime/runtime'; 3 | import '@babel/polyfill'; 4 | import Vue from 'vue'; 5 | import App from 'components/App'; 6 | 7 | import heyuiConfig from 'js/config/heyui-config'; 8 | import routerConfig from 'js/config/router-config'; 9 | import store from 'js/vuex/store'; 10 | import 'js/vue/components'; 11 | import 'js/vue/filters'; 12 | 13 | require('./css/app.less'); 14 | 15 | // 开发环境判断 16 | // process.env.NODE_ENV == 'development' 17 | 18 | // 使用mock文件, 自己开发的时候请删除 19 | require('./mock/index'); 20 | 21 | // HeyUI已经设定为全局变量,无需引用 22 | // 设定全局变量请参考根目录下的hey.conf.js文件 23 | 24 | heyuiConfig(); 25 | Vue.use(HeyUI); 26 | 27 | const router = routerConfig(); 28 | 29 | export default new Vue({ 30 | router, 31 | store, 32 | render: h => h(App) 33 | }).$mount('#app'); 34 | -------------------------------------------------------------------------------- /heyadmin/src/components/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 22 | -------------------------------------------------------------------------------- /heyadmin/src/components/app/app-footer.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 17 | 25 | -------------------------------------------------------------------------------- /heyadmin/src/components/app/app-frame.vue: -------------------------------------------------------------------------------- 1 | 3 | 31 | 124 | -------------------------------------------------------------------------------- /heyadmin/src/components/app/app-logo.vue: -------------------------------------------------------------------------------- 1 | 35 | 38 | 48 | -------------------------------------------------------------------------------- /heyadmin/src/components/app/app-menu.vue: -------------------------------------------------------------------------------- 1 | 34 | 41 | 98 | -------------------------------------------------------------------------------- /heyadmin/src/components/app/modules/app-header-message.vue: -------------------------------------------------------------------------------- 1 | 52 | 77 | 111 | -------------------------------------------------------------------------------- /heyadmin/src/components/app/modules/app-layout-setting.vue: -------------------------------------------------------------------------------- 1 | 32 | 33 | 59 | 78 | -------------------------------------------------------------------------------- /heyadmin/src/components/common-item/a-item.vue: -------------------------------------------------------------------------------- 1 | 19 | 28 | 52 | -------------------------------------------------------------------------------- /heyadmin/src/components/common-item/b-item.vue: -------------------------------------------------------------------------------- 1 | 3 | 8 | 28 | -------------------------------------------------------------------------------- /heyadmin/src/components/common/address-picker.vue: -------------------------------------------------------------------------------- 1 | 3 | 8 | 28 | -------------------------------------------------------------------------------- /heyadmin/src/components/common/baidu-map/baidu-map.vue: -------------------------------------------------------------------------------- 1 | 6 | 9 | 49 | -------------------------------------------------------------------------------- /heyadmin/src/components/common/baidu-map/index.js: -------------------------------------------------------------------------------- 1 | import BaiduMap from './baidu-map'; 2 | 3 | export default BaiduMap; 4 | -------------------------------------------------------------------------------- /heyadmin/src/components/common/baidu-map/load.js: -------------------------------------------------------------------------------- 1 | export default function () { 2 | return new Promise(function (resolve, reject) { 3 | var script = document.createElement('script'); 4 | script.type = 'text/javascript'; 5 | script.src = `//api.map.baidu.com/api?v=2.0&ak=20qOZbvLhZnFinXiG1NfGPLC&s=1&callback=baiduMapInitialize`; 6 | script.onerror = reject; 7 | window.baiduMapInitialize = function () { 8 | resolve(); 9 | }; 10 | document.head.appendChild(script); 11 | }); 12 | } 13 | -------------------------------------------------------------------------------- /heyadmin/src/components/common/chart/echarts.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 11 | 12 | 73 | -------------------------------------------------------------------------------- /heyadmin/src/components/common/chart/index.js: -------------------------------------------------------------------------------- 1 | import ECharts from './echarts'; 2 | 3 | require('echarts/lib/component/tooltip'); 4 | 5 | export default ECharts; 6 | -------------------------------------------------------------------------------- /heyadmin/src/components/common/code-editor/index.js: -------------------------------------------------------------------------------- 1 | import Editor from './code-editor'; 2 | 3 | import 'brace/ext/language_tools'; 4 | import 'brace/theme/chaos'; 5 | import 'brace/theme/gob'; 6 | import 'brace/theme/tomorrow'; 7 | import 'brace/mode/javascript'; 8 | import 'brace/mode/sql'; 9 | import 'brace/mode/json'; 10 | import 'brace/mode/markdown'; 11 | 12 | export default Editor; 13 | -------------------------------------------------------------------------------- /heyadmin/src/components/common/code-editor/props.js: -------------------------------------------------------------------------------- 1 | export default { 2 | mode: { 3 | type: String, 4 | default: '' 5 | }, 6 | focus: { 7 | type: Boolean, 8 | default: false 9 | }, 10 | theme: { 11 | type: String, 12 | default: 'tomorrow' 13 | }, 14 | orientation: { 15 | type: String, 16 | default: 'beside' 17 | }, 18 | splits: { 19 | type: Number, 20 | default: 2 21 | }, 22 | name: { 23 | type: String, 24 | default: 'brace-editor' 25 | }, 26 | className: { 27 | type: String 28 | }, 29 | height: { 30 | type: String, 31 | default: '500px' 32 | }, 33 | width: { 34 | type: String, 35 | default: '100%' 36 | }, 37 | fontSize: { 38 | type: [String, Number], 39 | default: 14 40 | }, 41 | showGutter: { 42 | type: Boolean, 43 | default: true 44 | }, 45 | onChange: { 46 | type: Function, 47 | default: null 48 | }, 49 | onCopy: { 50 | type: Function, 51 | default: null 52 | }, 53 | onPaste: { 54 | type: Function, 55 | default: null 56 | }, 57 | onFocus: { 58 | type: Function 59 | }, 60 | onInput: { 61 | type: Function 62 | }, 63 | onBlur: { 64 | type: Function 65 | }, 66 | onScroll: { 67 | type: Function, 68 | default: null 69 | }, 70 | value: { 71 | type: String 72 | }, 73 | onLoad: { 74 | type: Function, 75 | default: null 76 | }, 77 | onSelectionChange: { 78 | type: Function 79 | }, 80 | onCursorChange: { 81 | type: Function 82 | }, 83 | onBeforeLoad: { 84 | type: Function 85 | }, 86 | onValidate: { 87 | type: Function 88 | }, 89 | minLines: { 90 | type: Number, 91 | default: null 92 | }, 93 | maxLines: { 94 | type: Number, 95 | default: null 96 | }, 97 | readOnly: { 98 | type: Boolean, 99 | default: false 100 | }, 101 | highlightActiveLine: { 102 | type: Boolean, 103 | default: true 104 | }, 105 | tabSize: { 106 | type: Number, 107 | default: 2 108 | }, 109 | showPrintMargin: { 110 | type: Boolean, 111 | default: false 112 | }, 113 | cursorStart: { 114 | type: Number, 115 | default: 1 116 | }, 117 | debounceChangePeriod: { 118 | type: Number 119 | }, 120 | editorProps: { 121 | type: Object, 122 | default: function () { 123 | return { $blockScrolling: true }; 124 | } 125 | }, 126 | setOptions: { 127 | type: Object, 128 | default: function () { 129 | return {}; 130 | } 131 | }, 132 | styles: { 133 | type: Object, 134 | default: function () { 135 | return {}; 136 | } 137 | }, 138 | scrollMargin: { 139 | type: Array, 140 | default: function () { 141 | return [ 0, 0, 0, 0 ]; 142 | } 143 | }, 144 | annotations: { 145 | type: Array 146 | }, 147 | markers: { 148 | type: Array 149 | }, 150 | keyboardHandler: { 151 | type: String 152 | }, 153 | wrapEnabled: { 154 | type: Boolean, 155 | default: true 156 | }, 157 | enableBasicAutocompletion: { 158 | type: [Boolean, Array], 159 | default: false 160 | }, 161 | enableLiveAutocompletion: { 162 | type: [Boolean, Array], 163 | default: false 164 | }, 165 | commands: { 166 | type: Array 167 | } 168 | }; 169 | -------------------------------------------------------------------------------- /heyadmin/src/components/common/markdown-editor.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 31 | 32 | 70 | -------------------------------------------------------------------------------- /heyadmin/src/components/common/qiniu.vue: -------------------------------------------------------------------------------- 1 | 8 | 150 | -------------------------------------------------------------------------------- /heyadmin/src/components/common/richtext-editor.vue: -------------------------------------------------------------------------------- 1 | 3 | 4 | 8 | 9 | 67 | -------------------------------------------------------------------------------- /heyadmin/src/components/common/search-filter.vue: -------------------------------------------------------------------------------- 1 | 29 | 39 | 115 | -------------------------------------------------------------------------------- /heyadmin/src/components/common/sub-menu.vue: -------------------------------------------------------------------------------- 1 | 8 | 13 | 45 | -------------------------------------------------------------------------------- /heyadmin/src/components/common/sys-tabs/index.js: -------------------------------------------------------------------------------- 1 | import SysTabs from './sys-tabs'; 2 | 3 | export default SysTabs; 4 | -------------------------------------------------------------------------------- /heyadmin/src/components/common/sys-tabs/utils.js: -------------------------------------------------------------------------------- 1 | const objEqual = (obj1, obj2) => { 2 | const keysArr1 = Object.keys(obj1); 3 | const keysArr2 = Object.keys(obj2); 4 | if (keysArr1.length !== keysArr2.length) return false; 5 | else if (keysArr1.length === 0 && keysArr2.length === 0) return true; 6 | else return !keysArr1.some(key => obj1[key] != obj2[key]); 7 | }; 8 | 9 | export const isExsit = (obj, list) => { 10 | for (let route of list) { 11 | if (routeEqual(route, obj)) { 12 | return true; 13 | } 14 | } 15 | return false; 16 | }; 17 | 18 | export const showTitle = (item, vm) => { 19 | let { title } = item.meta; 20 | if (!title) return; 21 | return title; 22 | }; 23 | 24 | export const routeEqual = (route1, route2) => { 25 | const params1 = route1.params || {}; 26 | const params2 = route2.params || {}; 27 | const query1 = route1.query || {}; 28 | const query2 = route2.query || {}; 29 | return (route1.name === route2.name) && objEqual(params1, params2) && objEqual(query1, query2); 30 | }; 31 | -------------------------------------------------------------------------------- /heyadmin/src/components/demo-components/account/account-setting.vue: -------------------------------------------------------------------------------- 1 | 6 | 16 | 42 | -------------------------------------------------------------------------------- /heyadmin/src/components/demo-components/account/account.vue: -------------------------------------------------------------------------------- 1 | 5 | 22 | 55 | -------------------------------------------------------------------------------- /heyadmin/src/components/demo-components/account/modules/account-info-edit.vue: -------------------------------------------------------------------------------- 1 | 7 |