├── .babelrc ├── .editorconfig ├── .env.development ├── .env.production ├── .eslintignore ├── .eslintrc.js ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── feature_request.md │ └── question.md ├── commit-convention.md └── workflows │ └── deploy.yml ├── .gitignore ├── .husky ├── .gitignore ├── commit-msg ├── pre-commit └── pre-push ├── .prettierignore ├── .prettierrc ├── .stylelintignore ├── .stylelintrc.js ├── .vscode ├── extensions.json ├── launch.json └── settings.json ├── LICENSE ├── README.md ├── commitlint.config.js ├── deploy.sh ├── index.html ├── jsconfig.json ├── mock ├── index.js └── modules │ └── user.js ├── package-lock.json ├── package.json ├── postcss.config.js ├── public ├── favicon.ico ├── img │ ├── 401.gif │ ├── 404.png │ ├── 404_cloud.png │ ├── login_bg.jpg │ └── logo.png └── json │ └── china.json ├── src ├── App.vue ├── api │ ├── Axios.js │ ├── aliyun.js │ └── user.js ├── assets │ ├── img │ │ └── logo.png │ └── json │ │ └── china.json ├── components │ └── Charts │ │ └── index.vue ├── directive │ ├── copy.js │ ├── debounce.js │ ├── draggable.js │ ├── index.js │ ├── lazyLoad.js │ ├── permission.js │ ├── throttle.js │ └── waterMarker.js ├── hooks │ ├── useChart.js │ └── useTableData.js ├── layout │ ├── components │ │ ├── AppMain.vue │ │ ├── Navbar │ │ │ ├── Breadcrumb.vue │ │ │ ├── Hamburger.vue │ │ │ ├── Screenfull.vue │ │ │ └── index.vue │ │ ├── Sidebar │ │ │ ├── SidebarItem.vue │ │ │ └── index.vue │ │ └── TagsView │ │ │ ├── ScrollPane.vue │ │ │ └── index.vue │ └── index.vue ├── main.js ├── mockProdServer.js ├── permission.js ├── router │ └── index.js ├── settings.js ├── store │ ├── app.js │ ├── tagsView.js │ └── user.js ├── styles │ ├── atomic.scss │ ├── element-ui.scss │ ├── index.scss │ ├── sidebar.scss │ ├── transition.scss │ └── variables.scss ├── utils │ ├── auth.js │ ├── get-page-title.js │ ├── util.js │ └── validate.js └── views │ ├── chart │ └── index.vue │ ├── error-page │ ├── 401.vue │ └── 404.vue │ ├── home │ └── index.vue │ ├── login │ └── index.vue │ ├── menu │ ├── index.vue │ ├── menu10.vue │ ├── menu11.vue │ ├── menu12.vue │ └── menu2.vue │ ├── setting │ ├── ShowDirective │ │ ├── components │ │ │ ├── Copy.vue │ │ │ ├── Debounce.vue │ │ │ ├── Draggable.vue │ │ │ ├── LazyLoad.vue │ │ │ ├── Permission.vue │ │ │ ├── Throttle.vue │ │ │ └── WaterMarker.vue │ │ └── index.vue │ ├── User.vue │ └── index.vue │ └── test-page │ └── index.vue └── vite.config.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": [ 3 | [ 4 | "@babel/preset-env", 5 | { 6 | "targets": { 7 | "node": "current" 8 | } 9 | } 10 | ] 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.yml] 12 | indent_style = space 13 | indent_size = 2 14 | 15 | [*.md] 16 | insert_final_newline = false 17 | trim_trailing_whitespace = false 18 | 19 | [Makefile] 20 | indent_style = tab 21 | -------------------------------------------------------------------------------- /.env.development: -------------------------------------------------------------------------------- 1 | # base api 2 | VITE_BASE_API = '/dev-api' 3 | -------------------------------------------------------------------------------- /.env.production: -------------------------------------------------------------------------------- 1 | # base api 2 | VITE_BASE_API = '/prod-api' 3 | 4 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | 2 | *.sh 3 | node_modules 4 | *.md 5 | *.woff 6 | *.ttf 7 | .vscode 8 | .idea 9 | dist 10 | /public 11 | /docs 12 | /tests 13 | /__tests__ 14 | .husky 15 | .local 16 | /bin 17 | Dockerfile 18 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Eslint 检查规则(A) 3 | * "off" 或者 0 -- 关闭规则 4 | * "warn" 或者 1 -- 将规则打开为警告(不影响退出代码) 5 | * "error" 或者 2 -- 将规则打开为错误(触发时退出代码为 1) 6 | */ 7 | module.exports = { 8 | root: true, // 禁用持续查找(root) 9 | env: { 10 | browser: true, // 启用浏览器全局变量。 11 | node: true, // Node.js全局变量和Node.js范围。 12 | es6: true // 启用ES6的功能。 13 | }, 14 | globals: { 15 | defineProps: 'readonly', 16 | defineEmits: 'readonly', 17 | defineExpose: 'readonly' 18 | }, 19 | parserOptions: { 20 | parser: '@typescript-eslint/parser', // 解析器(parser) 21 | ecmaVersion: 2022, // ECMA版本 22 | sourceType: 'module' // 指定源代码存在的位置,script | module,默认为script 23 | }, 24 | extends: ['eslint:recommended', 'plugin:vue/vue3-recommended', 'plugin:prettier/recommended'], 25 | rules: { 26 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 27 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off', 28 | 'vue/no-v-html': 0, 29 | 'no-unused-vars': 0 30 | }, 31 | overrides: [ 32 | { 33 | files: [ 34 | 'src/views/**/index.vue', 35 | 'src/layout/**/index.vue', 36 | 'src/components/**/index.vue', 37 | 'src/components/Loading.vue' 38 | ], // 配置文件 39 | rules: { 40 | 'vue/multi-word-component-names': 0 41 | } // 关闭组件命名规则 42 | } 43 | ] 44 | } 45 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report(报告问题) 3 | about: Create a report to help us improve 4 | --- 5 | 6 | 11 | 12 | ## Bug report(问题描述) 13 | 14 | #### Steps to reproduce(问题复现步骤) 15 | 16 | 21 | 22 | #### Screenshot or Gif(截图或动态图) 23 | 24 | #### Link to minimal reproduction(最小可在线还原 demo) 25 | 26 | 29 | 30 | #### Other relevant information(格外信息) 31 | 32 | - Your OS: 33 | - Node.js version: 34 | - vue-element-admin version: 35 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request(新功能建议) 3 | about: Suggest an idea for this project 4 | --- 5 | 6 | ## Feature request(新功能建议) 7 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Question(提问) 3 | about: Asking questions about use 4 | --- 5 | 6 | ## Question(提问) 7 | 8 | 15 | 16 | #### Steps to reproduce(问题复现步骤) 17 | 18 | 23 | 24 | #### Screenshot or Gif(截图或动态图) 25 | 26 | #### Link to minimal reproduction(最小可在线还原 demo) 27 | 28 | 31 | 32 | #### Other relevant information(格外信息) 33 | 34 | - Your OS: 35 | - Node.js version: 36 | - vue-element-admin version: 37 | -------------------------------------------------------------------------------- /.github/commit-convention.md: -------------------------------------------------------------------------------- 1 | ## Git Commit Message Convention 2 | 3 | > This is adapted from [Angular's commit convention](https://github.com/conventional-changelog/conventional-changelog/tree/master/packages/conventional-changelog-angular). 4 | 5 | #### TL;DR: 6 | 7 | Messages must be matched by the following regex: 8 | 9 | ```js 10 | /^(revert: )?(feat|fix|docs|style|refactor|perf|test|workflow|build|ci|chore|types|wip): .{1,50}/; 11 | ``` 12 | 13 | #### Examples 14 | 15 | Appears under "Features" header, `dev` subheader: 16 | 17 | ``` 18 | feat(dev): add 'comments' option 19 | ``` 20 | 21 | Appears under "Bug Fixes" header, `dev` subheader, with a link to issue #28: 22 | 23 | ``` 24 | fix(dev): fix dev error 25 | 26 | close #28 27 | ``` 28 | 29 | Appears under "Performance Improvements" header, and under "Breaking Changes" with the breaking change explanation: 30 | 31 | ``` 32 | perf(build): remove 'foo' option 33 | 34 | BREAKING CHANGE: The 'foo' option has been removed. 35 | ``` 36 | 37 | The following commit and commit `667ecc1` do not appear in the changelog if they are under the same release. If not, the revert commit appears under the "Reverts" header. 38 | 39 | ``` 40 | revert: feat(compiler): add 'comments' option 41 | 42 | This reverts commit 667ecc1654a317a13331b17617d973392f415f02. 43 | ``` 44 | 45 | ### Full Message Format 46 | 47 | A commit message consists of a **header**, **body** and **footer**. The header has a **type**, **scope** and **subject**: 48 | 49 | ``` 50 | (): 51 | 52 | 53 | 54 |