diff --git a/qd/.editorconfig b/qd/.editorconfig new file mode 100644 index 0000000..3454886 --- /dev/null +++ b/qd/.editorconfig @@ -0,0 +1,14 @@ +# https://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/qd/.env.development b/qd/.env.development new file mode 100644 index 0000000..53e4a34 --- /dev/null +++ b/qd/.env.development @@ -0,0 +1,11 @@ +ENV = 'development' + +# 接口地址 +VUE_APP_BASE_API = 'http://127.0.0.1:8010' +VUE_APP_WS_API = 'ws://127.0.0.1:8010' + +#VUE_APP_BASE_API = 'http://192.168.81.251:8010' +#VUE_APP_WS_API = 'ws://192.168.81.251:8010' + +# 是否启用 babel-plugin-dynamic-import-node插件 +VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/qd/.env.production b/qd/.env.production new file mode 100644 index 0000000..83b8dae --- /dev/null +++ b/qd/.env.production @@ -0,0 +1,9 @@ +ENV = 'production' + +# 如果使用 Nginx 代理后端接口,那么此处需要改为 '/',文件查看 Docker 部署篇,Nginx 配置 +# 接口地址,注意协议,如果你没有配置 ssl,需要将 https 改为 http +VUE_APP_BASE_API = 'http://192.168.81.122:8010' +#VUE_APP_BASE_API = 'http://127.0.0.1:8010' +# 如果接口是 http 形式, wss 需要改为 ws +VUE_APP_WS_API = 'ws://192.168.81.122:8010' +#VUE_APP_WS_API = 'ws://127.0.0.1:8010' diff --git a/qd/.eslintignore b/qd/.eslintignore new file mode 100644 index 0000000..e6529fc --- /dev/null +++ b/qd/.eslintignore @@ -0,0 +1,4 @@ +build/*.js +src/assets +public +dist diff --git a/qd/.eslintrc.js b/qd/.eslintrc.js new file mode 100644 index 0000000..c977505 --- /dev/null +++ b/qd/.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/qd/.gitignore b/qd/.gitignore new file mode 100644 index 0000000..719f9cd --- /dev/null +++ b/qd/.gitignore @@ -0,0 +1,24 @@ +.DS_Store +node_modules/ +dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +**/*.log + +tests/**/coverage/ +tests/e2e/reports +selenium-debug.log + +# Editor directories and files +.idea +.vscode +*.suo +*.ntvs* +*.njsproj +*.sln +*.local + +package-lock.json +yarn.lock +/dist.rar diff --git a/qd/.travis.yml b/qd/.travis.yml new file mode 100644 index 0000000..f4be7a0 --- /dev/null +++ b/qd/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: 10 +script: npm run test +notifications: + email: false diff --git a/qd/LICENSE b/qd/LICENSE new file mode 100644 index 0000000..78a36cb --- /dev/null +++ b/qd/LICENSE @@ -0,0 +1,191 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "{}" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included on +the same "printed page" as the copyright notice for easier identification within +third-party archives. + + Copyright 2019 Zheng Jie + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/qd/README.en.md b/qd/README.en.md new file mode 100644 index 0000000..0f0e0a9 --- /dev/null +++ b/qd/README.en.md @@ -0,0 +1,36 @@ +# nlacs_web + +#### Description +{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**} + +#### Software Architecture +Software architecture description + +#### Installation + +1. xxxx +2. xxxx +3. xxxx + +#### Instructions + +1. xxxx +2. xxxx +3. xxxx + +#### Contribution + +1. Fork the repository +2. Create Feat_xxx branch +3. Commit your code +4. Create Pull Request + + +#### Gitee Feature + +1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md +2. Gitee blog [blog.gitee.com](https://blog.gitee.com) +3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) +4. The most valuable open source project [GVP](https://gitee.com/gvp) +5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) +6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/qd/README.md b/qd/README.md new file mode 100644 index 0000000..c87138d --- /dev/null +++ b/qd/README.md @@ -0,0 +1,2 @@ +# sh_wcs_web + diff --git a/qd/babel.config.js b/qd/babel.config.js new file mode 100644 index 0000000..804632a --- /dev/null +++ b/qd/babel.config.js @@ -0,0 +1,11 @@ +const plugins = ['@vue/babel-plugin-transform-vue-jsx'] +// 生产环境移除console +if (process.env.NODE_ENV === 'production') { + plugins.push('transform-remove-console') +} +module.exports = { + plugins: plugins, + presets: [ + '@vue/app' + ] +} diff --git a/qd/jest.config.js b/qd/jest.config.js new file mode 100644 index 0000000..143cdc8 --- /dev/null +++ b/qd/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://localhost/' +} diff --git a/qd/nsp b/qd/nsp new file mode 100644 index 0000000..e69de29 diff --git a/qd/package.json b/qd/package.json new file mode 100644 index 0000000..6d2b7c5 --- /dev/null +++ b/qd/package.json @@ -0,0 +1,122 @@ +{ + "name": "eladmin-web", + "version": "2.6.0", + "description": "EL-ADMIN 前端源码", + "author": "Zheng Jie", + "license": "Apache-2.0", + "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", + "lint": "eslint --ext .js,.vue src", + "test:unit": "jest --clearCache && vue-cli-service test:unit", + "svgo": "svgo -f src/assets/icons/svg --config=src/assets/icons/svgo.yml", + "new": "plop" + }, + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "src/**/*.{js,vue}": [ + "eslint --fix", + "git add" + ] + }, + "repository": { + "type": "git", + "url": "https://github.com/elunez/eladmin-web.git" + }, + "bugs": { + "url": "https://github.com/elunez/eladmin/issues" + }, + "dependencies": { + "@riophae/vue-treeselect": "0.4.0", + "af-table-column": "^1.0.3", + "axios": "0.18.1", + "clipboard": "2.0.4", + "codemirror": "^5.49.2", + "connect": "3.6.6", + "echarts": "^4.2.1", + "echarts-gl": "^1.1.1", + "echarts-wordcloud": "^1.1.3", + "element-ui": "^2.13.2", + "file-saver": "^1.3.8", + "font-awesome": "^4.7.0", + "fuse.js": "3.4.4", + "jquery": "^3.6.0", + "js-beautify": "^1.10.2", + "js-cookie": "2.2.0", + "jsencrypt": "^3.0.0-rc.1", + "jszip": "3.1.5", + "mavon-editor": "^2.9.0", + "normalize.css": "7.0.0", + "nprogress": "0.2.0", + "path-to-regexp": "2.4.0", + "qs": "^6.9.1", + "screenfull": "4.2.0", + "sortablejs": "1.8.4", + "vue": "2.6.10", + "vue-count-to": "1.0.13", + "vue-cropper": "0.4.9", + "vue-echarts": "^5.0.0-beta.0", + "vue-highlightjs": "^1.3.3", + "vue-image-crop-upload": "^2.5.0", + "vue-router": "3.0.2", + "vue-seamless-scroll": "^1.1.23", + "vue-splitpane": "1.0.4", + "vuedraggable": "2.20.0", + "vuex": "3.1.0", + "vxe-table": "^3.3.10", + "wangeditor": "^3.1.1", + "xe-ajax": "^4.0.5", + "xe-utils": "^3.3.1", + "xlsx": "^0.14.5" + }, + "devDependencies": { + "@babel/core": "7.0.0", + "@babel/parser": "^7.7.4", + "@babel/register": "7.0.0", + "@vue/babel-plugin-transform-vue-jsx": "^1.2.1", + "@vue/cli-plugin-babel": "3.5.3", + "@vue/cli-plugin-eslint": "^3.9.1", + "@vue/cli-plugin-unit-jest": "3.5.3", + "@vue/cli-service": "3.5.3", + "@vue/test-utils": "1.0.0-beta.29", + "autoprefixer": "^9.5.1", + "babel-core": "7.0.0-bridge.0", + "babel-eslint": "10.0.1", + "babel-jest": "23.6.0", + "babel-plugin-dynamic-import-node": "2.3.0", + "babel-plugin-transform-remove-console": "^6.9.4", + "chalk": "2.4.2", + "chokidar": "2.1.5", + "connect": "3.6.6", + "eslint": "5.15.3", + "eslint-plugin-vue": "5.2.2", + "html-webpack-plugin": "3.2.0", + "http-proxy-middleware": "^0.19.1", + "husky": "1.3.1", + "lint-staged": "8.1.5", + "plop": "2.3.0", + "runjs": "^4.3.2", + "sass": "^1.26.10", + "sass-loader": "^7.1.0", + "script-ext-html-webpack-plugin": "2.1.3", + "script-loader": "0.7.2", + "serve-static": "^1.13.2", + "svg-sprite-loader": "4.1.3", + "svgo": "1.2.0", + "vue-template-compiler": "2.6.10" + }, + "engines": { + "node": ">=8.9", + "npm": ">= 3.0.0" + }, + "browserslist": [ + "> 1%", + "last 2 versions" + ] +} diff --git a/qd/plopfile.js b/qd/plopfile.js new file mode 100644 index 0000000..9f3147e --- /dev/null +++ b/qd/plopfile.js @@ -0,0 +1,7 @@ +const viewGenerator = require('./plop-templates/view/prompt') +const componentGenerator = require('./plop-templates/component/prompt') + +module.exports = function(plop) { + plop.setGenerator('view', viewGenerator) + plop.setGenerator('component', componentGenerator) +} diff --git a/qd/postcss.config.js b/qd/postcss.config.js new file mode 100644 index 0000000..961986e --- /dev/null +++ b/qd/postcss.config.js @@ -0,0 +1,5 @@ +module.exports = { + plugins: { + autoprefixer: {} + } +} diff --git a/qd/public/config.js b/qd/public/config.js new file mode 100644 index 0000000..c7b9835 --- /dev/null +++ b/qd/public/config.js @@ -0,0 +1,10 @@ +window.g = { + dev: { + VUE_APP_BASE_API: '/' + }, + prod: { + VUE_APP_BASE_API: 'http://127.0.0.1:8010' + + } + +} diff --git a/qd/public/favicon.ico b/qd/public/favicon.ico new file mode 100644 index 0000000..fcb6999 Binary files /dev/null and b/qd/public/favicon.ico differ diff --git a/qd/public/index.html b/qd/public/index.html new file mode 100644 index 0000000..9773055 --- /dev/null +++ b/qd/public/index.html @@ -0,0 +1,16 @@ + + + + + + + + + + <%= webpackConfig.name %> + + +
+ + + diff --git a/qd/src/App.vue b/qd/src/App.vue new file mode 100644 index 0000000..ec9032c --- /dev/null +++ b/qd/src/App.vue @@ -0,0 +1,11 @@ + + + diff --git a/qd/src/api/Address.js b/qd/src/api/Address.js new file mode 100644 index 0000000..381c96c --- /dev/null +++ b/qd/src/api/Address.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/Address', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/Address/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/Address', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/acs/config/deviceAssigned.js b/qd/src/api/acs/config/deviceAssigned.js new file mode 100644 index 0000000..10c9f0b --- /dev/null +++ b/qd/src/api/acs/config/deviceAssigned.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/deviceAssigned', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/deviceAssigned/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/deviceAssigned', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/acs/device/acsDeviceErpmapping.js b/qd/src/api/acs/device/acsDeviceErpmapping.js new file mode 100644 index 0000000..49ca0cd --- /dev/null +++ b/qd/src/api/acs/device/acsDeviceErpmapping.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/acsDeviceErpmapping', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/acsDeviceErpmapping/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/acsDeviceErpmapping', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/acs/device/device.js b/qd/src/api/acs/device/device.js new file mode 100644 index 0000000..49433cc --- /dev/null +++ b/qd/src/api/acs/device/device.js @@ -0,0 +1,217 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/device', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/device/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/device', + method: 'put', + data + }) +} + +export function selectDeviceList() { + return request({ + url: 'api/device/selectList', + method: 'get' + }) +} + +export function selectConDeviceList() { + return request({ + url: 'api/device/selectConveyorList', + method: 'get' + }) +} + +export function selectDeviceListByRegion(region) { + return request({ + url: 'api/device/region/' + region, + method: 'get' + }) +} + +export function selectDeviceListOne() { + return request({ + url: 'api/device/selectListOne', + method: 'get' + }) +} +export function selectDeviceListTwo() { + return request({ + url: 'api/device/selectListTwo', + method: 'get' + }) +} +export function selectDeviceListThree() { + return request({ + url: 'api/device/selectListThree', + method: 'get' + }) +} + +export function selectDeviceDevicerInfo(status) { + return request({ + url: 'api/device/selectDeviceDevicerInfo/' + status, + method: 'get' + }) +} + +export function changeDeviceStatus(data) { + return request({ + url: 'api/device/changeDeviceStatus', + method: 'post', + data + }) +} + +export function changeFenceStatus(data) { + return request({ + url: 'api/device/changeFenceStatus', + method: 'post', + data + }) +} + +export function saveBarcode(data) { + return request({ + url: 'api/device/updateBarcode', + method: 'post', + data + }) +} + +export function callAgv(data) { + return request({ + url: 'api/device/callAgv', + method: 'post', + data + }) +} + +export function addMaterial(data) { + return request({ + url: 'api/device/addMaterial', + method: 'post', + data + }) +} + +export function responseAgv(data) { + return request({ + url: 'api/device/responseAgv', + method: 'post', + data + }) +} + +export function autoCreateTask(data) { + return request({ + url: 'api/device/autoCreateTask', + method: 'post', + data + }) +} + +export function cleanTask(data) { + return request({ + url: 'api/device/cleanTask', + method: 'post', + data + }) +} + +export function cleanMaterial(data) { + return request({ + url: 'api/device/cleanMaterial', + method: 'post', + data + }) +} + +export function queryStorageExtra(storage_code) { + return request({ + url: 'api/device/queryStorageExtra/' + storage_code, + method: 'get' + }) +} + +export function reload() { + return request({ + url: 'api/device/reload', + method: 'get' + }) +} + +export function cleans1(data) { + return request({ + url: 'api/device/cleans1', + method: 'post', + data + }) +} + +export function cleans2(data) { + return request({ + url: 'api/device/cleans2', + method: 'post', + data + }) +} + +export function enterSite1(data) { + return request({ + url: 'api/device/enterSite1', + method: 'post', + data + }) +} + +export function enterSite2(data) { + return request({ + url: 'api/device/enterSite2', + method: 'post', + data + }) +} + +export function cleans3(data) { + return request({ + url: 'api/device/cleans3', + method: 'post', + data + }) +} + +export function selectAGVList() { + return request({ + url: 'api/device/selectAGVList', + method: 'get' + }) +} + +export function agvTaskType(data) { + return request({ + url: 'api/device/agvTaskType', + method: 'post', + data + }) +} + +export default { add, edit, del, selectDeviceList, selectDeviceListByRegion, callAgv, responseAgv, selectDeviceDevicerInfo, autoCreateTask, + changeDeviceStatus, cleanTask, queryStorageExtra, selectConDeviceList, saveBarcode, selectDeviceListOne, selectDeviceListTwo, selectDeviceListThree, + addMaterial, cleanMaterial, changeFenceStatus,reload, cleans1, cleans2, enterSite1, enterSite2, cleans3, selectAGVList, agvTaskType} diff --git a/qd/src/api/acs/device/deviceAccuracyLog.js b/qd/src/api/acs/device/deviceAccuracyLog.js new file mode 100644 index 0000000..0a1ad22 --- /dev/null +++ b/qd/src/api/acs/device/deviceAccuracyLog.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { +return request({ +url: 'api/deviceAccuracyLog', +method: 'post', +data +}) +} + +export function del(ids) { +return request({ +url: 'api/deviceAccuracyLog/', +method: 'delete', +data: ids +}) +} + +export function edit(data) { +return request({ +url: 'api/deviceAccuracyLog', +method: 'put', +data +}) +} + +export default { add, edit, del } diff --git a/qd/src/api/acs/device/deviceDbitem.js b/qd/src/api/acs/device/deviceDbitem.js new file mode 100644 index 0000000..e8ef45c --- /dev/null +++ b/qd/src/api/acs/device/deviceDbitem.js @@ -0,0 +1,35 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/deviceDbitem', + method: 'post', + data + }) +} + +export function del(ids) { + const data = { + id: 1, + name2: '张三', + info: { + id: 999, + str: 'str111' + } + } + return request({ + url: 'api/deviceDbitem/getUserJson', + method: 'get', + data: data + }) +} + +export function edit(data) { + return request({ + url: 'api/deviceDbitem', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/acs/device/driverConfig.js b/qd/src/api/acs/device/driverConfig.js new file mode 100644 index 0000000..c470ee1 --- /dev/null +++ b/qd/src/api/acs/device/driverConfig.js @@ -0,0 +1,66 @@ +import request from '@/utils/request' + +export function get(device_code) { + return request({ + url: 'api/device/' + device_code, + method: 'get' + }) +} + +export function queryDriverConfig(device_id, driver_code) { + const data = { + device_id: device_id, + driver_code: driver_code + } + return request({ + url: 'api/device/driverConfig', + data, + method: 'post' + }) +} + +export function selectDriverCodeList(device_code) { + return request({ + url: 'api/device/selectDriverCodeList/' + device_code, + method: 'get' + }) +} + +export function updateConfig(parentForm, form, data1, data2) { + const data = { + parentForm, + form, + data1, + data2 + } + return request({ + url: 'api/device/updateConfig', + data, + method: 'post' + }) +} + +export function testRead(dbItems, opc_id) { + const data = { + dbItems: dbItems, + opc_id: opc_id + } + return request({ + url: 'api/device/testRead', + method: 'post', + data + }) +} + +export function testwrite(dbItems, opc_id) { + const data = { + dbItems: dbItems, + opc_id: opc_id + } + return request({ + url: 'api/device/testWrite', + method: 'post', + data + }) +} + diff --git a/qd/src/api/acs/device/opc.js b/qd/src/api/acs/device/opc.js new file mode 100644 index 0000000..0d9de64 --- /dev/null +++ b/qd/src/api/acs/device/opc.js @@ -0,0 +1,66 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/opc', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/opc/', + method: 'delete', + data: ids + }) +} + +export function selectOpcList() { + return request({ + url: 'api/opc/selectList', + method: 'get' + }) +} + +export function edit(data) { + return request({ + url: 'api/opc', + method: 'put', + data + }) +} + +export function getmeteal(data) { + return request({ + url: 'api/opc/getmeteal', + method: 'post', + data + }) +} + +export function addPLC(data) { + return request({ + url: 'api/opc/addPLC', + method: 'post', + data + }) +} + +export function editPLC(data) { + return request({ + url: 'api/opc/editPLC', + method: 'post', + data + }) +} + +export function delPLC(data) { + return request({ + url: 'api/opc/delPLC', + method: 'post', + data + }) +} + +export default { add, edit, del, selectOpcList, getmeteal, addPLC, delPLC, editPLC } diff --git a/qd/src/api/acs/device/opcPlc.js b/qd/src/api/acs/device/opcPlc.js new file mode 100644 index 0000000..b083e26 --- /dev/null +++ b/qd/src/api/acs/device/opcPlc.js @@ -0,0 +1,41 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/opcPlc', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/opcPlc/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/opcPlc', + method: 'put', + data + }) +} + +export function selectPlcList() { + return request({ + url: 'api/opcPlc/selectList', + method: 'get' + }) +} + +export function selectListByOpcID(opc_uuid) { + return request({ + url: 'api/opcPlc/selectList/' + opc_uuid, + method: 'get' + }) +} + +export default { add, edit, del, selectPlcList, selectListByOpcID } diff --git a/qd/src/api/acs/device/storageCell.js b/qd/src/api/acs/device/storageCell.js new file mode 100644 index 0000000..99d0c46 --- /dev/null +++ b/qd/src/api/acs/device/storageCell.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/storageCell', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/storageCell/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/storageCell', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/acs/instruction/instruction.js b/qd/src/api/acs/instruction/instruction.js new file mode 100644 index 0000000..38169fd --- /dev/null +++ b/qd/src/api/acs/instruction/instruction.js @@ -0,0 +1,66 @@ +import request from '@/utils/request' + + +export function add(data) { + return request({ + url: 'api/instruction', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/instruction/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/instruction', + method: 'put', + data + }) +} + +export function finish(instruction_id) { + return request({ + url: 'api/instruction/finish/' + instruction_id, + method: 'post', + data: instruction_id + }) +} + +export function cancel(instruction_id) { + return request({ + url: 'api/instruction/cancel/' + instruction_id, + method: 'post', + data: instruction_id + }) +} + +export function queryUnFinish() { + return request({ + url: 'api/instruction/unfinish/', + method: 'get' + }) +} + +export function queryByTaskId(task_id) { + return request({ + url: 'api/instruction/queryByTaskId/' + task_id, + method: 'post', + data: task_id + }) +} + +export function reload() { + return request({ + url: 'api/instruction/reload', + method: 'get' + }) +} + +export default { add, edit, del, finish, cancel, queryUnFinish, queryByTaskId,reload } diff --git a/qd/src/api/acs/lucene/log.js b/qd/src/api/acs/lucene/log.js new file mode 100644 index 0000000..0b7ef0a --- /dev/null +++ b/qd/src/api/acs/lucene/log.js @@ -0,0 +1,10 @@ +import request from '@/utils/request' + +export function delAll(id) { + return request({ + url: 'api/lucene/' + id, + method: 'delete' + }) +} + +export default { delAll } diff --git a/qd/src/api/acs/order/order.js b/qd/src/api/acs/order/order.js new file mode 100644 index 0000000..fb47e91 --- /dev/null +++ b/qd/src/api/acs/order/order.js @@ -0,0 +1,34 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/produceshiftorder', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/produceshiftorder/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/produceshiftorder', + method: 'put', + data + }) +} + +export function importExcel(id) { + return request({ + url: 'api/produceshiftorder/importExcel/' + id, + method: 'get' + }) +} + +export default { add, edit, del, importExcel } diff --git a/qd/src/api/acs/route/routeLine.js b/qd/src/api/acs/route/routeLine.js new file mode 100644 index 0000000..afa39c0 --- /dev/null +++ b/qd/src/api/acs/route/routeLine.js @@ -0,0 +1,40 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/routeLine', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/routeLine/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/routeLine', + method: 'put', + data + }) +}export function enabled(data) { + return request({ + url: 'api/routeLine/enabled', + method: 'put', + data + }) +} + +export function reload() { + return request({ + url: 'api/routeLine/reload', + method: 'get' + }) +} + +export default { add, edit, del,enabled,reload } diff --git a/qd/src/api/acs/route/routeLoc.js b/qd/src/api/acs/route/routeLoc.js new file mode 100644 index 0000000..4a5ca87 --- /dev/null +++ b/qd/src/api/acs/route/routeLoc.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/routeLoc', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/routeLoc/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/routeLoc', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/acs/route/routePlan.js b/qd/src/api/acs/route/routePlan.js new file mode 100644 index 0000000..43ee1d6 --- /dev/null +++ b/qd/src/api/acs/route/routePlan.js @@ -0,0 +1,40 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/routePlan', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/routePlan/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/routePlan', + method: 'put', + data + }) +} + +export function selectList() { + return request({ + url: 'api/routePlan/selectList', + method: 'get' + }) +} +export function getRoute(device_code, next_device_code, route_plan_code) { + return request({ + url: '/api/routeLine/getShortPathLines?device_code=' + device_code + '&next_device_code=' + next_device_code + '&route_plan_code=' + route_plan_code, + method: 'post' + }) +} + +export default { add, edit, del, selectList, getRoute } diff --git a/qd/src/api/acs/stage/actor.js b/qd/src/api/acs/stage/actor.js new file mode 100644 index 0000000..bf0d14a --- /dev/null +++ b/qd/src/api/acs/stage/actor.js @@ -0,0 +1,42 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/stageActor', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/stageActor/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/stageActor', + method: 'put', + data + }) +} + +export function saveData(data) { + return request({ + url: 'api/stageActor/saveData', + method: 'post', + data + }) +} + +export function queryStageActor(stage_code) { + return request({ + url: 'api/stageActor/queryStageActor/' + stage_code, + method: 'get' + }) +} + +export default { add, edit, del, saveData, queryStageActor } diff --git a/qd/src/api/acs/stage/stage.js b/qd/src/api/acs/stage/stage.js new file mode 100644 index 0000000..2cb059e --- /dev/null +++ b/qd/src/api/acs/stage/stage.js @@ -0,0 +1,34 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/stage', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/stage/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/stage', + method: 'put', + data + }) +} + +export function selectStageList() { + return request({ + url: 'api/stage/selectList', + method: 'get' + }) +} + +export default { add, edit, del,selectStageList } diff --git a/qd/src/api/acs/stage/stageImage.js b/qd/src/api/acs/stage/stageImage.js new file mode 100644 index 0000000..2dfb67b --- /dev/null +++ b/qd/src/api/acs/stage/stageImage.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/stageImage', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/stageImage/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/stageImage', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/acs/task/task.js b/qd/src/api/acs/task/task.js new file mode 100644 index 0000000..9e9e588 --- /dev/null +++ b/qd/src/api/acs/task/task.js @@ -0,0 +1,124 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/task', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/task/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/task', + method: 'put', + data + }) +} + +export function finish(task_id) { + return request({ + url: 'api/task/finish/' + task_id, + method: 'post', + data: task_id + }) +} + +export function cancel(task_id) { + return request({ + url: 'api/task/cancel/' + task_id, + method: 'post', + data: task_id + }) +} + +export function createInst(task_id) { + return request({ + url: 'api/task/createInst/' + task_id, + method: 'post', + data: task_id + }) +} + +export function reload() { + return request({ + url: 'api/task/reload', + method: 'get' + }) +} + +export function stopTask(data) { + return request({ + url: 'api/task/stopTask', + method: 'post', + data + }) +} + +export function restoreTask(data) { + return request({ + url: 'api/task/restoreTask', + method: 'post', + data + }) +} + +export function createTaskByClick(data) { + return request({ + url: 'api/task/createTaskByClick', + method: 'post', + data + }) +} + +export function queryTaskTreeRecord(data) { + return request({ + url: 'api/task/queryTaskTreeRecord', + method: 'post', + data + }) +} + +export function deviceAskTask(data) { + return request({ + url: 'api/task/deviceAskTask', + method: 'post', + data + }) +} + +export function ordinaryTaskCreate(data) { + return request({ + url: 'api/task/adds', + method: 'post', + data + }) +} + +export function specialTaskCreate(data) { + return request({ + url: 'api/task/addes', + method: 'post', + data + }) +} + +export function hssavetask(data) { + return request({ + url: 'api/task/hssavetask', + method: 'post', + data + }) +} + +export default { add, edit, del, finish, cancel, createTaskByClick, deviceAskTask, ordinaryTaskCreate, specialTaskCreate, + createInst, reload, hssavetask, stopTask, restoreTask } + diff --git a/qd/src/api/acs/task/taskFeedback.js b/qd/src/api/acs/task/taskFeedback.js new file mode 100644 index 0000000..f87924e --- /dev/null +++ b/qd/src/api/acs/task/taskFeedback.js @@ -0,0 +1,19 @@ +import request from '@/utils/request' + +export function retry(task_id) { + return request({ + url: 'api/taskFeedback/retry/' + task_id, + method: 'post', + data: task_id + }) +} + +export function invalid(task_id) { + return request({ + url: 'api/taskFeedback/invalid/' + task_id, + method: 'post', + data: task_id + }) +} + +export default { retry, invalid } diff --git a/qd/src/api/acs/test/test.js b/qd/src/api/acs/test/test.js new file mode 100644 index 0000000..d975297 --- /dev/null +++ b/qd/src/api/acs/test/test.js @@ -0,0 +1,55 @@ +import request from '@/utils/request' + +export function test1() { + return request({ + url: 'api/test/test1', + method: 'post' + }) +} + +export function test2() { + return request({ + url: 'api/test/test2', + method: 'post' + }) +} + +export function test3() { + return request({ + url: 'api/test/test3', + method: 'post' + }) +} + +export function test4(data) { + return request({ + url: 'api/test/test4', + method: 'post', + data + }) +} + +export function test5() { + return request({ + url: 'api/test/test5', + method: 'post' + }) +} + +export function test6(data) { + return request({ + url: 'api/test/test6', + method: 'post', + data + }) +} + +export function print() { + return request({ + url: 'api/test/print', + method: 'post' + }) +} + +export default { test1, test2, test3, test4, test5, test6, print } + diff --git a/qd/src/api/data.js b/qd/src/api/data.js new file mode 100644 index 0000000..989cb23 --- /dev/null +++ b/qd/src/api/data.js @@ -0,0 +1,21 @@ +import request from '@/utils/request' +import qs from 'qs' + +export function initData(url, params) { + if (params.createTime) { + params.begin_time = params.createTime[0] + params.end_time = params.createTime[1] + } + return request({ + url: url + '?' + qs.stringify(params, { indices: false }), + method: 'get' + }) +} + +export function download(url, params) { + return request({ + url: url + '?' + qs.stringify(params, { indices: false }), + method: 'get', + responseType: 'blob' + }) +} diff --git a/qd/src/api/generator/genConfig.js b/qd/src/api/generator/genConfig.js new file mode 100644 index 0000000..e15b200 --- /dev/null +++ b/qd/src/api/generator/genConfig.js @@ -0,0 +1,16 @@ +import request from '@/utils/request' + +export function get(tableName) { + return request({ + url: 'api/genConfig/' + tableName, + method: 'get' + }) +} + +export function update(data) { + return request({ + url: 'api/genConfig', + data, + method: 'put' + }) +} diff --git a/qd/src/api/generator/generator.js b/qd/src/api/generator/generator.js new file mode 100644 index 0000000..0c49718 --- /dev/null +++ b/qd/src/api/generator/generator.js @@ -0,0 +1,33 @@ +import request from '@/utils/request' + +export function getAllTable() { + return request({ + url: 'api/generator/tables/all', + method: 'get' + }) +} + +export function generator(tableName, type) { + return request({ + url: 'api/generator/' + tableName + '/' + type, + method: 'post', + responseType: type === 2 ? 'blob' : '' + }) +} + +export function save(data) { + return request({ + url: 'api/generator', + data, + method: 'put' + }) +} + +export function sync(tables) { + return request({ + url: 'api/generator/sync', + method: 'post', + data: tables + }) +} + diff --git a/qd/src/api/log.js b/qd/src/api/log.js new file mode 100644 index 0000000..bfb4757 --- /dev/null +++ b/qd/src/api/log.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/log', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/log/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/log', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/login.js b/qd/src/api/login.js new file mode 100644 index 0000000..fe257d2 --- /dev/null +++ b/qd/src/api/login.js @@ -0,0 +1,35 @@ +import request from '@/utils/request' + +export function login(username, password, code, uuid) { + return request({ + url: 'auth/login', + method: 'post', + data: { + username, + password, + code, + uuid + } + }) +} + +export function getInfo() { + return request({ + url: 'auth/info', + method: 'get' + }) +} + +export function getCodeImg() { + return request({ + url: 'auth/code', + method: 'get' + }) +} + +export function logout() { + return request({ + url: 'auth/logout', + method: 'delete' + }) +} diff --git a/qd/src/api/mnt/app.js b/qd/src/api/mnt/app.js new file mode 100644 index 0000000..2a27054 --- /dev/null +++ b/qd/src/api/mnt/app.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/app', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/app', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/app', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/mnt/connect.js b/qd/src/api/mnt/connect.js new file mode 100644 index 0000000..1bbe90b --- /dev/null +++ b/qd/src/api/mnt/connect.js @@ -0,0 +1,17 @@ +import request from '@/utils/request' + +export function testDbConnect(data) { + return request({ + url: 'api/database/testConnect', + method: 'post', + data + }) +} + +export function testServerConnect(data) { + return request({ + url: 'api/serverDeploy/testConnect', + method: 'post', + data + }) +} diff --git a/qd/src/api/mnt/database.js b/qd/src/api/mnt/database.js new file mode 100644 index 0000000..91797fb --- /dev/null +++ b/qd/src/api/mnt/database.js @@ -0,0 +1,35 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/database', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/database', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/database', + method: 'put', + data + }) +} + +export function testDbConnection(data) { + return request({ + url: 'api/database/testConnect', + method: 'post', + data + }) +} + +export default { add, edit, del, testDbConnection } diff --git a/qd/src/api/mnt/deploy.js b/qd/src/api/mnt/deploy.js new file mode 100644 index 0000000..c1475ea --- /dev/null +++ b/qd/src/api/mnt/deploy.js @@ -0,0 +1,77 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/deploy', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/deploy', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/deploy', + method: 'put', + data + }) +} + +export function getApps() { + return request({ + url: 'api/app', + method: 'get' + }) +} + +export function getServers() { + return request({ + url: 'api/serverDeploy', + method: 'get' + }) +} + +/** + * 启动服务 + * @param data 选中行 + */ +export function startServer(data) { + return request({ + url: 'api/deploy/startServer', + method: 'post', + data + }) +} + +/** + * 停止服务 + * @param data 选中行 + */ +export function stopServer(data) { + return request({ + url: 'api/deploy/stopServer', + method: 'post', + data + }) +} + +/** + * 停止服务 + * @param data 选中行 + */ +export function serverStatus(data) { + return request({ + url: 'api/deploy/serverStatus', + method: 'post', + data + }) +} + +export default { add, edit, del, stopServer, serverStatus, startServer, getServers, getApps } diff --git a/qd/src/api/mnt/deployHistory.js b/qd/src/api/mnt/deployHistory.js new file mode 100644 index 0000000..30335e4 --- /dev/null +++ b/qd/src/api/mnt/deployHistory.js @@ -0,0 +1,21 @@ +import request from '@/utils/request' + +export function del(ids) { + return request({ + url: 'api/deployHistory', + method: 'delete', + data: ids + }) +} + +/** + * 版本回退 + * @param data 选中行 + */ +export function reducte(data) { + return request({ + url: 'api/deploy/serverReduction', + method: 'post', + data + }) +} diff --git a/qd/src/api/mnt/serverDeploy.js b/qd/src/api/mnt/serverDeploy.js new file mode 100644 index 0000000..e796114 --- /dev/null +++ b/qd/src/api/mnt/serverDeploy.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/serverDeploy', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/serverDeploy', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/serverDeploy', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/monitor/log.js b/qd/src/api/monitor/log.js new file mode 100644 index 0000000..5a94ea9 --- /dev/null +++ b/qd/src/api/monitor/log.js @@ -0,0 +1,29 @@ +import request from '@/utils/request' + +export function getErrDetail(id) { + return request({ + url: 'api/logs/error/' + id, + method: 'get' + }) +} + +export function delAllError() { + return request({ + url: 'api/logs/del/error', + method: 'delete' + }) +} + +export function delAllInfo() { + return request({ + url: 'api/logs/del/info', + method: 'delete' + }) +} + +export function logQuery() { + return request({ + url: 'api/logs/logquery', + method: 'get' + }) +} diff --git a/qd/src/api/monitor/online.js b/qd/src/api/monitor/online.js new file mode 100644 index 0000000..057275b --- /dev/null +++ b/qd/src/api/monitor/online.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +export function del(keys) { + return request({ + url: 'auth/online', + method: 'delete', + data: keys + }) +} diff --git a/qd/src/api/system/autorun.js b/qd/src/api/system/autorun.js new file mode 100644 index 0000000..399a7ba --- /dev/null +++ b/qd/src/api/system/autorun.js @@ -0,0 +1,22 @@ +import request from '@/utils/request' + +export function getAll() { + return request({ + url: 'api/autorun', + method: 'get' + }) +} + +export function start(id) { + return request({ + url: 'api/autorun/start/' + id, + method: 'put' + }) +} export function stop(id) { + return request({ + url: 'api/autorun/stop/' + id, + method: 'put' + }) +} + +export default { start, stop } diff --git a/qd/src/api/system/code.js b/qd/src/api/system/code.js new file mode 100644 index 0000000..0d2e4c2 --- /dev/null +++ b/qd/src/api/system/code.js @@ -0,0 +1,15 @@ +import request from '@/utils/request' + +export function resetEmail(data) { + return request({ + url: 'api/code/resetEmail?email=' + data, + method: 'post' + }) +} + +export function updatePass(pass) { + return request({ + url: 'api/users/updatePass/' + pass, + method: 'get' + }) +} diff --git a/qd/src/api/system/dept.js b/qd/src/api/system/dept.js new file mode 100644 index 0000000..ed4f944 --- /dev/null +++ b/qd/src/api/system/dept.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +export function getDepts(params) { + return request({ + url: 'api/dept', + method: 'get', + params + }) +} + +export function getDeptSuperior(ids) { + const data = ids.length || ids.length === 0 ? ids : Array.of(ids) + return request({ + url: 'api/dept/superior', + method: 'post', + data + }) +} + +export function add(data) { + return request({ + url: 'api/dept', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/dept', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/dept', + method: 'put', + data + }) +} + +export default { add, edit, del, getDepts, getDeptSuperior } diff --git a/qd/src/api/system/dict.js b/qd/src/api/system/dict.js new file mode 100644 index 0000000..99170f7 --- /dev/null +++ b/qd/src/api/system/dict.js @@ -0,0 +1,34 @@ +import request from '@/utils/request' + +export function getDicts() { + return request({ + url: 'api/dict/all', + method: 'get' + }) +} + +export function add(data) { + return request({ + url: 'api/dict', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/dict/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/dict', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/system/dictDetail.js b/qd/src/api/system/dictDetail.js new file mode 100644 index 0000000..e8dc512 --- /dev/null +++ b/qd/src/api/system/dictDetail.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +export function get(dictName) { + const params = { + dictName, + page: 0, + size: 9999 + } + return request({ + url: 'api/dictDetail', + method: 'get', + params + }) +} + +export function getDictMap(dictName) { + const params = { + dictName, + page: 0, + size: 9999 + } + return request({ + url: 'api/dictDetail/map', + method: 'get', + params + }) +} + +export function add(data) { + return request({ + url: 'api/dictDetail', + method: 'post', + data + }) +} + +export function del(id) { + return request({ + url: 'api/dictDetail/' + id, + method: 'delete' + }) +} + +export function edit(data) { + return request({ + url: 'api/dictDetail', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/system/genCode.js b/qd/src/api/system/genCode.js new file mode 100644 index 0000000..416f8e9 --- /dev/null +++ b/qd/src/api/system/genCode.js @@ -0,0 +1,36 @@ +import request from '@/utils/request' + +export function getGenCode() { + return request({ + url: 'api/genCode/all', + method: 'get' + }) +} + +export function add(data) { + return request({ + url: 'api/genCode', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/genCode/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/genCode/', + method: 'put', + data + }) +} + +export default { + add, del, edit +} diff --git a/qd/src/api/system/job.js b/qd/src/api/system/job.js new file mode 100644 index 0000000..a00630e --- /dev/null +++ b/qd/src/api/system/job.js @@ -0,0 +1,40 @@ +import request from '@/utils/request' + +export function getAllJob() { + const params = { + page: 0, + size: 9999, + enabled: true + } + return request({ + url: 'api/job', + method: 'get', + params + }) +} + +export function add(data) { + return request({ + url: 'api/job', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/job', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/job', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/system/menu.js b/qd/src/api/system/menu.js new file mode 100644 index 0000000..3298543 --- /dev/null +++ b/qd/src/api/system/menu.js @@ -0,0 +1,65 @@ +import request from '@/utils/request' + +export function getMenusTree(pid) { + return request({ + url: 'api/menus/lazy?pid=' + pid, + method: 'get' + }) +} + +export function getMenus(params) { + return request({ + url: 'api/menus', + method: 'get', + params + }) +} + +export function getMenuSuperior(ids) { + const data = ids.length || ids.length === 0 ? ids : Array.of(ids) + return request({ + url: 'api/menus/superior', + method: 'post', + data + }) +} + +export function getChild(id) { + return request({ + url: 'api/menus/child?id=' + id, + method: 'get' + }) +} + +export function buildMenus() { + return request({ + url: 'api/menus/build', + method: 'get' + }) +} + +export function add(data) { + return request({ + url: 'api/menus', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/menus', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/menus', + method: 'put', + data + }) +} + +export default { add, edit, del, getMenusTree, getMenuSuperior, getMenus, getChild } diff --git a/qd/src/api/system/param.js b/qd/src/api/system/param.js new file mode 100644 index 0000000..0763489 --- /dev/null +++ b/qd/src/api/system/param.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/param', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/param/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/param', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/system/role.js b/qd/src/api/system/role.js new file mode 100644 index 0000000..1f7bc1e --- /dev/null +++ b/qd/src/api/system/role.js @@ -0,0 +1,57 @@ +import request from '@/utils/request' + +// 获取所有的Role +export function getAll() { + return request({ + url: 'api/roles/all', + method: 'get' + }) +} + +export function add(data) { + return request({ + url: 'api/roles', + method: 'post', + data + }) +} + +export function get(id) { + return request({ + url: 'api/roles/' + id, + method: 'get' + }) +} + +export function getLevel() { + return request({ + url: 'api/roles/level', + method: 'get' + }) +} + +export function del(ids) { + return request({ + url: 'api/roles', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/roles', + method: 'put', + data + }) +} + +export function editMenu(data) { + return request({ + url: 'api/roles/menu', + method: 'put', + data + }) +} + +export default { add, edit, del, get, editMenu, getLevel } diff --git a/qd/src/api/system/timing.js b/qd/src/api/system/timing.js new file mode 100644 index 0000000..613e15f --- /dev/null +++ b/qd/src/api/system/timing.js @@ -0,0 +1,41 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/jobs', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/jobs', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/jobs', + method: 'put', + data + }) +} + +export function updateIsPause(id) { + return request({ + url: 'api/jobs/' + id, + method: 'put' + }) +} + +export function execution(id) { + return request({ + url: 'api/jobs/exec/' + id, + method: 'put' + }) +} + +export default { del, updateIsPause, execution, add, edit } diff --git a/qd/src/api/system/user.js b/qd/src/api/system/user.js new file mode 100644 index 0000000..6cd91a5 --- /dev/null +++ b/qd/src/api/system/user.js @@ -0,0 +1,61 @@ +import request from '@/utils/request' +import { encrypt } from '@/utils/rsaEncrypt' + +export function add(data) { + return request({ + url: 'api/users', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/users', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/users', + method: 'put', + data + }) +} + +export function editUser(data) { + return request({ + url: 'api/users/center', + method: 'put', + data + }) +} + +export function updatePass(user) { + const data = { + oldPass: encrypt(user.oldPass), + newPass: encrypt(user.newPass) + } + return request({ + url: 'api/users/updatePass/', + method: 'post', + data + }) +} + +export function updateEmail(form) { + const data = { + password: encrypt(form.pass), + email: form.email + } + return request({ + url: 'api/users/updateEmail/' + form.code, + method: 'post', + data + }) +} + +export default { add, edit, del } + diff --git a/qd/src/api/tools/alipay.js b/qd/src/api/tools/alipay.js new file mode 100644 index 0000000..54090f5 --- /dev/null +++ b/qd/src/api/tools/alipay.js @@ -0,0 +1,25 @@ +import request from '@/utils/request' + +export function get() { + return request({ + url: 'api/aliPay', + method: 'get' + }) +} + +export function update(data) { + return request({ + url: 'api/aliPay', + data, + method: 'put' + }) +} + +// 支付 +export function toAliPay(url, data) { + return request({ + url: 'api/' + url, + data, + method: 'post' + }) +} diff --git a/qd/src/api/tools/codeDetail.js b/qd/src/api/tools/codeDetail.js new file mode 100644 index 0000000..bc295ab --- /dev/null +++ b/qd/src/api/tools/codeDetail.js @@ -0,0 +1,39 @@ +import request from '@/utils/request' + +export function get(dictName) { + const params = { + dictName, + page: 0, + size: 9999 + } + return request({ + url: 'api/codeDetail', + method: 'get', + params + }) +} + +export function add(data) { + return request({ + url: 'api/codeDetail', + method: 'post', + data + }) +} + +export function del(id) { + return request({ + url: 'api/codeDetail/' + id, + method: 'delete' + }) +} + +export function edit(data) { + return request({ + url: 'api/codeDetail', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/tools/email.js b/qd/src/api/tools/email.js new file mode 100644 index 0000000..af030cb --- /dev/null +++ b/qd/src/api/tools/email.js @@ -0,0 +1,24 @@ +import request from '@/utils/request' + +export function get() { + return request({ + url: 'api/email', + method: 'get' + }) +} + +export function update(data) { + return request({ + url: 'api/email', + data, + method: 'put' + }) +} + +export function send(data) { + return request({ + url: 'api/email', + data, + method: 'post' + }) +} diff --git a/qd/src/api/tools/localStorage.js b/qd/src/api/tools/localStorage.js new file mode 100644 index 0000000..63ebe2b --- /dev/null +++ b/qd/src/api/tools/localStorage.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/localStorage', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/localStorage/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/localStorage', + method: 'put', + data + }) +} + +export default { add, edit, del } diff --git a/qd/src/api/tools/qiniu.js b/qd/src/api/tools/qiniu.js new file mode 100644 index 0000000..6d56771 --- /dev/null +++ b/qd/src/api/tools/qiniu.js @@ -0,0 +1,40 @@ +import request from '@/utils/request' + +export function get() { + return request({ + url: 'api/qiNiuContent/config', + method: 'get' + }) +} + +export function update(data) { + return request({ + url: 'api/qiNiuContent/config', + data, + method: 'put' + }) +} + +export function download(id) { + return request({ + url: 'api/qiNiuContent/download/' + id, + method: 'get' + }) +} + +export function sync() { + return request({ + url: 'api/qiNiuContent/synchronize', + method: 'post' + }) +} + +export function del(ids) { + return request({ + url: 'api/qiNiuContent', + method: 'delete', + data: ids + }) +} + +export default { del, download, sync } diff --git a/qd/src/assets/401_images/401.gif b/qd/src/assets/401_images/401.gif new file mode 100644 index 0000000..cd6e0d9 Binary files /dev/null and b/qd/src/assets/401_images/401.gif differ diff --git a/qd/src/assets/404_images/404.png b/qd/src/assets/404_images/404.png new file mode 100644 index 0000000..3d8e230 Binary files /dev/null and b/qd/src/assets/404_images/404.png differ diff --git a/qd/src/assets/404_images/404_cloud.png b/qd/src/assets/404_images/404_cloud.png new file mode 100644 index 0000000..c6281d0 Binary files /dev/null and b/qd/src/assets/404_images/404_cloud.png differ diff --git a/qd/src/assets/acs/1.png b/qd/src/assets/acs/1.png new file mode 100644 index 0000000..1ec6a1a Binary files /dev/null and b/qd/src/assets/acs/1.png differ diff --git a/qd/src/assets/acs/AGV.png b/qd/src/assets/acs/AGV.png new file mode 100644 index 0000000..79f880b Binary files /dev/null and b/qd/src/assets/acs/AGV.png differ diff --git a/qd/src/assets/acs/AGV1.png b/qd/src/assets/acs/AGV1.png new file mode 100644 index 0000000..125d830 Binary files /dev/null and b/qd/src/assets/acs/AGV1.png differ diff --git a/qd/src/assets/acs/BCR.png b/qd/src/assets/acs/BCR.png new file mode 100644 index 0000000..f5f010f Binary files /dev/null and b/qd/src/assets/acs/BCR.png differ diff --git a/qd/src/assets/acs/BCR1.png b/qd/src/assets/acs/BCR1.png new file mode 100644 index 0000000..4258b1b Binary files /dev/null and b/qd/src/assets/acs/BCR1.png differ diff --git a/qd/src/assets/acs/CPJ.png b/qd/src/assets/acs/CPJ.png new file mode 100644 index 0000000..5735dcf Binary files /dev/null and b/qd/src/assets/acs/CPJ.png differ diff --git a/qd/src/assets/acs/DDJ.png b/qd/src/assets/acs/DDJ.png new file mode 100644 index 0000000..17c470a Binary files /dev/null and b/qd/src/assets/acs/DDJ.png differ diff --git a/qd/src/assets/acs/DDJ1.png b/qd/src/assets/acs/DDJ1.png new file mode 100644 index 0000000..8910084 Binary files /dev/null and b/qd/src/assets/acs/DDJ1.png differ diff --git a/qd/src/assets/acs/HPJ.png b/qd/src/assets/acs/HPJ.png new file mode 100644 index 0000000..28c0a35 Binary files /dev/null and b/qd/src/assets/acs/HPJ.png differ diff --git a/qd/src/assets/acs/SSJ.png b/qd/src/assets/acs/SSJ.png new file mode 100644 index 0000000..aff6b5b Binary files /dev/null and b/qd/src/assets/acs/SSJ.png differ diff --git a/qd/src/assets/acs/SSJ1.png b/qd/src/assets/acs/SSJ1.png new file mode 100644 index 0000000..6d1009f Binary files /dev/null and b/qd/src/assets/acs/SSJ1.png differ diff --git a/qd/src/assets/acs/del_new.png b/qd/src/assets/acs/del_new.png new file mode 100644 index 0000000..85c9fdc Binary files /dev/null and b/qd/src/assets/acs/del_new.png differ diff --git a/qd/src/assets/acs/home_agv.png b/qd/src/assets/acs/home_agv.png new file mode 100644 index 0000000..d73781d Binary files /dev/null and b/qd/src/assets/acs/home_agv.png differ diff --git a/qd/src/assets/acs/icon_alert.png b/qd/src/assets/acs/icon_alert.png new file mode 100644 index 0000000..c224792 Binary files /dev/null and b/qd/src/assets/acs/icon_alert.png differ diff --git a/qd/src/assets/acs/icon_alert2.png b/qd/src/assets/acs/icon_alert2.png new file mode 100644 index 0000000..4498bf5 Binary files /dev/null and b/qd/src/assets/acs/icon_alert2.png differ diff --git a/qd/src/assets/acs/status0.png b/qd/src/assets/acs/status0.png new file mode 100644 index 0000000..7830af7 Binary files /dev/null and b/qd/src/assets/acs/status0.png differ diff --git a/qd/src/assets/acs/status1.png b/qd/src/assets/acs/status1.png new file mode 100644 index 0000000..d0d0a4b Binary files /dev/null and b/qd/src/assets/acs/status1.png differ diff --git a/qd/src/assets/acs/undefined.png b/qd/src/assets/acs/undefined.png new file mode 100644 index 0000000..79f880b Binary files /dev/null and b/qd/src/assets/acs/undefined.png differ diff --git a/qd/src/assets/acs/区域横.png b/qd/src/assets/acs/区域横.png new file mode 100644 index 0000000..03f930c Binary files /dev/null and b/qd/src/assets/acs/区域横.png differ diff --git a/qd/src/assets/acs/区域竖.png b/qd/src/assets/acs/区域竖.png new file mode 100644 index 0000000..25135ac Binary files /dev/null and b/qd/src/assets/acs/区域竖.png differ diff --git a/qd/src/assets/acs/叠盘机.png b/qd/src/assets/acs/叠盘机.png new file mode 100644 index 0000000..273ae2c Binary files /dev/null and b/qd/src/assets/acs/叠盘机.png differ diff --git a/qd/src/assets/acs/墙面横.png b/qd/src/assets/acs/墙面横.png new file mode 100644 index 0000000..53983ae Binary files /dev/null and b/qd/src/assets/acs/墙面横.png differ diff --git a/qd/src/assets/acs/墙面竖.png b/qd/src/assets/acs/墙面竖.png new file mode 100644 index 0000000..606c486 Binary files /dev/null and b/qd/src/assets/acs/墙面竖.png differ diff --git a/qd/src/assets/acs/常温.png b/qd/src/assets/acs/常温.png new file mode 100644 index 0000000..9278ba2 Binary files /dev/null and b/qd/src/assets/acs/常温.png differ diff --git a/qd/src/assets/acs/常温1.png b/qd/src/assets/acs/常温1.png new file mode 100644 index 0000000..358d41d Binary files /dev/null and b/qd/src/assets/acs/常温1.png differ diff --git a/qd/src/assets/acs/托盘.png b/qd/src/assets/acs/托盘.png new file mode 100644 index 0000000..b19456a Binary files /dev/null and b/qd/src/assets/acs/托盘.png differ diff --git a/qd/src/assets/acs/机械手.png b/qd/src/assets/acs/机械手.png new file mode 100644 index 0000000..b0c91b0 Binary files /dev/null and b/qd/src/assets/acs/机械手.png differ diff --git a/qd/src/assets/acs/滚筒输送机.png b/qd/src/assets/acs/滚筒输送机.png new file mode 100644 index 0000000..651a2f9 Binary files /dev/null and b/qd/src/assets/acs/滚筒输送机.png differ diff --git a/qd/src/assets/acs/站点.png b/qd/src/assets/acs/站点.png new file mode 100644 index 0000000..4536767 Binary files /dev/null and b/qd/src/assets/acs/站点.png differ diff --git a/qd/src/assets/acs/虚拟点位.png b/qd/src/assets/acs/虚拟点位.png new file mode 100644 index 0000000..19f1c0c Binary files /dev/null and b/qd/src/assets/acs/虚拟点位.png differ diff --git a/qd/src/assets/acs/货台.png b/qd/src/assets/acs/货台.png new file mode 100644 index 0000000..7628200 Binary files /dev/null and b/qd/src/assets/acs/货台.png differ diff --git a/qd/src/assets/icons/index.js b/qd/src/assets/icons/index.js new file mode 100644 index 0000000..2c6b309 --- /dev/null +++ b/qd/src/assets/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/qd/src/assets/icons/svg/Steve-Jobs.svg b/qd/src/assets/icons/svg/Steve-Jobs.svg new file mode 100644 index 0000000..53843e2 --- /dev/null +++ b/qd/src/assets/icons/svg/Steve-Jobs.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/alipay.svg b/qd/src/assets/icons/svg/alipay.svg new file mode 100644 index 0000000..9138981 --- /dev/null +++ b/qd/src/assets/icons/svg/alipay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/anq.svg b/qd/src/assets/icons/svg/anq.svg new file mode 100644 index 0000000..a466608 --- /dev/null +++ b/qd/src/assets/icons/svg/anq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/app.svg b/qd/src/assets/icons/svg/app.svg new file mode 100644 index 0000000..0796da3 --- /dev/null +++ b/qd/src/assets/icons/svg/app.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/backup.svg b/qd/src/assets/icons/svg/backup.svg new file mode 100644 index 0000000..a3272a4 --- /dev/null +++ b/qd/src/assets/icons/svg/backup.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/chain.svg b/qd/src/assets/icons/svg/chain.svg new file mode 100644 index 0000000..ed3317f --- /dev/null +++ b/qd/src/assets/icons/svg/chain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/chart.svg b/qd/src/assets/icons/svg/chart.svg new file mode 100644 index 0000000..27728fb --- /dev/null +++ b/qd/src/assets/icons/svg/chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/codeConsole.svg b/qd/src/assets/icons/svg/codeConsole.svg new file mode 100644 index 0000000..672ec6e --- /dev/null +++ b/qd/src/assets/icons/svg/codeConsole.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/dashboard.svg b/qd/src/assets/icons/svg/dashboard.svg new file mode 100644 index 0000000..5317d37 --- /dev/null +++ b/qd/src/assets/icons/svg/dashboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/database.svg b/qd/src/assets/icons/svg/database.svg new file mode 100644 index 0000000..7fbad9b --- /dev/null +++ b/qd/src/assets/icons/svg/database.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/date.svg b/qd/src/assets/icons/svg/date.svg new file mode 100644 index 0000000..0540e99 --- /dev/null +++ b/qd/src/assets/icons/svg/date.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/deploy.svg b/qd/src/assets/icons/svg/deploy.svg new file mode 100644 index 0000000..f4a1c56 --- /dev/null +++ b/qd/src/assets/icons/svg/deploy.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/dept.svg b/qd/src/assets/icons/svg/dept.svg new file mode 100644 index 0000000..894e4bf --- /dev/null +++ b/qd/src/assets/icons/svg/dept.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/dev.svg b/qd/src/assets/icons/svg/dev.svg new file mode 100644 index 0000000..ed4d23c --- /dev/null +++ b/qd/src/assets/icons/svg/dev.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/develop.svg b/qd/src/assets/icons/svg/develop.svg new file mode 100644 index 0000000..e189223 --- /dev/null +++ b/qd/src/assets/icons/svg/develop.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/dictionary.svg b/qd/src/assets/icons/svg/dictionary.svg new file mode 100644 index 0000000..6e83c43 --- /dev/null +++ b/qd/src/assets/icons/svg/dictionary.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/doc.svg b/qd/src/assets/icons/svg/doc.svg new file mode 100644 index 0000000..9160de8 --- /dev/null +++ b/qd/src/assets/icons/svg/doc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/download.svg b/qd/src/assets/icons/svg/download.svg new file mode 100644 index 0000000..0243c6a --- /dev/null +++ b/qd/src/assets/icons/svg/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/edit.svg b/qd/src/assets/icons/svg/edit.svg new file mode 100644 index 0000000..d26101f --- /dev/null +++ b/qd/src/assets/icons/svg/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/education.svg b/qd/src/assets/icons/svg/education.svg new file mode 100644 index 0000000..7bfb01d --- /dev/null +++ b/qd/src/assets/icons/svg/education.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/email.svg b/qd/src/assets/icons/svg/email.svg new file mode 100644 index 0000000..f1cf3ae --- /dev/null +++ b/qd/src/assets/icons/svg/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/erp.svg b/qd/src/assets/icons/svg/erp.svg new file mode 100644 index 0000000..f14ced2 --- /dev/null +++ b/qd/src/assets/icons/svg/erp.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/error.svg b/qd/src/assets/icons/svg/error.svg new file mode 100644 index 0000000..fd935da --- /dev/null +++ b/qd/src/assets/icons/svg/error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/exit-fullscreen.svg b/qd/src/assets/icons/svg/exit-fullscreen.svg new file mode 100644 index 0000000..485c128 --- /dev/null +++ b/qd/src/assets/icons/svg/exit-fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/fullscreen.svg b/qd/src/assets/icons/svg/fullscreen.svg new file mode 100644 index 0000000..0e86b6f --- /dev/null +++ b/qd/src/assets/icons/svg/fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/fwb.svg b/qd/src/assets/icons/svg/fwb.svg new file mode 100644 index 0000000..59933fc --- /dev/null +++ b/qd/src/assets/icons/svg/fwb.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/github.svg b/qd/src/assets/icons/svg/github.svg new file mode 100644 index 0000000..8145e95 --- /dev/null +++ b/qd/src/assets/icons/svg/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/gonggao.svg b/qd/src/assets/icons/svg/gonggao.svg new file mode 100644 index 0000000..22aed08 --- /dev/null +++ b/qd/src/assets/icons/svg/gonggao.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/icon.svg b/qd/src/assets/icons/svg/icon.svg new file mode 100644 index 0000000..82fbdd9 --- /dev/null +++ b/qd/src/assets/icons/svg/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/image.svg b/qd/src/assets/icons/svg/image.svg new file mode 100644 index 0000000..16d572f --- /dev/null +++ b/qd/src/assets/icons/svg/image.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/index.svg b/qd/src/assets/icons/svg/index.svg new file mode 100644 index 0000000..fdb3826 --- /dev/null +++ b/qd/src/assets/icons/svg/index.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/international.svg b/qd/src/assets/icons/svg/international.svg new file mode 100644 index 0000000..e9b56ee --- /dev/null +++ b/qd/src/assets/icons/svg/international.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/ipvisits.svg b/qd/src/assets/icons/svg/ipvisits.svg new file mode 100644 index 0000000..4ca473d --- /dev/null +++ b/qd/src/assets/icons/svg/ipvisits.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/java.svg b/qd/src/assets/icons/svg/java.svg new file mode 100644 index 0000000..e2effbb --- /dev/null +++ b/qd/src/assets/icons/svg/java.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/link.svg b/qd/src/assets/icons/svg/link.svg new file mode 100644 index 0000000..48197ba --- /dev/null +++ b/qd/src/assets/icons/svg/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/list.svg b/qd/src/assets/icons/svg/list.svg new file mode 100644 index 0000000..20259ed --- /dev/null +++ b/qd/src/assets/icons/svg/list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/lock.svg b/qd/src/assets/icons/svg/lock.svg new file mode 100644 index 0000000..0f842ea --- /dev/null +++ b/qd/src/assets/icons/svg/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/log.svg b/qd/src/assets/icons/svg/log.svg new file mode 100644 index 0000000..4fefe74 --- /dev/null +++ b/qd/src/assets/icons/svg/log.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/login.svg b/qd/src/assets/icons/svg/login.svg new file mode 100644 index 0000000..cc5a854 --- /dev/null +++ b/qd/src/assets/icons/svg/login.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/markdown.svg b/qd/src/assets/icons/svg/markdown.svg new file mode 100644 index 0000000..7cd6747 --- /dev/null +++ b/qd/src/assets/icons/svg/markdown.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/menu.svg b/qd/src/assets/icons/svg/menu.svg new file mode 100644 index 0000000..e4360a0 --- /dev/null +++ b/qd/src/assets/icons/svg/menu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/message.svg b/qd/src/assets/icons/svg/message.svg new file mode 100644 index 0000000..14ca817 --- /dev/null +++ b/qd/src/assets/icons/svg/message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/mnt.svg b/qd/src/assets/icons/svg/mnt.svg new file mode 100644 index 0000000..502a7c0 --- /dev/null +++ b/qd/src/assets/icons/svg/mnt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/money.svg b/qd/src/assets/icons/svg/money.svg new file mode 100644 index 0000000..c1580de --- /dev/null +++ b/qd/src/assets/icons/svg/money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/monitor.svg b/qd/src/assets/icons/svg/monitor.svg new file mode 100644 index 0000000..fbf0a2f --- /dev/null +++ b/qd/src/assets/icons/svg/monitor.svg @@ -0,0 +1 @@ + diff --git a/qd/src/assets/icons/svg/nested.svg b/qd/src/assets/icons/svg/nested.svg new file mode 100644 index 0000000..06713a8 --- /dev/null +++ b/qd/src/assets/icons/svg/nested.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/password.svg b/qd/src/assets/icons/svg/password.svg new file mode 100644 index 0000000..4ab451f --- /dev/null +++ b/qd/src/assets/icons/svg/password.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/people.svg b/qd/src/assets/icons/svg/people.svg new file mode 100644 index 0000000..2bd54ae --- /dev/null +++ b/qd/src/assets/icons/svg/people.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/peoples.svg b/qd/src/assets/icons/svg/peoples.svg new file mode 100644 index 0000000..2c91161 --- /dev/null +++ b/qd/src/assets/icons/svg/peoples.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/permission.svg b/qd/src/assets/icons/svg/permission.svg new file mode 100644 index 0000000..c4c7409 --- /dev/null +++ b/qd/src/assets/icons/svg/permission.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/phone.svg b/qd/src/assets/icons/svg/phone.svg new file mode 100644 index 0000000..da339f9 --- /dev/null +++ b/qd/src/assets/icons/svg/phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/qiniu.svg b/qd/src/assets/icons/svg/qiniu.svg new file mode 100644 index 0000000..c2f9f8b --- /dev/null +++ b/qd/src/assets/icons/svg/qiniu.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/redis.svg b/qd/src/assets/icons/svg/redis.svg new file mode 100644 index 0000000..bef111b --- /dev/null +++ b/qd/src/assets/icons/svg/redis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/role.svg b/qd/src/assets/icons/svg/role.svg new file mode 100644 index 0000000..76cb18f --- /dev/null +++ b/qd/src/assets/icons/svg/role.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/search.svg b/qd/src/assets/icons/svg/search.svg new file mode 100644 index 0000000..84233dd --- /dev/null +++ b/qd/src/assets/icons/svg/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/server.svg b/qd/src/assets/icons/svg/server.svg new file mode 100644 index 0000000..db6dcdf --- /dev/null +++ b/qd/src/assets/icons/svg/server.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/shopping.svg b/qd/src/assets/icons/svg/shopping.svg new file mode 100644 index 0000000..87513e7 --- /dev/null +++ b/qd/src/assets/icons/svg/shopping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/size.svg b/qd/src/assets/icons/svg/size.svg new file mode 100644 index 0000000..ddb25b8 --- /dev/null +++ b/qd/src/assets/icons/svg/size.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/skill.svg b/qd/src/assets/icons/svg/skill.svg new file mode 100644 index 0000000..a3b7312 --- /dev/null +++ b/qd/src/assets/icons/svg/skill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/source.svg b/qd/src/assets/icons/svg/source.svg new file mode 100644 index 0000000..1c3a038 --- /dev/null +++ b/qd/src/assets/icons/svg/source.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/sqlMonitor.svg b/qd/src/assets/icons/svg/sqlMonitor.svg new file mode 100644 index 0000000..950a430 --- /dev/null +++ b/qd/src/assets/icons/svg/sqlMonitor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/swagger.svg b/qd/src/assets/icons/svg/swagger.svg new file mode 100644 index 0000000..ded7de8 --- /dev/null +++ b/qd/src/assets/icons/svg/swagger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/sys-tools.svg b/qd/src/assets/icons/svg/sys-tools.svg new file mode 100644 index 0000000..324aa04 --- /dev/null +++ b/qd/src/assets/icons/svg/sys-tools.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/system.svg b/qd/src/assets/icons/svg/system.svg new file mode 100644 index 0000000..9333c60 --- /dev/null +++ b/qd/src/assets/icons/svg/system.svg @@ -0,0 +1 @@ + diff --git a/qd/src/assets/icons/svg/system1.svg b/qd/src/assets/icons/svg/system1.svg new file mode 100644 index 0000000..37b0a0a --- /dev/null +++ b/qd/src/assets/icons/svg/system1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/tab.svg b/qd/src/assets/icons/svg/tab.svg new file mode 100644 index 0000000..b4b48e4 --- /dev/null +++ b/qd/src/assets/icons/svg/tab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/theme.svg b/qd/src/assets/icons/svg/theme.svg new file mode 100644 index 0000000..5982a2f --- /dev/null +++ b/qd/src/assets/icons/svg/theme.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/timing.svg b/qd/src/assets/icons/svg/timing.svg new file mode 100644 index 0000000..f8fdc6d --- /dev/null +++ b/qd/src/assets/icons/svg/timing.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/tools.svg b/qd/src/assets/icons/svg/tools.svg new file mode 100644 index 0000000..aba1a40 --- /dev/null +++ b/qd/src/assets/icons/svg/tools.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/tree-table.svg b/qd/src/assets/icons/svg/tree-table.svg new file mode 100644 index 0000000..8aafdb8 --- /dev/null +++ b/qd/src/assets/icons/svg/tree-table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/tree.svg b/qd/src/assets/icons/svg/tree.svg new file mode 100644 index 0000000..dd4b7dd --- /dev/null +++ b/qd/src/assets/icons/svg/tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/unlock.svg b/qd/src/assets/icons/svg/unlock.svg new file mode 100644 index 0000000..1219e41 --- /dev/null +++ b/qd/src/assets/icons/svg/unlock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/user.svg b/qd/src/assets/icons/svg/user.svg new file mode 100644 index 0000000..09d7a81 --- /dev/null +++ b/qd/src/assets/icons/svg/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/user1.svg b/qd/src/assets/icons/svg/user1.svg new file mode 100644 index 0000000..14ca51e --- /dev/null +++ b/qd/src/assets/icons/svg/user1.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/validCode.svg b/qd/src/assets/icons/svg/validCode.svg new file mode 100644 index 0000000..a1feb74 --- /dev/null +++ b/qd/src/assets/icons/svg/validCode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/visits.svg b/qd/src/assets/icons/svg/visits.svg new file mode 100644 index 0000000..8425662 --- /dev/null +++ b/qd/src/assets/icons/svg/visits.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/web.svg b/qd/src/assets/icons/svg/web.svg new file mode 100644 index 0000000..9c57415 --- /dev/null +++ b/qd/src/assets/icons/svg/web.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/wechat.svg b/qd/src/assets/icons/svg/wechat.svg new file mode 100644 index 0000000..c586e55 --- /dev/null +++ b/qd/src/assets/icons/svg/wechat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/weixin.svg b/qd/src/assets/icons/svg/weixin.svg new file mode 100644 index 0000000..8dbcfa5 --- /dev/null +++ b/qd/src/assets/icons/svg/weixin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/zidian.svg b/qd/src/assets/icons/svg/zidian.svg new file mode 100644 index 0000000..5cac6f1 --- /dev/null +++ b/qd/src/assets/icons/svg/zidian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svg/zujian.svg b/qd/src/assets/icons/svg/zujian.svg new file mode 100644 index 0000000..2aba32f --- /dev/null +++ b/qd/src/assets/icons/svg/zujian.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/qd/src/assets/icons/svgo.yml b/qd/src/assets/icons/svgo.yml new file mode 100644 index 0000000..d11906a --- /dev/null +++ b/qd/src/assets/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/qd/src/assets/images/avatar.png b/qd/src/assets/images/avatar.png new file mode 100644 index 0000000..786c57b Binary files /dev/null and b/qd/src/assets/images/avatar.png differ diff --git a/qd/src/assets/images/avatar1.png b/qd/src/assets/images/avatar1.png new file mode 100644 index 0000000..997732a Binary files /dev/null and b/qd/src/assets/images/avatar1.png differ diff --git a/qd/src/assets/images/avatar2.png b/qd/src/assets/images/avatar2.png new file mode 100644 index 0000000..a1660d5 Binary files /dev/null and b/qd/src/assets/images/avatar2.png differ diff --git a/qd/src/assets/images/background.jpg b/qd/src/assets/images/background.jpg new file mode 100644 index 0000000..69e6348 Binary files /dev/null and b/qd/src/assets/images/background.jpg differ diff --git a/qd/src/assets/images/logo.png b/qd/src/assets/images/logo.png new file mode 100644 index 0000000..f757710 Binary files /dev/null and b/qd/src/assets/images/logo.png differ diff --git a/qd/src/assets/js/lodop/CLodop_Setup_for_Win32NT.exe b/qd/src/assets/js/lodop/CLodop_Setup_for_Win32NT.exe new file mode 100644 index 0000000..6d936ac Binary files /dev/null and b/qd/src/assets/js/lodop/CLodop_Setup_for_Win32NT.exe differ diff --git a/qd/src/assets/js/lodop/LodopFuncs.js b/qd/src/assets/js/lodop/LodopFuncs.js new file mode 100644 index 0000000..796702b --- /dev/null +++ b/qd/src/assets/js/lodop/LodopFuncs.js @@ -0,0 +1,49 @@ +import { MessageBox } from 'element-ui' + +// ====页面动态加载C-Lodop云打印必须的文件CLodopfuncs.js==== +var head = document.head || document.getElementsByTagName('head')[0] || document.documentElement +var oscript = document.createElement('script') +// 让本机的浏览器打印(更优先一点): +oscript = document.createElement('script') +oscript.src = 'http://localhost:8000/CLodopfuncs.js?priority=2' +head.insertBefore(oscript, head.firstChild) +// 加载双端口(8000和18000)避免其中某个端口被占用: +oscript = document.createElement('script') +oscript.src = 'http://localhost:18000/CLodopfuncs.js?priority=1' +head.insertBefore(oscript, head.firstChild) + +// 下载loadLodop +function loadLodop() { + window.open('./CLodop_Setup_for_Win32NT.exe') +} + +// ====获取LODOP对象的主过程:==== +function getLodop() { + var LODOP + try { + LODOP = getCLodop() + if (!LODOP && document.readyState !== 'complete') { + MessageBox.alert('C-Lodop打印控件还没准备好,请稍后再试!') + return + } + //设置打印版权 + LODOP.SET_LICENSES('浙江省烟草专卖局(公司)', 'C0C4A46A3A0D1F526D426018D9F11921', '', '') + LODOP.SET_SHOW_MODE('SETUP_ENABLESS', '10000000000000') + return LODOP + } catch (err) { + MessageBox({ + title: '温馨提示', + type: 'warning', + showCancelButton: true, + message: '您还未安装打印控件,点击确定下载打印控件,安装成功后刷新页面即可进行打印', + callback: res => { + if (res === 'confirm') { + loadLodop() + } + } + }) + } +} + +export { getLodop } + diff --git a/qd/src/assets/js/lodop/install_lodop32.exe b/qd/src/assets/js/lodop/install_lodop32.exe new file mode 100644 index 0000000..7c52f25 Binary files /dev/null and b/qd/src/assets/js/lodop/install_lodop32.exe differ diff --git a/qd/src/assets/js/lodop/install_lodop64.exe b/qd/src/assets/js/lodop/install_lodop64.exe new file mode 100644 index 0000000..7e5e4a3 Binary files /dev/null and b/qd/src/assets/js/lodop/install_lodop64.exe differ diff --git a/qd/src/assets/styles/btn.scss b/qd/src/assets/styles/btn.scss new file mode 100644 index 0000000..8f47f2c --- /dev/null +++ b/qd/src/assets/styles/btn.scss @@ -0,0 +1,99 @@ +@import 'variables'; + +@mixin colorBtn($color) { + background: $color; + + &:hover { + color: $color; + + &:before, + &:after { + background: $color; + } + } +} + +.blue-btn { + @include colorBtn($blue) +} + +.light-blue-btn { + @include colorBtn($light-blue) +} + +.red-btn { + @include colorBtn($red) +} + +.pink-btn { + @include colorBtn($pink) +} + +.green-btn { + @include colorBtn($green) +} + +.tiffany-btn { + @include colorBtn($tiffany) +} + +.yellow-btn { + @include colorBtn($yellow) +} + +.pan-btn { + font-size: 14px; + color: #fff; + padding: 14px 36px; + border-radius: 8px; + border: none; + outline: none; + transition: 600ms ease all; + position: relative; + display: inline-block; + + &:hover { + background: #fff; + + &:before, + &:after { + width: 100%; + transition: 600ms ease all; + } + } + + &:before, + &:after { + content: ''; + position: absolute; + top: 0; + right: 0; + height: 2px; + width: 0; + transition: 400ms ease all; + } + + &::after { + right: inherit; + top: inherit; + left: 0; + bottom: 0; + } +} + +.custom-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + color: #fff; + -webkit-appearance: none; + text-align: center; + box-sizing: border-box; + outline: 0; + margin: 0; + padding: 10px 15px; + font-size: 14px; + border-radius: 4px; +} diff --git a/qd/src/assets/styles/eladmin.scss b/qd/src/assets/styles/eladmin.scss new file mode 100644 index 0000000..e1e0195 --- /dev/null +++ b/qd/src/assets/styles/eladmin.scss @@ -0,0 +1,117 @@ +.head-container { + padding-bottom: 10px; + .filter-item { + display: inline-block; + vertical-align: middle; + margin: 0 3px 10px 0; + input { + height: 30.5px; + line-height: 30.5px; + } + } + .el-form-item-label { + margin: 0 3px 9px 0; + display: inline-block; + text-align: right; + vertical-align: middle; + font-size: 14px; + color: #606266; + line-height: 30.5px; + padding: 0 7px 0 7px; + } + .el-button+.el-button { + margin-left: 0 !important; + } + .el-select__caret.el-input__icon.el-icon-arrow-up{ + line-height: 30.5px; + } + .date-item { + display: inline-block; + vertical-align: middle; + margin-bottom: 10px; + height: 30.5px !important; + width: 230px !important; + } +} +.el-avatar { + display: inline-block; + text-align: center; + background: #ccc; + color: #fff; + white-space: nowrap; + position: relative; + overflow: hidden; + vertical-align: middle; + width: 32px; + height: 32px; + line-height: 32px; + border-radius: 16px; +} + +.logo-con{ + height: 60px; + padding: 13px 0 0; + img{ + height: 32px; + width: 135px; + display: block; + //margin: 0 auto; + } +} + +#el-login-footer { + height: 40px; + line-height: 40px; + position: fixed; + bottom: 0; + width: 100%; + text-align: center; + color: #fff; + font-family: Arial, serif; + font-size: 12px; + letter-spacing: 1px; +} + +#el-main-footer { + background: none repeat scroll 0 0 white; + border-top: 1px solid #e7eaec; + overflow: hidden; + padding: 10px 6px 0 6px; + height: 33px; + font-size: 0.7rem !important; + color: #7a8b9a; + letter-spacing: 0.8px; + font-family: Arial, sans-serif !important; + position: fixed; + bottom: 0; + z-index: 99; + width: 100%; +} +.eladmin-upload { + border: 1px dashed #c0ccda; + border-radius: 5px; + height: 45px; + line-height: 45px; + width: 368px; +} +.my-blockquote{ + margin: 0 0 10px; + padding: 15px; + line-height: 22px; + border-left: 5px solid #00437B; + border-radius: 0 2px 2px 0; + background-color: #f2f2f2; +} +.my-code{ + position: relative; + padding: 15px; + line-height: 20px; + border-left: 5px solid #ddd; + color: #333; + font-family: Courier New, serif; + font-size: 12px +} + +.el-tabs{ + margin-bottom: 25px; +} diff --git a/qd/src/assets/styles/element-ui.scss b/qd/src/assets/styles/element-ui.scss new file mode 100644 index 0000000..8f7881c --- /dev/null +++ b/qd/src/assets/styles/element-ui.scss @@ -0,0 +1,79 @@ +// 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; +} + +.cell { + .el-tag { + margin-right: 0; + } +} + +.small-padding { + .cell { + padding-left: 5px; + padding-right: 5px; + } +} + +.fixed-width { + .el-button--mini { + padding: 7px 10px; + width: 60px; + } +} + +.status-col { + .cell { + padding: 0 10px; + text-align: center; + + .el-tag { + margin-right: 0; + } + } +} + +// 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 + } +} + +// fix date-picker ui bug in filter-item +.el-range-editor.el-input__inner { + display: inline-flex !important; +} diff --git a/qd/src/assets/styles/element-variables.scss b/qd/src/assets/styles/element-variables.scss new file mode 100644 index 0000000..a4f8c4a --- /dev/null +++ b/qd/src/assets/styles/element-variables.scss @@ -0,0 +1,31 @@ +/** +* I think element-ui's default theme color is too light for long-term use. +* So I modified the default color and you can modify it to your liking. +**/ + +/* theme color */ +$--color-primary: #1890ff; +$--color-success: #13ce66; +$--color-warning: #FFBA00; +$--color-danger: #ff4949; +// $--color-info: #1E1E1E; + +$--button-font-weight: 400; + +// $--color-text-regular: #1f2d3d; + +$--border-color-light: #dfe4ed; +$--border-color-lighter: #e6ebf5; + +$--table-border:1px solid#dfe6ec; + +/* icon font path, required */ +$--font-path: '~element-ui/lib/theme-chalk/fonts'; + +@import "../../../node_modules/element-ui/packages/theme-chalk/src/index"; + +// the :export directive is the magic sauce for webpack +// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass +:export { + theme: $--color-primary; +} diff --git a/qd/src/assets/styles/index.scss b/qd/src/assets/styles/index.scss new file mode 100644 index 0000000..21fbda1 --- /dev/null +++ b/qd/src/assets/styles/index.scss @@ -0,0 +1,182 @@ +@import 'variables'; +@import 'mixin'; +@import 'transition'; +@import 'element-ui'; +@import 'sidebar'; +@import 'btn'; +@import 'eladmin'; + +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; +} + +.no-padding { + padding: 0 !important; +} + +.padding-content { + padding: 4px 0; +} + +a:focus, +a:active { + outline: none; +} + +a, +a:focus, +a:hover { + cursor: pointer; + color: inherit; + text-decoration: none; +} + +div:focus { + outline: none; +} + +.fr { + float: right; +} + +.fl { + float: left; +} + +.pr-5 { + padding-right: 5px; +} + +.pl-5 { + padding-left: 5px; +} + +.block { + display: block; +} + +.pointer { + cursor: pointer; +} + +.inlineBlock { + display: block; +} + +.clearfix { + &:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0; + } +} + +aside { + background: #eef1f6; + padding: 8px 24px; + margin-bottom: 20px; + border-radius: 2px; + display: block; + line-height: 32px; + font-size: 16px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; + color: #2c3e50; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + a { + color: #337ab7; + cursor: pointer; + + &:hover { + color: rgb(32, 160, 255); + } + } +} + +//main-container全局样式 +.app-container { + padding: 20px 20px 45px 20px; +} + +.components-container { + margin: 30px 50px; + position: relative; +} + +.pagination-container { + margin-top: 30px; +} + +.text-center { + text-align: center +} + +.sub-navbar { + height: 50px; + line-height: 50px; + position: relative; + width: 100%; + text-align: right; + padding-right: 20px; + transition: 600ms ease position; + background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%); + + .subtitle { + font-size: 20px; + color: #fff; + } + + &.draft { + background: #d0d0d0; + } + + &.deleted { + background: #d0d0d0; + } +} + +.link-type, +.link-type:focus { + color: #337ab7; + cursor: pointer; + + &:hover { + color: rgb(32, 160, 255); + } +} + +//refine vue-multiselect plugin +.multiselect { + line-height: 16px; +} + +.multiselect--active { + z-index: 1000 !important; +} diff --git a/qd/src/assets/styles/mixin.scss b/qd/src/assets/styles/mixin.scss new file mode 100644 index 0000000..06fa061 --- /dev/null +++ b/qd/src/assets/styles/mixin.scss @@ -0,0 +1,66 @@ +@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%; +} + +@mixin pct($pct) { + width: #{$pct}; + position: relative; + margin: 0 auto; +} + +@mixin triangle($width, $height, $color, $direction) { + $width: $width/2; + $color-border-style: $height solid $color; + $transparent-border-style: $width solid transparent; + height: 0; + width: 0; + + @if $direction==up { + border-bottom: $color-border-style; + border-left: $transparent-border-style; + border-right: $transparent-border-style; + } + + @else if $direction==right { + border-left: $color-border-style; + border-top: $transparent-border-style; + border-bottom: $transparent-border-style; + } + + @else if $direction==down { + border-top: $color-border-style; + border-left: $transparent-border-style; + border-right: $transparent-border-style; + } + + @else if $direction==left { + border-right: $color-border-style; + border-top: $transparent-border-style; + border-bottom: $transparent-border-style; + } +} diff --git a/qd/src/assets/styles/sidebar.scss b/qd/src/assets/styles/sidebar.scss new file mode 100644 index 0000000..17381fc --- /dev/null +++ b/qd/src/assets/styles/sidebar.scss @@ -0,0 +1,209 @@ +#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: 0; + 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: 0; + } + + .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; + } + + .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; + } + } + } + + .el-submenu { + overflow: hidden; + + &>.el-submenu__title { + padding: 0 !important; + + .svg-icon { + margin-left: 20px; + } + + .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: 0; + } + + .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; + } + } + + .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/qd/src/assets/styles/transition.scss b/qd/src/assets/styles/transition.scss new file mode 100644 index 0000000..4cb27cc --- /dev/null +++ b/qd/src/assets/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/qd/src/assets/styles/variables.scss b/qd/src/assets/styles/variables.scss new file mode 100644 index 0000000..41de79c --- /dev/null +++ b/qd/src/assets/styles/variables.scss @@ -0,0 +1,35 @@ +// base color +$blue:#324157; +$light-blue:#3A71A8; +$red:#C03639; +$pink: #E65D6E; +$green: #30B08F; +$tiffany: #4AB7BD; +$yellow:#FEC171; +$panGreen: #30B08F; + +// sidebar +$menuText:#bfcbd9; +$menuActiveText:#409EFF; +$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951 + +$menuBg:#304156; +$menuHover:#263445; + +$subMenuBg:#1f2d3d; +$subMenuHover:#001528; + +$sideBarWidth: 205px; + +// 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/qd/src/components/Breadcrumb/index.vue b/qd/src/components/Breadcrumb/index.vue new file mode 100644 index 0000000..204ea59 --- /dev/null +++ b/qd/src/components/Breadcrumb/index.vue @@ -0,0 +1,81 @@ + + + + + diff --git a/qd/src/components/Crud/CRUD.operation.vue b/qd/src/components/Crud/CRUD.operation.vue new file mode 100644 index 0000000..20fd0db --- /dev/null +++ b/qd/src/components/Crud/CRUD.operation.vue @@ -0,0 +1,265 @@ + + + + diff --git a/qd/src/components/Crud/Pagination.vue b/qd/src/components/Crud/Pagination.vue new file mode 100644 index 0000000..d4482fb --- /dev/null +++ b/qd/src/components/Crud/Pagination.vue @@ -0,0 +1,18 @@ + + + diff --git a/qd/src/components/Crud/RR.operation.vue b/qd/src/components/Crud/RR.operation.vue new file mode 100644 index 0000000..df2c138 --- /dev/null +++ b/qd/src/components/Crud/RR.operation.vue @@ -0,0 +1,20 @@ + + + diff --git a/qd/src/components/Crud/UD.operation.vue b/qd/src/components/Crud/UD.operation.vue new file mode 100644 index 0000000..55a452a --- /dev/null +++ b/qd/src/components/Crud/UD.operation.vue @@ -0,0 +1,79 @@ + + diff --git a/qd/src/components/Crud/crud.js b/qd/src/components/Crud/crud.js new file mode 100644 index 0000000..b9cbdc5 --- /dev/null +++ b/qd/src/components/Crud/crud.js @@ -0,0 +1,867 @@ +import { download, initData } from '@/api/data' +import { downloadFile, parseTime } from '@/utils/index' +import Vue from 'vue' + +/** + * CRUD配置 + * @author moxun + * @param {*} options
+ * @return crud instance. + * @example + * 要使用多crud时,请在关联crud的组件处使用crud-tag进行标记,如: + */ +function CRUD(options) { + const defaultOptions = { + tag: 'default', + // id字段名 + idField: 'id', + // 标题 + title: '', + // 请求数据的url + url: '', + // 表格数据 + data: [], + // 选择项 + selections: [], + // 待查询的对象 + query: {}, + // 查询数据的参数 + params: {}, + // Form 表单 + form: {}, + // 重置表单 + defaultForm: () => {}, + // 排序规则,默认 id 降序, 支持多字段排序 ['id,desc', 'createTime,asc'] + sort: ['id,desc'], + // 等待时间 + time: 50, + // CRUD Method + crudMethod: { + add: (form) => {}, + del: (id) => {}, + edit: (form) => {}, + get: (id) => {} + }, + // 主页操作栏显示哪些按钮 + optShow: { + add: true, + edit: true, + del: true, + download: true, + reset: true + }, + page: { + // 页码 + page: 0, + // 每页数据条数 + size: 10, + // 总数据条数 + total: 0 + }, + // 自定义一些扩展属性 + props: {}, + // 在主页准备 + queryOnPresenterCreated: true, + // 调试开关 + debug: false + } + options = mergeOptions(defaultOptions, options) + const data = { + ...options, + // 记录数据状态 + dataStatus: {}, + status: { + add: CRUD.STATUS.NORMAL, + edit: CRUD.STATUS.NORMAL, + // 添加或编辑状态 + get cu() { + if (this.add === CRUD.STATUS.NORMAL && this.edit === CRUD.STATUS.NORMAL) { + return CRUD.STATUS.NORMAL + } else if (this.add === CRUD.STATUS.PREPARED || this.edit === CRUD.STATUS.PREPARED) { + return CRUD.STATUS.PREPARED + } else if (this.add === CRUD.STATUS.PROCESSING || this.edit === CRUD.STATUS.PROCESSING) { + return CRUD.STATUS.PROCESSING + } + throw new Error('wrong crud\'s cu status') + }, + // 标题 + get title() { + return this.add > CRUD.STATUS.NORMAL ? `新增${crud.title}` : this.edit > CRUD.STATUS.NORMAL ? `编辑${crud.title}` : crud.title + } + }, + msg: { + submit: '提交成功', + add: '新增成功', + edit: '编辑成功', + del: '删除成功' + }, + + // 整体loading + loading: false, + // 导出的 Loading + downloadLoading: false, + // 导出csv的 Loading + downloadcsvLoading: false, + // 删除的 Loading + delAllLoading: false + } + const methods = { + /** + * 通用的提示 + */ + submitSuccessNotify() { + crud.notify(crud.msg.submit, CRUD.NOTIFICATION_TYPE.SUCCESS) + }, + addSuccessNotify() { + crud.notify(crud.msg.add, CRUD.NOTIFICATION_TYPE.SUCCESS) + }, + editSuccessNotify() { + crud.notify(crud.msg.edit, CRUD.NOTIFICATION_TYPE.SUCCESS) + }, + delSuccessNotify() { + crud.notify(crud.msg.del, CRUD.NOTIFICATION_TYPE.SUCCESS) + }, + // 搜索 + toQuery() { + crud.page.page = 1 + crud.refresh() + }, + // 刷新 + refresh() { + if (!callVmHook(crud, CRUD.HOOK.beforeRefresh)) { + return + } + return new Promise((resolve, reject) => { + crud.loading = true + // 请求数据 + initData(crud.url, crud.getQueryParams()).then(data => { + const table = crud.getTable() + if (table && table.lazy) { // 懒加载子节点数据,清掉已加载的数据 + table.store.states.treeData = {} + table.store.states.lazyTreeNodeMap = {} + } + crud.page.total = data.totalElements + crud.data = data.content + crud.resetDataStatus() + // time 毫秒后显示表格 + setTimeout(() => { + crud.loading = false + callVmHook(crud, CRUD.HOOK.afterRefresh) + }, crud.time) + resolve(data) + }).catch(err => { + crud.loading = false + reject(err) + }) + }) + }, + /** + * 启动添加 + */ + toAdd() { + crud.resetForm() + if (!(callVmHook(crud, CRUD.HOOK.beforeToAdd, crud.form) && callVmHook(crud, CRUD.HOOK.beforeToCU, crud.form))) { + return + } + crud.status.add = CRUD.STATUS.PREPARED + callVmHook(crud, CRUD.HOOK.afterToAdd, crud.form) + callVmHook(crud, CRUD.HOOK.afterToCU, crud.form) + }, + /** + * 启动编辑 + * @param {*} data 数据项 + */ + toEdit(data) { + crud.resetForm(JSON.parse(JSON.stringify(data))) + if (!(callVmHook(crud, CRUD.HOOK.beforeToEdit, crud.form) && callVmHook(crud, CRUD.HOOK.beforeToCU, crud.form))) { + return + } + crud.status.edit = CRUD.STATUS.PREPARED + crud.getDataStatus(crud.getDataId(data)).edit = CRUD.STATUS.PREPARED + callVmHook(crud, CRUD.HOOK.afterToEdit, crud.form) + callVmHook(crud, CRUD.HOOK.afterToCU, crud.form) + }, + /** + * 启动删除 + * @param {*} data 数据项 + */ + toDelete(data) { + crud.getDataStatus(crud.getDataId(data)).delete = CRUD.STATUS.PREPARED + }, + /** + * 取消删除 + * @param {*} data 数据项 + */ + cancelDelete(data) { + if (!callVmHook(crud, CRUD.HOOK.beforeDeleteCancel, data)) { + return + } + crud.getDataStatus(crud.getDataId(data)).delete = CRUD.STATUS.NORMAL + callVmHook(crud, CRUD.HOOK.afterDeleteCancel, data) + }, + /** + * 取消新增/编辑 + */ + cancelCU() { + const addStatus = crud.status.add + const editStatus = crud.status.edit + if (addStatus === CRUD.STATUS.PREPARED) { + if (!callVmHook(crud, CRUD.HOOK.beforeAddCancel, crud.form)) { + return + } + crud.status.add = CRUD.STATUS.NORMAL + } + if (editStatus === CRUD.STATUS.PREPARED) { + if (!callVmHook(crud, CRUD.HOOK.beforeEditCancel, crud.form)) { + return + } + crud.status.edit = CRUD.STATUS.NORMAL + crud.getDataStatus(crud.getDataId(crud.form)).edit = CRUD.STATUS.NORMAL + } + crud.resetForm() + if (addStatus === CRUD.STATUS.PREPARED) { + callVmHook(crud, CRUD.HOOK.afterAddCancel, crud.form) + } + if (editStatus === CRUD.STATUS.PREPARED) { + callVmHook(crud, CRUD.HOOK.afterEditCancel, crud.form) + } + // 清除表单验证 + if (crud.findVM('form').$refs['form']) { + crud.findVM('form').$refs['form'].clearValidate() + } + }, + /** + * 提交新增/编辑 + */ + submitCU() { + if (!callVmHook(crud, CRUD.HOOK.beforeValidateCU)) { + return + } + crud.findVM('form').$refs['form'].validate(valid => { + if (!valid) { + return + } + if (!callVmHook(crud, CRUD.HOOK.afterValidateCU)) { + return + } + if (crud.status.add === CRUD.STATUS.PREPARED) { + crud.doAdd() + } else if (crud.status.edit === CRUD.STATUS.PREPARED) { + crud.doEdit() + } + }) + }, + /** + * 执行添加 + */ + doAdd() { + if (!callVmHook(crud, CRUD.HOOK.beforeSubmit)) { + return + } + crud.status.add = CRUD.STATUS.PROCESSING + crud.crudMethod.add(crud.form).then(() => { + crud.status.add = CRUD.STATUS.NORMAL + crud.resetForm() + crud.addSuccessNotify() + callVmHook(crud, CRUD.HOOK.afterSubmit) + crud.toQuery() + }).catch(() => { + crud.status.add = CRUD.STATUS.PREPARED + callVmHook(crud, CRUD.HOOK.afterAddError) + }) + }, + /** + * 执行编辑 + */ + doEdit() { + if (!callVmHook(crud, CRUD.HOOK.beforeSubmit)) { + return + } + crud.status.edit = CRUD.STATUS.PROCESSING + crud.crudMethod.edit(crud.form).then(() => { + crud.status.edit = CRUD.STATUS.NORMAL + crud.getDataStatus(crud.getDataId(crud.form)).edit = CRUD.STATUS.NORMAL + crud.editSuccessNotify() + crud.resetForm() + callVmHook(crud, CRUD.HOOK.afterSubmit) + crud.refresh() + }).catch(() => { + crud.status.edit = CRUD.STATUS.PREPARED + callVmHook(crud, CRUD.HOOK.afterEditError) + }) + }, + /** + * 执行删除 + * @param {*} data 数据项 + */ + doDelete(data) { + let delAll = false + let dataStatus + const ids = [] + if (data instanceof Array) { + delAll = true + data.forEach(val => { + ids.push(this.getDataId(val)) + }) + } else { + ids.push(this.getDataId(data)) + dataStatus = crud.getDataStatus(this.getDataId(data)) + } + if (!callVmHook(crud, CRUD.HOOK.beforeDelete, data)) { + return + } + if (!delAll) { + dataStatus.delete = CRUD.STATUS.PROCESSING + } + return crud.crudMethod.del(ids).then(() => { + if (delAll) { + crud.delAllLoading = false + } else dataStatus.delete = CRUD.STATUS.PREPARED + crud.dleChangePage(1) + crud.delSuccessNotify() + callVmHook(crud, CRUD.HOOK.afterDelete, data) + crud.refresh() + }).catch(() => { + if (delAll) { + crud.delAllLoading = false + } else dataStatus.delete = CRUD.STATUS.PREPARED + }) + }, + /** + * 通用导出 + */ + doExport() { + crud.downloadLoading = true + download(crud.url + '/download', crud.getQueryParams()).then(result => { + downloadFile(result, crud.title + '数据', 'xlsx') + crud.downloadLoading = false + }).catch(() => { + crud.downloadLoading = false + }) + }, + + /** + * 获取查询参数 + */ + getQueryParams: function() { + // 清除参数无值的情况 + Object.keys(crud.query).length !== 0 && Object.keys(crud.query).forEach(item => { + if (crud.query[item] === null || crud.query[item] === '') crud.query[item] = undefined + }) + Object.keys(crud.params).length !== 0 && Object.keys(crud.params).forEach(item => { + if (crud.params[item] === null || crud.params[item] === '') crud.params[item] = undefined + }) + return { + page: crud.page.page - 1, + size: crud.page.size, + sort: crud.sort, + ...crud.query, + ...crud.params + } + }, + // 当前页改变 + pageChangeHandler(e) { + crud.page.page = e + crud.refresh() + }, + // 每页条数改变 + sizeChangeHandler(e) { + crud.page.size = e + crud.page.page = 1 + crud.refresh() + }, + // 预防删除第二页最后一条数据时,或者多选删除第二页的数据时,页码错误导致请求无数据 + dleChangePage(size) { + if (crud.data.length === size && crud.page.page !== 1) { + crud.page.page -= 1 + } + }, + // 选择改变 + selectionChangeHandler(val) { + crud.selections = val + }, + /** + * 重置查询参数 + * @param {Boolean} toQuery 重置后进行查询操作 + */ + resetQuery(toQuery = true) { + const defaultQuery = JSON.parse(JSON.stringify(crud.defaultQuery)) + const query = crud.query + Object.keys(query).forEach(key => { + query[key] = defaultQuery[key] + }) + // 重置参数 + this.params = {} + if (toQuery) { + crud.toQuery() + } + }, + /** + * 重置表单 + * @param {Array} data 数据 + */ + resetForm(data) { + const form = data || (typeof crud.defaultForm === 'object' ? JSON.parse(JSON.stringify(crud.defaultForm)) : crud.defaultForm.apply(crud.findVM('form'))) + const crudFrom = crud.form + for (const key in form) { + if (crudFrom.hasOwnProperty(key)) { + crudFrom[key] = form[key] + } else { + Vue.set(crudFrom, key, form[key]) + } + } + // add by ghl 2020-10-04 页面重复添加信息时,下拉框的校验会存在,需要找工取消 + if (crud.findVM('form').$refs['form']) { + crud.findVM('form').$refs['form'].clearValidate() + } + }, + /** + * 重置数据状态 + */ + resetDataStatus() { + const dataStatus = {} + function resetStatus(datas) { + datas.forEach(e => { + dataStatus[crud.getDataId(e)] = { + delete: 0, + edit: 0 + } + if (e.children) { + resetStatus(e.children) + } + }) + } + resetStatus(crud.data) + crud.dataStatus = dataStatus + }, + /** + * 获取数据状态 + * @param {Number | String} id 数据项id + */ + getDataStatus(id) { + return crud.dataStatus[id] + }, + /** + * 用于树形表格多选, 选中所有 + * @param selection + */ + selectAllChange(selection) { + // 如果选中的数目与请求到的数目相同就选中子节点,否则就清空选中 + if (selection && selection.length === crud.data.length) { + selection.forEach(val => { + crud.selectChange(selection, val) + }) + } else { + crud.getTable().clearSelection() + } + }, + /** + * 用于树形表格多选,单选的封装 + * @param selection + * @param row + */ + selectChange(selection, row) { + // 如果selection中存在row代表是选中,否则是取消选中 + if (selection.find(val => { return crud.getDataId(val) === crud.getDataId(row) })) { + if (row.children) { + row.children.forEach(val => { + crud.getTable().toggleRowSelection(val, true) + selection.push(val) + if (val.children) { + crud.selectChange(selection, val) + } + }) + } + } else { + crud.toggleRowSelection(selection, row) + } + }, + /** + * 切换选中状态 + * @param selection + * @param data + */ + toggleRowSelection(selection, data) { + if (data.children) { + data.children.forEach(val => { + crud.getTable().toggleRowSelection(val, false) + if (val.children) { + crud.toggleRowSelection(selection, val) + } + }) + } + }, + findVM(type) { + return crud.vms.find(vm => vm && vm.type === type).vm + }, + notify(title, type = CRUD.NOTIFICATION_TYPE.INFO) { + crud.vms[0].vm.$notify({ + title, + type, + duration: 2500 + }) + }, + updateProp(name, value) { + Vue.set(crud.props, name, value) + }, + getDataId(data) { + return data[this.idField] + }, + getTable() { + return this.findVM('presenter').$refs.table + }, + attchTable() { + const table = this.getTable() + this.updateProp('table', table) + const that = this + table.$on('expand-change', (row, expanded) => { + if (!expanded) { + return + } + const lazyTreeNodeMap = table.store.states.lazyTreeNodeMap + row.children = lazyTreeNodeMap[crud.getDataId(row)] + if (row.children) { + row.children.forEach(ele => { + const id = crud.getDataId(ele) + if (that.dataStatus[id] === undefined) { + that.dataStatus[id] = { + delete: 0, + edit: 0 + } + } + }) + } + }) + } + } + const crud = Object.assign({}, data) + // 可观测化 + Vue.observable(crud) + // 附加方法 + Object.assign(crud, methods) + // 记录初始默认的查询参数,后续重置查询时使用 + Object.assign(crud, { + defaultQuery: JSON.parse(JSON.stringify(data.query)), + // 预留4位存储:组件 主页、头部、分页、表单,调试查看也方便找 + vms: Array(4), + /** + * 注册组件实例 + * @param {String} type 类型 + * @param {*} vm 组件实例 + * @param {Number} index 该参数内部使用 + */ + registerVM(type, vm, index = -1) { + const vmObj = { + type, + vm: vm + } + if (index < 0) { + this.vms.push(vmObj) + return + } + if (index < 4) { // 内置预留vm数 + this.vms[index] = vmObj + return + } + this.vms.length = Math.max(this.vms.length, index) + this.vms.splice(index, 1, vmObj) + }, + /** + * 取消注册组件实例 + * @param {*} vm 组件实例 + */ + unregisterVM(type, vm) { + for (let i = this.vms.length - 1; i >= 0; i--) { + if (this.vms[i] === undefined) { + continue + } + if (this.vms[i].type === type && this.vms[i].vm === vm) { + if (i < 4) { // 内置预留vm数 + this.vms[i] = undefined + } else { + this.vms.splice(i, 1) + } + break + } + } + } + }) + // 冻结处理,需要扩展数据的话,使用crud.updateProp(name, value),以crud.props.name形式访问,这个是响应式的,可以做数据绑定 + Object.freeze(crud) + return crud +} + +// hook VM +function callVmHook(crud, hook) { + if (crud.debug) { + console.log('callVmHook: ' + hook) + } + const tagHook = crud.tag ? hook + '$' + crud.tag : null + let ret = true + const nargs = [crud] + for (let i = 2; i < arguments.length; ++i) { + nargs.push(arguments[i]) + } + // 有些组件扮演了多个角色,调用钩子时,需要去重 + const vmSet = new Set() + crud.vms.forEach(vm => vm && vmSet.add(vm.vm)) + vmSet.forEach(vm => { + if (vm[hook]) { + ret = vm[hook].apply(vm, nargs) !== false && ret + } + if (tagHook && vm[tagHook]) { + ret = vm[tagHook].apply(vm, nargs) !== false && ret + } + }) + return ret +} + +function mergeOptions(src, opts) { + const optsRet = { + ...src + } + for (const key in src) { + if (opts.hasOwnProperty(key)) { + optsRet[key] = opts[key] + } + } + return optsRet +} + +/** + * 查找crud + * @param {*} vm + * @param {string} tag + */ +function lookupCrud(vm, tag) { + tag = tag || vm.$attrs['crud-tag'] || 'default' + // function lookupCrud(vm, tag) { + if (vm.$crud) { + const ret = vm.$crud[tag] + if (ret) { + return ret + } + } + return vm.$parent ? lookupCrud(vm.$parent, tag) : undefined +} + +/** + * crud主页 + */ +function presenter(crud) { + if (crud) { + console.warn('[CRUD warn]: ' + 'please use $options.cruds() { return CRUD(...) or [CRUD(...), ...] }') + } + return { + data() { + // 在data中返回crud,是为了将crud与当前实例关联,组件观测crud相关属性变化 + return { + crud: this.crud + } + }, + beforeCreate() { + this.$crud = this.$crud || {} + let cruds = this.$options.cruds instanceof Function ? this.$options.cruds() : crud + if (!(cruds instanceof Array)) { + cruds = [cruds] + } + cruds.forEach(ele => { + if (this.$crud[ele.tag]) { + console.error('[CRUD error]: ' + 'crud with tag [' + ele.tag + ' is already exist') + } + this.$crud[ele.tag] = ele + ele.registerVM('presenter', this, 0) + }) + this.crud = this.$crud['defalut'] || cruds[0] + }, + methods: { + parseTime + }, + created() { + for (const k in this.$crud) { + if (this.$crud[k].queryOnPresenterCreated) { + this.$crud[k].toQuery() + } + } + }, + destroyed() { + for (const k in this.$crud) { + this.$crud[k].unregisterVM('presenter', this) + } + }, + mounted() { + // 如果table未实例化(例如使用了v-if),请稍后在适当时机crud.attchTable刷新table信息 + if (this.$refs.table !== undefined) { + this.crud.attchTable() + } + } + } +} + +/** + * 头部 + */ +function header() { + return { + data() { + return { + crud: this.crud, + query: this.crud.query + } + }, + beforeCreate() { + this.crud = lookupCrud(this) + this.crud.registerVM('header', this, 1) + }, + destroyed() { + this.crud.unregisterVM('header', this) + } + } +} + +/** + * 分页 + */ +function pagination() { + return { + data() { + return { + crud: this.crud, + page: this.crud.page + } + }, + beforeCreate() { + this.crud = lookupCrud(this) + this.crud.registerVM('pagination', this, 2) + }, + destroyed() { + this.crud.unregisterVM('pagination', this) + } + } +} + +/** + * 表单 + */ +function form(defaultForm) { + return { + data() { + return { + crud: this.crud, + form: this.crud.form + } + }, + beforeCreate() { + this.crud = lookupCrud(this) + this.crud.registerVM('form', this, 3) + }, + created() { + this.crud.defaultForm = defaultForm + this.crud.resetForm() + }, + destroyed() { + this.crud.unregisterVM('form', this) + } + } +} + +/** + * crud + */ +function crud(options = {}) { + const defaultOptions = { + type: undefined + } + options = mergeOptions(defaultOptions, options) + return { + data() { + return { + crud: this.crud + } + }, + beforeCreate() { + this.crud = lookupCrud(this) + this.crud.registerVM(options.type, this) + }, + destroyed() { + this.crud.unregisterVM(options.type, this) + } + } +} + +/** + * CRUD钩子 + */ +CRUD.HOOK = { + /** 刷新 - 之前 */ + beforeRefresh: 'beforeCrudRefresh', + /** 刷新 - 之后 */ + afterRefresh: 'afterCrudRefresh', + /** 删除 - 之前 */ + beforeDelete: 'beforeCrudDelete', + /** 删除 - 之后 */ + afterDelete: 'afterCrudDelete', + /** 删除取消 - 之前 */ + beforeDeleteCancel: 'beforeCrudDeleteCancel', + /** 删除取消 - 之后 */ + afterDeleteCancel: 'afterCrudDeleteCancel', + /** 新建 - 之前 */ + beforeToAdd: 'beforeCrudToAdd', + /** 新建 - 之后 */ + afterToAdd: 'afterCrudToAdd', + /** 编辑 - 之前 */ + beforeToEdit: 'beforeCrudToEdit', + /** 编辑 - 之后 */ + afterToEdit: 'afterCrudToEdit', + /** 开始 "新建/编辑" - 之前 */ + beforeToCU: 'beforeCrudToCU', + /** 开始 "新建/编辑" - 之后 */ + afterToCU: 'afterCrudToCU', + /** "新建/编辑" 验证 - 之前 */ + beforeValidateCU: 'beforeCrudValidateCU', + /** "新建/编辑" 验证 - 之后 */ + afterValidateCU: 'afterCrudValidateCU', + /** 添加取消 - 之前 */ + beforeAddCancel: 'beforeCrudAddCancel', + /** 添加取消 - 之后 */ + afterAddCancel: 'afterCrudAddCancel', + /** 编辑取消 - 之前 */ + beforeEditCancel: 'beforeCrudEditCancel', + /** 编辑取消 - 之后 */ + afterEditCancel: 'afterCrudEditCancel', + /** 提交 - 之前 */ + beforeSubmit: 'beforeCrudSubmitCU', + /** 提交 - 之后 */ + afterSubmit: 'afterCrudSubmitCU', + afterAddError: 'afterCrudAddError', + afterEditError: 'afterCrudEditError' +} + +/** + * CRUD状态 + */ +CRUD.STATUS = { + NORMAL: 0, + PREPARED: 1, + PROCESSING: 2 +} + +/** + * CRUD通知类型 + */ +CRUD.NOTIFICATION_TYPE = { + SUCCESS: 'success', + WARNING: 'warning', + INFO: 'info', + ERROR: 'error' +} + +export default CRUD + +export { + presenter, + header, + form, + pagination, + crud +} diff --git a/qd/src/components/DateRangePicker/index.vue b/qd/src/components/DateRangePicker/index.vue new file mode 100644 index 0000000..eef79bd --- /dev/null +++ b/qd/src/components/DateRangePicker/index.vue @@ -0,0 +1,45 @@ + diff --git a/qd/src/components/Dict/Dict.js b/qd/src/components/Dict/Dict.js new file mode 100644 index 0000000..48554de --- /dev/null +++ b/qd/src/components/Dict/Dict.js @@ -0,0 +1,29 @@ +import Vue from 'vue' +import { get as getDictDetail } from '@/api/system/dictDetail' + +export default class Dict { + constructor(dict) { + this.dict = dict + } + + async init(names, completeCallback) { + if (names === undefined || name === null) { + throw new Error('need Dict names') + } + const ps = [] + names.forEach(n => { + Vue.set(this.dict.dict, n, {}) + Vue.set(this.dict.label, n, {}) + Vue.set(this.dict, n, []) + ps.push(getDictDetail(n).then(data => { + this.dict[n].splice(0, 0, ...data.content) + data.content.forEach(d => { + Vue.set(this.dict.dict[n], d.value, d) + Vue.set(this.dict.label[n], d.value, d.label) + }) + })) + }) + await Promise.all(ps) + completeCallback() + } +} diff --git a/qd/src/components/Dict/index.js b/qd/src/components/Dict/index.js new file mode 100644 index 0000000..0952f43 --- /dev/null +++ b/qd/src/components/Dict/index.js @@ -0,0 +1,29 @@ +import Dict from './Dict' + +const install = function(Vue) { + Vue.mixin({ + data() { + if (this.$options.dicts instanceof Array) { + const dict = { + dict: {}, + label: {} + } + return { + dict + } + } + return {} + }, + created() { + if (this.$options.dicts instanceof Array) { + new Dict(this.dict).init(this.$options.dicts, () => { + this.$nextTick(() => { + this.$emit('dictReady') + }) + }) + } + } + }) +} + +export default { install } diff --git a/qd/src/components/Doc/index.vue b/qd/src/components/Doc/index.vue new file mode 100644 index 0000000..92425e8 --- /dev/null +++ b/qd/src/components/Doc/index.vue @@ -0,0 +1,16 @@ + + + diff --git a/qd/src/components/Echarts/BarChart.vue b/qd/src/components/Echarts/BarChart.vue new file mode 100644 index 0000000..fa265ef --- /dev/null +++ b/qd/src/components/Echarts/BarChart.vue @@ -0,0 +1,106 @@ + + + diff --git a/qd/src/components/Echarts/BarChart2.vue b/qd/src/components/Echarts/BarChart2.vue new file mode 100644 index 0000000..4c2580c --- /dev/null +++ b/qd/src/components/Echarts/BarChart2.vue @@ -0,0 +1,111 @@ + + + diff --git a/qd/src/components/Echarts/Category.vue b/qd/src/components/Echarts/Category.vue new file mode 100644 index 0000000..5859114 --- /dev/null +++ b/qd/src/components/Echarts/Category.vue @@ -0,0 +1,438 @@ + + + diff --git a/qd/src/components/Echarts/Funnel.vue b/qd/src/components/Echarts/Funnel.vue new file mode 100644 index 0000000..380b373 --- /dev/null +++ b/qd/src/components/Echarts/Funnel.vue @@ -0,0 +1,120 @@ + + + diff --git a/qd/src/components/Echarts/Gauge.vue b/qd/src/components/Echarts/Gauge.vue new file mode 100644 index 0000000..40ce775 --- /dev/null +++ b/qd/src/components/Echarts/Gauge.vue @@ -0,0 +1,74 @@ + + + diff --git a/qd/src/components/Echarts/Graph.vue b/qd/src/components/Echarts/Graph.vue new file mode 100644 index 0000000..a5a88b3 --- /dev/null +++ b/qd/src/components/Echarts/Graph.vue @@ -0,0 +1,101 @@ + + + diff --git a/qd/src/components/Echarts/HeatMap.vue b/qd/src/components/Echarts/HeatMap.vue new file mode 100644 index 0000000..6606278 --- /dev/null +++ b/qd/src/components/Echarts/HeatMap.vue @@ -0,0 +1,105 @@ + + + diff --git a/qd/src/components/Echarts/Line3D.vue b/qd/src/components/Echarts/Line3D.vue new file mode 100644 index 0000000..c3f16f6 --- /dev/null +++ b/qd/src/components/Echarts/Line3D.vue @@ -0,0 +1,96 @@ + + + diff --git a/qd/src/components/Echarts/PieChart.vue b/qd/src/components/Echarts/PieChart.vue new file mode 100644 index 0000000..ff1bc52 --- /dev/null +++ b/qd/src/components/Echarts/PieChart.vue @@ -0,0 +1,84 @@ + + + diff --git a/qd/src/components/Echarts/Point.vue b/qd/src/components/Echarts/Point.vue new file mode 100644 index 0000000..5a6c777 --- /dev/null +++ b/qd/src/components/Echarts/Point.vue @@ -0,0 +1,149 @@ + + + diff --git a/qd/src/components/Echarts/RadarChart.vue b/qd/src/components/Echarts/RadarChart.vue new file mode 100644 index 0000000..de70e52 --- /dev/null +++ b/qd/src/components/Echarts/RadarChart.vue @@ -0,0 +1,120 @@ + + + diff --git a/qd/src/components/Echarts/Rich.vue b/qd/src/components/Echarts/Rich.vue new file mode 100644 index 0000000..1cf6bf2 --- /dev/null +++ b/qd/src/components/Echarts/Rich.vue @@ -0,0 +1,149 @@ + + + diff --git a/qd/src/components/Echarts/Sankey.vue b/qd/src/components/Echarts/Sankey.vue new file mode 100644 index 0000000..49968c4 --- /dev/null +++ b/qd/src/components/Echarts/Sankey.vue @@ -0,0 +1,100 @@ + + + diff --git a/qd/src/components/Echarts/Scatter.vue b/qd/src/components/Echarts/Scatter.vue new file mode 100644 index 0000000..b776efb --- /dev/null +++ b/qd/src/components/Echarts/Scatter.vue @@ -0,0 +1,143 @@ + + + diff --git a/qd/src/components/Echarts/Sunburst.vue b/qd/src/components/Echarts/Sunburst.vue new file mode 100644 index 0000000..fafc1a8 --- /dev/null +++ b/qd/src/components/Echarts/Sunburst.vue @@ -0,0 +1,107 @@ + + + diff --git a/qd/src/components/Echarts/ThemeRiver.vue b/qd/src/components/Echarts/ThemeRiver.vue new file mode 100644 index 0000000..967fc05 --- /dev/null +++ b/qd/src/components/Echarts/ThemeRiver.vue @@ -0,0 +1,148 @@ + + + diff --git a/qd/src/components/Echarts/WordCloud.vue b/qd/src/components/Echarts/WordCloud.vue new file mode 100644 index 0000000..415f2a8 --- /dev/null +++ b/qd/src/components/Echarts/WordCloud.vue @@ -0,0 +1,192 @@ + + + diff --git a/qd/src/components/GithubCorner/index.vue b/qd/src/components/GithubCorner/index.vue new file mode 100644 index 0000000..fd77324 --- /dev/null +++ b/qd/src/components/GithubCorner/index.vue @@ -0,0 +1,54 @@ + + + diff --git a/qd/src/components/Hamburger/index.vue b/qd/src/components/Hamburger/index.vue new file mode 100644 index 0000000..368b002 --- /dev/null +++ b/qd/src/components/Hamburger/index.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/qd/src/components/HeaderSearch/index.vue b/qd/src/components/HeaderSearch/index.vue new file mode 100644 index 0000000..c713efc --- /dev/null +++ b/qd/src/components/HeaderSearch/index.vue @@ -0,0 +1,188 @@ + + + + + diff --git a/qd/src/components/IconSelect/index.vue b/qd/src/components/IconSelect/index.vue new file mode 100644 index 0000000..b0ec9fa --- /dev/null +++ b/qd/src/components/IconSelect/index.vue @@ -0,0 +1,68 @@ + + + + + + diff --git a/qd/src/components/IconSelect/requireIcons.js b/qd/src/components/IconSelect/requireIcons.js new file mode 100644 index 0000000..99e5c54 --- /dev/null +++ b/qd/src/components/IconSelect/requireIcons.js @@ -0,0 +1,11 @@ + +const req = require.context('../../assets/icons/svg', false, /\.svg$/) +const requireAll = requireContext => requireContext.keys() + +const re = /\.\/(.*)\.svg/ + +const icons = requireAll(req).map(i => { + return i.match(re)[1] +}) + +export default icons diff --git a/qd/src/components/Iframe/index.vue b/qd/src/components/Iframe/index.vue new file mode 100644 index 0000000..9f395a3 --- /dev/null +++ b/qd/src/components/Iframe/index.vue @@ -0,0 +1,30 @@ +