From 3c9fab2a55deaaec67083ff0d13d6ffd6f04015a Mon Sep 17 00:00:00 2001 From: renguanyu111 <80379958+renguanyu111@users.noreply.github.com> Date: Mon, 14 Feb 2022 09:12:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=A9=E6=95=88=E8=80=83=E6=A0=B8=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E7=AB=AF2022/2/14?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vue-admin-template-master/.editorconfig | 14 + vue-admin-template-master/.env.development | 5 + vue-admin-template-master/.env.production | 6 + vue-admin-template-master/.env.staging | 8 + vue-admin-template-master/.eslintignore | 4 + vue-admin-template-master/.eslintrc.js | 198 +++++++ vue-admin-template-master/.gitignore | 16 + vue-admin-template-master/.travis.yml | 5 + vue-admin-template-master/LICENSE | 21 + vue-admin-template-master/README-zh.md | 111 ++++ vue-admin-template-master/README.md | 99 ++++ vue-admin-template-master/babel.config.js | 14 + vue-admin-template-master/build/index.js | 35 ++ vue-admin-template-master/jest.config.js | 24 + vue-admin-template-master/jsconfig.json | 9 + vue-admin-template-master/mock/index.js | 57 ++ vue-admin-template-master/mock/mock-server.js | 81 +++ vue-admin-template-master/mock/table.js | 29 + vue-admin-template-master/mock/user.js | 84 +++ vue-admin-template-master/mock/utils.js | 25 + vue-admin-template-master/package.json | 62 +++ vue-admin-template-master/postcss.config.js | 8 + .../public/--favicon.ico | Bin 0 -> 67646 bytes vue-admin-template-master/public/favicon.ico | Bin 0 -> 73507 bytes vue-admin-template-master/public/index.html | 19 + vue-admin-template-master/src/App.vue | 11 + vue-admin-template-master/src/api/dutys.js | 81 +++ vue-admin-template-master/src/api/group.js | 24 + vue-admin-template-master/src/api/table.js | 9 + vue-admin-template-master/src/api/user.js | 51 ++ .../src/assets/404_images/404.png | Bin 0 -> 98071 bytes .../src/assets/404_images/404_cloud.png | Bin 0 -> 4766 bytes .../assets/404_images/login_background.jpg | Bin 0 -> 41154 bytes .../assets/404_images/login_background.svg | 33 ++ .../src/assets/404_images/login_left.svg | 123 +++++ .../src/assets/404_images/logo.jpg | Bin 0 -> 27616 bytes .../src/assets/404_images/logo.png | Bin 0 -> 8060 bytes .../src/assets/404_images/logo_login.png | Bin 0 -> 25312 bytes .../src/components/Breadcrumb/index.vue | 78 +++ .../src/components/Hamburger/index.vue | 44 ++ .../src/components/SvgIcon/index.vue | 62 +++ vue-admin-template-master/src/icons/index.js | 9 + .../src/icons/svg/dashboard.svg | 1 + .../src/icons/svg/example.svg | 1 + .../src/icons/svg/eye-open.svg | 1 + .../src/icons/svg/eye.svg | 1 + .../src/icons/svg/form.svg | 1 + .../src/icons/svg/link.svg | 1 + .../src/icons/svg/nested.svg | 1 + .../src/icons/svg/password.svg | 1 + .../src/icons/svg/table.svg | 1 + .../src/icons/svg/tree.svg | 1 + .../src/icons/svg/user.svg | 1 + vue-admin-template-master/src/icons/svgo.yml | 22 + .../src/layout/components/AppMain.vue | 40 ++ .../src/layout/components/Navbar.vue | 152 +++++ .../layout/components/Sidebar/FixiOSBug.js | 26 + .../src/layout/components/Sidebar/Item.vue | 41 ++ .../src/layout/components/Sidebar/Link.vue | 43 ++ .../src/layout/components/Sidebar/Logo.vue | 82 +++ .../layout/components/Sidebar/SidebarItem.vue | 95 ++++ .../src/layout/components/Sidebar/index.vue | 56 ++ .../src/layout/components/index.js | 3 + .../src/layout/index.vue | 93 ++++ .../src/layout/mixin/ResizeHandler copy.js | 45 ++ .../src/layout/mixin/ResizeHandler.js | 45 ++ vue-admin-template-master/src/main.js | 43 ++ .../src/mixins/infoList.js | 75 +++ vue-admin-template-master/src/permission.js | 79 +++ vue-admin-template-master/src/router/index.js | 217 ++++++++ vue-admin-template-master/src/settings.js | 16 + .../src/store/getters.js | 8 + vue-admin-template-master/src/store/index.js | 19 + .../src/store/modules/app.js | 48 ++ .../src/store/modules/settings.js | 32 ++ .../src/store/modules/user.js | 119 ++++ .../src/styles/element-ui.scss | 49 ++ .../src/styles/index.scss | 65 +++ .../src/styles/mixin.scss | 28 + .../src/styles/sidebar.scss | 226 ++++++++ .../src/styles/transition.scss | 48 ++ .../src/styles/variables.scss | 25 + vue-admin-template-master/src/utils/auth.js | 27 + vue-admin-template-master/src/utils/date.js | 30 + .../src/utils/get-page-title.js | 10 + vue-admin-template-master/src/utils/index.js | 117 ++++ .../src/utils/request.js | 90 +++ .../src/utils/validate.js | 20 + vue-admin-template-master/src/views/404.vue | 228 ++++++++ .../src/views/approval/index.vue | 67 +++ .../src/views/dashboard/index copy 2.vue | 502 +++++++++++++++++ .../src/views/dashboard/index copy.vue | 87 +++ .../src/views/dashboard/index.vue | 517 ++++++++++++++++++ .../src/views/form/index.vue | 85 +++ vue-admin-template-master/src/views/index.vue | 145 +++++ .../src/views/login/index copy.vue | 237 ++++++++ .../src/views/login/index.vue | 318 +++++++++++ .../src/views/nested/menu1/index.vue | 7 + .../src/views/nested/menu1/menu1-1/index.vue | 7 + .../src/views/nested/menu1/menu1-2/index.vue | 7 + .../nested/menu1/menu1-2/menu1-2-1/index.vue | 5 + .../nested/menu1/menu1-2/menu1-2-2/index.vue | 5 + .../src/views/nested/menu1/menu1-3/index.vue | 5 + .../src/views/nested/menu2/index.vue | 5 + .../src/views/record/details.vue | 218 ++++++++ .../src/views/record/index.vue | 172 ++++++ .../src/views/table/index.vue | 79 +++ .../src/views/tree/index.vue | 78 +++ .../tests/unit/.eslintrc.js | 5 + .../tests/unit/components/Breadcrumb.spec.js | 98 ++++ .../tests/unit/components/Hamburger.spec.js | 18 + .../tests/unit/components/SvgIcon.spec.js | 22 + .../tests/unit/utils/formatTime.spec.js | 30 + .../tests/unit/utils/param2Obj.spec.js | 14 + .../tests/unit/utils/parseTime.spec.js | 35 ++ .../tests/unit/utils/validate.spec.js | 17 + vue-admin-template-master/vue.config.js | 125 +++++ 117 files changed, 6742 insertions(+) create mode 100644 vue-admin-template-master/.editorconfig create mode 100644 vue-admin-template-master/.env.development create mode 100644 vue-admin-template-master/.env.production create mode 100644 vue-admin-template-master/.env.staging create mode 100644 vue-admin-template-master/.eslintignore create mode 100644 vue-admin-template-master/.eslintrc.js create mode 100644 vue-admin-template-master/.gitignore create mode 100644 vue-admin-template-master/.travis.yml create mode 100644 vue-admin-template-master/LICENSE create mode 100644 vue-admin-template-master/README-zh.md create mode 100644 vue-admin-template-master/README.md create mode 100644 vue-admin-template-master/babel.config.js create mode 100644 vue-admin-template-master/build/index.js create mode 100644 vue-admin-template-master/jest.config.js create mode 100644 vue-admin-template-master/jsconfig.json create mode 100644 vue-admin-template-master/mock/index.js create mode 100644 vue-admin-template-master/mock/mock-server.js create mode 100644 vue-admin-template-master/mock/table.js create mode 100644 vue-admin-template-master/mock/user.js create mode 100644 vue-admin-template-master/mock/utils.js create mode 100644 vue-admin-template-master/package.json create mode 100644 vue-admin-template-master/postcss.config.js create mode 100644 vue-admin-template-master/public/--favicon.ico create mode 100644 vue-admin-template-master/public/favicon.ico create mode 100644 vue-admin-template-master/public/index.html create mode 100644 vue-admin-template-master/src/App.vue create mode 100644 vue-admin-template-master/src/api/dutys.js create mode 100644 vue-admin-template-master/src/api/group.js create mode 100644 vue-admin-template-master/src/api/table.js create mode 100644 vue-admin-template-master/src/api/user.js create mode 100644 vue-admin-template-master/src/assets/404_images/404.png create mode 100644 vue-admin-template-master/src/assets/404_images/404_cloud.png create mode 100644 vue-admin-template-master/src/assets/404_images/login_background.jpg create mode 100644 vue-admin-template-master/src/assets/404_images/login_background.svg create mode 100644 vue-admin-template-master/src/assets/404_images/login_left.svg create mode 100644 vue-admin-template-master/src/assets/404_images/logo.jpg create mode 100644 vue-admin-template-master/src/assets/404_images/logo.png create mode 100644 vue-admin-template-master/src/assets/404_images/logo_login.png create mode 100644 vue-admin-template-master/src/components/Breadcrumb/index.vue create mode 100644 vue-admin-template-master/src/components/Hamburger/index.vue create mode 100644 vue-admin-template-master/src/components/SvgIcon/index.vue create mode 100644 vue-admin-template-master/src/icons/index.js create mode 100644 vue-admin-template-master/src/icons/svg/dashboard.svg create mode 100644 vue-admin-template-master/src/icons/svg/example.svg create mode 100644 vue-admin-template-master/src/icons/svg/eye-open.svg create mode 100644 vue-admin-template-master/src/icons/svg/eye.svg create mode 100644 vue-admin-template-master/src/icons/svg/form.svg create mode 100644 vue-admin-template-master/src/icons/svg/link.svg create mode 100644 vue-admin-template-master/src/icons/svg/nested.svg create mode 100644 vue-admin-template-master/src/icons/svg/password.svg create mode 100644 vue-admin-template-master/src/icons/svg/table.svg create mode 100644 vue-admin-template-master/src/icons/svg/tree.svg create mode 100644 vue-admin-template-master/src/icons/svg/user.svg create mode 100644 vue-admin-template-master/src/icons/svgo.yml create mode 100644 vue-admin-template-master/src/layout/components/AppMain.vue create mode 100644 vue-admin-template-master/src/layout/components/Navbar.vue create mode 100644 vue-admin-template-master/src/layout/components/Sidebar/FixiOSBug.js create mode 100644 vue-admin-template-master/src/layout/components/Sidebar/Item.vue create mode 100644 vue-admin-template-master/src/layout/components/Sidebar/Link.vue create mode 100644 vue-admin-template-master/src/layout/components/Sidebar/Logo.vue create mode 100644 vue-admin-template-master/src/layout/components/Sidebar/SidebarItem.vue create mode 100644 vue-admin-template-master/src/layout/components/Sidebar/index.vue create mode 100644 vue-admin-template-master/src/layout/components/index.js create mode 100644 vue-admin-template-master/src/layout/index.vue create mode 100644 vue-admin-template-master/src/layout/mixin/ResizeHandler copy.js create mode 100644 vue-admin-template-master/src/layout/mixin/ResizeHandler.js create mode 100644 vue-admin-template-master/src/main.js create mode 100644 vue-admin-template-master/src/mixins/infoList.js create mode 100644 vue-admin-template-master/src/permission.js create mode 100644 vue-admin-template-master/src/router/index.js create mode 100644 vue-admin-template-master/src/settings.js create mode 100644 vue-admin-template-master/src/store/getters.js create mode 100644 vue-admin-template-master/src/store/index.js create mode 100644 vue-admin-template-master/src/store/modules/app.js create mode 100644 vue-admin-template-master/src/store/modules/settings.js create mode 100644 vue-admin-template-master/src/store/modules/user.js create mode 100644 vue-admin-template-master/src/styles/element-ui.scss create mode 100644 vue-admin-template-master/src/styles/index.scss create mode 100644 vue-admin-template-master/src/styles/mixin.scss create mode 100644 vue-admin-template-master/src/styles/sidebar.scss create mode 100644 vue-admin-template-master/src/styles/transition.scss create mode 100644 vue-admin-template-master/src/styles/variables.scss create mode 100644 vue-admin-template-master/src/utils/auth.js create mode 100644 vue-admin-template-master/src/utils/date.js create mode 100644 vue-admin-template-master/src/utils/get-page-title.js create mode 100644 vue-admin-template-master/src/utils/index.js create mode 100644 vue-admin-template-master/src/utils/request.js create mode 100644 vue-admin-template-master/src/utils/validate.js create mode 100644 vue-admin-template-master/src/views/404.vue create mode 100644 vue-admin-template-master/src/views/approval/index.vue create mode 100644 vue-admin-template-master/src/views/dashboard/index copy 2.vue create mode 100644 vue-admin-template-master/src/views/dashboard/index copy.vue create mode 100644 vue-admin-template-master/src/views/dashboard/index.vue create mode 100644 vue-admin-template-master/src/views/form/index.vue create mode 100644 vue-admin-template-master/src/views/index.vue create mode 100644 vue-admin-template-master/src/views/login/index copy.vue create mode 100644 vue-admin-template-master/src/views/login/index.vue create mode 100644 vue-admin-template-master/src/views/nested/menu1/index.vue create mode 100644 vue-admin-template-master/src/views/nested/menu1/menu1-1/index.vue create mode 100644 vue-admin-template-master/src/views/nested/menu1/menu1-2/index.vue create mode 100644 vue-admin-template-master/src/views/nested/menu1/menu1-2/menu1-2-1/index.vue create mode 100644 vue-admin-template-master/src/views/nested/menu1/menu1-2/menu1-2-2/index.vue create mode 100644 vue-admin-template-master/src/views/nested/menu1/menu1-3/index.vue create mode 100644 vue-admin-template-master/src/views/nested/menu2/index.vue create mode 100644 vue-admin-template-master/src/views/record/details.vue create mode 100644 vue-admin-template-master/src/views/record/index.vue create mode 100644 vue-admin-template-master/src/views/table/index.vue create mode 100644 vue-admin-template-master/src/views/tree/index.vue create mode 100644 vue-admin-template-master/tests/unit/.eslintrc.js create mode 100644 vue-admin-template-master/tests/unit/components/Breadcrumb.spec.js create mode 100644 vue-admin-template-master/tests/unit/components/Hamburger.spec.js create mode 100644 vue-admin-template-master/tests/unit/components/SvgIcon.spec.js create mode 100644 vue-admin-template-master/tests/unit/utils/formatTime.spec.js create mode 100644 vue-admin-template-master/tests/unit/utils/param2Obj.spec.js create mode 100644 vue-admin-template-master/tests/unit/utils/parseTime.spec.js create mode 100644 vue-admin-template-master/tests/unit/utils/validate.spec.js create mode 100644 vue-admin-template-master/vue.config.js diff --git a/vue-admin-template-master/.editorconfig b/vue-admin-template-master/.editorconfig new file mode 100644 index 0000000..ea6e20f --- /dev/null +++ b/vue-admin-template-master/.editorconfig @@ -0,0 +1,14 @@ +# http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +insert_final_newline = false +trim_trailing_whitespace = false diff --git a/vue-admin-template-master/.env.development b/vue-admin-template-master/.env.development new file mode 100644 index 0000000..8f15e40 --- /dev/null +++ b/vue-admin-template-master/.env.development @@ -0,0 +1,5 @@ +# just a flag +ENV = 'development' + +# base api +VUE_APP_BASE_API = 'http://gin.vueadmin.net/api' diff --git a/vue-admin-template-master/.env.production b/vue-admin-template-master/.env.production new file mode 100644 index 0000000..07d391e --- /dev/null +++ b/vue-admin-template-master/.env.production @@ -0,0 +1,6 @@ +# just a flag +ENV = 'production' + +# base api +VUE_APP_BASE_API = '/api' + diff --git a/vue-admin-template-master/.env.staging b/vue-admin-template-master/.env.staging new file mode 100644 index 0000000..abd748d --- /dev/null +++ b/vue-admin-template-master/.env.staging @@ -0,0 +1,8 @@ +NODE_ENV = production + +# just a flag +ENV = 'staging' + +# base api +VUE_APP_BASE_API = 'http://new.hxgk.group/api' + diff --git a/vue-admin-template-master/.eslintignore b/vue-admin-template-master/.eslintignore new file mode 100644 index 0000000..e6529fc --- /dev/null +++ b/vue-admin-template-master/.eslintignore @@ -0,0 +1,4 @@ +build/*.js +src/assets +public +dist diff --git a/vue-admin-template-master/.eslintrc.js b/vue-admin-template-master/.eslintrc.js new file mode 100644 index 0000000..c977505 --- /dev/null +++ b/vue-admin-template-master/.eslintrc.js @@ -0,0 +1,198 @@ +module.exports = { + root: true, + parserOptions: { + parser: 'babel-eslint', + sourceType: 'module' + }, + env: { + browser: true, + node: true, + es6: true, + }, + extends: ['plugin:vue/recommended', 'eslint:recommended'], + + // add your custom rules here + //it is base on https://github.com/vuejs/eslint-config-vue + rules: { + "vue/max-attributes-per-line": [2, { + "singleline": 10, + "multiline": { + "max": 1, + "allowFirstLine": false + } + }], + "vue/singleline-html-element-content-newline": "off", + "vue/multiline-html-element-content-newline":"off", + "vue/name-property-casing": ["error", "PascalCase"], + "vue/no-v-html": "off", + 'accessor-pairs': 2, + 'arrow-spacing': [2, { + 'before': true, + 'after': true + }], + 'block-spacing': [2, 'always'], + 'brace-style': [2, '1tbs', { + 'allowSingleLine': true + }], + 'camelcase': [0, { + 'properties': 'always' + }], + 'comma-dangle': [2, 'never'], + 'comma-spacing': [2, { + 'before': false, + 'after': true + }], + 'comma-style': [2, 'last'], + 'constructor-super': 2, + 'curly': [2, 'multi-line'], + 'dot-location': [2, 'property'], + 'eol-last': 2, + 'eqeqeq': ["error", "always", {"null": "ignore"}], + 'generator-star-spacing': [2, { + 'before': true, + 'after': true + }], + 'handle-callback-err': [2, '^(err|error)$'], + 'indent': [2, 2, { + 'SwitchCase': 1 + }], + 'jsx-quotes': [2, 'prefer-single'], + 'key-spacing': [2, { + 'beforeColon': false, + 'afterColon': true + }], + 'keyword-spacing': [2, { + 'before': true, + 'after': true + }], + 'new-cap': [2, { + 'newIsCap': true, + 'capIsNew': false + }], + 'new-parens': 2, + 'no-array-constructor': 2, + 'no-caller': 2, + 'no-console': 'off', + 'no-class-assign': 2, + 'no-cond-assign': 2, + 'no-const-assign': 2, + 'no-control-regex': 0, + 'no-delete-var': 2, + 'no-dupe-args': 2, + 'no-dupe-class-members': 2, + 'no-dupe-keys': 2, + 'no-duplicate-case': 2, + 'no-empty-character-class': 2, + 'no-empty-pattern': 2, + 'no-eval': 2, + 'no-ex-assign': 2, + 'no-extend-native': 2, + 'no-extra-bind': 2, + 'no-extra-boolean-cast': 2, + 'no-extra-parens': [2, 'functions'], + 'no-fallthrough': 2, + 'no-floating-decimal': 2, + 'no-func-assign': 2, + 'no-implied-eval': 2, + 'no-inner-declarations': [2, 'functions'], + 'no-invalid-regexp': 2, + 'no-irregular-whitespace': 2, + 'no-iterator': 2, + 'no-label-var': 2, + 'no-labels': [2, { + 'allowLoop': false, + 'allowSwitch': false + }], + 'no-lone-blocks': 2, + 'no-mixed-spaces-and-tabs': 2, + 'no-multi-spaces': 2, + 'no-multi-str': 2, + 'no-multiple-empty-lines': [2, { + 'max': 1 + }], + 'no-native-reassign': 2, + 'no-negated-in-lhs': 2, + 'no-new-object': 2, + 'no-new-require': 2, + 'no-new-symbol': 2, + 'no-new-wrappers': 2, + 'no-obj-calls': 2, + 'no-octal': 2, + 'no-octal-escape': 2, + 'no-path-concat': 2, + 'no-proto': 2, + 'no-redeclare': 2, + 'no-regex-spaces': 2, + 'no-return-assign': [2, 'except-parens'], + 'no-self-assign': 2, + 'no-self-compare': 2, + 'no-sequences': 2, + 'no-shadow-restricted-names': 2, + 'no-spaced-func': 2, + 'no-sparse-arrays': 2, + 'no-this-before-super': 2, + 'no-throw-literal': 2, + 'no-trailing-spaces': 2, + 'no-undef': 2, + 'no-undef-init': 2, + 'no-unexpected-multiline': 2, + 'no-unmodified-loop-condition': 2, + 'no-unneeded-ternary': [2, { + 'defaultAssignment': false + }], + 'no-unreachable': 2, + 'no-unsafe-finally': 2, + 'no-unused-vars': [2, { + 'vars': 'all', + 'args': 'none' + }], + 'no-useless-call': 2, + 'no-useless-computed-key': 2, + 'no-useless-constructor': 2, + 'no-useless-escape': 0, + 'no-whitespace-before-property': 2, + 'no-with': 2, + 'one-var': [2, { + 'initialized': 'never' + }], + 'operator-linebreak': [2, 'after', { + 'overrides': { + '?': 'before', + ':': 'before' + } + }], + 'padded-blocks': [2, 'never'], + 'quotes': [2, 'single', { + 'avoidEscape': true, + 'allowTemplateLiterals': true + }], + 'semi': [2, 'never'], + 'semi-spacing': [2, { + 'before': false, + 'after': true + }], + 'space-before-blocks': [2, 'always'], + 'space-before-function-paren': [2, 'never'], + 'space-in-parens': [2, 'never'], + 'space-infix-ops': 2, + 'space-unary-ops': [2, { + 'words': true, + 'nonwords': false + }], + 'spaced-comment': [2, 'always', { + 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','] + }], + 'template-curly-spacing': [2, 'never'], + 'use-isnan': 2, + 'valid-typeof': 2, + 'wrap-iife': [2, 'any'], + 'yield-star-spacing': [2, 'both'], + 'yoda': [2, 'never'], + 'prefer-const': 2, + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, + 'object-curly-spacing': [2, 'always', { + objectsInObjects: false + }], + 'array-bracket-spacing': [2, 'never'] + } +} diff --git a/vue-admin-template-master/.gitignore b/vue-admin-template-master/.gitignore new file mode 100644 index 0000000..9ad28d2 --- /dev/null +++ b/vue-admin-template-master/.gitignore @@ -0,0 +1,16 @@ +.DS_Store +node_modules/ +dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +package-lock.json +tests/**/coverage/ + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln diff --git a/vue-admin-template-master/.travis.yml b/vue-admin-template-master/.travis.yml new file mode 100644 index 0000000..f4be7a0 --- /dev/null +++ b/vue-admin-template-master/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: 10 +script: npm run test +notifications: + email: false diff --git a/vue-admin-template-master/LICENSE b/vue-admin-template-master/LICENSE new file mode 100644 index 0000000..6151575 --- /dev/null +++ b/vue-admin-template-master/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017-present PanJiaChen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/vue-admin-template-master/README-zh.md b/vue-admin-template-master/README-zh.md new file mode 100644 index 0000000..1beec9b --- /dev/null +++ b/vue-admin-template-master/README-zh.md @@ -0,0 +1,111 @@ +# vue-admin-template + +> 这是一个极简的 vue admin 管理后台。它只包含了 Element UI & axios & iconfont & permission control & lint,这些搭建后台必要的东西。 + +[线上地址](http://panjiachen.github.io/vue-admin-template) + +[国内访问](https://panjiachen.gitee.io/vue-admin-template) + +目前版本为 `v4.0+` 基于 `vue-cli` 进行构建,若你想使用旧版本,可以切换分支到[tag/3.11.0](https://github.com/PanJiaChen/vue-admin-template/tree/tag/3.11.0),它不依赖 `vue-cli`。 + +

+ SPONSORED BY +

+

+ + + +

+ +## Extra + +如果你想要根据用户角色来动态生成侧边栏和 router,你可以使用该分支[permission-control](https://github.com/PanJiaChen/vue-admin-template/tree/permission-control) + +## 相关项目 + +- [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin) + +- [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin) + +- [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) + +- [awesome-project](https://github.com/PanJiaChen/vue-element-admin/issues/2312) + +写了一个系列的教程配套文章,如何从零构建后一个完整的后台项目: + +- [手摸手,带你用 vue 撸后台 系列一(基础篇)](https://juejin.im/post/59097cd7a22b9d0065fb61d2) +- [手摸手,带你用 vue 撸后台 系列二(登录权限篇)](https://juejin.im/post/591aa14f570c35006961acac) +- [手摸手,带你用 vue 撸后台 系列三 (实战篇)](https://juejin.im/post/593121aa0ce4630057f70d35) +- [手摸手,带你用 vue 撸后台 系列四(vueAdmin 一个极简的后台基础模板,专门针对本项目的文章,算作是一篇文档)](https://juejin.im/post/595b4d776fb9a06bbe7dba56) +- [手摸手,带你封装一个 vue component](https://segmentfault.com/a/1190000009090836) + +## Build Setup + +```bash +# 克隆项目 +git clone https://github.com/PanJiaChen/vue-admin-template.git + +# 进入项目目录 +cd vue-admin-template + +# 安装依赖 +npm install + +# 建议不要直接使用 cnpm 安装以来,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题 +npm install --registry=https://registry.npm.taobao.org + +# 启动服务 +npm run dev +``` + +浏览器访问 [http://localhost:9528](http://localhost:9528) + +## 发布 + +```bash +# 构建测试环境 +npm run build:stage + +# 构建生产环境 +npm run build:prod +``` + +## 其它 + +```bash +# 预览发布环境效果 +npm run preview + +# 预览发布环境效果 + 静态资源分析 +npm run preview -- --report + +# 代码格式检查 +npm run lint + +# 代码格式检查并自动修复 +npm run lint -- --fix +``` + +更多信息请参考 [使用文档](https://panjiachen.github.io/vue-element-admin-site/zh/) + +## 购买贴纸 + +你也可以通过 购买[官方授权的贴纸](https://smallsticker.com/product/vue-element-admin) 的方式来支持 vue-element-admin - 每售出一张贴纸,我们将获得 2 元的捐赠。 + +## Demo + +![demo](https://github.com/PanJiaChen/PanJiaChen.github.io/blob/master/images/demo.gif) + +## Browsers support + +Modern browsers and Internet Explorer 10+. + +| [IE / Edge](http://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | +| --------- | --------- | --------- | --------- | +| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions + +## License + +[MIT](https://github.com/PanJiaChen/vue-admin-template/blob/master/LICENSE) license. + +Copyright (c) 2017-present PanJiaChen diff --git a/vue-admin-template-master/README.md b/vue-admin-template-master/README.md new file mode 100644 index 0000000..fa54b78 --- /dev/null +++ b/vue-admin-template-master/README.md @@ -0,0 +1,99 @@ +# vue-admin-template + +English | [简体中文](./README-zh.md) + +> A minimal vue admin template with Element UI & axios & iconfont & permission control & lint + +**Live demo:** http://panjiachen.github.io/vue-admin-template + + +**The current version is `v4.0+` build on `vue-cli`. If you want to use the old version , you can switch branch to [tag/3.11.0](https://github.com/PanJiaChen/vue-admin-template/tree/tag/3.11.0), it does not rely on `vue-cli`** + +

+ SPONSORED BY +

+

+ + + +

+ +## Build Setup + +```bash +# clone the project +git clone https://github.com/PanJiaChen/vue-admin-template.git + +# enter the project directory +cd vue-admin-template + +# install dependency +npm install + +# develop +npm run dev +``` + +This will automatically open http://localhost:9528 + +## Build + +```bash +# build for test environment +npm run build:stage + +# build for production environment +npm run build:prod +``` + +## Advanced + +```bash +# preview the release environment effect +npm run preview + +# preview the release environment effect + static resource analysis +npm run preview -- --report + +# code format check +npm run lint + +# code format check and auto fix +npm run lint -- --fix +``` + +Refer to [Documentation](https://panjiachen.github.io/vue-element-admin-site/guide/essentials/deploy.html) for more information + +## Demo + +![demo](https://github.com/PanJiaChen/PanJiaChen.github.io/blob/master/images/demo.gif) + +## Extra + +If you want router permission && generate menu by user roles , you can use this branch [permission-control](https://github.com/PanJiaChen/vue-admin-template/tree/permission-control) + +For `typescript` version, you can use [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) (Credits: [@Armour](https://github.com/Armour)) + +## Related Project + +- [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin) + +- [electron-vue-admin](https://github.com/PanJiaChen/electron-vue-admin) + +- [vue-typescript-admin-template](https://github.com/Armour/vue-typescript-admin-template) + +- [awesome-project](https://github.com/PanJiaChen/vue-element-admin/issues/2312) + +## Browsers support + +Modern browsers and Internet Explorer 10+. + +| [IE / Edge](http://godban.github.io/browsers-support-badges/)
IE / Edge | [Firefox](http://godban.github.io/browsers-support-badges/)
Firefox | [Chrome](http://godban.github.io/browsers-support-badges/)
Chrome | [Safari](http://godban.github.io/browsers-support-badges/)
Safari | +| --------- | --------- | --------- | --------- | +| IE10, IE11, Edge| last 2 versions| last 2 versions| last 2 versions + +## License + +[MIT](https://github.com/PanJiaChen/vue-admin-template/blob/master/LICENSE) license. + +Copyright (c) 2017-present PanJiaChen diff --git a/vue-admin-template-master/babel.config.js b/vue-admin-template-master/babel.config.js new file mode 100644 index 0000000..fb82b27 --- /dev/null +++ b/vue-admin-template-master/babel.config.js @@ -0,0 +1,14 @@ +module.exports = { + presets: [ + // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app + '@vue/cli-plugin-babel/preset' + ], + 'env': { + 'development': { + // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require(). + // This plugin can significantly increase the speed of hot updates, when you have a large number of pages. + // https://panjiachen.github.io/vue-element-admin-site/guide/advanced/lazy-loading.html + 'plugins': ['dynamic-import-node'] + } + } +} diff --git a/vue-admin-template-master/build/index.js b/vue-admin-template-master/build/index.js new file mode 100644 index 0000000..0c57de2 --- /dev/null +++ b/vue-admin-template-master/build/index.js @@ -0,0 +1,35 @@ +const { run } = require('runjs') +const chalk = require('chalk') +const config = require('../vue.config.js') +const rawArgv = process.argv.slice(2) +const args = rawArgv.join(' ') + +if (process.env.npm_config_preview || rawArgv.includes('--preview')) { + const report = rawArgv.includes('--report') + + run(`vue-cli-service build ${args}`) + + const port = 9526 + const publicPath = config.publicPath + + var connect = require('connect') + var serveStatic = require('serve-static') + const app = connect() + + app.use( + publicPath, + serveStatic('./dist', { + index: ['index.html', '/'] + }) + ) + + app.listen(port, function () { + console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`)) + if (report) { + console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`)) + } + + }) +} else { + run(`vue-cli-service build ${args}`) +} diff --git a/vue-admin-template-master/jest.config.js b/vue-admin-template-master/jest.config.js new file mode 100644 index 0000000..b98bfb0 --- /dev/null +++ b/vue-admin-template-master/jest.config.js @@ -0,0 +1,24 @@ +module.exports = { + moduleFileExtensions: ['js', 'jsx', 'json', 'vue'], + transform: { + '^.+\\.vue$': 'vue-jest', + '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': + 'jest-transform-stub', + '^.+\\.jsx?$': 'babel-jest' + }, + moduleNameMapper: { + '^@/(.*)$': '/src/$1' + }, + snapshotSerializers: ['jest-serializer-vue'], + testMatch: [ + '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)' + ], + collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'], + coverageDirectory: '/tests/unit/coverage', + // 'collectCoverage': true, + 'coverageReporters': [ + 'lcov', + 'text-summary' + ], + testURL: 'http://gin.vueadmin.net/' +} diff --git a/vue-admin-template-master/jsconfig.json b/vue-admin-template-master/jsconfig.json new file mode 100644 index 0000000..ed079e2 --- /dev/null +++ b/vue-admin-template-master/jsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "baseUrl": "./", + "paths": { + "@/*": ["src/*"] + } + }, + "exclude": ["node_modules", "dist"] +} diff --git a/vue-admin-template-master/mock/index.js b/vue-admin-template-master/mock/index.js new file mode 100644 index 0000000..c514c13 --- /dev/null +++ b/vue-admin-template-master/mock/index.js @@ -0,0 +1,57 @@ +const Mock = require('mockjs') +const { param2Obj } = require('./utils') + +const user = require('./user') +const table = require('./table') + +const mocks = [ + ...user, + ...table +] + +// for front mock +// please use it cautiously, it will redefine XMLHttpRequest, +// which will cause many of your third-party libraries to be invalidated(like progress event). +function mockXHR() { + // mock patch + // https://github.com/nuysoft/Mock/issues/300 + Mock.XHR.prototype.proxy_send = Mock.XHR.prototype.send + Mock.XHR.prototype.send = function() { + if (this.custom.xhr) { + this.custom.xhr.withCredentials = this.withCredentials || false + + if (this.responseType) { + this.custom.xhr.responseType = this.responseType + } + } + this.proxy_send(...arguments) + } + + function XHR2ExpressReqWrap(respond) { + return function(options) { + let result = null + if (respond instanceof Function) { + const { body, type, url } = options + // https://expressjs.com/en/4x/api.html#req + result = respond({ + method: type, + body: JSON.parse(body), + query: param2Obj(url) + }) + } else { + result = respond + } + return Mock.mock(result) + } + } + + for (const i of mocks) { + Mock.mock(new RegExp(i.url), i.type || 'get', XHR2ExpressReqWrap(i.response)) + } +} + +module.exports = { + mocks, + mockXHR +} + diff --git a/vue-admin-template-master/mock/mock-server.js b/vue-admin-template-master/mock/mock-server.js new file mode 100644 index 0000000..8941ec0 --- /dev/null +++ b/vue-admin-template-master/mock/mock-server.js @@ -0,0 +1,81 @@ +const chokidar = require('chokidar') +const bodyParser = require('body-parser') +const chalk = require('chalk') +const path = require('path') +const Mock = require('mockjs') + +const mockDir = path.join(process.cwd(), 'mock') + +function registerRoutes(app) { + let mockLastIndex + const { mocks } = require('./index.js') + const mocksForServer = mocks.map(route => { + return responseFake(route.url, route.type, route.response) + }) + for (const mock of mocksForServer) { + app[mock.type](mock.url, mock.response) + mockLastIndex = app._router.stack.length + } + const mockRoutesLength = Object.keys(mocksForServer).length + return { + mockRoutesLength: mockRoutesLength, + mockStartIndex: mockLastIndex - mockRoutesLength + } +} + +function unregisterRoutes() { + Object.keys(require.cache).forEach(i => { + if (i.includes(mockDir)) { + delete require.cache[require.resolve(i)] + } + }) +} + +// for mock server +const responseFake = (url, type, respond) => { + return { + url: new RegExp(`${process.env.VUE_APP_BASE_API}${url}`), + type: type || 'get', + response(req, res) { + console.log('request invoke:' + req.path) + res.json(Mock.mock(respond instanceof Function ? respond(req, res) : respond)) + } + } +} + +module.exports = app => { + // parse app.body + // https://expressjs.com/en/4x/api.html#req.body + app.use(bodyParser.json()) + app.use(bodyParser.urlencoded({ + extended: true + })) + + const mockRoutes = registerRoutes(app) + var mockRoutesLength = mockRoutes.mockRoutesLength + var mockStartIndex = mockRoutes.mockStartIndex + + // watch files, hot reload mock server + chokidar.watch(mockDir, { + ignored: /mock-server/, + ignoreInitial: true + }).on('all', (event, path) => { + if (event === 'change' || event === 'add') { + try { + // remove mock routes stack + app._router.stack.splice(mockStartIndex, mockRoutesLength) + + // clear routes cache + unregisterRoutes() + + const mockRoutes = registerRoutes(app) + mockRoutesLength = mockRoutes.mockRoutesLength + mockStartIndex = mockRoutes.mockStartIndex + + console.log(chalk.magentaBright(`\n > Mock Server hot reload success! changed ${path}`)) + } catch (error) { + console.log(chalk.redBright(error)) + } + } + }) +} diff --git a/vue-admin-template-master/mock/table.js b/vue-admin-template-master/mock/table.js new file mode 100644 index 0000000..bd0e013 --- /dev/null +++ b/vue-admin-template-master/mock/table.js @@ -0,0 +1,29 @@ +const Mock = require('mockjs') + +const data = Mock.mock({ + 'items|30': [{ + id: '@id', + title: '@sentence(10, 20)', + 'status|1': ['published', 'draft', 'deleted'], + author: 'name', + display_time: '@datetime', + pageviews: '@integer(300, 5000)' + }] +}) + +module.exports = [ + { + url: '/vue-admin-template/table/list', + type: 'get', + response: config => { + const items = data.items + return { + code: 20000, + data: { + total: items.length, + items: items + } + } + } + } +] diff --git a/vue-admin-template-master/mock/user.js b/vue-admin-template-master/mock/user.js new file mode 100644 index 0000000..7555338 --- /dev/null +++ b/vue-admin-template-master/mock/user.js @@ -0,0 +1,84 @@ + +const tokens = { + admin: { + token: 'admin-token' + }, + editor: { + token: 'editor-token' + } +} + +const users = { + 'admin-token': { + roles: ['admin'], + introduction: 'I am a super administrator', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'Super Admin' + }, + 'editor-token': { + roles: ['editor'], + introduction: 'I am an editor', + avatar: 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif', + name: 'Normal Editor' + } +} + +module.exports = [ + // user login + { + url: '/vue-admin-template/user/login', + type: 'post', + response: config => { + const { username } = config.body + const token = tokens[username] + + // mock error + if (!token) { + return { + code: 60204, + message: 'Account and password are incorrect.' + } + } + + return { + code: 20000, + data: token + } + } + }, + + // get user info + { + url: '/vue-admin-template/user/info\.*', + type: 'get', + response: config => { + const { token } = config.query + const info = users[token] + + // mock error + if (!info) { + return { + code: 50008, + message: 'Login failed, unable to get user details.' + } + } + + return { + code: 20000, + data: info + } + } + }, + + // user logout + { + url: '/vue-admin-template/user/logout', + type: 'post', + response: _ => { + return { + code: 20000, + data: 'success' + } + } + } +] diff --git a/vue-admin-template-master/mock/utils.js b/vue-admin-template-master/mock/utils.js new file mode 100644 index 0000000..95cc27d --- /dev/null +++ b/vue-admin-template-master/mock/utils.js @@ -0,0 +1,25 @@ +/** + * @param {string} url + * @returns {Object} + */ +function param2Obj(url) { + const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ') + if (!search) { + return {} + } + const obj = {} + const searchArr = search.split('&') + searchArr.forEach(v => { + const index = v.indexOf('=') + if (index !== -1) { + const name = v.substring(0, index) + const val = v.substring(index + 1, v.length) + obj[name] = val + } + }) + return obj +} + +module.exports = { + param2Obj +} diff --git a/vue-admin-template-master/package.json b/vue-admin-template-master/package.json new file mode 100644 index 0000000..1389ad4 --- /dev/null +++ b/vue-admin-template-master/package.json @@ -0,0 +1,62 @@ +{ + "name": "vue-admin-template", + "version": "4.4.0", + "description": "A vue admin template with Element UI & axios & iconfont & permission control & lint", + "author": "Pan ", + "scripts": { + "dev": "vue-cli-service serve", + "build:prod": "vue-cli-service build", + "build:stage": "vue-cli-service build --mode staging", + "preview": "node build/index.js --preview", + "svgo": "svgo -f src/icons/svg --config=src/icons/svgo.yml", + "lint": "eslint --ext .js,.vue src", + "test:unit": "jest --clearCache && vue-cli-service test:unit", + "test:ci": "npm run lint && npm run test:unit" + }, + "dependencies": { + "axios": "0.18.1", + "core-js": "^3.20.2", + "element-ui": "2.13.2", + "js-cookie": "2.2.0", + "normalize.css": "7.0.0", + "nprogress": "0.2.0", + "path-to-regexp": "2.4.0", + "vue": "2.6.10", + "vue-router": "3.0.6", + "vuex": "3.1.0" + }, + "devDependencies": { + "@vue/cli-plugin-babel": "4.4.4", + "@vue/cli-plugin-eslint": "4.4.4", + "@vue/cli-plugin-unit-jest": "4.4.4", + "@vue/cli-service": "4.4.4", + "@vue/test-utils": "1.0.0-beta.29", + "autoprefixer": "9.5.1", + "babel-eslint": "10.1.0", + "babel-jest": "23.6.0", + "babel-plugin-dynamic-import-node": "2.3.3", + "chalk": "2.4.2", + "connect": "3.6.6", + "eslint": "6.7.2", + "eslint-plugin-vue": "6.2.2", + "html-webpack-plugin": "3.2.0", + "mockjs": "1.0.1-beta3", + "runjs": "4.3.2", + "sass": "1.26.8", + "sass-loader": "8.0.2", + "script-ext-html-webpack-plugin": "2.1.3", + "serve-static": "1.13.2", + "svg-sprite-loader": "4.1.3", + "svgo": "1.2.2", + "vue-template-compiler": "2.6.10" + }, + "browserslist": [ + "> 1%", + "last 2 versions" + ], + "engines": { + "node": ">=8.9", + "npm": ">= 3.0.0" + }, + "license": "MIT" +} diff --git a/vue-admin-template-master/postcss.config.js b/vue-admin-template-master/postcss.config.js new file mode 100644 index 0000000..10473ef --- /dev/null +++ b/vue-admin-template-master/postcss.config.js @@ -0,0 +1,8 @@ +// https://github.com/michael-ciniawsky/postcss-load-config + +module.exports = { + 'plugins': { + // to edit target browsers: use "browserslist" field in package.json + 'autoprefixer': {} + } +} diff --git a/vue-admin-template-master/public/--favicon.ico b/vue-admin-template-master/public/--favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..34b63ac63a87ee3ea8e7a0f3f5b5406c437e2112 GIT binary patch literal 67646 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 X;@D+E7Ad=S_FbjlW&KY_+xPzm3MBT? literal 0 HcmV?d00001 diff --git a/vue-admin-template-master/public/favicon.ico b/vue-admin-template-master/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4a366d34dada2f453ff8cf6c6cb158dfd7c2c337 GIT binary patch literal 73507 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 z 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 literal 0 HcmV?d00001 diff --git a/vue-admin-template-master/public/index.html b/vue-admin-template-master/public/index.html new file mode 100644 index 0000000..4393c66 --- /dev/null +++ b/vue-admin-template-master/public/index.html @@ -0,0 +1,19 @@ + + + + + + + + <%= webpackConfig.name %> + + + + + +

+ + + diff --git a/vue-admin-template-master/src/App.vue b/vue-admin-template-master/src/App.vue new file mode 100644 index 0000000..ec9032c --- /dev/null +++ b/vue-admin-template-master/src/App.vue @@ -0,0 +1,11 @@ + + + diff --git a/vue-admin-template-master/src/api/dutys.js b/vue-admin-template-master/src/api/dutys.js new file mode 100644 index 0000000..60e5370 --- /dev/null +++ b/vue-admin-template-master/src/api/dutys.js @@ -0,0 +1,81 @@ +import request from '@/utils/request' +//个人需要填写的考核项目 +export function myassessmentlist(params) { + return request({ + url: '/dutys/myassessmentlist', + method: 'post', + params + }) +} +//根据具体考核项目获取被考核部门 +export const getDutydepartlist = (data) => { + return request({ + url: '/dutys/getDutydepartlist', + method: 'post', + data: data + }) +} +//根据具体考核项目获取被考核部门 +export const addassessmentscore = (data) => { + return request({ + url: '/dutys/addassessmentscore', + method: 'post', + data: data + }) +} +//个人考核评价记录 +export const myevaluatelist = (data) => { + return request({ + url: '/dutys/myevaluatelist', + method: 'post', + data: data + }) +} +//根据部门和时间获取考核详情 +export const getdeparttimeassess = (data) => { + return request({ + url: '/dutys/getdeparttimeassess', + method: 'post', + data: data + }) +} +//获取企业微信发起基础配置 +export const getconfig = (data) => { + return request({ + url: '/examine/getconfig', + method: 'post', + data: data + }) +} +//以部门维度考核内容列表 +export const departmentassess = (data) => { + return request({ + url: '/dutys/departmentassess', + method: 'post', + data: data + }) +} +//根据部门和时间写入全部考核项分值 +export const departmentassessdata = (data) => { + return request({ + url: '/dutys/departmentassessdata', + method: 'post', + data: data + }) +} +//查看审批详细内容 +export const lookdepartmentassessinfo = (data) => { + return request({ + url: '/noverify/lookdepartmentassessinfo', + method: 'post', + data: data + }) +} +//查看本部门提交的和个人提交的审批 +export const lookpersonalordepartment = (data) => { + return request({ + url: '/dutys/lookpersonalordepartment', + method: 'post', + data: data + }) +} diff --git a/vue-admin-template-master/src/api/group.js b/vue-admin-template-master/src/api/group.js new file mode 100644 index 0000000..633ce2c --- /dev/null +++ b/vue-admin-template-master/src/api/group.js @@ -0,0 +1,24 @@ +import request from '@/utils/request' +// @Tags Api +// @Summary 获取集团架构(集团+分厂) +// @Security ApiKeyAuth +// @accept application/json +// @Produce application/json +// @Param data body dbModel.Api true "获取集团架构" +// @Success 200 {string} json "{"success":true,"data":{},"msg":"获取成功"}" +// @Router /group/grouplist [get] +export const getgroupdepartmap = (data) => { + return request({ + url: '/group/getgroupdepartmap', + method: 'post', + data: data + }) + } + //以部门维度考核内容列表 +export const departmentassess = (data) => { + return request({ + url: '/dutys/departmentassess', + method: 'post', + data: data + }) + } \ No newline at end of file diff --git a/vue-admin-template-master/src/api/table.js b/vue-admin-template-master/src/api/table.js new file mode 100644 index 0000000..2752f52 --- /dev/null +++ b/vue-admin-template-master/src/api/table.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +export function getList(params) { + return request({ + url: '/vue-admin-template/table/list', + method: 'get', + params + }) +} diff --git a/vue-admin-template-master/src/api/user.js b/vue-admin-template-master/src/api/user.js new file mode 100644 index 0000000..0cc0ea5 --- /dev/null +++ b/vue-admin-template-master/src/api/user.js @@ -0,0 +1,51 @@ +import request from '@/utils/request' + +export function login(data) { + return request({ + url: '/vue-admin-template/user/login', + method: 'post', + data + }) +} + +export function getInfo(token) { + return request({ + url: '/vue-admin-template/user/info', + method: 'get', + params: { token } + }) +} +// @Summary 获取验证码 +// @Produce application/json +// @Param data body {username:"string",password:"string"} +// @Router /base/captcha [post] +// export const captcha = (data) => { +// return service({ +// url: '/base/captcha', +// method: 'post', +// data: data +// }) +// } +export function captcha() { + return request({ + url: '/base/captcha', + method: 'post' + }) +} +// @Summary 用户端登录 +// @Produce application/json +// @Param data body {username:"string",password:"string"} +// @Router /base/login [post] +export const mylogin = (data) => { + return request({ + url: '/base/mylogin', + method: 'post', + data: data + }) +} +export function logout() { + return request({ + url: '/vue-admin-template/user/logout', + method: 'post' + }) +} diff --git a/vue-admin-template-master/src/assets/404_images/404.png b/vue-admin-template-master/src/assets/404_images/404.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8e2305cc973ad2121403aee4bf08728f76c461 GIT binary patch literal 98071 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
Uu4Um7DAUpfcjI28Sm@@eQW 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 literal 0 HcmV?d00001 diff --git a/vue-admin-template-master/src/assets/404_images/404_cloud.png b/vue-admin-template-master/src/assets/404_images/404_cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..c6281d09013e0a2c5f8e699a0a6038d9480291e5 GIT binary patch literal 4766 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 literal 0 HcmV?d00001 diff --git a/vue-admin-template-master/src/assets/404_images/login_background.jpg b/vue-admin-template-master/src/assets/404_images/login_background.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e601f24afda4237347f22d162d1e2ff5a7753b3b GIT binary patch literal 41154 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vue-admin-template-master/src/assets/404_images/login_left.svg b/vue-admin-template-master/src/assets/404_images/login_left.svg new file mode 100644 index 0000000..9c48b0b --- /dev/null +++ b/vue-admin-template-master/src/assets/404_images/login_left.svg @@ -0,0 +1,123 @@ + + + 搭建网站 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vue-admin-template-master/src/assets/404_images/logo.jpg b/vue-admin-template-master/src/assets/404_images/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..09502d587c7aa3fdef6e4a5ede414abad03fb4e0 GIT binary patch literal 27616 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⩽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 literal 0 HcmV?d00001 diff --git a/vue-admin-template-master/src/assets/404_images/logo.png b/vue-admin-template-master/src/assets/404_images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b497ee073990939017bc8e7eec7f3e869416fe22 GIT binary patch literal 8060 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 literal 0 HcmV?d00001 diff --git a/vue-admin-template-master/src/assets/404_images/logo_login.png b/vue-admin-template-master/src/assets/404_images/logo_login.png new file mode 100644 index 0000000000000000000000000000000000000000..e330458eae0dfc3c0d0a8185cf9a8810ad2e6c06 GIT binary patch literal 25312 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 + + + + {{ item.meta.title }} + {{ item.meta.title }} + + + + + + + + diff --git a/vue-admin-template-master/src/components/Hamburger/index.vue b/vue-admin-template-master/src/components/Hamburger/index.vue new file mode 100644 index 0000000..368b002 --- /dev/null +++ b/vue-admin-template-master/src/components/Hamburger/index.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/vue-admin-template-master/src/components/SvgIcon/index.vue b/vue-admin-template-master/src/components/SvgIcon/index.vue new file mode 100644 index 0000000..b07ded2 --- /dev/null +++ b/vue-admin-template-master/src/components/SvgIcon/index.vue @@ -0,0 +1,62 @@ + + + + + diff --git a/vue-admin-template-master/src/icons/index.js b/vue-admin-template-master/src/icons/index.js new file mode 100644 index 0000000..2c6b309 --- /dev/null +++ b/vue-admin-template-master/src/icons/index.js @@ -0,0 +1,9 @@ +import Vue from 'vue' +import SvgIcon from '@/components/SvgIcon'// svg component + +// register globally +Vue.component('svg-icon', SvgIcon) + +const req = require.context('./svg', false, /\.svg$/) +const requireAll = requireContext => requireContext.keys().map(requireContext) +requireAll(req) diff --git a/vue-admin-template-master/src/icons/svg/dashboard.svg b/vue-admin-template-master/src/icons/svg/dashboard.svg new file mode 100644 index 0000000..5317d37 --- /dev/null +++ b/vue-admin-template-master/src/icons/svg/dashboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vue-admin-template-master/src/icons/svg/example.svg b/vue-admin-template-master/src/icons/svg/example.svg new file mode 100644 index 0000000..46f42b5 --- /dev/null +++ b/vue-admin-template-master/src/icons/svg/example.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vue-admin-template-master/src/icons/svg/eye-open.svg b/vue-admin-template-master/src/icons/svg/eye-open.svg new file mode 100644 index 0000000..88dcc98 --- /dev/null +++ b/vue-admin-template-master/src/icons/svg/eye-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vue-admin-template-master/src/icons/svg/eye.svg b/vue-admin-template-master/src/icons/svg/eye.svg new file mode 100644 index 0000000..16ed2d8 --- /dev/null +++ b/vue-admin-template-master/src/icons/svg/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vue-admin-template-master/src/icons/svg/form.svg b/vue-admin-template-master/src/icons/svg/form.svg new file mode 100644 index 0000000..dcbaa18 --- /dev/null +++ b/vue-admin-template-master/src/icons/svg/form.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vue-admin-template-master/src/icons/svg/link.svg b/vue-admin-template-master/src/icons/svg/link.svg new file mode 100644 index 0000000..48197ba --- /dev/null +++ b/vue-admin-template-master/src/icons/svg/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vue-admin-template-master/src/icons/svg/nested.svg b/vue-admin-template-master/src/icons/svg/nested.svg new file mode 100644 index 0000000..06713a8 --- /dev/null +++ b/vue-admin-template-master/src/icons/svg/nested.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vue-admin-template-master/src/icons/svg/password.svg b/vue-admin-template-master/src/icons/svg/password.svg new file mode 100644 index 0000000..e291d85 --- /dev/null +++ b/vue-admin-template-master/src/icons/svg/password.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vue-admin-template-master/src/icons/svg/table.svg b/vue-admin-template-master/src/icons/svg/table.svg new file mode 100644 index 0000000..0e3dc9d --- /dev/null +++ b/vue-admin-template-master/src/icons/svg/table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vue-admin-template-master/src/icons/svg/tree.svg b/vue-admin-template-master/src/icons/svg/tree.svg new file mode 100644 index 0000000..dd4b7dd --- /dev/null +++ b/vue-admin-template-master/src/icons/svg/tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vue-admin-template-master/src/icons/svg/user.svg b/vue-admin-template-master/src/icons/svg/user.svg new file mode 100644 index 0000000..0ba0716 --- /dev/null +++ b/vue-admin-template-master/src/icons/svg/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/vue-admin-template-master/src/icons/svgo.yml b/vue-admin-template-master/src/icons/svgo.yml new file mode 100644 index 0000000..d11906a --- /dev/null +++ b/vue-admin-template-master/src/icons/svgo.yml @@ -0,0 +1,22 @@ +# replace default config + +# multipass: true +# full: true + +plugins: + + # - name + # + # or: + # - name: false + # - name: true + # + # or: + # - name: + # param1: 1 + # param2: 2 + +- removeAttrs: + attrs: + - 'fill' + - 'fill-rule' diff --git a/vue-admin-template-master/src/layout/components/AppMain.vue b/vue-admin-template-master/src/layout/components/AppMain.vue new file mode 100644 index 0000000..f6a3286 --- /dev/null +++ b/vue-admin-template-master/src/layout/components/AppMain.vue @@ -0,0 +1,40 @@ + + + + + + + diff --git a/vue-admin-template-master/src/layout/components/Navbar.vue b/vue-admin-template-master/src/layout/components/Navbar.vue new file mode 100644 index 0000000..c3a5c0e --- /dev/null +++ b/vue-admin-template-master/src/layout/components/Navbar.vue @@ -0,0 +1,152 @@ + + + + + diff --git a/vue-admin-template-master/src/layout/components/Sidebar/FixiOSBug.js b/vue-admin-template-master/src/layout/components/Sidebar/FixiOSBug.js new file mode 100644 index 0000000..bc14856 --- /dev/null +++ b/vue-admin-template-master/src/layout/components/Sidebar/FixiOSBug.js @@ -0,0 +1,26 @@ +export default { + computed: { + device() { + return this.$store.state.app.device + } + }, + mounted() { + // In order to fix the click on menu on the ios device will trigger the mouseleave bug + // https://github.com/PanJiaChen/vue-element-admin/issues/1135 + this.fixBugIniOS() + }, + methods: { + fixBugIniOS() { + const $subMenu = this.$refs.subMenu + if ($subMenu) { + const handleMouseleave = $subMenu.handleMouseleave + $subMenu.handleMouseleave = (e) => { + if (this.device === 'mobile') { + return + } + handleMouseleave(e) + } + } + } + } +} diff --git a/vue-admin-template-master/src/layout/components/Sidebar/Item.vue b/vue-admin-template-master/src/layout/components/Sidebar/Item.vue new file mode 100644 index 0000000..aa1f5da --- /dev/null +++ b/vue-admin-template-master/src/layout/components/Sidebar/Item.vue @@ -0,0 +1,41 @@ + + + diff --git a/vue-admin-template-master/src/layout/components/Sidebar/Link.vue b/vue-admin-template-master/src/layout/components/Sidebar/Link.vue new file mode 100644 index 0000000..530b3d5 --- /dev/null +++ b/vue-admin-template-master/src/layout/components/Sidebar/Link.vue @@ -0,0 +1,43 @@ + + + diff --git a/vue-admin-template-master/src/layout/components/Sidebar/Logo.vue b/vue-admin-template-master/src/layout/components/Sidebar/Logo.vue new file mode 100644 index 0000000..040fab6 --- /dev/null +++ b/vue-admin-template-master/src/layout/components/Sidebar/Logo.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/vue-admin-template-master/src/layout/components/Sidebar/SidebarItem.vue b/vue-admin-template-master/src/layout/components/Sidebar/SidebarItem.vue new file mode 100644 index 0000000..a418c3d --- /dev/null +++ b/vue-admin-template-master/src/layout/components/Sidebar/SidebarItem.vue @@ -0,0 +1,95 @@ + + + diff --git a/vue-admin-template-master/src/layout/components/Sidebar/index.vue b/vue-admin-template-master/src/layout/components/Sidebar/index.vue new file mode 100644 index 0000000..da39034 --- /dev/null +++ b/vue-admin-template-master/src/layout/components/Sidebar/index.vue @@ -0,0 +1,56 @@ + + + diff --git a/vue-admin-template-master/src/layout/components/index.js b/vue-admin-template-master/src/layout/components/index.js new file mode 100644 index 0000000..97ee3cd --- /dev/null +++ b/vue-admin-template-master/src/layout/components/index.js @@ -0,0 +1,3 @@ +export { default as Navbar } from './Navbar' +export { default as Sidebar } from './Sidebar' +export { default as AppMain } from './AppMain' diff --git a/vue-admin-template-master/src/layout/index.vue b/vue-admin-template-master/src/layout/index.vue new file mode 100644 index 0000000..db22a7b --- /dev/null +++ b/vue-admin-template-master/src/layout/index.vue @@ -0,0 +1,93 @@ + + + + + diff --git a/vue-admin-template-master/src/layout/mixin/ResizeHandler copy.js b/vue-admin-template-master/src/layout/mixin/ResizeHandler copy.js new file mode 100644 index 0000000..e8d0df8 --- /dev/null +++ b/vue-admin-template-master/src/layout/mixin/ResizeHandler copy.js @@ -0,0 +1,45 @@ +import store from '@/store' + +const { body } = document +const WIDTH = 992 // refer to Bootstrap's responsive design + +export default { + watch: { + $route(route) { + if (this.device === 'mobile' && this.sidebar.opened) { + store.dispatch('app/closeSideBar', { withoutAnimation: false }) + } + } + }, + beforeMount() { + window.addEventListener('resize', this.$_resizeHandler) + }, + beforeDestroy() { + window.removeEventListener('resize', this.$_resizeHandler) + }, + mounted() { + const isMobile = this.$_isMobile() + if (isMobile) { + store.dispatch('app/toggleDevice', 'mobile') + store.dispatch('app/closeSideBar', { withoutAnimation: true }) + } + }, + methods: { + // use $_ for mixins properties + // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential + $_isMobile() { + const rect = body.getBoundingClientRect() + return rect.width - 1 < WIDTH + }, + $_resizeHandler() { + if (!document.hidden) { + const isMobile = this.$_isMobile() + store.dispatch('app/toggleDevice', isMobile ? 'mobile' : 'desktop') + + if (isMobile) { + store.dispatch('app/closeSideBar', { withoutAnimation: true }) + } + } + } + } +} diff --git a/vue-admin-template-master/src/layout/mixin/ResizeHandler.js b/vue-admin-template-master/src/layout/mixin/ResizeHandler.js new file mode 100644 index 0000000..e8d0df8 --- /dev/null +++ b/vue-admin-template-master/src/layout/mixin/ResizeHandler.js @@ -0,0 +1,45 @@ +import store from '@/store' + +const { body } = document +const WIDTH = 992 // refer to Bootstrap's responsive design + +export default { + watch: { + $route(route) { + if (this.device === 'mobile' && this.sidebar.opened) { + store.dispatch('app/closeSideBar', { withoutAnimation: false }) + } + } + }, + beforeMount() { + window.addEventListener('resize', this.$_resizeHandler) + }, + beforeDestroy() { + window.removeEventListener('resize', this.$_resizeHandler) + }, + mounted() { + const isMobile = this.$_isMobile() + if (isMobile) { + store.dispatch('app/toggleDevice', 'mobile') + store.dispatch('app/closeSideBar', { withoutAnimation: true }) + } + }, + methods: { + // use $_ for mixins properties + // https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential + $_isMobile() { + const rect = body.getBoundingClientRect() + return rect.width - 1 < WIDTH + }, + $_resizeHandler() { + if (!document.hidden) { + const isMobile = this.$_isMobile() + store.dispatch('app/toggleDevice', isMobile ? 'mobile' : 'desktop') + + if (isMobile) { + store.dispatch('app/closeSideBar', { withoutAnimation: true }) + } + } + } + } +} diff --git a/vue-admin-template-master/src/main.js b/vue-admin-template-master/src/main.js new file mode 100644 index 0000000..63dbece --- /dev/null +++ b/vue-admin-template-master/src/main.js @@ -0,0 +1,43 @@ +import Vue from 'vue' + +import 'normalize.css/normalize.css' // A modern alternative to CSS resets + +import ElementUI from 'element-ui' +import 'element-ui/lib/theme-chalk/index.css' +// import locale from 'element-ui/lib/locale/lang/en' // lang i18n + +import '@/styles/index.scss' // global css + +import App from './App' +import store from './store' +import router from './router' + +import '@/icons' // icon +// import '@/permission' // permission control + +/** + * If you don't want to use mock-server + * you want to use MockJs for mock api + * you can execute: mockXHR() + * + * Currently MockJs will be used in the production environment, + * please remove it before going online ! ! ! + */ +if (process.env.NODE_ENV === 'production') { + const { mockXHR } = require('../mock') + mockXHR() +} + +// set ElementUI lang to EN +// Vue.use(ElementUI, { locale }) +// 如果想要中文版 element-ui,按如下方式声明 +Vue.use(ElementUI) + +Vue.config.productionTip = false + +new Vue({ + el: '#app', + router, + store, + render: h => h(App) +}) diff --git a/vue-admin-template-master/src/mixins/infoList.js b/vue-admin-template-master/src/mixins/infoList.js new file mode 100644 index 0000000..8541ed5 --- /dev/null +++ b/vue-admin-template-master/src/mixins/infoList.js @@ -0,0 +1,75 @@ + +import { formatTimeToStr } from '@/utils/date' + +export default { + data() { + return { + page: 1, + total: 10, + pageSize: 10, + tableData: [], + tabledata:[], + searchInfo: {} + } + }, + methods: { + formatBoolean: function(bool) { + if (bool !== null) { + return bool ? '是' : '否' + } else { + return '' + } + }, + formatDate: function(time) { + if (time !== null && time !== '') { + var date = new Date(time) + return formatTimeToStr(date, 'yyyy-MM-dd hh:mm:ss') + } else { + return '' + } + }, + filterDict(value, type) { + const rowLabel = this[type + 'Options'] && this[type + 'Options'].filter(item => item.value === value) + return rowLabel && rowLabel[0] && rowLabel[0].label + }, + async getDict(type) { + const dicts = await getDict(type) + this[type + 'Options'] = dicts + return dicts + }, + handleSizeChange(val) { + this.pageSize = val + this.getTableData() + }, + handleCurrentChange(val) { + this.page = val + this.getTableData() + }, + // @params beforeFunc function 请求发起前执行的函数 默认为空函数 + // @params afterFunc function 请求完成后执行的函数 默认为空函数 + async getTableData(beforeFunc = () => {}, afterFunc = () => {}) { + beforeFunc() + const table = await this.listApi({ page: this.page, pageSize: this.pageSize, ...this.searchInfo }) + // console.log(table.code) + // console.log("datalist") + // console.log(table.data) + if (table.code === 0) { + this.tableData = table.data.list + this.total = table.data.total + this.count = table.data.count + this.page = table.data.page + this.pageSize = table.data.pageSize + this.pagesize = table.data.pagesize + this.tabledata = table.data.data + // if (table.data.data!='') { + // this.tableData = table.data.data + // } + } + if (table.code === 200) { + this.tableData = table.data + } + + afterFunc() + } + } +} diff --git a/vue-admin-template-master/src/permission.js b/vue-admin-template-master/src/permission.js new file mode 100644 index 0000000..e1e40d8 --- /dev/null +++ b/vue-admin-template-master/src/permission.js @@ -0,0 +1,79 @@ +import router from './router' +import store from './store' +import { Message } from 'element-ui' +import NProgress from 'nprogress' // progress bar +import 'nprogress/nprogress.css' // progress bar style +import { getToken } from '@/utils/auth' // get token from cookie +import getPageTitle from '@/utils/get-page-title' + +NProgress.configure({ showSpinner: false }) // NProgress Configuration + +const whiteList = ['/login'] // no redirect whitelist + +router.beforeEach(async(to, from, next) => { + // start progress bar + NProgress.start() + + // set page title + document.title = getPageTitle(to.meta.title) + + // determine whether the user has logged in + const hasToken = getToken() + if (hasToken!='') { + next({path:'/index'}) + } else { + next({path:'/login'}) + } +// if (hasToken) { +// console.log("hasToken") +// console.log(hasToken) +// // if (to.path === '/login') { +// // console.log("111") +// // // if is logged in, redirect to the home page +// // next({ path: '/' }) +// // NProgress.done() +// // } else { +// // console.log("222") +// // const hasGetUserInfo = store.getters.name +// // if (hasGetUserInfo) { +// // console.log("333") +// // next() + +// // } else { +// // try { +// // console.log("444") +// // // get user info +// // await store.dispatch('user/getInfo') + +// // next() +// // } catch (error) { +// // console.log("555") +// // // remove token and go to login page to re-login +// // await store.dispatch('user/resetToken') +// // Message.error(error || 'Has Error') +// // next(`/login?redirect=${to.path}`) +// // NProgress.done() +// // } +// // } +// // } +// } else { +// console.log("666") +// /* has no token*/ + +// if (whiteList.indexOf(to.path) !== -1) { +// console.log("777") +// // in the free login whitelist, go directly +// next() +// } else { +// console.log("888") +// // other pages that do not have permission to access are redirected to the login page. +// next(`/login?redirect=${to.path}`) +// NProgress.done() +// } +// } +}) + +router.afterEach(() => { + // finish progress bar + NProgress.done() +}) diff --git a/vue-admin-template-master/src/router/index.js b/vue-admin-template-master/src/router/index.js new file mode 100644 index 0000000..c47424f --- /dev/null +++ b/vue-admin-template-master/src/router/index.js @@ -0,0 +1,217 @@ +import Vue from 'vue' +import Router from 'vue-router' + +Vue.use(Router) + +/* Layout */ +import Layout from '@/layout' + +/** + * Note: sub-menu only appear when route children.length >= 1 + * Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html + * + * hidden: true if set true, item will not show in the sidebar(default is false) + * alwaysShow: true if set true, will always show the root menu + * if not set alwaysShow, when item has more than one children route, + * it will becomes nested mode, otherwise not show the root menu + * redirect: noRedirect if set noRedirect will no redirect in the breadcrumb + * name:'router-name' the name is used by (must set!!!) + * meta : { + roles: ['admin','editor'] control the page roles (you can set multiple roles) + title: 'title' the name show in sidebar and breadcrumb (recommend set) + icon: 'svg-name'/'el-icon-x' the icon show in the sidebar + breadcrumb: false if set false, the item will hidden in breadcrumb(default is true) + activeMenu: '/example/list' if set path, the sidebar will highlight the path you set + } + */ + +/** + * constantRoutes + * a base page that does not have permission requirements + * all roles can be accessed + */ +export const constantRoutes = [ + { + path: '/login', + component: () => import('@/views/login/index'), + hidden: true + }, + { + path: '/approval', + component: () => import('@/views/approval/index'), + hidden: true + }, + // { + // path: '/details', + // component: () => import('@/views/record/details'), + // hidden: true + // }, + { + path: '/index', + component: () => import('@/views/index'), + hidden: true + }, + { + path: '/404', + component: () => import('@/views/404'), + hidden: true + }, + { + path: '/', + component: Layout, + redirect: '/dashboard', + children: [{ + path: 'dashboard', + name: 'Dashboard', + component: () => import('@/views/dashboard/index'), + meta: { title: '考核项目'} + }] + }, + { + path: '/record', + component: Layout, + redirect: '/record', + children: [{ + path: 'record', + name: 'Record', + component: () => import('@/views/record/index'), + meta: { title: '考核记录'} + }] + }, + { + path: '/details', + component: Layout, + redirect: '/details', + children: [{ + path: 'details', + name: 'Details', + component: () => import('@/views/record/details'), + // meta: { title: '考核记录详情'} + }] + }, + + + // { + // path: '/example', + // component: Layout, + // redirect: '/example/table', + // name: 'Example', + // meta: { title: '表格', icon: 'el-icon-s-help' }, + // children: [ + // { + // path: 'table', + // name: 'Table', + // component: () => import('@/views/table/index'), + // meta: { title: 'Table', icon: 'table' } + // }, + // { + // path: 'tree', + // name: 'Tree', + // component: () => import('@/views/tree/index'), + // meta: { title: 'Tree', icon: 'tree' } + // } + // ] + // }, + + // { + // path: '/form', + // component: Layout, + // children: [ + // { + // path: 'index', + // name: 'Form', + // component: () => import('@/views/form/index'), + // meta: { title: 'Form', icon: 'form' } + // } + // ] + // }, + + // { + // path: '/nested', + // component: Layout, + // redirect: '/nested/menu1', + // name: 'Nested', + // meta: { + // title: 'Nested', + // icon: 'nested' + // }, + // children: [ + // { + // path: 'menu1', + // component: () => import('@/views/nested/menu1/index'), // Parent router-view + // name: 'Menu1', + // meta: { title: 'Menu1' }, + // children: [ + // { + // path: 'menu1-1', + // component: () => import('@/views/nested/menu1/menu1-1'), + // name: 'Menu1-1', + // meta: { title: 'Menu1-1' } + // }, + // { + // path: 'menu1-2', + // component: () => import('@/views/nested/menu1/menu1-2'), + // name: 'Menu1-2', + // meta: { title: 'Menu1-2' }, + // children: [ + // { + // path: 'menu1-2-1', + // component: () => import('@/views/nested/menu1/menu1-2/menu1-2-1'), + // name: 'Menu1-2-1', + // meta: { title: 'Menu1-2-1' } + // }, + // { + // path: 'menu1-2-2', + // component: () => import('@/views/nested/menu1/menu1-2/menu1-2-2'), + // name: 'Menu1-2-2', + // meta: { title: 'Menu1-2-2' } + // } + // ] + // }, + // { + // path: 'menu1-3', + // component: () => import('@/views/nested/menu1/menu1-3'), + // name: 'Menu1-3', + // meta: { title: 'Menu1-3' } + // } + // ] + // }, + // { + // path: 'menu2', + // component: () => import('@/views/nested/menu2/index'), + // name: 'Menu2', + // meta: { title: 'menu2' } + // } + // ] + // }, + + // { + // path: 'external-link', + // component: Layout, + // children: [ + // { + // path: 'https://panjiachen.github.io/vue-element-admin-site/#/', + // meta: { title: 'External Link', icon: 'link' } + // } + // ] + // }, + + // 404 page must be placed at the end !!! + { path: '*', redirect: '/404', hidden: true } +] + +const createRouter = () => new Router({ + // mode: 'history', // require service support + scrollBehavior: () => ({ y: 0 }), + routes: constantRoutes +}) + +const router = createRouter() + +// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465 +export function resetRouter() { + const newRouter = createRouter() + router.matcher = newRouter.matcher // reset router +} + +export default router diff --git a/vue-admin-template-master/src/settings.js b/vue-admin-template-master/src/settings.js new file mode 100644 index 0000000..83299fc --- /dev/null +++ b/vue-admin-template-master/src/settings.js @@ -0,0 +1,16 @@ +module.exports = { + + title: '绩效考核', + + /** + * @type {boolean} true | false + * @description Whether fix the header + */ + fixedHeader: false, + + /** + * @type {boolean} true | false + * @description Whether show the logo in sidebar + */ + sidebarLogo: false +} diff --git a/vue-admin-template-master/src/store/getters.js b/vue-admin-template-master/src/store/getters.js new file mode 100644 index 0000000..5ab7b4c --- /dev/null +++ b/vue-admin-template-master/src/store/getters.js @@ -0,0 +1,8 @@ +const getters = { + sidebar: state => state.app.sidebar, + device: state => state.app.device, + token: state => state.user.token, + avatar: state => state.user.avatar, + name: state => state.user.name +} +export default getters diff --git a/vue-admin-template-master/src/store/index.js b/vue-admin-template-master/src/store/index.js new file mode 100644 index 0000000..6be466a --- /dev/null +++ b/vue-admin-template-master/src/store/index.js @@ -0,0 +1,19 @@ +import Vue from 'vue' +import Vuex from 'vuex' +import getters from './getters' +import app from './modules/app' +import settings from './modules/settings' +import user from './modules/user' + +Vue.use(Vuex) + +const store = new Vuex.Store({ + modules: { + app, + settings, + user + }, + getters +}) + +export default store diff --git a/vue-admin-template-master/src/store/modules/app.js b/vue-admin-template-master/src/store/modules/app.js new file mode 100644 index 0000000..7ea7e33 --- /dev/null +++ b/vue-admin-template-master/src/store/modules/app.js @@ -0,0 +1,48 @@ +import Cookies from 'js-cookie' + +const state = { + sidebar: { + opened: Cookies.get('sidebarStatus') ? !!+Cookies.get('sidebarStatus') : true, + withoutAnimation: false + }, + device: 'desktop' +} + +const mutations = { + TOGGLE_SIDEBAR: state => { + state.sidebar.opened = !state.sidebar.opened + state.sidebar.withoutAnimation = false + if (state.sidebar.opened) { + Cookies.set('sidebarStatus', 1) + } else { + Cookies.set('sidebarStatus', 0) + } + }, + CLOSE_SIDEBAR: (state, withoutAnimation) => { + Cookies.set('sidebarStatus', 0) + state.sidebar.opened = false + state.sidebar.withoutAnimation = withoutAnimation + }, + TOGGLE_DEVICE: (state, device) => { + state.device = device + } +} + +const actions = { + toggleSideBar({ commit }) { + commit('TOGGLE_SIDEBAR') + }, + closeSideBar({ commit }, { withoutAnimation }) { + commit('CLOSE_SIDEBAR', withoutAnimation) + }, + toggleDevice({ commit }, device) { + commit('TOGGLE_DEVICE', device) + } +} + +export default { + namespaced: true, + state, + mutations, + actions +} diff --git a/vue-admin-template-master/src/store/modules/settings.js b/vue-admin-template-master/src/store/modules/settings.js new file mode 100644 index 0000000..b3f33f8 --- /dev/null +++ b/vue-admin-template-master/src/store/modules/settings.js @@ -0,0 +1,32 @@ +import defaultSettings from '@/settings' + +const { showSettings, fixedHeader, sidebarLogo } = defaultSettings + +const state = { + showSettings: showSettings, + fixedHeader: fixedHeader, + sidebarLogo: sidebarLogo +} + +const mutations = { + CHANGE_SETTING: (state, { key, value }) => { + // eslint-disable-next-line no-prototype-builtins + if (state.hasOwnProperty(key)) { + state[key] = value + } + } +} + +const actions = { + changeSetting({ commit }, data) { + commit('CHANGE_SETTING', data) + } +} + +export default { + namespaced: true, + state, + mutations, + actions +} + diff --git a/vue-admin-template-master/src/store/modules/user.js b/vue-admin-template-master/src/store/modules/user.js new file mode 100644 index 0000000..70d20a9 --- /dev/null +++ b/vue-admin-template-master/src/store/modules/user.js @@ -0,0 +1,119 @@ +import { login, logout, getInfo } from '@/api/user' +import { getToken, setToken, removeToken } from '@/utils/auth' +import { resetRouter } from '@/router' +import router from '@/router/index' + +const getDefaultState = () => { + return { + userInfo:{}, + key:'', + token: getToken(), + //token: getToken(), + name: '', + avatar: '' + } +} + +const state = getDefaultState() + +const mutations = { + loginOut(state) { + state.userInfo = {} + state.token = '' + state.key = '' + router.push('/login') + }, + setUserInfo(state, userInfo) { + // 这里的 `state` 对象是模块的局部状态 + state.userInfo = userInfo + }, + setKey(state, key) { + // 这里的 `state` 对象是模块的局部状态 + state.key = key + }, + setToken(state, token) { + // 这里的 `state` 对象是模块的局部状态 + state.token = token + }, + RESET_STATE: (state) => { + Object.assign(state, getDefaultState()) + }, + SET_TOKEN: (state, token) => { + state.token = token + }, + SET_NAME: (state, name) => { + state.name = name + }, + SET_AVATAR: (state, avatar) => { + state.avatar = avatar + } +} + +const actions = { + // user login + login({ commit }, userInfo) { + const { username, password } = userInfo + return new Promise((resolve, reject) => { + login({ username: username.trim(), password: password }).then(response => { + const { data } = response + commit('SET_TOKEN', data.token) + setToken(data.token) + resolve() + }).catch(error => { + reject(error) + }) + }) + }, + + // get user info + getInfo({ commit, state }) { + return new Promise((resolve, reject) => { + getInfo(state.token).then(response => { + const { data } = response + + if (!data) { + return reject('Verification failed, please Login again.') + } + + const { name, avatar } = data + + commit('SET_NAME', name) + commit('SET_AVATAR', avatar) + resolve(data) + }).catch(error => { + reject(error) + }) + }) + }, + + // user logout + logout({ commit, state }) { + return new Promise((resolve, reject) => { + logout(state.token).then(() => { + removeToken() // must remove token first + resetRouter() + commit('RESET_STATE') + resolve() + }).catch(error => { + reject(error) + }) + }) + }, + + // remove token + resetToken({ commit }) { + return new Promise(resolve => { + removeToken() // must remove token first + commit('RESET_STATE') + resolve() + }) + } +} + +export default { + namespaced: true, + state, + mutations, + actions +} + diff --git a/vue-admin-template-master/src/styles/element-ui.scss b/vue-admin-template-master/src/styles/element-ui.scss new file mode 100644 index 0000000..0062411 --- /dev/null +++ b/vue-admin-template-master/src/styles/element-ui.scss @@ -0,0 +1,49 @@ +// cover some element-ui styles + +.el-breadcrumb__inner, +.el-breadcrumb__inner a { + font-weight: 400 !important; +} + +.el-upload { + input[type="file"] { + display: none !important; + } +} + +.el-upload__input { + display: none; +} + + +// to fixed https://github.com/ElemeFE/element/issues/2461 +.el-dialog { + transform: none; + left: 0; + position: relative; + margin: 0 auto; +} + +// refine element ui upload +.upload-container { + .el-upload { + width: 100%; + + .el-upload-dragger { + width: 100%; + height: 200px; + } + } +} + +// dropdown +.el-dropdown-menu { + a { + display: block + } +} + +// to fix el-date-picker css style +.el-range-separator { + box-sizing: content-box; +} diff --git a/vue-admin-template-master/src/styles/index.scss b/vue-admin-template-master/src/styles/index.scss new file mode 100644 index 0000000..3b4da51 --- /dev/null +++ b/vue-admin-template-master/src/styles/index.scss @@ -0,0 +1,65 @@ +@import './variables.scss'; +@import './mixin.scss'; +@import './transition.scss'; +@import './element-ui.scss'; +@import './sidebar.scss'; + +body { + height: 100%; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; +} + +label { + font-weight: 700; +} + +html { + height: 100%; + box-sizing: border-box; +} + +#app { + height: 100%; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +a:focus, +a:active { + outline: none; +} + +a, +a:focus, +a:hover { + cursor: pointer; + color: inherit; + text-decoration: none; +} + +div:focus { + outline: none; +} + +.clearfix { + &:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0; + } +} + +// main-container global css +.app-container { + padding: 20px; +} diff --git a/vue-admin-template-master/src/styles/mixin.scss b/vue-admin-template-master/src/styles/mixin.scss new file mode 100644 index 0000000..36b74bb --- /dev/null +++ b/vue-admin-template-master/src/styles/mixin.scss @@ -0,0 +1,28 @@ +@mixin clearfix { + &:after { + content: ""; + display: table; + clear: both; + } +} + +@mixin scrollBar { + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } +} + +@mixin relative { + position: relative; + width: 100%; + height: 100%; +} diff --git a/vue-admin-template-master/src/styles/sidebar.scss b/vue-admin-template-master/src/styles/sidebar.scss new file mode 100644 index 0000000..94760cc --- /dev/null +++ b/vue-admin-template-master/src/styles/sidebar.scss @@ -0,0 +1,226 @@ +#app { + + .main-container { + min-height: 100%; + transition: margin-left .28s; + margin-left: $sideBarWidth; + position: relative; + } + + .sidebar-container { + transition: width 0.28s; + width: $sideBarWidth !important; + background-color: $menuBg; + height: 100%; + position: fixed; + font-size: 0px; + top: 0; + bottom: 0; + left: 0; + z-index: 1001; + overflow: hidden; + + // reset element-ui css + .horizontal-collapse-transition { + transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out; + } + + .scrollbar-wrapper { + overflow-x: hidden !important; + } + + .el-scrollbar__bar.is-vertical { + right: 0px; + } + + .el-scrollbar { + height: 100%; + } + + &.has-logo { + .el-scrollbar { + height: calc(100% - 50px); + } + } + + .is-horizontal { + display: none; + } + + a { + display: inline-block; + width: 100%; + overflow: hidden; + } + + .svg-icon { + margin-right: 16px; + } + + .sub-el-icon { + margin-right: 12px; + margin-left: -2px; + } + + .el-menu { + border: none; + height: 100%; + width: 100% !important; + } + + // menu hover + .submenu-title-noDropdown, + .el-submenu__title { + &:hover { + background-color: $menuHover !important; + } + } + + .is-active>.el-submenu__title { + color: $subMenuActiveText !important; + } + + & .nest-menu .el-submenu>.el-submenu__title, + & .el-submenu .el-menu-item { + min-width: $sideBarWidth !important; + background-color: $subMenuBg !important; + + &:hover { + background-color: $subMenuHover !important; + } + } + } + + .hideSidebar { + .sidebar-container { + width: 54px !important; + } + + .main-container { + margin-left: 54px; + } + + .submenu-title-noDropdown { + padding: 0 !important; + position: relative; + + .el-tooltip { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + + .sub-el-icon { + margin-left: 19px; + } + } + } + + .el-submenu { + overflow: hidden; + + &>.el-submenu__title { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + + .sub-el-icon { + margin-left: 19px; + } + + .el-submenu__icon-arrow { + display: none; + } + } + } + + .el-menu--collapse { + .el-submenu { + &>.el-submenu__title { + &>span { + height: 0; + width: 0; + overflow: hidden; + visibility: hidden; + display: inline-block; + } + } + } + } + } + + .el-menu--collapse .el-menu .el-submenu { + min-width: $sideBarWidth !important; + } + + // mobile responsive + .mobile { + .main-container { + margin-left: 0px; + } + + .sidebar-container { + transition: transform .28s; + width: $sideBarWidth !important; + } + + &.hideSidebar { + .sidebar-container { + pointer-events: none; + transition-duration: 0.3s; + transform: translate3d(-$sideBarWidth, 0, 0); + } + } + } + + .withoutAnimation { + + .main-container, + .sidebar-container { + transition: none; + } + } +} + +// when menu collapsed +.el-menu--vertical { + &>.el-menu { + .svg-icon { + margin-right: 16px; + } + .sub-el-icon { + margin-right: 12px; + margin-left: -2px; + } + } + + .nest-menu .el-submenu>.el-submenu__title, + .el-menu-item { + &:hover { + // you can use $subMenuHover + background-color: $menuHover !important; + } + } + + // the scroll bar appears when the subMenu is too long + >.el-menu--popup { + max-height: 100vh; + overflow-y: auto; + + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } + } +} diff --git a/vue-admin-template-master/src/styles/transition.scss b/vue-admin-template-master/src/styles/transition.scss new file mode 100644 index 0000000..4cb27cc --- /dev/null +++ b/vue-admin-template-master/src/styles/transition.scss @@ -0,0 +1,48 @@ +// global transition css + +/* fade */ +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.28s; +} + +.fade-enter, +.fade-leave-active { + opacity: 0; +} + +/* fade-transform */ +.fade-transform-leave-active, +.fade-transform-enter-active { + transition: all .5s; +} + +.fade-transform-enter { + opacity: 0; + transform: translateX(-30px); +} + +.fade-transform-leave-to { + opacity: 0; + transform: translateX(30px); +} + +/* breadcrumb transition */ +.breadcrumb-enter-active, +.breadcrumb-leave-active { + transition: all .5s; +} + +.breadcrumb-enter, +.breadcrumb-leave-active { + opacity: 0; + transform: translateX(20px); +} + +.breadcrumb-move { + transition: all .5s; +} + +.breadcrumb-leave-active { + position: absolute; +} diff --git a/vue-admin-template-master/src/styles/variables.scss b/vue-admin-template-master/src/styles/variables.scss new file mode 100644 index 0000000..be55772 --- /dev/null +++ b/vue-admin-template-master/src/styles/variables.scss @@ -0,0 +1,25 @@ +// sidebar +$menuText:#bfcbd9; +$menuActiveText:#409EFF; +$subMenuActiveText:#f4f4f5; //https://github.com/ElemeFE/element/issues/12951 + +$menuBg:#304156; +$menuHover:#263445; + +$subMenuBg:#1f2d3d; +$subMenuHover:#001528; + +$sideBarWidth: 210px; + +// the :export directive is the magic sauce for webpack +// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass +:export { + menuText: $menuText; + menuActiveText: $menuActiveText; + subMenuActiveText: $subMenuActiveText; + menuBg: $menuBg; + menuHover: $menuHover; + subMenuBg: $subMenuBg; + subMenuHover: $subMenuHover; + sideBarWidth: $sideBarWidth; +} diff --git a/vue-admin-template-master/src/utils/auth.js b/vue-admin-template-master/src/utils/auth.js new file mode 100644 index 0000000..dee6fe4 --- /dev/null +++ b/vue-admin-template-master/src/utils/auth.js @@ -0,0 +1,27 @@ +import Cookies from 'js-cookie' + +const TokenKey = 'vue_admin_template_token' +const KeyKey = 'vue_admin_template_key' + +export function getToken() { + return Cookies.get(TokenKey) +} + +export function setToken(token) { + return Cookies.set(TokenKey, token) +} + +export function removeToken() { + return Cookies.remove(TokenKey) +} +export function getKey() { + return Cookies.get(KeyKey) +} + +export function setKey(Key) { + return Cookies.set(KeyKey, Key) +} + +export function removeKey() { + return Cookies.remove(KeyKey) +} diff --git a/vue-admin-template-master/src/utils/date.js b/vue-admin-template-master/src/utils/date.js new file mode 100644 index 0000000..6bb8570 --- /dev/null +++ b/vue-admin-template-master/src/utils/date.js @@ -0,0 +1,30 @@ +// 对Date的扩展,将 Date 转化为指定格式的String +// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, +// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) +// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423 +// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18 +// eslint-disable-next-line no-extend-native +Date.prototype.Format = function(fmt) { + var o = { + 'M+': this.getMonth() + 1, // 月份 + 'd+': this.getDate(), // 日 + 'h+': this.getHours(), // 小时 + 'm+': this.getMinutes(), // 分 + 's+': this.getSeconds(), // 秒 + 'q+': Math.floor((this.getMonth() + 3) / 3), // 季度 + 'S': this.getMilliseconds() // 毫秒 + } + if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length)) } + for (var k in o) { + if (new RegExp('(' + k + ')').test(fmt)) { fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length))) } + } + return fmt +} + +export function formatTimeToStr(times, pattern) { + var d = new Date(times).Format('yyyy-MM-dd hh:mm:ss') + if (pattern) { + d = new Date(times).Format(pattern) + } + return d.toLocaleString() +} diff --git a/vue-admin-template-master/src/utils/get-page-title.js b/vue-admin-template-master/src/utils/get-page-title.js new file mode 100644 index 0000000..de84a07 --- /dev/null +++ b/vue-admin-template-master/src/utils/get-page-title.js @@ -0,0 +1,10 @@ +import defaultSettings from '@/settings' + +const title = defaultSettings.title || '绩效考核' + +export default function getPageTitle(pageTitle) { + if (pageTitle) { + return `${pageTitle} - ${title}` + } + return `${title}` +} diff --git a/vue-admin-template-master/src/utils/index.js b/vue-admin-template-master/src/utils/index.js new file mode 100644 index 0000000..4830c04 --- /dev/null +++ b/vue-admin-template-master/src/utils/index.js @@ -0,0 +1,117 @@ +/** + * Created by PanJiaChen on 16/11/18. + */ + +/** + * Parse the time to string + * @param {(Object|string|number)} time + * @param {string} cFormat + * @returns {string | null} + */ +export function parseTime(time, cFormat) { + if (arguments.length === 0 || !time) { + return null + } + const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}' + let date + if (typeof time === 'object') { + date = time + } else { + if ((typeof time === 'string')) { + if ((/^[0-9]+$/.test(time))) { + // support "1548221490638" + time = parseInt(time) + } else { + // support safari + // https://stackoverflow.com/questions/4310953/invalid-date-in-safari + time = time.replace(new RegExp(/-/gm), '/') + } + } + + if ((typeof time === 'number') && (time.toString().length === 10)) { + time = time * 1000 + } + date = new Date(time) + } + const formatObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + } + const time_str = format.replace(/{([ymdhisa])+}/g, (result, key) => { + const value = formatObj[key] + // Note: getDay() returns 0 on Sunday + if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] } + return value.toString().padStart(2, '0') + }) + return time_str +} + +/** + * @param {number} time + * @param {string} option + * @returns {string} + */ +export function formatTime(time, option) { + if (('' + time).length === 10) { + time = parseInt(time) * 1000 + } else { + time = +time + } + const d = new Date(time) + const now = Date.now() + + const diff = (now - d) / 1000 + + if (diff < 30) { + return '刚刚' + } else if (diff < 3600) { + // less 1 hour + return Math.ceil(diff / 60) + '分钟前' + } else if (diff < 3600 * 24) { + return Math.ceil(diff / 3600) + '小时前' + } else if (diff < 3600 * 24 * 2) { + return '1天前' + } + if (option) { + return parseTime(time, option) + } else { + return ( + d.getMonth() + + 1 + + '月' + + d.getDate() + + '日' + + d.getHours() + + '时' + + d.getMinutes() + + '分' + ) + } +} + +/** + * @param {string} url + * @returns {Object} + */ +export function param2Obj(url) { + const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ') + if (!search) { + return {} + } + const obj = {} + const searchArr = search.split('&') + searchArr.forEach(v => { + const index = v.indexOf('=') + if (index !== -1) { + const name = v.substring(0, index) + const val = v.substring(index + 1, v.length) + obj[name] = val + } + }) + return obj +} diff --git a/vue-admin-template-master/src/utils/request.js b/vue-admin-template-master/src/utils/request.js new file mode 100644 index 0000000..00591e0 --- /dev/null +++ b/vue-admin-template-master/src/utils/request.js @@ -0,0 +1,90 @@ +import axios from 'axios' +import { MessageBox, Message } from 'element-ui' +import store from '@/store' +import { getToken,getKey } from '@/utils/auth' + +// create an axios instance +const service = axios.create({ + baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url + // withCredentials: true, // send cookies when cross-domain requests + timeout: 5000 // request timeout +}) + +// request interceptor +service.interceptors.request.use( + config => { + // do something before request is sent + + if (store.getters.token) { + // let each request carry token + // ['X-Token'] is a custom headers key + // please modify it according to the actual situation + config.headers['user-token'] = getToken() + config.headers['user-key'] = getKey() + } + return config + }, + error => { + // do something with request error + console.log(error) // for debug + return Promise.reject(error) + } +) + +// response interceptor +service.interceptors.response.use( + /** + * If you want to get http information such as headers or status + * Please return response => response + */ + + /** + * Determine the request status by custom code + * Here is just an example + * You can also judge the status by HTTP Status Code + */ + response => { + const res = response.data + + // if the custom code is not 20000, it is judged as an error. + if (res.code !== 0) { + Message({ + message: res.msg || 'Error', + type: 'error', + duration: 5 * 1000 + }) + if(res.data.code === 3){ + store.commit('user/loginOut') + + + } + // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired; + if (res.code === 50008 || res.code === 50012 || res.code === 50014) { + // to re-login + MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', { + confirmButtonText: 'Re-Login', + cancelButtonText: 'Cancel', + type: 'warning' + }).then(() => { + store.dispatch('user/resetToken').then(() => { + location.reload() + }) + }) + } + return Promise.reject(new Error(res.msg || 'Error')) + } else { + return res + } + }, + error => { + console.log('err' + error) // for debug + Message({ + message: error.msg, + type: 'error', + duration: 5 * 1000 + }) + return Promise.reject(error) + } +) + +export default service diff --git a/vue-admin-template-master/src/utils/validate.js b/vue-admin-template-master/src/utils/validate.js new file mode 100644 index 0000000..8d962ad --- /dev/null +++ b/vue-admin-template-master/src/utils/validate.js @@ -0,0 +1,20 @@ +/** + * Created by PanJiaChen on 16/11/18. + */ + +/** + * @param {string} path + * @returns {Boolean} + */ +export function isExternal(path) { + return /^(https?:|mailto:|tel:)/.test(path) +} + +/** + * @param {string} str + * @returns {Boolean} + */ +export function validUsername(str) { + const valid_map = ['admin', 'editor'] + return valid_map.indexOf(str.trim()) >= 0 +} diff --git a/vue-admin-template-master/src/views/404.vue b/vue-admin-template-master/src/views/404.vue new file mode 100644 index 0000000..1791f55 --- /dev/null +++ b/vue-admin-template-master/src/views/404.vue @@ -0,0 +1,228 @@ + + + + + diff --git a/vue-admin-template-master/src/views/approval/index.vue b/vue-admin-template-master/src/views/approval/index.vue new file mode 100644 index 0000000..43c4f2c --- /dev/null +++ b/vue-admin-template-master/src/views/approval/index.vue @@ -0,0 +1,67 @@ + + + + + \ No newline at end of file diff --git a/vue-admin-template-master/src/views/dashboard/index copy 2.vue b/vue-admin-template-master/src/views/dashboard/index copy 2.vue new file mode 100644 index 0000000..3836b07 --- /dev/null +++ b/vue-admin-template-master/src/views/dashboard/index copy 2.vue @@ -0,0 +1,502 @@ + + + + + diff --git a/vue-admin-template-master/src/views/dashboard/index copy.vue b/vue-admin-template-master/src/views/dashboard/index copy.vue new file mode 100644 index 0000000..0d0f2a4 --- /dev/null +++ b/vue-admin-template-master/src/views/dashboard/index copy.vue @@ -0,0 +1,87 @@ + + + + + diff --git a/vue-admin-template-master/src/views/dashboard/index.vue b/vue-admin-template-master/src/views/dashboard/index.vue new file mode 100644 index 0000000..3767107 --- /dev/null +++ b/vue-admin-template-master/src/views/dashboard/index.vue @@ -0,0 +1,517 @@ + + + + + diff --git a/vue-admin-template-master/src/views/form/index.vue b/vue-admin-template-master/src/views/form/index.vue new file mode 100644 index 0000000..f4d66d3 --- /dev/null +++ b/vue-admin-template-master/src/views/form/index.vue @@ -0,0 +1,85 @@ + + + + + + diff --git a/vue-admin-template-master/src/views/index.vue b/vue-admin-template-master/src/views/index.vue new file mode 100644 index 0000000..1f7b032 --- /dev/null +++ b/vue-admin-template-master/src/views/index.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/vue-admin-template-master/src/views/login/index copy.vue b/vue-admin-template-master/src/views/login/index copy.vue new file mode 100644 index 0000000..1db2464 --- /dev/null +++ b/vue-admin-template-master/src/views/login/index copy.vue @@ -0,0 +1,237 @@ + + + + + + + diff --git a/vue-admin-template-master/src/views/login/index.vue b/vue-admin-template-master/src/views/login/index.vue new file mode 100644 index 0000000..d5adb08 --- /dev/null +++ b/vue-admin-template-master/src/views/login/index.vue @@ -0,0 +1,318 @@ + + + + + + + diff --git a/vue-admin-template-master/src/views/nested/menu1/index.vue b/vue-admin-template-master/src/views/nested/menu1/index.vue new file mode 100644 index 0000000..30cb670 --- /dev/null +++ b/vue-admin-template-master/src/views/nested/menu1/index.vue @@ -0,0 +1,7 @@ + diff --git a/vue-admin-template-master/src/views/nested/menu1/menu1-1/index.vue b/vue-admin-template-master/src/views/nested/menu1/menu1-1/index.vue new file mode 100644 index 0000000..27e173a --- /dev/null +++ b/vue-admin-template-master/src/views/nested/menu1/menu1-1/index.vue @@ -0,0 +1,7 @@ + diff --git a/vue-admin-template-master/src/views/nested/menu1/menu1-2/index.vue b/vue-admin-template-master/src/views/nested/menu1/menu1-2/index.vue new file mode 100644 index 0000000..0c86276 --- /dev/null +++ b/vue-admin-template-master/src/views/nested/menu1/menu1-2/index.vue @@ -0,0 +1,7 @@ + diff --git a/vue-admin-template-master/src/views/nested/menu1/menu1-2/menu1-2-1/index.vue b/vue-admin-template-master/src/views/nested/menu1/menu1-2/menu1-2-1/index.vue new file mode 100644 index 0000000..f87d88f --- /dev/null +++ b/vue-admin-template-master/src/views/nested/menu1/menu1-2/menu1-2-1/index.vue @@ -0,0 +1,5 @@ + diff --git a/vue-admin-template-master/src/views/nested/menu1/menu1-2/menu1-2-2/index.vue b/vue-admin-template-master/src/views/nested/menu1/menu1-2/menu1-2-2/index.vue new file mode 100644 index 0000000..d88789f --- /dev/null +++ b/vue-admin-template-master/src/views/nested/menu1/menu1-2/menu1-2-2/index.vue @@ -0,0 +1,5 @@ + diff --git a/vue-admin-template-master/src/views/nested/menu1/menu1-3/index.vue b/vue-admin-template-master/src/views/nested/menu1/menu1-3/index.vue new file mode 100644 index 0000000..f7cd073 --- /dev/null +++ b/vue-admin-template-master/src/views/nested/menu1/menu1-3/index.vue @@ -0,0 +1,5 @@ + diff --git a/vue-admin-template-master/src/views/nested/menu2/index.vue b/vue-admin-template-master/src/views/nested/menu2/index.vue new file mode 100644 index 0000000..19dd48f --- /dev/null +++ b/vue-admin-template-master/src/views/nested/menu2/index.vue @@ -0,0 +1,5 @@ + diff --git a/vue-admin-template-master/src/views/record/details.vue b/vue-admin-template-master/src/views/record/details.vue new file mode 100644 index 0000000..0fd1550 --- /dev/null +++ b/vue-admin-template-master/src/views/record/details.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/vue-admin-template-master/src/views/record/index.vue b/vue-admin-template-master/src/views/record/index.vue new file mode 100644 index 0000000..c15ca71 --- /dev/null +++ b/vue-admin-template-master/src/views/record/index.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/vue-admin-template-master/src/views/table/index.vue b/vue-admin-template-master/src/views/table/index.vue new file mode 100644 index 0000000..a1ed847 --- /dev/null +++ b/vue-admin-template-master/src/views/table/index.vue @@ -0,0 +1,79 @@ + + + diff --git a/vue-admin-template-master/src/views/tree/index.vue b/vue-admin-template-master/src/views/tree/index.vue new file mode 100644 index 0000000..89c6b01 --- /dev/null +++ b/vue-admin-template-master/src/views/tree/index.vue @@ -0,0 +1,78 @@ + + + + diff --git a/vue-admin-template-master/tests/unit/.eslintrc.js b/vue-admin-template-master/tests/unit/.eslintrc.js new file mode 100644 index 0000000..958d51b --- /dev/null +++ b/vue-admin-template-master/tests/unit/.eslintrc.js @@ -0,0 +1,5 @@ +module.exports = { + env: { + jest: true + } +} diff --git a/vue-admin-template-master/tests/unit/components/Breadcrumb.spec.js b/vue-admin-template-master/tests/unit/components/Breadcrumb.spec.js new file mode 100644 index 0000000..1d94c8f --- /dev/null +++ b/vue-admin-template-master/tests/unit/components/Breadcrumb.spec.js @@ -0,0 +1,98 @@ +import { mount, createLocalVue } from '@vue/test-utils' +import VueRouter from 'vue-router' +import ElementUI from 'element-ui' +import Breadcrumb from '@/components/Breadcrumb/index.vue' + +const localVue = createLocalVue() +localVue.use(VueRouter) +localVue.use(ElementUI) + +const routes = [ + { + path: '/', + name: 'home', + children: [{ + path: 'dashboard', + name: 'dashboard' + }] + }, + { + path: '/menu', + name: 'menu', + children: [{ + path: 'menu1', + name: 'menu1', + meta: { title: 'menu1' }, + children: [{ + path: 'menu1-1', + name: 'menu1-1', + meta: { title: 'menu1-1' } + }, + { + path: 'menu1-2', + name: 'menu1-2', + redirect: 'noredirect', + meta: { title: 'menu1-2' }, + children: [{ + path: 'menu1-2-1', + name: 'menu1-2-1', + meta: { title: 'menu1-2-1' } + }, + { + path: 'menu1-2-2', + name: 'menu1-2-2' + }] + }] + }] + }] + +const router = new VueRouter({ + routes +}) + +describe('Breadcrumb.vue', () => { + const wrapper = mount(Breadcrumb, { + localVue, + router + }) + it('dashboard', () => { + router.push('/dashboard') + const len = wrapper.findAll('.el-breadcrumb__inner').length + expect(len).toBe(1) + }) + it('normal route', () => { + router.push('/menu/menu1') + const len = wrapper.findAll('.el-breadcrumb__inner').length + expect(len).toBe(2) + }) + it('nested route', () => { + router.push('/menu/menu1/menu1-2/menu1-2-1') + const len = wrapper.findAll('.el-breadcrumb__inner').length + expect(len).toBe(4) + }) + it('no meta.title', () => { + router.push('/menu/menu1/menu1-2/menu1-2-2') + const len = wrapper.findAll('.el-breadcrumb__inner').length + expect(len).toBe(3) + }) + // it('click link', () => { + // router.push('/menu/menu1/menu1-2/menu1-2-2') + // const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner') + // const second = breadcrumbArray.at(1) + // console.log(breadcrumbArray) + // const href = second.find('a').attributes().href + // expect(href).toBe('#/menu/menu1') + // }) + // it('noRedirect', () => { + // router.push('/menu/menu1/menu1-2/menu1-2-1') + // const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner') + // const redirectBreadcrumb = breadcrumbArray.at(2) + // expect(redirectBreadcrumb.contains('a')).toBe(false) + // }) + it('last breadcrumb', () => { + router.push('/menu/menu1/menu1-2/menu1-2-1') + const breadcrumbArray = wrapper.findAll('.el-breadcrumb__inner') + const redirectBreadcrumb = breadcrumbArray.at(3) + expect(redirectBreadcrumb.contains('a')).toBe(false) + }) +}) diff --git a/vue-admin-template-master/tests/unit/components/Hamburger.spec.js b/vue-admin-template-master/tests/unit/components/Hamburger.spec.js new file mode 100644 index 0000000..01ea303 --- /dev/null +++ b/vue-admin-template-master/tests/unit/components/Hamburger.spec.js @@ -0,0 +1,18 @@ +import { shallowMount } from '@vue/test-utils' +import Hamburger from '@/components/Hamburger/index.vue' +describe('Hamburger.vue', () => { + it('toggle click', () => { + const wrapper = shallowMount(Hamburger) + const mockFn = jest.fn() + wrapper.vm.$on('toggleClick', mockFn) + wrapper.find('.hamburger').trigger('click') + expect(mockFn).toBeCalled() + }) + it('prop isActive', () => { + const wrapper = shallowMount(Hamburger) + wrapper.setProps({ isActive: true }) + expect(wrapper.contains('.is-active')).toBe(true) + wrapper.setProps({ isActive: false }) + expect(wrapper.contains('.is-active')).toBe(false) + }) +}) diff --git a/vue-admin-template-master/tests/unit/components/SvgIcon.spec.js b/vue-admin-template-master/tests/unit/components/SvgIcon.spec.js new file mode 100644 index 0000000..31467a9 --- /dev/null +++ b/vue-admin-template-master/tests/unit/components/SvgIcon.spec.js @@ -0,0 +1,22 @@ +import { shallowMount } from '@vue/test-utils' +import SvgIcon from '@/components/SvgIcon/index.vue' +describe('SvgIcon.vue', () => { + it('iconClass', () => { + const wrapper = shallowMount(SvgIcon, { + propsData: { + iconClass: 'test' + } + }) + expect(wrapper.find('use').attributes().href).toBe('#icon-test') + }) + it('className', () => { + const wrapper = shallowMount(SvgIcon, { + propsData: { + iconClass: 'test' + } + }) + expect(wrapper.classes().length).toBe(1) + wrapper.setProps({ className: 'test' }) + expect(wrapper.classes().includes('test')).toBe(true) + }) +}) diff --git a/vue-admin-template-master/tests/unit/utils/formatTime.spec.js b/vue-admin-template-master/tests/unit/utils/formatTime.spec.js new file mode 100644 index 0000000..24e165b --- /dev/null +++ b/vue-admin-template-master/tests/unit/utils/formatTime.spec.js @@ -0,0 +1,30 @@ +import { formatTime } from '@/utils/index.js' + +describe('Utils:formatTime', () => { + const d = new Date('2018-07-13 17:54:01') // "2018-07-13 17:54:01" + const retrofit = 5 * 1000 + + it('ten digits timestamp', () => { + expect(formatTime((d / 1000).toFixed(0))).toBe('7月13日17时54分') + }) + it('test now', () => { + expect(formatTime(+new Date() - 1)).toBe('刚刚') + }) + it('less two minute', () => { + expect(formatTime(+new Date() - 60 * 2 * 1000 + retrofit)).toBe('2分钟前') + }) + it('less two hour', () => { + expect(formatTime(+new Date() - 60 * 60 * 2 * 1000 + retrofit)).toBe('2小时前') + }) + it('less one day', () => { + expect(formatTime(+new Date() - 60 * 60 * 24 * 1 * 1000)).toBe('1天前') + }) + it('more than one day', () => { + expect(formatTime(d)).toBe('7月13日17时54分') + }) + it('format', () => { + expect(formatTime(d, '{y}-{m}-{d} {h}:{i}')).toBe('2018-07-13 17:54') + expect(formatTime(d, '{y}-{m}-{d}')).toBe('2018-07-13') + expect(formatTime(d, '{y}/{m}/{d} {h}-{i}')).toBe('2018/07/13 17-54') + }) +}) diff --git a/vue-admin-template-master/tests/unit/utils/param2Obj.spec.js b/vue-admin-template-master/tests/unit/utils/param2Obj.spec.js new file mode 100644 index 0000000..e106ed8 --- /dev/null +++ b/vue-admin-template-master/tests/unit/utils/param2Obj.spec.js @@ -0,0 +1,14 @@ +import { param2Obj } from '@/utils/index.js' +describe('Utils:param2Obj', () => { + const url = 'https://github.com/PanJiaChen/vue-element-admin?name=bill&age=29&sex=1&field=dGVzdA==&key=%E6%B5%8B%E8%AF%95' + + it('param2Obj test', () => { + expect(param2Obj(url)).toEqual({ + name: 'bill', + age: '29', + sex: '1', + field: window.btoa('test'), + key: '测试' + }) + }) +}) diff --git a/vue-admin-template-master/tests/unit/utils/parseTime.spec.js b/vue-admin-template-master/tests/unit/utils/parseTime.spec.js new file mode 100644 index 0000000..56045af --- /dev/null +++ b/vue-admin-template-master/tests/unit/utils/parseTime.spec.js @@ -0,0 +1,35 @@ +import { parseTime } from '@/utils/index.js' + +describe('Utils:parseTime', () => { + const d = new Date('2018-07-13 17:54:01') // "2018-07-13 17:54:01" + it('timestamp', () => { + expect(parseTime(d)).toBe('2018-07-13 17:54:01') + }) + it('timestamp string', () => { + expect(parseTime((d + ''))).toBe('2018-07-13 17:54:01') + }) + it('ten digits timestamp', () => { + expect(parseTime((d / 1000).toFixed(0))).toBe('2018-07-13 17:54:01') + }) + it('new Date', () => { + expect(parseTime(new Date(d))).toBe('2018-07-13 17:54:01') + }) + it('format', () => { + expect(parseTime(d, '{y}-{m}-{d} {h}:{i}')).toBe('2018-07-13 17:54') + expect(parseTime(d, '{y}-{m}-{d}')).toBe('2018-07-13') + expect(parseTime(d, '{y}/{m}/{d} {h}-{i}')).toBe('2018/07/13 17-54') + }) + it('get the day of the week', () => { + expect(parseTime(d, '{a}')).toBe('五') // 星期五 + }) + it('get the day of the week', () => { + expect(parseTime(+d + 1000 * 60 * 60 * 24 * 2, '{a}')).toBe('日') // 星期日 + }) + it('empty argument', () => { + expect(parseTime()).toBeNull() + }) + + it('null', () => { + expect(parseTime(null)).toBeNull() + }) +}) diff --git a/vue-admin-template-master/tests/unit/utils/validate.spec.js b/vue-admin-template-master/tests/unit/utils/validate.spec.js new file mode 100644 index 0000000..f774905 --- /dev/null +++ b/vue-admin-template-master/tests/unit/utils/validate.spec.js @@ -0,0 +1,17 @@ +import { validUsername, isExternal } from '@/utils/validate.js' + +describe('Utils:validate', () => { + it('validUsername', () => { + expect(validUsername('admin')).toBe(true) + expect(validUsername('editor')).toBe(true) + expect(validUsername('xxxx')).toBe(false) + }) + it('isExternal', () => { + expect(isExternal('https://github.com/PanJiaChen/vue-element-admin')).toBe(true) + expect(isExternal('http://github.com/PanJiaChen/vue-element-admin')).toBe(true) + expect(isExternal('github.com/PanJiaChen/vue-element-admin')).toBe(false) + expect(isExternal('/dashboard')).toBe(false) + expect(isExternal('./dashboard')).toBe(false) + expect(isExternal('dashboard')).toBe(false) + }) +}) diff --git a/vue-admin-template-master/vue.config.js b/vue-admin-template-master/vue.config.js new file mode 100644 index 0000000..fd79dc7 --- /dev/null +++ b/vue-admin-template-master/vue.config.js @@ -0,0 +1,125 @@ +'use strict' +const path = require('path') +const defaultSettings = require('./src/settings.js') + +function resolve(dir) { + return path.join(__dirname, dir) +} + +const name = defaultSettings.title || 'vue Admin Template' // page title + +// If your port is set to 80, +// use administrator privileges to execute the command line. +// For example, Mac: sudo npm run +// You can change the port by the following methods: +// port = 9528 npm run dev OR npm run dev --port = 9528 +const port = process.env.port || process.env.npm_config_port || 9528 // dev port + +// All configuration item explanations can be find in https://cli.vuejs.org/config/ +module.exports = { + /** + * You will need to set publicPath if you plan to deploy your site under a sub path, + * for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/, + * then publicPath should be set to "/bar/". + * In most cases please use '/' !!! + * Detail: https://cli.vuejs.org/config/#publicpath + */ + publicPath: '/', + outputDir: 'dist', + assetsDir: 'static', + lintOnSave: false, + // lintOnSave: process.env.NODE_ENV === 'development', + productionSourceMap: false, + devServer: { + disableHostCheck: true, + port: port, + open: true, + overlay: { + warnings: false, + errors: true + }, + before: require('./mock/mock-server.js') + }, + configureWebpack: { + // provide the app's title in webpack's name field, so that + // it can be accessed in index.html to inject the correct title. + name: name, + resolve: { + alias: { + '@': resolve('src') + } + } + }, + chainWebpack(config) { + // it can improve the speed of the first screen, it is recommended to turn on preload + config.plugin('preload').tap(() => [ + { + rel: 'preload', + // to ignore runtime.js + // https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/cli-service/lib/config/app.js#L171 + fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/], + include: 'initial' + } + ]) + + // when there are many pages, it will cause too many meaningless requests + config.plugins.delete('prefetch') + + // set svg-sprite-loader + config.module + .rule('svg') + .exclude.add(resolve('src/icons')) + .end() + config.module + .rule('icons') + .test(/\.svg$/) + .include.add(resolve('src/icons')) + .end() + .use('svg-sprite-loader') + .loader('svg-sprite-loader') + .options({ + symbolId: 'icon-[name]' + }) + .end() + + config + .when(process.env.NODE_ENV !== 'development', + config => { + config + .plugin('ScriptExtHtmlWebpackPlugin') + .after('html') + .use('script-ext-html-webpack-plugin', [{ + // `runtime` must same as runtimeChunk name. default is `runtime` + inline: /runtime\..*\.js$/ + }]) + .end() + config + .optimization.splitChunks({ + chunks: 'all', + cacheGroups: { + libs: { + name: 'chunk-libs', + test: /[\\/]node_modules[\\/]/, + priority: 10, + chunks: 'initial' // only package third parties that are initially dependent + }, + elementUI: { + name: 'chunk-elementUI', // split elementUI into a single package + priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app + test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm + }, + commons: { + name: 'chunk-commons', + test: resolve('src/components'), // can customize your rules + minChunks: 3, // minimum common number + priority: 5, + reuseExistingChunk: true + } + } + }) + // https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk + config.optimization.runtimeChunk('single') + } + ) + } +}