Browse Source

1、项目初始化

lqkj@you07.com 1 year ago
commit
57558678aa
100 changed files with 17944 additions and 0 deletions
  1. 22 0
      .editorconfig
  2. 11 0
      .env.development
  3. 8 0
      .env.production
  4. 10 0
      .env.staging
  5. 10 0
      .eslintignore
  6. 199 0
      .eslintrc.js
  7. 28 0
      README.md
  8. 13 0
      babel.config.js
  9. 12 0
      bin/build.bat
  10. 12 0
      bin/package.bat
  11. 12 0
      bin/run-web.bat
  12. 35 0
      build/index.js
  13. 15674 0
      package-lock.json
  14. 97 0
      package.json
  15. 3 0
      public/config.js
  16. 1 0
      public/favicon.svg
  17. 46 0
      public/html/ie.html
  18. 209 0
      public/index.html
  19. BIN
      public/pc/login-background.jpg
  20. BIN
      public/pc/login-background_web.jpg
  21. 49 0
      src/App.vue
  22. 53 0
      src/api/business/cameraInfo.js
  23. 67 0
      src/api/business/cmsCategory.js
  24. 92 0
      src/api/business/cmsNews.js
  25. 60 0
      src/api/business/deviceCategory.js
  26. 44 0
      src/api/business/notice.js
  27. 11 0
      src/api/home/index.js
  28. 79 0
      src/api/login.js
  29. 9 0
      src/api/menu.js
  30. 9 0
      src/api/monitor/cache.js
  31. 80 0
      src/api/monitor/job.js
  32. 35 0
      src/api/monitor/jobLog.js
  33. 35 0
      src/api/monitor/logininfor.js
  34. 36 0
      src/api/monitor/operlog.js
  35. 9 0
      src/api/monitor/server.js
  36. 62 0
      src/api/system/apiConfig.js
  37. 69 0
      src/api/system/config.js
  38. 84 0
      src/api/system/dept.js
  39. 61 0
      src/api/system/dict/data.js
  40. 69 0
      src/api/system/dict/type.js
  41. 60 0
      src/api/system/menu.js
  42. 53 0
      src/api/system/post.js
  43. 120 0
      src/api/system/role.js
  44. 161 0
      src/api/system/user.js
  45. 76 0
      src/api/tool/gen.js
  46. BIN
      src/assets/401_images/401.gif
  47. BIN
      src/assets/404_images/404.png
  48. BIN
      src/assets/404_images/404_cloud.png
  49. 9 0
      src/assets/icons/index.js
  50. 1 0
      src/assets/icons/svg/404.svg
  51. 1 0
      src/assets/icons/svg/bell-filled.svg
  52. 1 0
      src/assets/icons/svg/bug.svg
  53. 1 0
      src/assets/icons/svg/build.svg
  54. 1 0
      src/assets/icons/svg/button.svg
  55. 1 0
      src/assets/icons/svg/camera-filled.svg
  56. 1 0
      src/assets/icons/svg/camera.svg
  57. 1 0
      src/assets/icons/svg/cascader.svg
  58. 1 0
      src/assets/icons/svg/chart.svg
  59. 1 0
      src/assets/icons/svg/checkbox.svg
  60. 1 0
      src/assets/icons/svg/clipboard.svg
  61. 1 0
      src/assets/icons/svg/code.svg
  62. 1 0
      src/assets/icons/svg/color.svg
  63. 1 0
      src/assets/icons/svg/component.svg
  64. 1 0
      src/assets/icons/svg/dashboard.svg
  65. 1 0
      src/assets/icons/svg/date-range.svg
  66. 1 0
      src/assets/icons/svg/date.svg
  67. 1 0
      src/assets/icons/svg/dict.svg
  68. 1 0
      src/assets/icons/svg/documentation.svg
  69. 1 0
      src/assets/icons/svg/download.svg
  70. 1 0
      src/assets/icons/svg/drag.svg
  71. 1 0
      src/assets/icons/svg/druid.svg
  72. 1 0
      src/assets/icons/svg/edit.svg
  73. 1 0
      src/assets/icons/svg/education.svg
  74. 1 0
      src/assets/icons/svg/email.svg
  75. 1 0
      src/assets/icons/svg/example.svg
  76. 1 0
      src/assets/icons/svg/excel.svg
  77. 1 0
      src/assets/icons/svg/exit-fullscreen.svg
  78. 1 0
      src/assets/icons/svg/eye-open.svg
  79. 1 0
      src/assets/icons/svg/eye.svg
  80. 1 0
      src/assets/icons/svg/film.svg
  81. 1 0
      src/assets/icons/svg/flod.svg
  82. 1 0
      src/assets/icons/svg/form.svg
  83. 1 0
      src/assets/icons/svg/fullscreen.svg
  84. 1 0
      src/assets/icons/svg/github.svg
  85. 1 0
      src/assets/icons/svg/guide.svg
  86. 1 0
      src/assets/icons/svg/icon.svg
  87. 1 0
      src/assets/icons/svg/input.svg
  88. 1 0
      src/assets/icons/svg/international.svg
  89. 1 0
      src/assets/icons/svg/job.svg
  90. 1 0
      src/assets/icons/svg/language.svg
  91. 1 0
      src/assets/icons/svg/link.svg
  92. 1 0
      src/assets/icons/svg/list.svg
  93. 1 0
      src/assets/icons/svg/list2.svg
  94. 1 0
      src/assets/icons/svg/location.svg
  95. 1 0
      src/assets/icons/svg/lock.svg
  96. 1 0
      src/assets/icons/svg/log.svg
  97. 1 0
      src/assets/icons/svg/logininfor.svg
  98. 1 0
      src/assets/icons/svg/management.svg
  99. 1 0
      src/assets/icons/svg/message.svg
  100. 0 0
      src/assets/icons/svg/money.svg

+ 22 - 0
.editorconfig

@@ -0,0 +1,22 @@
1
+# 告诉EditorConfig插件,这是根文件,不用继续往上查找
2
+root = true
3
+
4
+# 匹配全部文件
5
+[*]
6
+# 设置字符集
7
+charset = utf-8
8
+# 缩进风格,可选space、tab
9
+indent_style = space
10
+# 缩进的空格数
11
+indent_size = 2
12
+# 结尾换行符,可选lf、cr、crlf
13
+end_of_line = lf
14
+# 在文件结尾插入新行
15
+insert_final_newline = true
16
+# 删除一行中的前后空格
17
+trim_trailing_whitespace = true
18
+
19
+# 匹配md结尾的文件
20
+[*.md]
21
+insert_final_newline = false
22
+trim_trailing_whitespace = false

+ 11 - 0
.env.development

@@ -0,0 +1,11 @@
1
+# 页面标题
2
+VUE_APP_TITLE =
3
+
4
+# 开发环境配置
5
+ENV = 'development'
6
+
7
+# 若依管理系统/开发环境
8
+VUE_APP_BASE_API = '/'
9
+
10
+# 路由懒加载
11
+VUE_CLI_BABEL_TRANSPILE_MODULES = true

+ 8 - 0
.env.production

@@ -0,0 +1,8 @@
1
+# 页面标题
2
+VUE_APP_TITLE =
3
+
4
+# 生产环境配置
5
+ENV = 'production'
6
+
7
+# 若依管理系统/生产环境
8
+VUE_APP_BASE_API = '/'

+ 10 - 0
.env.staging

@@ -0,0 +1,10 @@
1
+# 页面标题
2
+VUE_APP_TITLE = 若依管理系统
3
+
4
+NODE_ENV = production
5
+
6
+# 测试环境配置
7
+ENV = 'staging'
8
+
9
+# 若依管理系统/测试环境
10
+VUE_APP_BASE_API = '/stage-api'

+ 10 - 0
.eslintignore

@@ -0,0 +1,10 @@
1
+# 忽略build目录下类型为js的文件的语法检查
2
+build/*.js
3
+# 忽略src/assets目录下文件的语法检查
4
+src/assets
5
+# 忽略public目录下文件的语法检查
6
+public
7
+# 忽略当前目录下为js的文件的语法检查
8
+*.js
9
+# 忽略当前目录下为vue的文件的语法检查
10
+*.vue

+ 199 - 0
.eslintrc.js

@@ -0,0 +1,199 @@
1
+// ESlint 检查配置
2
+module.exports = {
3
+  root: true,
4
+  parserOptions: {
5
+    parser: 'babel-eslint',
6
+    sourceType: 'module'
7
+  },
8
+  env: {
9
+    browser: true,
10
+    node: true,
11
+    es6: true,
12
+  },
13
+  extends: ['plugin:vue/recommended', 'eslint:recommended'],
14
+
15
+  // add your custom rules here
16
+  //it is base on https://github.com/vuejs/eslint-config-vue
17
+  rules: {
18
+    "vue/max-attributes-per-line": [2, {
19
+      "singleline": 10,
20
+      "multiline": {
21
+        "max": 1,
22
+        "allowFirstLine": false
23
+      }
24
+    }],
25
+    "vue/singleline-html-element-content-newline": "off",
26
+    "vue/multiline-html-element-content-newline":"off",
27
+    "vue/name-property-casing": ["error", "PascalCase"],
28
+    "vue/no-v-html": "off",
29
+    'accessor-pairs': 2,
30
+    'arrow-spacing': [2, {
31
+      'before': true,
32
+      'after': true
33
+    }],
34
+    'block-spacing': [2, 'always'],
35
+    'brace-style': [2, '1tbs', {
36
+      'allowSingleLine': true
37
+    }],
38
+    'camelcase': [0, {
39
+      'properties': 'always'
40
+    }],
41
+    'comma-dangle': [2, 'never'],
42
+    'comma-spacing': [2, {
43
+      'before': false,
44
+      'after': true
45
+    }],
46
+    'comma-style': [2, 'last'],
47
+    'constructor-super': 2,
48
+    'curly': [2, 'multi-line'],
49
+    'dot-location': [2, 'property'],
50
+    'eol-last': 2,
51
+    'eqeqeq': ["error", "always", {"null": "ignore"}],
52
+    'generator-star-spacing': [2, {
53
+      'before': true,
54
+      'after': true
55
+    }],
56
+    'handle-callback-err': [2, '^(err|error)$'],
57
+    'indent': [2, 2, {
58
+      'SwitchCase': 1
59
+    }],
60
+    'jsx-quotes': [2, 'prefer-single'],
61
+    'key-spacing': [2, {
62
+      'beforeColon': false,
63
+      'afterColon': true
64
+    }],
65
+    'keyword-spacing': [2, {
66
+      'before': true,
67
+      'after': true
68
+    }],
69
+    'new-cap': [2, {
70
+      'newIsCap': true,
71
+      'capIsNew': false
72
+    }],
73
+    'new-parens': 2,
74
+    'no-array-constructor': 2,
75
+    'no-caller': 2,
76
+    'no-console': 'off',
77
+    'no-class-assign': 2,
78
+    'no-cond-assign': 2,
79
+    'no-const-assign': 2,
80
+    'no-control-regex': 0,
81
+    'no-delete-var': 2,
82
+    'no-dupe-args': 2,
83
+    'no-dupe-class-members': 2,
84
+    'no-dupe-keys': 2,
85
+    'no-duplicate-case': 2,
86
+    'no-empty-character-class': 2,
87
+    'no-empty-pattern': 2,
88
+    'no-eval': 2,
89
+    'no-ex-assign': 2,
90
+    'no-extend-native': 2,
91
+    'no-extra-bind': 2,
92
+    'no-extra-boolean-cast': 2,
93
+    'no-extra-parens': [2, 'functions'],
94
+    'no-fallthrough': 2,
95
+    'no-floating-decimal': 2,
96
+    'no-func-assign': 2,
97
+    'no-implied-eval': 2,
98
+    'no-inner-declarations': [2, 'functions'],
99
+    'no-invalid-regexp': 2,
100
+    'no-irregular-whitespace': 2,
101
+    'no-iterator': 2,
102
+    'no-label-var': 2,
103
+    'no-labels': [2, {
104
+      'allowLoop': false,
105
+      'allowSwitch': false
106
+    }],
107
+    'no-lone-blocks': 2,
108
+    'no-mixed-spaces-and-tabs': 2,
109
+    'no-multi-spaces': 2,
110
+    'no-multi-str': 2,
111
+    'no-multiple-empty-lines': [2, {
112
+      'max': 1
113
+    }],
114
+    'no-native-reassign': 2,
115
+    'no-negated-in-lhs': 2,
116
+    'no-new-object': 2,
117
+    'no-new-require': 2,
118
+    'no-new-symbol': 2,
119
+    'no-new-wrappers': 2,
120
+    'no-obj-calls': 2,
121
+    'no-octal': 2,
122
+    'no-octal-escape': 2,
123
+    'no-path-concat': 2,
124
+    'no-proto': 2,
125
+    'no-redeclare': 2,
126
+    'no-regex-spaces': 2,
127
+    'no-return-assign': [2, 'except-parens'],
128
+    'no-self-assign': 2,
129
+    'no-self-compare': 2,
130
+    'no-sequences': 2,
131
+    'no-shadow-restricted-names': 2,
132
+    'no-spaced-func': 2,
133
+    'no-sparse-arrays': 2,
134
+    'no-this-before-super': 2,
135
+    'no-throw-literal': 2,
136
+    'no-trailing-spaces': 2,
137
+    'no-undef': 2,
138
+    'no-undef-init': 2,
139
+    'no-unexpected-multiline': 2,
140
+    'no-unmodified-loop-condition': 2,
141
+    'no-unneeded-ternary': [2, {
142
+      'defaultAssignment': false
143
+    }],
144
+    'no-unreachable': 2,
145
+    'no-unsafe-finally': 2,
146
+    'no-unused-vars': [2, {
147
+      'vars': 'all',
148
+      'args': 'none'
149
+    }],
150
+    'no-useless-call': 2,
151
+    'no-useless-computed-key': 2,
152
+    'no-useless-constructor': 2,
153
+    'no-useless-escape': 0,
154
+    'no-whitespace-before-property': 2,
155
+    'no-with': 2,
156
+    'one-var': [2, {
157
+      'initialized': 'never'
158
+    }],
159
+    'operator-linebreak': [2, 'after', {
160
+      'overrides': {
161
+        '?': 'before',
162
+        ':': 'before'
163
+      }
164
+    }],
165
+    'padded-blocks': [2, 'never'],
166
+    'quotes': [2, 'single', {
167
+      'avoidEscape': true,
168
+      'allowTemplateLiterals': true
169
+    }],
170
+    'semi': [2, 'never'],
171
+    'semi-spacing': [2, {
172
+      'before': false,
173
+      'after': true
174
+    }],
175
+    'space-before-blocks': [2, 'always'],
176
+    'space-before-function-paren': [2, 'never'],
177
+    'space-in-parens': [2, 'never'],
178
+    'space-infix-ops': 2,
179
+    'space-unary-ops': [2, {
180
+      'words': true,
181
+      'nonwords': false
182
+    }],
183
+    'spaced-comment': [2, 'always', {
184
+      'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
185
+    }],
186
+    'template-curly-spacing': [2, 'never'],
187
+    'use-isnan': 2,
188
+    'valid-typeof': 2,
189
+    'wrap-iife': [2, 'any'],
190
+    'yield-star-spacing': [2, 'both'],
191
+    'yoda': [2, 'never'],
192
+    'prefer-const': 2,
193
+    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
194
+    'object-curly-spacing': [2, 'always', {
195
+      objectsInObjects: false
196
+    }],
197
+    'array-bracket-spacing': [2, 'never']
198
+  }
199
+}

+ 28 - 0
README.md

@@ -0,0 +1,28 @@
1
+## 开发
2
+
3
+```bash
4
+
5
+
6
+# 进入项目目录
7
+
8
+# 安装依赖
9
+npm install
10
+
11
+# 建议不要直接使用 cnpm 安装依赖,会有各种诡异的 bug。可以通过如下操作解决 npm 下载速度慢的问题
12
+npm install --registry=https://registry.npm.taobao.org
13
+
14
+# 启动服务
15
+npm run dev
16
+```
17
+
18
+浏览器访问 http://localhost:80
19
+
20
+## 发布
21
+
22
+```bash
23
+# 构建测试环境
24
+npm run build:stage
25
+
26
+# 构建生产环境
27
+npm run build:prod
28
+```

+ 13 - 0
babel.config.js

@@ -0,0 +1,13 @@
1
+module.exports = {
2
+  presets: [
3
+    // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app
4
+    '@vue/cli-plugin-babel/preset'
5
+  ],
6
+  'env': {
7
+    'development': {
8
+      // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require().
9
+      // This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
10
+      'plugins': ['dynamic-import-node']
11
+    }
12
+  }
13
+}

+ 12 - 0
bin/build.bat

@@ -0,0 +1,12 @@
1
+@echo off
2
+echo.
3
+echo [信息] 打包Web工程,生成dist文件。
4
+echo.
5
+
6
+%~d0
7
+cd %~dp0
8
+
9
+cd ..
10
+npm run build:prod
11
+
12
+pause

+ 12 - 0
bin/package.bat

@@ -0,0 +1,12 @@
1
+@echo off
2
+echo.
3
+echo [信息] 安装Web工程,生成node_modules文件。
4
+echo.
5
+
6
+%~d0
7
+cd %~dp0
8
+
9
+cd ..
10
+npm install --registry=https://registry.npm.taobao.org
11
+
12
+pause

+ 12 - 0
bin/run-web.bat

@@ -0,0 +1,12 @@
1
+@echo off
2
+echo.
3
+echo [信息] 使用 Vue CLI 命令运行 Web 工程。
4
+echo.
5
+
6
+%~d0
7
+cd %~dp0
8
+
9
+cd ..
10
+npm run dev
11
+
12
+pause

+ 35 - 0
build/index.js

@@ -0,0 +1,35 @@
1
+const { run } = require('runjs')
2
+const chalk = require('chalk')
3
+const config = require('../vue.config.js')
4
+const rawArgv = process.argv.slice(2)
5
+const args = rawArgv.join(' ')
6
+
7
+if (process.env.npm_config_preview || rawArgv.includes('--preview')) {
8
+  const report = rawArgv.includes('--report')
9
+
10
+  run(`vue-cli-service build ${args}`)
11
+
12
+  const port = 9526
13
+  const publicPath = config.publicPath
14
+  console.log(publicPath)
15
+  var connect = require('connect')
16
+  var serveStatic = require('serve-static')
17
+  const app = connect()
18
+
19
+  app.use(
20
+    publicPath,
21
+    serveStatic('./dist', {
22
+      index: ['index.html', '/']
23
+    })
24
+  )
25
+
26
+  app.listen(port, function () {
27
+    console.log(chalk.green(`> Preview at  http://localhost:${port}${publicPath}`))
28
+    if (report) {
29
+      console.log(chalk.green(`> Report at  http://localhost:${port}${publicPath}report.html`))
30
+    }
31
+
32
+  })
33
+} else {
34
+  run(`vue-cli-service build ${args}`)
35
+}

File diff suppressed because it is too large
+ 15674 - 0
package-lock.json


+ 97 - 0
package.json

@@ -0,0 +1,97 @@
1
+{
2
+  "name": "lingwei-vue",
3
+  "version": "1.0.0",
4
+  "description": "灵微管理系统",
5
+  "author": "lqkj",
6
+  "license": "MIT",
7
+  "scripts": {
8
+    "dev": "vue-cli-service serve",
9
+    "build:prod": "vue-cli-service build",
10
+    "build:stage": "vue-cli-service build --mode staging",
11
+    "preview": "node build/index.js --preview",
12
+    "lint": "eslint --ext .js,.vue src"
13
+  },
14
+  "husky": {
15
+    "hooks": {
16
+      "pre-commit": "lint-staged"
17
+    }
18
+  },
19
+  "lint-staged": {
20
+    "src/**/*.{js,vue}": [
21
+      "eslint --fix",
22
+      "git add"
23
+    ]
24
+  },
25
+  "keywords": [
26
+    "vue",
27
+    "admin",
28
+    "dashboard",
29
+    "element-ui",
30
+    "boilerplate",
31
+    "admin-template",
32
+    "management-system"
33
+  ],
34
+  "repository": {
35
+    "type": "git",
36
+    "url": "https://gitee.com/y_project/RuoYi-Vue.git"
37
+  },
38
+  "dependencies": {
39
+    "@riophae/vue-treeselect": "0.4.0",
40
+    "@wangeditor/editor": "^5.1.23",
41
+    "@wangeditor/editor-for-vue": "^1.0.2",
42
+    "axios": "0.21.0",
43
+    "clipboard": "2.0.6",
44
+    "core-js": "^3.21.1",
45
+    "echarts": "4.9.0",
46
+    "element-ui": "2.15.6",
47
+    "file-saver": "2.0.5",
48
+    "fuse.js": "6.4.3",
49
+    "highlight.js": "9.18.5",
50
+    "js-beautify": "1.13.0",
51
+    "js-cookie": "2.2.1",
52
+    "js-md5": "^0.7.3",
53
+    "jsencrypt": "3.0.0-rc.1",
54
+    "less-loader": "^6.0.0",
55
+    "node-sass": "^4.14.1",
56
+    "nprogress": "0.2.0",
57
+    "qs": "^6.10.2",
58
+    "quill": "1.3.7",
59
+    "screenfull": "5.0.2",
60
+    "sortablejs": "1.10.2",
61
+    "video.js": "^7.17.0",
62
+    "videojs-hotkeys": "^0.2.27",
63
+    "vue": "2.6.12",
64
+    "vue-count-to": "1.0.13",
65
+    "vue-cropper": "0.5.5",
66
+    "vue-meta": "^2.4.0",
67
+    "vue-router": "3.4.9",
68
+    "vuedraggable": "2.24.3",
69
+    "vuex": "3.6.0",
70
+    "xlsx": "^0.17.4"
71
+  },
72
+  "devDependencies": {
73
+    "@vue/cli-plugin-babel": "4.4.6",
74
+    "@vue/cli-plugin-eslint": "4.4.6",
75
+    "@vue/cli-service": "4.4.6",
76
+    "babel-eslint": "10.1.0",
77
+    "chalk": "4.1.0",
78
+    "connect": "3.6.6",
79
+    "eslint": "7.15.0",
80
+    "eslint-plugin-vue": "7.2.0",
81
+    "lint-staged": "10.5.3",
82
+    "moment": "^2.29.3",
83
+    "runjs": "4.4.2",
84
+    "sass-loader": "10.1.1",
85
+    "script-ext-html-webpack-plugin": "2.1.5",
86
+    "svg-sprite-loader": "5.1.1",
87
+    "vue-template-compiler": "2.6.12"
88
+  },
89
+  "engines": {
90
+    "node": ">=8.9",
91
+    "npm": ">= 3.0.0"
92
+  },
93
+  "browserslist": [
94
+    "> 1%",
95
+    "last 2 versions"
96
+  ]
97
+}

+ 3 - 0
public/config.js

@@ -0,0 +1,3 @@
1
+var BASE_URL = 'http://192.168.4.200:8080'
2
+// var BASE_URL = 'http://182.140.29.12:89/ywtb-server'
3
+

+ 1 - 0
public/favicon.svg

@@ -0,0 +1 @@
1
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 261.76 226.69"><path d="M161.096.001l-30.225 52.351L100.647.001H-.005l130.877 226.688L261.749.001z" fill="#41b883"/><path d="M161.096.001l-30.225 52.351L100.647.001H52.346l78.526 136.01L209.398.001z" fill="#34495e"/></svg>

File diff suppressed because it is too large
+ 46 - 0
public/html/ie.html


+ 209 - 0
public/index.html

@@ -0,0 +1,209 @@
1
+<!DOCTYPE html>
2
+<html>
3
+  <head>
4
+    <meta charset="utf-8">
5
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6
+    <meta name="renderer" content="webkit">
7
+    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
8
+    <link rel="icon" href="<%= BASE_URL %>favicon.svg">
9
+    <title></title>
10
+    <script type="text/javascript" src="<%= BASE_URL %>config.js"></script>
11
+    <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
12
+	  <style>
13
+    html,
14
+    body,
15
+    #app {
16
+      height: 100%;
17
+      margin: 0px;
18
+      padding: 0px;
19
+    }
20
+    .chromeframe {
21
+      margin: 0.2em 0;
22
+      background: #ccc;
23
+      color: #000;
24
+      padding: 0.2em 0;
25
+    }
26
+
27
+    #loader-wrapper {
28
+      position: fixed;
29
+      top: 0;
30
+      left: 0;
31
+      width: 100%;
32
+      height: 100%;
33
+      z-index: 999999;
34
+    }
35
+
36
+    #loader {
37
+      display: block;
38
+      position: relative;
39
+      left: 50%;
40
+      top: 50%;
41
+      width: 150px;
42
+      height: 150px;
43
+      margin: -75px 0 0 -75px;
44
+      border-radius: 50%;
45
+      border: 3px solid transparent;
46
+      border-top-color: #FFF;
47
+      -webkit-animation: spin 2s linear infinite;
48
+      -ms-animation: spin 2s linear infinite;
49
+      -moz-animation: spin 2s linear infinite;
50
+      -o-animation: spin 2s linear infinite;
51
+      animation: spin 2s linear infinite;
52
+      z-index: 1001;
53
+    }
54
+
55
+    #loader:before {
56
+      content: "";
57
+      position: absolute;
58
+      top: 5px;
59
+      left: 5px;
60
+      right: 5px;
61
+      bottom: 5px;
62
+      border-radius: 50%;
63
+      border: 3px solid transparent;
64
+      border-top-color: #FFF;
65
+      -webkit-animation: spin 3s linear infinite;
66
+      -moz-animation: spin 3s linear infinite;
67
+      -o-animation: spin 3s linear infinite;
68
+      -ms-animation: spin 3s linear infinite;
69
+      animation: spin 3s linear infinite;
70
+    }
71
+
72
+    #loader:after {
73
+      content: "";
74
+      position: absolute;
75
+      top: 15px;
76
+      left: 15px;
77
+      right: 15px;
78
+      bottom: 15px;
79
+      border-radius: 50%;
80
+      border: 3px solid transparent;
81
+      border-top-color: #FFF;
82
+      -moz-animation: spin 1.5s linear infinite;
83
+      -o-animation: spin 1.5s linear infinite;
84
+      -ms-animation: spin 1.5s linear infinite;
85
+      -webkit-animation: spin 1.5s linear infinite;
86
+      animation: spin 1.5s linear infinite;
87
+    }
88
+
89
+
90
+    @-webkit-keyframes spin {
91
+      0% {
92
+        -webkit-transform: rotate(0deg);
93
+        -ms-transform: rotate(0deg);
94
+        transform: rotate(0deg);
95
+      }
96
+      100% {
97
+        -webkit-transform: rotate(360deg);
98
+        -ms-transform: rotate(360deg);
99
+        transform: rotate(360deg);
100
+      }
101
+    }
102
+
103
+    @keyframes spin {
104
+      0% {
105
+        -webkit-transform: rotate(0deg);
106
+        -ms-transform: rotate(0deg);
107
+        transform: rotate(0deg);
108
+      }
109
+      100% {
110
+        -webkit-transform: rotate(360deg);
111
+        -ms-transform: rotate(360deg);
112
+        transform: rotate(360deg);
113
+      }
114
+    }
115
+
116
+
117
+    #loader-wrapper .loader-section {
118
+      position: fixed;
119
+      top: 0;
120
+      width: 51%;
121
+      height: 100%;
122
+      background: #7171C6;
123
+      z-index: 1000;
124
+      -webkit-transform: translateX(0);
125
+      -ms-transform: translateX(0);
126
+      transform: translateX(0);
127
+    }
128
+
129
+    #loader-wrapper .loader-section.section-left {
130
+      left: 0;
131
+    }
132
+
133
+    #loader-wrapper .loader-section.section-right {
134
+      right: 0;
135
+    }
136
+
137
+
138
+    .loaded #loader-wrapper .loader-section.section-left {
139
+      -webkit-transform: translateX(-100%);
140
+      -ms-transform: translateX(-100%);
141
+      transform: translateX(-100%);
142
+      -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
143
+      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
144
+    }
145
+
146
+    .loaded #loader-wrapper .loader-section.section-right {
147
+      -webkit-transform: translateX(100%);
148
+      -ms-transform: translateX(100%);
149
+      transform: translateX(100%);
150
+      -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
151
+      transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
152
+    }
153
+
154
+    .loaded #loader {
155
+      opacity: 0;
156
+      -webkit-transition: all 0.3s ease-out;
157
+      transition: all 0.3s ease-out;
158
+    }
159
+
160
+    .loaded #loader-wrapper {
161
+      visibility: hidden;
162
+      -webkit-transform: translateY(-100%);
163
+      -ms-transform: translateY(-100%);
164
+      transform: translateY(-100%);
165
+      -webkit-transition: all 0.3s 1s ease-out;
166
+      transition: all 0.3s 1s ease-out;
167
+    }
168
+
169
+    .no-js #loader-wrapper {
170
+      display: none;
171
+    }
172
+
173
+    .no-js h1 {
174
+      color: #222222;
175
+    }
176
+
177
+    #loader-wrapper .load_title {
178
+      font-family: 'Open Sans';
179
+      color: #FFF;
180
+      font-size: 19px;
181
+      width: 100%;
182
+      text-align: center;
183
+      z-index: 9999999999999;
184
+      position: absolute;
185
+      top: 60%;
186
+      opacity: 1;
187
+      line-height: 30px;
188
+    }
189
+
190
+    #loader-wrapper .load_title span {
191
+      font-weight: normal;
192
+      font-style: italic;
193
+      font-size: 13px;
194
+      color: #FFF;
195
+      opacity: 0.5;
196
+    }
197
+  </style>
198
+  </head>
199
+  <body>
200
+    <div id="app">
201
+	    <div id="loader-wrapper">
202
+		    <div id="loader"></div>
203
+		    <div class="loader-section section-left"></div>
204
+		    <div class="loader-section section-right"></div>
205
+		    <div class="load_title">正在加载系统资源,请耐心等待</div>
206
+        </div>
207
+	</div>
208
+  </body>
209
+</html>

BIN
public/pc/login-background.jpg


BIN
public/pc/login-background_web.jpg


+ 49 - 0
src/App.vue

@@ -0,0 +1,49 @@
1
+<template>
2
+  <div id="app">
3
+    <router-view/>
4
+  </div>
5
+</template>
6
+
7
+<script>
8
+export default {
9
+  name: 'App',
10
+  metaInfo() {
11
+    return {
12
+      title: this.$store.state.settings.dynamicTitle && this.$store.state.settings.title,
13
+      titleTemplate: title => {
14
+        return title ? `${title} - ` + localStorage.getItem("sysTitle") : localStorage.getItem("sysTitle")
15
+      }
16
+    }
17
+  }
18
+}
19
+</script>
20
+<style>
21
+.el-dialog {
22
+  display: flex;
23
+  flex-direction: column;
24
+  margin: 0 !important;
25
+  position: absolute;
26
+  top: 40%;
27
+  left: 50%;
28
+  transform: translate(-50%, -50%);
29
+  /*height:600px;*/
30
+  max-height: calc(100% - 30px);
31
+  max-width: calc(100% - 30px);
32
+}
33
+
34
+.el-dialog .el-dialog__body {
35
+  flex: 1;
36
+  overflow: auto;
37
+}
38
+</style>
39
+<style lang="scss">
40
+.el-cascader-panel {
41
+  height: 60vh;
42
+  .el-scrollbar__wrap {
43
+    height: 100%;
44
+  }
45
+  .el-scrollbar__wrap {
46
+    overflow-x: hidden;
47
+  }
48
+}
49
+</style>

+ 53 - 0
src/api/business/cameraInfo.js

@@ -0,0 +1,53 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询监控信息列表
4
+export function listCameraInfo(query) {
5
+  return request({
6
+    url: '/business/cameraInfo/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 查询监控信息详细
13
+export function getCameraInfo(cameraId) {
14
+  return request({
15
+    url: '/business/cameraInfo/' + cameraId,
16
+    method: 'get'
17
+  })
18
+}
19
+
20
+// 新增监控信息
21
+export function addCameraInfo(data) {
22
+  return request({
23
+    url: '/business/cameraInfo',
24
+    method: 'post',
25
+    data: data
26
+  })
27
+}
28
+
29
+// 修改监控信息
30
+export function updateCameraInfo(data) {
31
+  return request({
32
+    url: '/business/cameraInfo',
33
+    method: 'put',
34
+    data: data
35
+  })
36
+}
37
+
38
+// 删除监控信息
39
+export function delCameraInfo(cameraId) {
40
+  return request({
41
+    url: '/business/cameraInfo/' + cameraId,
42
+    method: 'delete'
43
+  })
44
+}
45
+
46
+// 导出监控信息
47
+export function exportCameraInfo(query) {
48
+  return request({
49
+    url: '/business/cameraInfo/export',
50
+    method: 'get',
51
+    params: query
52
+  })
53
+}

+ 67 - 0
src/api/business/cmsCategory.js

@@ -0,0 +1,67 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询信息分类列表
4
+export function listCmsCategory(query) {
5
+  return request({
6
+    url: '/business/cmsCategory/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+// 查询一级分类列表
12
+export function listParentCmsCategory() {
13
+  return request({
14
+    url: '/business/cmsCategory/parentList',
15
+    method: 'get'
16
+  })
17
+}
18
+
19
+// 查询类型下拉树结构
20
+export function treeselect() {
21
+  return request({
22
+    url: '/business/cmsCategory/treeselect',
23
+    method: 'get'
24
+  })
25
+}
26
+// 查询信息分类详细
27
+export function getCmsCategory(categoryId) {
28
+  return request({
29
+    url: '/business/cmsCategory/' + categoryId,
30
+    method: 'get'
31
+  })
32
+}
33
+
34
+// 新增信息分类
35
+export function addCmsCategory(data) {
36
+  return request({
37
+    url: '/business/cmsCategory',
38
+    method: 'post',
39
+    data: data
40
+  })
41
+}
42
+
43
+// 修改信息分类
44
+export function updateCmsCategory(data) {
45
+  return request({
46
+    url: '/business/cmsCategory',
47
+    method: 'put',
48
+    data: data
49
+  })
50
+}
51
+
52
+// 删除信息分类
53
+export function delCmsCategory(categoryId) {
54
+  return request({
55
+    url: '/business/cmsCategory/' + categoryId,
56
+    method: 'delete'
57
+  })
58
+}
59
+
60
+// 导出信息分类
61
+export function exportCmsCategory(query) {
62
+  return request({
63
+    url: '/business/cmsCategory/export',
64
+    method: 'get',
65
+    params: query
66
+  })
67
+}

+ 92 - 0
src/api/business/cmsNews.js

@@ -0,0 +1,92 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询信息管理列表
4
+export function listCmsNews(query) {
5
+  return request({
6
+    url: '/business/cmsNews/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+export function frontList(query) {
13
+  return request({
14
+    url: '/business/cmsNews/front/list',
15
+    method: 'get',
16
+    params: query
17
+  })
18
+}
19
+
20
+export function frontView(newsId) {
21
+  return request({
22
+    url: '/business/cmsNews/front/'+ newsId,
23
+    method: 'get'
24
+  })
25
+}
26
+export function frontViewByCategoryId(categoryId) {
27
+  return request({
28
+    url: '/business/cmsNews/front/category'+ categoryId,
29
+    method: 'get'
30
+  })
31
+}
32
+
33
+// 查询信息管理详细
34
+export function getCmsNews(newsId) {
35
+  return request({
36
+    url: '/business/cmsNews/' + newsId,
37
+    method: 'get'
38
+  })
39
+}
40
+// 通过分类查询信息详细
41
+export function getCmsNewsByCategoryId(categoryId) {
42
+  return request({
43
+    url: '/business/cmsNews/getInfoByCategoryId/' + categoryId,
44
+    method: 'get'
45
+  })
46
+}
47
+
48
+
49
+// 新增信息管理
50
+export function addCmsNews(data) {
51
+  return request({
52
+    url: '/business/cmsNews',
53
+    method: 'post',
54
+    data: data
55
+  })
56
+}
57
+
58
+// 修改信息管理
59
+export function updateCmsNews(data) {
60
+  return request({
61
+    url: '/business/cmsNews',
62
+    method: 'put',
63
+    data: data
64
+  })
65
+}
66
+// 修改置状态
67
+export function updateTopStatus(data) {
68
+  return request({
69
+    url: '/business/cmsNews/updateTopStatus',
70
+    method: 'put',
71
+    data: data
72
+  })
73
+}
74
+
75
+// 删除信息管理
76
+export function delCmsNews(newsId) {
77
+  return request({
78
+    url: '/business/cmsNews/' + newsId,
79
+    method: 'delete'
80
+  })
81
+}
82
+
83
+// 导出信息管理
84
+export function exportCmsNews(query) {
85
+  return request({
86
+    url: '/business/cmsNews/export',
87
+    method: 'get',
88
+    params: query
89
+  })
90
+}
91
+
92
+

+ 60 - 0
src/api/business/deviceCategory.js

@@ -0,0 +1,60 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询一级分类列表
4
+export function listParentDeviceCategory() {
5
+  return request({
6
+    url: '/business/deviceCategory/parentList',
7
+    method: 'get'
8
+  })
9
+}
10
+// 查询设备分类列表
11
+export function listDeviceCategory(query) {
12
+  return request({
13
+    url: '/business/deviceCategory/list',
14
+    method: 'get',
15
+    params: query
16
+  })
17
+}
18
+
19
+// 查询设备分类详细
20
+export function getDeviceCategory(categoryId) {
21
+  return request({
22
+    url: '/business/deviceCategory/' + categoryId,
23
+    method: 'get'
24
+  })
25
+}
26
+
27
+// 新增设备分类
28
+export function addDeviceCategory(data) {
29
+  return request({
30
+    url: '/business/deviceCategory',
31
+    method: 'post',
32
+    data: data
33
+  })
34
+}
35
+
36
+// 修改设备分类
37
+export function updateDeviceCategory(data) {
38
+  return request({
39
+    url: '/business/deviceCategory',
40
+    method: 'put',
41
+    data: data
42
+  })
43
+}
44
+
45
+// 删除设备分类
46
+export function delDeviceCategory(categoryId) {
47
+  return request({
48
+    url: '/business/deviceCategory/' + categoryId,
49
+    method: 'delete'
50
+  })
51
+}
52
+
53
+// 导出设备分类
54
+export function exportDeviceCategory(query) {
55
+  return request({
56
+    url: '/business/deviceCategory/export',
57
+    method: 'get',
58
+    params: query
59
+  })
60
+}

+ 44 - 0
src/api/business/notice.js

@@ -0,0 +1,44 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询公告列表
4
+export function listNotice(query) {
5
+  return request({
6
+    url: '/v1/system/notice/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 查询公告详细
13
+export function getNotice(noticeId) {
14
+  return request({
15
+    url: '/v1/system/notice/' + noticeId,
16
+    method: 'get'
17
+  })
18
+}
19
+
20
+// 新增公告
21
+export function addNotice(data) {
22
+  return request({
23
+    url: '/v1/system/notice',
24
+    method: 'post',
25
+    data: data
26
+  })
27
+}
28
+
29
+// 修改公告
30
+export function updateNotice(data) {
31
+  return request({
32
+    url: '/v1/system/notice',
33
+    method: 'put',
34
+    data: data
35
+  })
36
+}
37
+
38
+// 删除公告
39
+export function delNotice(noticeId) {
40
+  return request({
41
+    url: '/v1/system/notice/' + noticeId,
42
+    method: 'delete'
43
+  })
44
+}

+ 11 - 0
src/api/home/index.js

@@ -0,0 +1,11 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询首页数据
4
+export function home() {
5
+  return request({
6
+    url: '/v1/home',
7
+    method: 'get'
8
+  })
9
+}
10
+
11
+

+ 79 - 0
src/api/login.js

@@ -0,0 +1,79 @@
1
+import request from '@/utils/request'
2
+import Qs from 'qs'
3
+import md5 from 'js-md5';
4
+// 登录方法
5
+export function login(username, password, code, uuid) {
6
+  return request({
7
+    url: '/login',
8
+    method: 'post',
9
+    headers:{
10
+      'Authorization':'Basic bGluZ3dlaTpscWtqMDA3',
11
+      'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
12
+    },
13
+    transformRequest: [function(data) {      //在请求之前对data传参进行格式转换
14
+      data = Qs.stringify(data)
15
+      return data
16
+    }],
17
+    params:{},
18
+    data:{
19
+      username: username,
20
+      password: md5(username + password),
21
+      code: code,
22
+      uuid: uuid,
23
+      grant_type: "password"
24
+    }
25
+  })
26
+}
27
+//刷新token方法
28
+export function refreshAccessToken(refreshToken){
29
+  return request({
30
+    url: '/oauth/token',
31
+    method: 'get',
32
+    headers:{
33
+      isToken: false,
34
+      'Authorization':'Basic bGluZ3dlaTpscWtqMDA3',
35
+      'Content-Type': 'application/x-www-form-urlencoded'
36
+    },
37
+    params:{
38
+      refresh_token: refreshToken,
39
+      grant_type: "refresh_token"
40
+    }
41
+  })
42
+}
43
+
44
+// 注册方法
45
+export function register(data) {
46
+  return request({
47
+    url: '/register',
48
+    headers: {
49
+      isToken: false
50
+    },
51
+    method: 'post',
52
+    data: data
53
+  })
54
+}
55
+
56
+// 获取用户详细信息
57
+export function getInfo() {
58
+  return request({
59
+    url: '/v1/getInfo',
60
+    method: 'get'
61
+  })
62
+}
63
+
64
+// 退出方法
65
+export function logout() {
66
+  return request({
67
+    url: '/logout',
68
+    method: 'post'
69
+  })
70
+}
71
+
72
+// 获取验证码
73
+export function getCodeImg() {
74
+  return request({
75
+    url: '/v1/captchaImage',
76
+    method: 'get',
77
+    timeout: 20000
78
+  })
79
+}

+ 9 - 0
src/api/menu.js

@@ -0,0 +1,9 @@
1
+import request from '@/utils/request'
2
+
3
+// 获取路由
4
+export const getRouters = () => {
5
+  return request({
6
+    url: '/v1/getRouters',
7
+    method: 'get'
8
+  })
9
+}

+ 9 - 0
src/api/monitor/cache.js

@@ -0,0 +1,9 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询缓存详细
4
+export function getCache() {
5
+  return request({
6
+    url: '/v1/monitor/cache',
7
+    method: 'get'
8
+  })
9
+}

+ 80 - 0
src/api/monitor/job.js

@@ -0,0 +1,80 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询定时任务调度列表
4
+export function listJob(query) {
5
+  return request({
6
+    url: '/v1/monitor/job/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 查询定时任务调度详细
13
+export function getJob(jobId) {
14
+  return request({
15
+    url: '/v1/monitor/job/' + jobId,
16
+    method: 'get'
17
+  })
18
+}
19
+
20
+// 新增定时任务调度
21
+export function addJob(data) {
22
+  return request({
23
+    url: '/v1/monitor/job',
24
+    method: 'post',
25
+    data: data
26
+  })
27
+}
28
+
29
+// 修改定时任务调度
30
+export function updateJob(data) {
31
+  return request({
32
+    url: '/v1/monitor/job',
33
+    method: 'put',
34
+    data: data
35
+  })
36
+}
37
+
38
+// 删除定时任务调度
39
+export function delJob(jobId) {
40
+  return request({
41
+    url: '/v1/monitor/job/' + jobId,
42
+    method: 'delete'
43
+  })
44
+}
45
+
46
+// 导出定时任务调度
47
+export function exportJob(query) {
48
+  return request({
49
+    url: '/v1/monitor/job/export',
50
+    method: 'get',
51
+    params: query
52
+  })
53
+}
54
+
55
+// 任务状态修改
56
+export function changeJobStatus(jobId, status) {
57
+  const data = {
58
+    jobId,
59
+    status
60
+  }
61
+  return request({
62
+    url: '/v1/monitor/job/changeStatus',
63
+    method: 'put',
64
+    data: data
65
+  })
66
+}
67
+
68
+
69
+// 定时任务立即执行一次
70
+export function runJob(jobId, jobGroup) {
71
+  const data = {
72
+    jobId,
73
+    jobGroup
74
+  }
75
+  return request({
76
+    url: '/v1/monitor/job/run',
77
+    method: 'put',
78
+    data: data
79
+  })
80
+}

+ 35 - 0
src/api/monitor/jobLog.js

@@ -0,0 +1,35 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询调度日志列表
4
+export function listJobLog(query) {
5
+  return request({
6
+    url: '/v1/monitor/jobLog/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 删除调度日志
13
+export function delJobLog(jobLogId) {
14
+  return request({
15
+    url: '/v1/monitor/jobLog/' + jobLogId,
16
+    method: 'delete'
17
+  })
18
+}
19
+
20
+// 清空调度日志
21
+export function cleanJobLog() {
22
+  return request({
23
+    url: '/v1/monitor/jobLog/clean',
24
+    method: 'delete'
25
+  })
26
+}
27
+
28
+// 导出调度日志
29
+export function exportJobLog(query) {
30
+  return request({
31
+    url: '/v1/monitor/jobLog/export',
32
+    method: 'get',
33
+    params: query
34
+  })
35
+}

+ 35 - 0
src/api/monitor/logininfor.js

@@ -0,0 +1,35 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询登录日志列表
4
+export function list(query) {
5
+  return request({
6
+    url: '/v1/monitor/logininfor/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 删除登录日志
13
+export function delLogininfor(infoId) {
14
+  return request({
15
+    url: '/v1/monitor/logininfor/' + infoId,
16
+    method: 'delete'
17
+  })
18
+}
19
+
20
+// 清空登录日志
21
+export function cleanLogininfor() {
22
+  return request({
23
+    url: '/v1/monitor/logininfor/clean',
24
+    method: 'delete'
25
+  })
26
+}
27
+
28
+// 导出登录日志
29
+export function exportLogininfor(query) {
30
+  return request({
31
+    url: '/v1/monitor/logininfor/export',
32
+    method: 'get',
33
+    params: query
34
+  })
35
+}

+ 36 - 0
src/api/monitor/operlog.js

@@ -0,0 +1,36 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询操作日志列表
4
+export function list(query) {
5
+  return request({
6
+    url: '/v1/monitor/operlog/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 删除操作日志
13
+export function delOperlog(operId) {
14
+  return request({
15
+    url: '/v1/monitor/operlog/' + operId,
16
+    method: 'delete'
17
+  })
18
+}
19
+
20
+// 清空操作日志
21
+export function cleanOperlog() {
22
+  return request({
23
+    url: '/v1/monitor/operlog/clean',
24
+    method: 'delete'
25
+  })
26
+}
27
+
28
+// 导出操作日志
29
+export function exportOperlog(query) {
30
+  return request({
31
+    url: '/v1/monitor/operlog/export',
32
+    method: 'get',
33
+    params: query
34
+  })
35
+}
36
+

+ 9 - 0
src/api/monitor/server.js

@@ -0,0 +1,9 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询服务器详细
4
+export function getServer() {
5
+  return request({
6
+    url: '/v1/monitor/server',
7
+    method: 'get'
8
+  })
9
+}

+ 62 - 0
src/api/system/apiConfig.js

@@ -0,0 +1,62 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询接口配置列表
4
+export function listApiConfig(query) {
5
+  return request({
6
+    url: '/v1/system/apiConfig/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 查询接口配置详细
13
+export function getApiConfig(id) {
14
+  return request({
15
+    url: '/v1/system/apiConfig/' + id,
16
+    method: 'get'
17
+  })
18
+}
19
+
20
+// 新增接口配置
21
+export function addApiConfig(data) {
22
+  return request({
23
+    url: '/v1/system/apiConfig',
24
+    method: 'post',
25
+    data: data
26
+  })
27
+}
28
+
29
+// 修改接口配置
30
+export function updateApiConfig(data) {
31
+  return request({
32
+    url: '/v1/system/apiConfig',
33
+    method: 'put',
34
+    data: data
35
+  })
36
+}
37
+
38
+// 删除接口配置
39
+export function delApiConfig(id) {
40
+  return request({
41
+    url: '/v1/system/apiConfig/' + id,
42
+    method: 'delete'
43
+  })
44
+}
45
+
46
+// 导出接口配置
47
+export function exportApiConfig(query) {
48
+  return request({
49
+    url: '/v1/system/apiConfig/export',
50
+    method: 'get',
51
+    params: query
52
+  })
53
+}
54
+
55
+// 接口测试
56
+export function apiDebug(routePath, data) {
57
+  return request({
58
+    url: '/v1/api/common/' + routePath,
59
+    method: 'post',
60
+    data: data
61
+  })
62
+}

+ 69 - 0
src/api/system/config.js

@@ -0,0 +1,69 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询参数列表
4
+export function listConfig(query) {
5
+  return request({
6
+    url: '/v1/system/config/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 查询参数详细
13
+export function getConfig(configId) {
14
+  return request({
15
+    url: '/v1/system/config/' + configId,
16
+    method: 'get'
17
+  })
18
+}
19
+
20
+// 根据参数键名查询参数值
21
+export function getConfigKey(configKey) {
22
+  return request({
23
+    url: '/v1/system/config/configKey/' + configKey,
24
+    method: 'get'
25
+  })
26
+}
27
+
28
+// 新增参数配置
29
+export function addConfig(data) {
30
+  return request({
31
+    url: '/v1/system/config',
32
+    method: 'post',
33
+    data: data
34
+  })
35
+}
36
+
37
+// 修改参数配置
38
+export function updateConfig(data) {
39
+  return request({
40
+    url: '/v1/system/config',
41
+    method: 'put',
42
+    data: data
43
+  })
44
+}
45
+
46
+// 删除参数配置
47
+export function delConfig(configId) {
48
+  return request({
49
+    url: '/v1/system/config/' + configId,
50
+    method: 'delete'
51
+  })
52
+}
53
+
54
+// 刷新参数缓存
55
+export function refreshCache() {
56
+  return request({
57
+    url: '/v1/system/config/refreshCache',
58
+    method: 'delete'
59
+  })
60
+}
61
+
62
+// 导出参数
63
+export function exportConfig(query) {
64
+  return request({
65
+    url: '/v1/system/config/export',
66
+    method: 'get',
67
+    params: query
68
+  })
69
+}

+ 84 - 0
src/api/system/dept.js

@@ -0,0 +1,84 @@
1
+import request from '@/utils/request'
2
+import { listUserSelectByPermi } from './user'
3
+
4
+// 查询部门列表
5
+export function listDept(query) {
6
+  return request({
7
+    url: '/v1/system/dept/list',
8
+    method: 'get',
9
+    params: query
10
+  })
11
+}
12
+// 获取部门列表(用于部门选择,做数据权限过滤)
13
+export function listDeptSelectByPermi(query) {
14
+  return request({
15
+    url: '/v1/system/dept/listDeptSelectByPermi',
16
+    method: 'get',
17
+    params: query
18
+  })
19
+}
20
+// 获取部门列表(用于部门选择,不做数据权限过滤)
21
+export function listDeptSelect(query) {
22
+  return request({
23
+    url: '/v1/system/dept/listDeptSelect',
24
+    method: 'get',
25
+    params: query
26
+  })
27
+}
28
+// 查询部门列表(排除节点)
29
+export function listDeptExcludeChild(deptId) {
30
+  return request({
31
+    url: '/v1/system/dept/list/exclude/' + deptId,
32
+    method: 'get'
33
+  })
34
+}
35
+
36
+// 查询部门详细
37
+export function getDept(deptId) {
38
+  return request({
39
+    url: '/v1/system/dept/' + deptId,
40
+    method: 'get'
41
+  })
42
+}
43
+
44
+// 查询部门下拉树结构
45
+export function treeselect() {
46
+  return request({
47
+    url: '/v1/system/dept/treeselect',
48
+    method: 'get'
49
+  })
50
+}
51
+
52
+// 根据角色ID查询部门树结构
53
+export function roleDeptTreeselect(roleId) {
54
+  return request({
55
+    url: '/v1/system/dept/roleDeptTreeselect/' + roleId,
56
+    method: 'get'
57
+  })
58
+}
59
+
60
+// 新增部门
61
+export function addDept(data) {
62
+  return request({
63
+    url: '/v1/system/dept',
64
+    method: 'post',
65
+    data: data
66
+  })
67
+}
68
+
69
+// 修改部门
70
+export function updateDept(data) {
71
+  return request({
72
+    url: '/v1/system/dept',
73
+    method: 'put',
74
+    data: data
75
+  })
76
+}
77
+
78
+// 删除部门
79
+export function delDept(deptId) {
80
+  return request({
81
+    url: '/v1/system/dept/' + deptId,
82
+    method: 'delete'
83
+  })
84
+}

+ 61 - 0
src/api/system/dict/data.js

@@ -0,0 +1,61 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询字典数据列表
4
+export function listData(query) {
5
+  return request({
6
+    url: '/v1/system/dict/data/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 查询字典数据详细
13
+export function getData(dictCode) {
14
+  return request({
15
+    url: '/v1/system/dict/data/' + dictCode,
16
+    method: 'get'
17
+  })
18
+}
19
+
20
+// 根据字典类型查询字典数据信息
21
+export function getDicts(dictType) {
22
+  return request({
23
+    url: '/v1/system/dict/data/type/' + dictType,
24
+    method: 'get'
25
+  })
26
+}
27
+
28
+// 新增字典数据
29
+export function addData(data) {
30
+  return request({
31
+    url: '/v1/system/dict/data',
32
+    method: 'post',
33
+    data: data
34
+  })
35
+}
36
+
37
+// 修改字典数据
38
+export function updateData(data) {
39
+  return request({
40
+    url: '/v1/system/dict/data',
41
+    method: 'put',
42
+    data: data
43
+  })
44
+}
45
+
46
+// 删除字典数据
47
+export function delData(dictCode) {
48
+  return request({
49
+    url: '/v1/system/dict/data/' + dictCode,
50
+    method: 'delete'
51
+  })
52
+}
53
+
54
+// 导出字典数据
55
+export function exportData(query) {
56
+  return request({
57
+    url: '/v1/system/dict/data/export',
58
+    method: 'get',
59
+    params: query
60
+  })
61
+}

+ 69 - 0
src/api/system/dict/type.js

@@ -0,0 +1,69 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询字典类型列表
4
+export function listType(query) {
5
+  return request({
6
+    url: '/v1/system/dict/type/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 查询字典类型详细
13
+export function getType(dictId) {
14
+  return request({
15
+    url: '/v1/system/dict/type/' + dictId,
16
+    method: 'get'
17
+  })
18
+}
19
+
20
+// 新增字典类型
21
+export function addType(data) {
22
+  return request({
23
+    url: '/v1/system/dict/type',
24
+    method: 'post',
25
+    data: data
26
+  })
27
+}
28
+
29
+// 修改字典类型
30
+export function updateType(data) {
31
+  return request({
32
+    url: '/v1/system/dict/type',
33
+    method: 'put',
34
+    data: data
35
+  })
36
+}
37
+
38
+// 删除字典类型
39
+export function delType(dictId) {
40
+  return request({
41
+    url: '/v1/system/dict/type/' + dictId,
42
+    method: 'delete'
43
+  })
44
+}
45
+
46
+// 刷新字典缓存
47
+export function refreshCache() {
48
+  return request({
49
+    url: '/v1/system/dict/type/refreshCache',
50
+    method: 'delete'
51
+  })
52
+}
53
+
54
+// 导出字典类型
55
+export function exportType(query) {
56
+  return request({
57
+    url: '/v1/system/dict/type/export',
58
+    method: 'get',
59
+    params: query
60
+  })
61
+}
62
+
63
+// 获取字典选择框列表
64
+export function optionselect() {
65
+  return request({
66
+    url: '/v1/system/dict/type/optionselect',
67
+    method: 'get'
68
+  })
69
+}

+ 60 - 0
src/api/system/menu.js

@@ -0,0 +1,60 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询菜单列表
4
+export function listMenu(query) {
5
+  return request({
6
+    url: '/v1/system/menu/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 查询菜单详细
13
+export function getMenu(menuId) {
14
+  return request({
15
+    url: '/v1/system/menu/' + menuId,
16
+    method: 'get'
17
+  })
18
+}
19
+
20
+// 查询菜单下拉树结构
21
+export function treeselect() {
22
+  return request({
23
+    url: '/v1/system/menu/treeselect',
24
+    method: 'get'
25
+  })
26
+}
27
+
28
+// 根据角色ID查询菜单下拉树结构
29
+export function roleMenuTreeselect(roleId) {
30
+  return request({
31
+    url: '/v1/system/menu/roleMenuTreeselect/' + roleId,
32
+    method: 'get'
33
+  })
34
+}
35
+
36
+// 新增菜单
37
+export function addMenu(data) {
38
+  return request({
39
+    url: '/v1/system/menu',
40
+    method: 'post',
41
+    data: data
42
+  })
43
+}
44
+
45
+// 修改菜单
46
+export function updateMenu(data) {
47
+  return request({
48
+    url: '/v1/system/menu',
49
+    method: 'put',
50
+    data: data
51
+  })
52
+}
53
+
54
+// 删除菜单
55
+export function delMenu(menuId) {
56
+  return request({
57
+    url: '/v1/system/menu/' + menuId,
58
+    method: 'delete'
59
+  })
60
+}

+ 53 - 0
src/api/system/post.js

@@ -0,0 +1,53 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询岗位列表
4
+export function listPost(query) {
5
+  return request({
6
+    url: '/v1/system/post/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 查询岗位详细
13
+export function getPost(postId) {
14
+  return request({
15
+    url: '/v1/system/post/' + postId,
16
+    method: 'get'
17
+  })
18
+}
19
+
20
+// 新增岗位
21
+export function addPost(data) {
22
+  return request({
23
+    url: '/v1/system/post',
24
+    method: 'post',
25
+    data: data
26
+  })
27
+}
28
+
29
+// 修改岗位
30
+export function updatePost(data) {
31
+  return request({
32
+    url: '/v1/system/post',
33
+    method: 'put',
34
+    data: data
35
+  })
36
+}
37
+
38
+// 删除岗位
39
+export function delPost(postId) {
40
+  return request({
41
+    url: '/v1/system/post/' + postId,
42
+    method: 'delete'
43
+  })
44
+}
45
+
46
+// 导出岗位
47
+export function exportPost(query) {
48
+  return request({
49
+    url: '/v1/system/post/export',
50
+    method: 'get',
51
+    params: query
52
+  })
53
+}

+ 120 - 0
src/api/system/role.js

@@ -0,0 +1,120 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询角色列表
4
+export function listRole(query) {
5
+  return request({
6
+    url: '/v1/system/role/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+
12
+// 查询角色详细
13
+export function getRole(roleId) {
14
+  return request({
15
+    url: '/v1/system/role/' + roleId,
16
+    method: 'get'
17
+  })
18
+}
19
+
20
+// 新增角色
21
+export function addRole(data) {
22
+  return request({
23
+    url: '/v1/system/role',
24
+    method: 'post',
25
+    data: data
26
+  })
27
+}
28
+
29
+// 修改角色
30
+export function updateRole(data) {
31
+  return request({
32
+    url: '/v1/system/role',
33
+    method: 'put',
34
+    data: data
35
+  })
36
+}
37
+
38
+// 角色数据权限
39
+export function dataScope(data) {
40
+  return request({
41
+    url: '/v1/system/role/dataScope',
42
+    method: 'put',
43
+    data: data
44
+  })
45
+}
46
+
47
+// 角色状态修改
48
+export function changeRoleStatus(roleId, status) {
49
+  const data = {
50
+    roleId,
51
+    status
52
+  }
53
+  return request({
54
+    url: '/v1/system/role/changeStatus',
55
+    method: 'put',
56
+    data: data
57
+  })
58
+}
59
+
60
+// 删除角色
61
+export function delRole(roleId) {
62
+  return request({
63
+    url: '/v1/system/role/' + roleId,
64
+    method: 'delete'
65
+  })
66
+}
67
+
68
+// 导出角色
69
+export function exportRole(query) {
70
+  return request({
71
+    url: '/v1/system/role/export',
72
+    method: 'get',
73
+    params: query
74
+  })
75
+}
76
+
77
+// 查询角色已授权用户列表
78
+export function allocatedUserList(query) {
79
+  return request({
80
+    url: '/v1/system/role/authUser/allocatedList',
81
+    method: 'get',
82
+    params: query
83
+  })
84
+}
85
+
86
+// 查询角色未授权用户列表
87
+export function unallocatedUserList(query) {
88
+  return request({
89
+    url: '/v1/system/role/authUser/unallocatedList',
90
+    method: 'get',
91
+    params: query
92
+  })
93
+}
94
+
95
+// 取消用户授权角色
96
+export function authUserCancel(data) {
97
+  return request({
98
+    url: '/v1/system/role/authUser/cancel',
99
+    method: 'put',
100
+    data: data
101
+  })
102
+}
103
+
104
+// 批量取消用户授权角色
105
+export function authUserCancelAll(data) {
106
+  return request({
107
+    url: '/v1/system/role/authUser/cancelAll',
108
+    method: 'put',
109
+    params: data
110
+  })
111
+}
112
+
113
+// 授权用户选择
114
+export function authUserSelectAll(data) {
115
+  return request({
116
+    url: '/v1/system/role/authUser/selectAll',
117
+    method: 'put',
118
+    params: data
119
+  })
120
+}

+ 161 - 0
src/api/system/user.js

@@ -0,0 +1,161 @@
1
+import request from '@/utils/request'
2
+import { praseStrEmpty } from "@/utils/common-util";
3
+import Qs from 'qs'
4
+import md5 from 'js-md5';
5
+// 查询用户列表
6
+export function listUser(query) {
7
+  return request({
8
+    url: '/v1/system/user/list',
9
+    method: 'get',
10
+    params: query
11
+  })
12
+}
13
+// 获取用户列表(用于用户选择,做数据权限过滤)
14
+export function listUserSelectByPermi(query) {
15
+  return request({
16
+    url: '/v1/system/user/listUserSelectByPermi',
17
+    method: 'get',
18
+    params: query
19
+  })
20
+}
21
+// 获取用户列表(用于用户选择,不做数据权限过滤)
22
+export function listUserSelect(query) {
23
+  return request({
24
+    url: '/v1/system/user/listUserSelect',
25
+    method: 'get',
26
+    params: query
27
+  })
28
+}
29
+// 查询用户详细
30
+export function getUser(userId) {
31
+  return request({
32
+    url: '/v1/system/user/' + praseStrEmpty(userId),
33
+    method: 'get'
34
+  })
35
+}
36
+
37
+// 新增用户
38
+export function addUser(data) {
39
+  const user = JSON.parse(JSON.stringify(data))
40
+  user.password = md5(user.userName + user.password)
41
+  return request({
42
+    url: '/v1/system/user',
43
+    method: 'post',
44
+    data: user
45
+  })
46
+}
47
+
48
+// 修改用户
49
+export function updateUser(data) {
50
+  return request({
51
+    url: '/v1/system/user',
52
+    method: 'put',
53
+    data: data
54
+  })
55
+}
56
+
57
+// 删除用户
58
+export function delUser(userId) {
59
+  return request({
60
+    url: '/v1/system/user/' + userId,
61
+    method: 'delete'
62
+  })
63
+}
64
+
65
+// 导出用户
66
+export function exportUser(query) {
67
+  return request({
68
+    url: '/v1/system/user/export',
69
+    method: 'get',
70
+    params: query
71
+  })
72
+}
73
+
74
+// 用户密码重置
75
+export function resetUserPwd(userId, username, password) {
76
+  const data = {
77
+    userId: userId,
78
+    password: md5(username + password)
79
+  }
80
+  return request({
81
+    url: '/v1/system/user/resetPwd',
82
+    method: 'put',
83
+    data: data
84
+  })
85
+}
86
+
87
+// 用户状态修改
88
+export function changeUserStatus(userId, status) {
89
+  const data = {
90
+    userId,
91
+    status
92
+  }
93
+  return request({
94
+    url: '/v1/system/user/changeStatus',
95
+    method: 'put',
96
+    data: data
97
+  })
98
+}
99
+
100
+// 查询用户个人信息
101
+export function getUserProfile() {
102
+  return request({
103
+    url: '/v1/system/user/profile',
104
+    method: 'get'
105
+  })
106
+}
107
+
108
+// 修改用户个人信息
109
+export function updateUserProfile(data) {
110
+  return request({
111
+    url: '/v1/system/user/profile',
112
+    method: 'put',
113
+    data: data
114
+  })
115
+}
116
+
117
+// 用户密码重置
118
+export function updateUserPwd(username, oldPassword, newPassword) {
119
+  return request({
120
+    url: '/v1/system/user/profile/updatePwd',
121
+    method: 'put',
122
+    data:{
123
+      oldPassword: md5(username + oldPassword),
124
+      newPassword: md5(username + newPassword)
125
+    }
126
+  })
127
+}
128
+
129
+// 用户头像上传
130
+export function uploadAvatar(data) {
131
+  return request({
132
+    url: '/v1/system/user/profile/avatar',
133
+    method: 'post',
134
+    data: data
135
+  })
136
+}
137
+
138
+// 下载用户导入模板
139
+export function importTemplate() {
140
+  return request({
141
+    url: '/v1/system/user/importTemplate',
142
+    method: 'get'
143
+  })
144
+}
145
+
146
+// 查询授权角色
147
+export function getAuthRole(userId) {
148
+  return request({
149
+    url: '/v1/system/user/authRole/' + userId,
150
+    method: 'get'
151
+  })
152
+}
153
+
154
+// 保存授权角色
155
+export function updateAuthRole(data) {
156
+  return request({
157
+    url: '/v1/system/user/authRole',
158
+    method: 'put',
159
+    params: data
160
+  })
161
+}

+ 76 - 0
src/api/tool/gen.js

@@ -0,0 +1,76 @@
1
+import request from '@/utils/request'
2
+
3
+// 查询生成表数据
4
+export function listTable(query) {
5
+  return request({
6
+    url: '/v1/tool/gen/list',
7
+    method: 'get',
8
+    params: query
9
+  })
10
+}
11
+// 查询db数据库列表
12
+export function listDbTable(query) {
13
+  return request({
14
+    url: '/v1/tool/gen/db/list',
15
+    method: 'get',
16
+    params: query
17
+  })
18
+}
19
+
20
+// 查询表详细信息
21
+export function getGenTable(tableId) {
22
+  return request({
23
+    url: '/v1/tool/gen/' + tableId,
24
+    method: 'get'
25
+  })
26
+}
27
+
28
+// 修改代码生成信息
29
+export function updateGenTable(data) {
30
+  return request({
31
+    url: '/v1/tool/gen',
32
+    method: 'put',
33
+    data: data
34
+  })
35
+}
36
+
37
+// 导入表
38
+export function importTable(data) {
39
+  return request({
40
+    url: '/v1/tool/gen/importTable',
41
+    method: 'post',
42
+    params: data
43
+  })
44
+}
45
+
46
+// 预览生成代码
47
+export function previewTable(tableId) {
48
+  return request({
49
+    url: '/v1/tool/gen/preview/' + tableId,
50
+    method: 'get'
51
+  })
52
+}
53
+
54
+// 删除表数据
55
+export function delTable(tableId) {
56
+  return request({
57
+    url: '/v1/tool/gen/' + tableId,
58
+    method: 'delete'
59
+  })
60
+}
61
+
62
+// 生成代码(自定义路径)
63
+export function genCode(tableName) {
64
+  return request({
65
+    url: '/v1/tool/gen/genCode/' + tableName,
66
+    method: 'get'
67
+  })
68
+}
69
+
70
+// 同步数据库
71
+export function synchDb(tableName) {
72
+  return request({
73
+    url: '/v1/tool/gen/synchDb/' + tableName,
74
+    method: 'get'
75
+  })
76
+}

BIN
src/assets/401_images/401.gif


BIN
src/assets/404_images/404.png


BIN
src/assets/404_images/404_cloud.png


+ 9 - 0
src/assets/icons/index.js

@@ -0,0 +1,9 @@
1
+import Vue from 'vue'
2
+import SvgIcon from '@/components/SvgIcon'// svg component
3
+
4
+// register globally
5
+Vue.component('svg-icon', SvgIcon)
6
+
7
+const req = require.context('./svg', false, /\.svg$/)
8
+const requireAll = requireContext => requireContext.keys().map(requireContext)
9
+requireAll(req)

File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/404.svg


+ 1 - 0
src/assets/icons/svg/bell-filled.svg

@@ -0,0 +1 @@
1
+<svg class="icon" width="200" height="200" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" data-v-042ca774=""><path fill="currentColor" d="M640 832a128 128 0 01-256 0h256zm192-64H134.4a38.4 38.4 0 010-76.8H192V448c0-154.88 110.08-284.16 256.32-313.6a64 64 0 11127.36 0A320.128 320.128 0 01832 448v243.2h57.6a38.4 38.4 0 010 76.8H832z"></path></svg>

File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/bug.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/build.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/button.svg


+ 1 - 0
src/assets/icons/svg/camera-filled.svg

@@ -0,0 +1 @@
1
+<svg class="icon" width="200" height="200" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" data-v-042ca774=""><path fill="currentColor" d="M160 224a64 64 0 00-64 64v512a64 64 0 0064 64h704a64 64 0 0064-64V288a64 64 0 00-64-64H748.416l-46.464-92.672A64 64 0 00644.736 96H379.328a64 64 0 00-57.216 35.392L275.776 224H160zm352 435.2a115.2 115.2 0 100-230.4 115.2 115.2 0 000 230.4zm0 140.8a256 256 0 110-512 256 256 0 010 512z"></path></svg>

+ 1 - 0
src/assets/icons/svg/camera.svg

@@ -0,0 +1 @@
1
+<svg class="icon" width="200" height="200" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" data-v-042ca774=""><path fill="currentColor" d="M896 256H128v576h768V256zm-199.424-64l-32.064-64h-304.96l-32 64h369.024zM96 192h160l46.336-92.608A64 64 0 01359.552 64h304.96a64 64 0 0157.216 35.328L768.192 192H928a32 32 0 0132 32v640a32 32 0 01-32 32H96a32 32 0 01-32-32V224a32 32 0 0132-32zm416 512a160 160 0 100-320 160 160 0 000 320zm0 64a224 224 0 110-448 224 224 0 010 448z"></path></svg>

File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/cascader.svg


+ 1 - 0
src/assets/icons/svg/chart.svg

@@ -0,0 +1 @@
1
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M0 54.857h36.571V128H0V54.857zM91.429 27.43H128V128H91.429V27.429zM45.714 0h36.572v128H45.714V0z"/></svg>

File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/checkbox.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/clipboard.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/code.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/color.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/component.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/dashboard.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/date-range.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/date.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/dict.svg


+ 1 - 0
src/assets/icons/svg/documentation.svg

@@ -0,0 +1 @@
1
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M71.984 44.815H115.9L71.984 9.642v35.173zM16.094.05h63.875l47.906 38.37v76.74c0 3.392-1.682 6.645-4.677 9.044-2.995 2.399-7.056 3.746-11.292 3.746H16.094c-4.236 0-8.297-1.347-11.292-3.746-2.995-2.399-4.677-5.652-4.677-9.044V12.84C.125 5.742 7.23.05 16.094.05zm71.86 102.32V89.58h-71.86v12.79h71.86zm23.952-25.58V64H16.094v12.79h95.812z"/></svg>

File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/download.svg


+ 1 - 0
src/assets/icons/svg/drag.svg

@@ -0,0 +1 @@
1
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M73.137 29.08h-9.209 29.7L63.886.093 34.373 29.08h20.49v27.035H27.238v17.948h27.625v27.133h18.274V74.063h27.41V56.115h-27.41V29.08zm-9.245 98.827l27.518-26.711H36.59l27.302 26.71zM.042 64.982l27.196 27.029V38.167L.042 64.982zm100.505-26.815V92.01l27.41-27.029-27.41-26.815z"/></svg>

File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/druid.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/edit.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/education.svg


+ 1 - 0
src/assets/icons/svg/email.svg

@@ -0,0 +1 @@
1
+<svg width="128" height="96" xmlns="http://www.w3.org/2000/svg"><path d="M64.125 56.975L120.188.912A12.476 12.476 0 0 0 115.5 0h-103c-1.588 0-3.113.3-4.513.838l56.138 56.137z"/><path d="M64.125 68.287l-62.3-62.3A12.42 12.42 0 0 0 0 12.5v71C0 90.4 5.6 96 12.5 96h103c6.9 0 12.5-5.6 12.5-12.5v-71a12.47 12.47 0 0 0-1.737-6.35L64.125 68.287z"/></svg>

+ 1 - 0
src/assets/icons/svg/example.svg

@@ -0,0 +1 @@
1
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M96.258 57.462h31.421C124.794 27.323 100.426 2.956 70.287.07v31.422a32.856 32.856 0 0 1 25.971 25.97zm-38.796-25.97V.07C27.323 2.956 2.956 27.323.07 57.462h31.422a32.856 32.856 0 0 1 25.97-25.97zm12.825 64.766v31.421c30.46-2.885 54.507-27.253 57.713-57.712H96.579c-2.886 13.466-13.146 23.726-26.292 26.291zM31.492 70.287H.07c2.886 30.46 27.253 54.507 57.713 57.713V96.579c-13.466-2.886-23.726-13.146-26.291-26.292z"/></svg>

+ 1 - 0
src/assets/icons/svg/excel.svg

@@ -0,0 +1 @@
1
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M78.208 16.576v8.384h38.72v5.376h-38.72v8.704h38.72v5.376h-38.72v8.576h38.72v5.376h-38.72v8.576h38.72v5.376h-38.72v8.576h38.72v5.376h-38.72v8.512h38.72v5.376h-38.72v11.136H128v-94.72H78.208zM0 114.368L72.128 128V0L0 13.632v100.736z"/><path d="M28.672 82.56h-11.2l14.784-23.488-14.08-22.592h11.52l8.192 14.976 8.448-14.976h11.136l-14.08 22.208L58.368 82.56H46.656l-8.768-15.68z"/></svg>

File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/exit-fullscreen.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/eye-open.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/eye.svg


+ 1 - 0
src/assets/icons/svg/film.svg

@@ -0,0 +1 @@
1
+<svg class="icon" width="200" height="200" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" data-v-042ca774=""><path fill="currentColor" d="M160 160v704h704V160H160zm-32-64h768a32 32 0 0132 32v768a32 32 0 01-32 32H128a32 32 0 01-32-32V128a32 32 0 0132-32z"></path><path fill="currentColor" d="M320 288V128h64v352h256V128h64v160h160v64H704v128h160v64H704v128h160v64H704v160h-64V544H384v352h-64V736H128v-64h192V544H128v-64h192V352H128v-64h192z"></path></svg>

+ 1 - 0
src/assets/icons/svg/flod.svg

@@ -0,0 +1 @@
1
+<svg class="icon" width="200" height="200" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" data-v-365b8594=""><path fill="currentColor" d="M896 192H128v128h768V192zm0 256H384v128h512V448zm0 256H128v128h768V704zM320 384L128 512l192 128V384z"></path></svg>

File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/form.svg


+ 1 - 0
src/assets/icons/svg/fullscreen.svg

@@ -0,0 +1 @@
1
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M38.47 52L52 38.462l-23.648-23.67L43.209 0H.035L0 43.137l14.757-14.865L38.47 52zm74.773 47.726L89.526 76 76 89.536l23.648 23.672L84.795 128h43.174L128 84.863l-14.757 14.863zM89.538 52l23.668-23.648L128 43.207V.038L84.866 0 99.73 14.76 76 38.472 89.538 52zM38.46 76L14.792 99.651 0 84.794v43.173l43.137.033-14.865-14.757L52 89.53 38.46 76z"/></svg>

File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/github.svg


+ 1 - 0
src/assets/icons/svg/guide.svg

@@ -0,0 +1 @@
1
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M1.482 70.131l36.204 16.18 69.932-65.485-61.38 70.594 46.435 18.735c1.119.425 2.397-.17 2.797-1.363v-.085L127.998.047 1.322 65.874c-1.12.597-1.519 1.959-1.04 3.151.32.511.72.937 1.2 1.107zm44.676 57.821L64.22 107.26l-18.062-7.834v28.527z"/></svg>

File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/icon.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/input.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/international.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/job.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/language.svg


+ 1 - 0
src/assets/icons/svg/link.svg

@@ -0,0 +1 @@
1
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M115.625 127.937H.063V12.375h57.781v12.374H12.438v90.813h90.813V70.156h12.374z"/><path d="M116.426 2.821l8.753 8.753-56.734 56.734-8.753-8.745z"/><path d="M127.893 37.982h-12.375V12.375H88.706V0h39.187z"/></svg>

File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/list.svg


+ 1 - 0
src/assets/icons/svg/list2.svg

@@ -0,0 +1 @@
1
+<svg class="icon" width="200" height="200" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" data-v-365b8594=""><path fill="currentColor" d="M704 192h160v736H160V192h160v64h384v-64zM288 512h448v-64H288v64zm0 256h448v-64H288v64zm96-576V96h256v96H384z"></path></svg>

File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/location.svg


+ 1 - 0
src/assets/icons/svg/lock.svg

@@ -0,0 +1 @@
1
+<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><path d="M119.88 49.674h-7.987V39.52C111.893 17.738 90.45.08 63.996.08 37.543.08 16.1 17.738 16.1 39.52v10.154H8.113c-4.408 0-7.987 2.94-7.987 6.577v65.13c0 3.637 3.57 6.577 7.987 6.577H119.88c4.407 0 7.987-2.94 7.987-6.577v-65.13c-.008-3.636-3.58-6.577-7.987-6.577zm-23.953 0H32.065V39.52c0-14.524 14.301-26.295 31.931-26.295 17.63 0 31.932 11.777 31.932 26.295v10.153z"/></svg>

File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/log.svg


File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/logininfor.svg


+ 1 - 0
src/assets/icons/svg/management.svg

@@ -0,0 +1 @@
1
+<svg class="icon" width="200" height="200" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" data-v-365b8594=""><path fill="currentColor" d="M576 128v288l96-96 96 96V128h128v768H320V128h256zm-448 0h128v768H128V128z"></path></svg>

File diff suppressed because it is too large
+ 1 - 0
src/assets/icons/svg/message.svg


+ 0 - 0
src/assets/icons/svg/money.svg


Some files were not shown because too many files changed in this diff