Compare commits
23 Commits
hello-rout
...
e16afd1696
Author | SHA1 | Date | |
---|---|---|---|
e16afd1696 | |||
b0b7fa69f6 | |||
787f7dc5f8 | |||
a8c505a63d | |||
6b0879721f | |||
3279363409 | |||
53093875eb | |||
3b648e5640 | |||
e6b25bf487 | |||
0c48486913 | |||
ef4874962e | |||
8219016b9d | |||
e091e2aa32 | |||
234a3d9861 | |||
5f174b312c | |||
5dcff64bf5 | |||
5c72437e2d | |||
a39c174cf4 | |||
c469cb139f | |||
4e189eb2ab | |||
4cb90a5925 | |||
7c9e1a682b | |||
e5f066dc3b |
5
.gitignore
vendored
@@ -49,3 +49,8 @@ test/
|
||||
hs_err_pid*
|
||||
replay_pid*
|
||||
|
||||
node_modules/
|
||||
node_modules
|
||||
|
||||
target/
|
||||
target
|
||||
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB |
760
package-lock.json
generated
Normal file
@@ -0,0 +1,760 @@
|
||||
{
|
||||
"name": "vue-learning",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"element-plus": "^2.2.26"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/parser": {
|
||||
"version": "7.20.5",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.20.5.tgz",
|
||||
"integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"parser": "bin/babel-parser.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@ctrl/tinycolor": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.5.0.tgz",
|
||||
"integrity": "sha512-tlJpwF40DEQcfR/QF+wNMVyGMaO9FQp6Z1Wahj4Gk3CJQYHwA2xVG7iKDFdW6zuxZY9XWOpGcfNCTsX4McOsOg==",
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
}
|
||||
},
|
||||
"node_modules/@element-plus/icons-vue": {
|
||||
"version": "2.0.10",
|
||||
"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.10.tgz",
|
||||
"integrity": "sha512-ygEZ1mwPjcPo/OulhzLE7mtDrQBWI8vZzEWSNB2W/RNCRjoQGwbaK4N8lV4rid7Ts4qvySU3njMN7YCiSlSaTQ==",
|
||||
"peerDependencies": {
|
||||
"vue": "^3.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@floating-ui/core": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.0.4.tgz",
|
||||
"integrity": "sha512-FPFLbg2b06MIw1dqk2SOEMAMX3xlrreGjcui5OTxfBDtaKTmh0kioOVjT8gcfl58juawL/yF+S+gnq8aUYQx/Q=="
|
||||
},
|
||||
"node_modules/@floating-ui/dom": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.0.10.tgz",
|
||||
"integrity": "sha512-ZRe5ZmtGYCd82zrjWnnMW8hN5H1otedLh0Ur6rRo6f0exbEe6IlkVvo1RO7tgiMvbF0Df8hkhdm50VcVYqwP6g==",
|
||||
"dependencies": {
|
||||
"@floating-ui/core": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@popperjs/core": {
|
||||
"name": "@sxzz/popperjs-es",
|
||||
"version": "2.11.7",
|
||||
"resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
|
||||
"integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
|
||||
},
|
||||
"node_modules/@types/lodash": {
|
||||
"version": "4.14.191",
|
||||
"resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.191.tgz",
|
||||
"integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ=="
|
||||
},
|
||||
"node_modules/@types/lodash-es": {
|
||||
"version": "4.17.6",
|
||||
"resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz",
|
||||
"integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==",
|
||||
"dependencies": {
|
||||
"@types/lodash": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/web-bluetooth": {
|
||||
"version": "0.0.16",
|
||||
"resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
|
||||
"integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
|
||||
},
|
||||
"node_modules/@vue/compiler-core": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz",
|
||||
"integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-dom": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
|
||||
"integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-sfc": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz",
|
||||
"integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/compiler-ssr": "3.2.45",
|
||||
"@vue/reactivity-transform": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7",
|
||||
"postcss": "^8.1.10",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-ssr": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
|
||||
"integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/reactivity": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.45.tgz",
|
||||
"integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/reactivity-transform": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz",
|
||||
"integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-core": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz",
|
||||
"integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-dom": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz",
|
||||
"integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/runtime-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"csstype": "^2.6.8"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/server-renderer": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz",
|
||||
"integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-ssr": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "3.2.45"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/shared": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz",
|
||||
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/@vueuse/core": {
|
||||
"version": "9.6.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.6.0.tgz",
|
||||
"integrity": "sha512-qGUcjKQXHgN+jqXEgpeZGoxdCbIDCdVPz3QiF1uyecVGbMuM63o96I1GjYx5zskKgRI0FKSNsVWM7rwrRMTf6A==",
|
||||
"dependencies": {
|
||||
"@types/web-bluetooth": "^0.0.16",
|
||||
"@vueuse/metadata": "9.6.0",
|
||||
"@vueuse/shared": "9.6.0",
|
||||
"vue-demi": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@vueuse/core/node_modules/vue-demi": {
|
||||
"version": "0.13.11",
|
||||
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
|
||||
"integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
|
||||
"hasInstallScript": true,
|
||||
"bin": {
|
||||
"vue-demi-fix": "bin/vue-demi-fix.js",
|
||||
"vue-demi-switch": "bin/vue-demi-switch.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@vue/composition-api": "^1.0.0-rc.1",
|
||||
"vue": "^3.0.0-0 || ^2.6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@vue/composition-api": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@vueuse/metadata": {
|
||||
"version": "9.6.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.6.0.tgz",
|
||||
"integrity": "sha512-sIC8R+kWkIdpi5X2z2Gk8TRYzmczDwHRhEFfCu2P+XW2JdPoXrziqsGpDDsN7ykBx4ilwieS7JUIweVGhvZ93w=="
|
||||
},
|
||||
"node_modules/@vueuse/shared": {
|
||||
"version": "9.6.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.6.0.tgz",
|
||||
"integrity": "sha512-/eDchxYYhkHnFyrb00t90UfjCx94kRHxc7J1GtBCqCG4HyPMX+krV9XJgVtWIsAMaxKVU4fC8NSUviG1JkwhUQ==",
|
||||
"dependencies": {
|
||||
"vue-demi": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@vueuse/shared/node_modules/vue-demi": {
|
||||
"version": "0.13.11",
|
||||
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
|
||||
"integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
|
||||
"hasInstallScript": true,
|
||||
"bin": {
|
||||
"vue-demi-fix": "bin/vue-demi-fix.js",
|
||||
"vue-demi-switch": "bin/vue-demi-switch.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@vue/composition-api": "^1.0.0-rc.1",
|
||||
"vue": "^3.0.0-0 || ^2.6.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"@vue/composition-api": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/async-validator": {
|
||||
"version": "4.2.5",
|
||||
"resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
|
||||
"integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
|
||||
},
|
||||
"node_modules/csstype": {
|
||||
"version": "2.6.21",
|
||||
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
|
||||
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/dayjs": {
|
||||
"version": "1.11.7",
|
||||
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz",
|
||||
"integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
|
||||
},
|
||||
"node_modules/element-plus": {
|
||||
"version": "2.2.26",
|
||||
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.26.tgz",
|
||||
"integrity": "sha512-O/rdY5m9DkclpVg8r3GynyqCunm7MxSR142xSsjrZA77bi7bcwA3SIy6SPEDqHi5R4KqgkGYgKSp4Q4e3irbYg==",
|
||||
"dependencies": {
|
||||
"@ctrl/tinycolor": "^3.4.1",
|
||||
"@element-plus/icons-vue": "^2.0.6",
|
||||
"@floating-ui/dom": "^1.0.1",
|
||||
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
|
||||
"@types/lodash": "^4.14.182",
|
||||
"@types/lodash-es": "^4.17.6",
|
||||
"@vueuse/core": "^9.1.0",
|
||||
"async-validator": "^4.2.5",
|
||||
"dayjs": "^1.11.3",
|
||||
"escape-html": "^1.0.3",
|
||||
"lodash": "^4.17.21",
|
||||
"lodash-es": "^4.17.21",
|
||||
"lodash-unified": "^1.0.2",
|
||||
"memoize-one": "^6.0.0",
|
||||
"normalize-wheel-es": "^1.2.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "^3.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/escape-html": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
|
||||
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
|
||||
},
|
||||
"node_modules/estree-walker": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
|
||||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/lodash": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||
},
|
||||
"node_modules/lodash-es": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
|
||||
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
|
||||
},
|
||||
"node_modules/lodash-unified": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz",
|
||||
"integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
|
||||
"peerDependencies": {
|
||||
"@types/lodash-es": "*",
|
||||
"lodash": "*",
|
||||
"lodash-es": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/magic-string": {
|
||||
"version": "0.25.9",
|
||||
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
|
||||
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"sourcemap-codec": "^1.4.8"
|
||||
}
|
||||
},
|
||||
"node_modules/memoize-one": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz",
|
||||
"integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz",
|
||||
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"nanoid": "bin/nanoid.cjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/normalize-wheel-es": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
|
||||
"integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
|
||||
},
|
||||
"node_modules/picocolors": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
|
||||
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.4.20",
|
||||
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.20.tgz",
|
||||
"integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.4",
|
||||
"picocolors": "^1.0.0",
|
||||
"source-map-js": "^1.0.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^10 || ^12 || >=14"
|
||||
}
|
||||
},
|
||||
"node_modules/source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/source-map-js": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/sourcemap-codec": {
|
||||
"version": "1.4.8",
|
||||
"resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
|
||||
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
|
||||
"deprecated": "Please use @jridgewell/sourcemap-codec instead",
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/vue": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.45.tgz",
|
||||
"integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/compiler-sfc": "3.2.45",
|
||||
"@vue/runtime-dom": "3.2.45",
|
||||
"@vue/server-renderer": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
}
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/parser": {
|
||||
"version": "7.20.5",
|
||||
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.20.5.tgz",
|
||||
"integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==",
|
||||
"peer": true
|
||||
},
|
||||
"@ctrl/tinycolor": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.5.0.tgz",
|
||||
"integrity": "sha512-tlJpwF40DEQcfR/QF+wNMVyGMaO9FQp6Z1Wahj4Gk3CJQYHwA2xVG7iKDFdW6zuxZY9XWOpGcfNCTsX4McOsOg=="
|
||||
},
|
||||
"@element-plus/icons-vue": {
|
||||
"version": "2.0.10",
|
||||
"resolved": "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.0.10.tgz",
|
||||
"integrity": "sha512-ygEZ1mwPjcPo/OulhzLE7mtDrQBWI8vZzEWSNB2W/RNCRjoQGwbaK4N8lV4rid7Ts4qvySU3njMN7YCiSlSaTQ==",
|
||||
"requires": {}
|
||||
},
|
||||
"@floating-ui/core": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmmirror.com/@floating-ui/core/-/core-1.0.4.tgz",
|
||||
"integrity": "sha512-FPFLbg2b06MIw1dqk2SOEMAMX3xlrreGjcui5OTxfBDtaKTmh0kioOVjT8gcfl58juawL/yF+S+gnq8aUYQx/Q=="
|
||||
},
|
||||
"@floating-ui/dom": {
|
||||
"version": "1.0.10",
|
||||
"resolved": "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.0.10.tgz",
|
||||
"integrity": "sha512-ZRe5ZmtGYCd82zrjWnnMW8hN5H1otedLh0Ur6rRo6f0exbEe6IlkVvo1RO7tgiMvbF0Df8hkhdm50VcVYqwP6g==",
|
||||
"requires": {
|
||||
"@floating-ui/core": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"@popperjs/core": {
|
||||
"version": "npm:@sxzz/popperjs-es@2.11.7",
|
||||
"resolved": "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz",
|
||||
"integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ=="
|
||||
},
|
||||
"@types/lodash": {
|
||||
"version": "4.14.191",
|
||||
"resolved": "https://registry.npmmirror.com/@types/lodash/-/lodash-4.14.191.tgz",
|
||||
"integrity": "sha512-BdZ5BCCvho3EIXw6wUCXHe7rS53AIDPLE+JzwgT+OsJk53oBfbSmZZ7CX4VaRoN78N+TJpFi9QPlfIVNmJYWxQ=="
|
||||
},
|
||||
"@types/lodash-es": {
|
||||
"version": "4.17.6",
|
||||
"resolved": "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.6.tgz",
|
||||
"integrity": "sha512-R+zTeVUKDdfoRxpAryaQNRKk3105Rrgx2CFRClIgRGaqDTdjsm8h6IYA8ir584W3ePzkZfst5xIgDwYrlh9HLg==",
|
||||
"requires": {
|
||||
"@types/lodash": "*"
|
||||
}
|
||||
},
|
||||
"@types/web-bluetooth": {
|
||||
"version": "0.0.16",
|
||||
"resolved": "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
|
||||
"integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ=="
|
||||
},
|
||||
"@vue/compiler-core": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.2.45.tgz",
|
||||
"integrity": "sha512-rcMj7H+PYe5wBV3iYeUgbCglC+pbpN8hBLTJvRiK2eKQiWqu+fG9F+8sW99JdL4LQi7Re178UOxn09puSXvn4A==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"@vue/compiler-dom": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.2.45.tgz",
|
||||
"integrity": "sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"@vue/compiler-sfc": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.2.45.tgz",
|
||||
"integrity": "sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/compiler-ssr": "3.2.45",
|
||||
"@vue/reactivity-transform": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7",
|
||||
"postcss": "^8.1.10",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
"@vue/compiler-ssr": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.2.45.tgz",
|
||||
"integrity": "sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"@vue/reactivity": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.2.45.tgz",
|
||||
"integrity": "sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"@vue/reactivity-transform": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/reactivity-transform/-/reactivity-transform-3.2.45.tgz",
|
||||
"integrity": "sha512-BHVmzYAvM7vcU5WmuYqXpwaBHjsS8T63jlKGWVtHxAHIoMIlmaMyurUSEs1Zcg46M4AYT5MtB1U274/2aNzjJQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@babel/parser": "^7.16.4",
|
||||
"@vue/compiler-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.25.7"
|
||||
}
|
||||
},
|
||||
"@vue/runtime-core": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.2.45.tgz",
|
||||
"integrity": "sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@vue/reactivity": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"@vue/runtime-dom": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.2.45.tgz",
|
||||
"integrity": "sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@vue/runtime-core": "3.2.45",
|
||||
"@vue/shared": "3.2.45",
|
||||
"csstype": "^2.6.8"
|
||||
}
|
||||
},
|
||||
"@vue/server-renderer": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.2.45.tgz",
|
||||
"integrity": "sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@vue/compiler-ssr": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
},
|
||||
"@vue/shared": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.2.45.tgz",
|
||||
"integrity": "sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==",
|
||||
"peer": true
|
||||
},
|
||||
"@vueuse/core": {
|
||||
"version": "9.6.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vueuse/core/-/core-9.6.0.tgz",
|
||||
"integrity": "sha512-qGUcjKQXHgN+jqXEgpeZGoxdCbIDCdVPz3QiF1uyecVGbMuM63o96I1GjYx5zskKgRI0FKSNsVWM7rwrRMTf6A==",
|
||||
"requires": {
|
||||
"@types/web-bluetooth": "^0.0.16",
|
||||
"@vueuse/metadata": "9.6.0",
|
||||
"@vueuse/shared": "9.6.0",
|
||||
"vue-demi": "*"
|
||||
},
|
||||
"dependencies": {
|
||||
"vue-demi": {
|
||||
"version": "0.13.11",
|
||||
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
|
||||
"integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
|
||||
"requires": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@vueuse/metadata": {
|
||||
"version": "9.6.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.6.0.tgz",
|
||||
"integrity": "sha512-sIC8R+kWkIdpi5X2z2Gk8TRYzmczDwHRhEFfCu2P+XW2JdPoXrziqsGpDDsN7ykBx4ilwieS7JUIweVGhvZ93w=="
|
||||
},
|
||||
"@vueuse/shared": {
|
||||
"version": "9.6.0",
|
||||
"resolved": "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.6.0.tgz",
|
||||
"integrity": "sha512-/eDchxYYhkHnFyrb00t90UfjCx94kRHxc7J1GtBCqCG4HyPMX+krV9XJgVtWIsAMaxKVU4fC8NSUviG1JkwhUQ==",
|
||||
"requires": {
|
||||
"vue-demi": "*"
|
||||
},
|
||||
"dependencies": {
|
||||
"vue-demi": {
|
||||
"version": "0.13.11",
|
||||
"resolved": "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.13.11.tgz",
|
||||
"integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==",
|
||||
"requires": {}
|
||||
}
|
||||
}
|
||||
},
|
||||
"async-validator": {
|
||||
"version": "4.2.5",
|
||||
"resolved": "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz",
|
||||
"integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg=="
|
||||
},
|
||||
"csstype": {
|
||||
"version": "2.6.21",
|
||||
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
|
||||
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==",
|
||||
"peer": true
|
||||
},
|
||||
"dayjs": {
|
||||
"version": "1.11.7",
|
||||
"resolved": "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.7.tgz",
|
||||
"integrity": "sha512-+Yw9U6YO5TQohxLcIkrXBeY73WP3ejHWVvx8XCk3gxvQDCTEmS48ZrSZCKciI7Bhl/uCMyxYtE9UqRILmFphkQ=="
|
||||
},
|
||||
"element-plus": {
|
||||
"version": "2.2.26",
|
||||
"resolved": "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.26.tgz",
|
||||
"integrity": "sha512-O/rdY5m9DkclpVg8r3GynyqCunm7MxSR142xSsjrZA77bi7bcwA3SIy6SPEDqHi5R4KqgkGYgKSp4Q4e3irbYg==",
|
||||
"requires": {
|
||||
"@ctrl/tinycolor": "^3.4.1",
|
||||
"@element-plus/icons-vue": "^2.0.6",
|
||||
"@floating-ui/dom": "^1.0.1",
|
||||
"@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7",
|
||||
"@types/lodash": "^4.14.182",
|
||||
"@types/lodash-es": "^4.17.6",
|
||||
"@vueuse/core": "^9.1.0",
|
||||
"async-validator": "^4.2.5",
|
||||
"dayjs": "^1.11.3",
|
||||
"escape-html": "^1.0.3",
|
||||
"lodash": "^4.17.21",
|
||||
"lodash-es": "^4.17.21",
|
||||
"lodash-unified": "^1.0.2",
|
||||
"memoize-one": "^6.0.0",
|
||||
"normalize-wheel-es": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"escape-html": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz",
|
||||
"integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow=="
|
||||
},
|
||||
"estree-walker": {
|
||||
"version": "2.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
|
||||
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
|
||||
"peer": true
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
|
||||
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
|
||||
},
|
||||
"lodash-es": {
|
||||
"version": "4.17.21",
|
||||
"resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
|
||||
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
|
||||
},
|
||||
"lodash-unified": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz",
|
||||
"integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==",
|
||||
"requires": {}
|
||||
},
|
||||
"magic-string": {
|
||||
"version": "0.25.9",
|
||||
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.25.9.tgz",
|
||||
"integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"sourcemap-codec": "^1.4.8"
|
||||
}
|
||||
},
|
||||
"memoize-one": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz",
|
||||
"integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw=="
|
||||
},
|
||||
"nanoid": {
|
||||
"version": "3.3.4",
|
||||
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.4.tgz",
|
||||
"integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==",
|
||||
"peer": true
|
||||
},
|
||||
"normalize-wheel-es": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz",
|
||||
"integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw=="
|
||||
},
|
||||
"picocolors": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
|
||||
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==",
|
||||
"peer": true
|
||||
},
|
||||
"postcss": {
|
||||
"version": "8.4.20",
|
||||
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.4.20.tgz",
|
||||
"integrity": "sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"nanoid": "^3.3.4",
|
||||
"picocolors": "^1.0.0",
|
||||
"source-map-js": "^1.0.2"
|
||||
}
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
|
||||
"peer": true
|
||||
},
|
||||
"source-map-js": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz",
|
||||
"integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
|
||||
"peer": true
|
||||
},
|
||||
"sourcemap-codec": {
|
||||
"version": "1.4.8",
|
||||
"resolved": "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
|
||||
"integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
|
||||
"peer": true
|
||||
},
|
||||
"vue": {
|
||||
"version": "3.2.45",
|
||||
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.2.45.tgz",
|
||||
"integrity": "sha512-9Nx/Mg2b2xWlXykmCwiTUCWHbWIj53bnkizBxKai1g61f2Xit700A1ljowpTIM11e3uipOeiPcSqnmBg6gyiaA==",
|
||||
"peer": true,
|
||||
"requires": {
|
||||
"@vue/compiler-dom": "3.2.45",
|
||||
"@vue/compiler-sfc": "3.2.45",
|
||||
"@vue/runtime-dom": "3.2.45",
|
||||
"@vue/server-renderer": "3.2.45",
|
||||
"@vue/shared": "3.2.45"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
5
package.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"element-plus": "^2.2.26"
|
||||
}
|
||||
}
|
4
企业级管理系统/java/AdminSys/.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"java.configuration.updateBuildConfiguration": "automatic",
|
||||
"java.compile.nullAnalysis.mode": "automatic"
|
||||
}
|
112
企业级管理系统/java/AdminSys/pom.xml
Normal file
@@ -0,0 +1,112 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.cpic.xim</groupId>
|
||||
<artifactId>admin-system</artifactId>
|
||||
<packaging>war</packaging>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<name>AdminSys Maven Webapp</name>
|
||||
<url>http://maven.apache.org</url>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
<version>4.13.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-webmvc</artifactId>
|
||||
<version>5.3.24</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.oracle</groupId>
|
||||
<artifactId>ojdbc8</artifactId>
|
||||
<version>19.3.0.0.0</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>javax.servlet-api</artifactId>
|
||||
<version>4.0.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.validation</groupId>
|
||||
<artifactId>validation-api</artifactId>
|
||||
<version>2.0.1.Final</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.hibernate</groupId>
|
||||
<artifactId>hibernate-validator</artifactId>
|
||||
<version>7.0.1.Final</version>
|
||||
</dependency>
|
||||
<!-- jackson -->
|
||||
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>2.13.4</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
<version>2.13.4</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-annotations</artifactId>
|
||||
<version>2.13.4</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.11.0</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
|
||||
<dependency>
|
||||
<groupId>commons-fileupload</groupId>
|
||||
<artifactId>commons-fileupload</artifactId>
|
||||
<version>1.4</version>
|
||||
</dependency>
|
||||
<!-- https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api -->
|
||||
<dependency>
|
||||
<groupId>javax.annotation</groupId>
|
||||
<artifactId>javax.annotation-api</artifactId>
|
||||
<version>1.3.2</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<finalName>admin-system</finalName>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-war-plugin</artifactId>
|
||||
<version>3.2.2</version>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-surefire-plugin</artifactId>
|
||||
<version>3.0.0-M6</version>
|
||||
<configuration>
|
||||
<skipTests>true</skipTests>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<java.version>1.8</java.version>
|
||||
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
|
||||
<maven.compiler.source>1.8</maven.compiler.source>
|
||||
<maven.compiler.target>1.8</maven.compiler.target>
|
||||
</properties>
|
||||
</project>
|
@@ -0,0 +1,210 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-15 14:08:28
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-16 17:57:06
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\myutils\account\CpicXIMStaffInfo.java
|
||||
* @Description: 产险厦门分公司员工信息对象
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.myutils.account;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
/*****************************************************
|
||||
* 厦门太保员工信息
|
||||
* 使用工厂函数创建。
|
||||
*****************************************************/
|
||||
public class CpicXIMStaffInfo
|
||||
{
|
||||
/*****************************************************
|
||||
* 查询员工信息
|
||||
* @param uidOrCode p13账号或p09账号
|
||||
* @return 员工信息对象
|
||||
*****************************************************/
|
||||
public static CpicXIMStaffInfo getStaffInfo( String uidOrCode )
|
||||
throws SQLException, ClassNotFoundException
|
||||
{
|
||||
CpicXIMStaffInfo info = null;
|
||||
|
||||
Connection connection = null;
|
||||
PreparedStatement stmt = null;
|
||||
ResultSet result = null;
|
||||
|
||||
String jdbcURL = "jdbc:oracle:thin:@10.39.0.86:1521:xmcx1";
|
||||
String userName = "dataex";
|
||||
String password = "cpic123456";
|
||||
String querySQL = "SELECT ry.staff_code,ry.staff_name,ry.p13uid,"
|
||||
+ " ry.department_code, bm.department_name,"
|
||||
+ " ry.section_office_code,ks.section_office_name "
|
||||
+ " FROM idst0.rydm_t ry,idst0.ks_t ks,idst0.bm_t bm "
|
||||
+ " WHERE ry.account_status = 0 AND (ry.staff_code = ? OR ry.p13uid = ?) "
|
||||
+ " and ry.section_office_code = ks.section_office_code "
|
||||
+ " and ry.department_code = bm.department_code ";
|
||||
|
||||
try
|
||||
{
|
||||
Class.forName( "oracle.jdbc.driver.OracleDriver" );
|
||||
|
||||
connection = DriverManager.getConnection( jdbcURL, userName, password );
|
||||
stmt = connection.prepareStatement( querySQL );
|
||||
stmt.setString( 1, uidOrCode );
|
||||
stmt.setString( 2, uidOrCode );
|
||||
|
||||
result = stmt.executeQuery();
|
||||
|
||||
if ( result.next())
|
||||
{
|
||||
info = new CpicXIMStaffInfo();
|
||||
|
||||
info.code = result.getString( 1 );
|
||||
info.name = result.getString( 2 );
|
||||
info.p13UID = result.getString( 3 );
|
||||
info.departmentCode = result.getString( 4 );
|
||||
info.departmentName = result.getString( 5 );
|
||||
info.sectionOfficeCode = result.getString( 6 );
|
||||
info.setctionOfficeName = result.getString( 7 );
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
try
|
||||
{
|
||||
if ( result != null)
|
||||
{
|
||||
result.close();
|
||||
}
|
||||
}
|
||||
catch ( Exception exception )
|
||||
{
|
||||
exception.printStackTrace();
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if ( stmt != null)
|
||||
{
|
||||
stmt.close();
|
||||
}
|
||||
}
|
||||
catch ( Exception exception )
|
||||
{
|
||||
exception.printStackTrace();
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
if ( connection != null)
|
||||
{
|
||||
connection.close();
|
||||
}
|
||||
}
|
||||
catch ( Exception exception )
|
||||
{
|
||||
exception.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
private CpicXIMStaffInfo()
|
||||
{}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName( String name )
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getCode()
|
||||
{
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode( String code )
|
||||
{
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getP13UID()
|
||||
{
|
||||
return p13UID;
|
||||
}
|
||||
|
||||
public void setP13UID( String p13uid )
|
||||
{
|
||||
p13UID = p13uid;
|
||||
}
|
||||
|
||||
public String getDepartmentCode()
|
||||
{
|
||||
return departmentCode;
|
||||
}
|
||||
|
||||
public void setDepartmentCode( String departmentCode )
|
||||
{
|
||||
this.departmentCode = departmentCode;
|
||||
}
|
||||
|
||||
public String getDepartmentName()
|
||||
{
|
||||
return departmentName;
|
||||
}
|
||||
|
||||
public void setDepartmentName( String departmentName )
|
||||
{
|
||||
this.departmentName = departmentName;
|
||||
}
|
||||
|
||||
public String getSectionOfficeCode()
|
||||
{
|
||||
return sectionOfficeCode;
|
||||
}
|
||||
|
||||
public void setSectionOfficeCode( String sectionOfficeCode )
|
||||
{
|
||||
this.sectionOfficeCode = sectionOfficeCode;
|
||||
}
|
||||
|
||||
public String getSetctionOfficeName()
|
||||
{
|
||||
return setctionOfficeName;
|
||||
}
|
||||
|
||||
public void setSetctionOfficeName( String setctionOfficeName )
|
||||
{
|
||||
this.setctionOfficeName = setctionOfficeName;
|
||||
}
|
||||
|
||||
@JsonProperty( "name")
|
||||
private String name;
|
||||
|
||||
@JsonProperty( "code")
|
||||
private String code;
|
||||
|
||||
@JsonProperty( "p13uid")
|
||||
private String p13UID;
|
||||
|
||||
@JsonProperty( "department_code")
|
||||
private String departmentCode;
|
||||
|
||||
@JsonProperty( "department_name")
|
||||
private String departmentName;
|
||||
|
||||
@JsonProperty( "section_office_code")
|
||||
private String sectionOfficeCode;
|
||||
|
||||
@JsonProperty( "section_office_name")
|
||||
private String setctionOfficeName;
|
||||
}
|
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-15 09:51:12
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-16 15:29:34
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\myutils\account\LdapAccountCheck.java
|
||||
* @Description: P13验证相关方法。
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.myutils.account;
|
||||
|
||||
import javax.naming.CommunicationException;
|
||||
import javax.naming.Context;
|
||||
import javax.naming.NamingException;
|
||||
import javax.naming.directory.DirContext;
|
||||
import javax.naming.directory.InitialDirContext;
|
||||
import java.util.Hashtable;
|
||||
|
||||
public class LdapAccountCheck
|
||||
{
|
||||
private static String ldapServerUrl = "ldap://10.39.0.205:389";
|
||||
|
||||
/*****************************************************
|
||||
* 对p13账号密码提交AD域服务器进行验证
|
||||
* @param userName p13uid
|
||||
* @param password p13密码
|
||||
* @return 返回验证结果,true为成功,false失败。
|
||||
*****************************************************/
|
||||
public static boolean ldapLogin( String userName, String password )
|
||||
{
|
||||
boolean result = false;
|
||||
|
||||
if ( userName.endsWith( "@pr.intra.cpic.com.cn" ) == false)
|
||||
{
|
||||
userName += "@pr.intra.cpic.com.cn";
|
||||
}
|
||||
|
||||
DirContext ctx = null;
|
||||
Hashtable<String, String> ldap = new Hashtable<String, String>();
|
||||
|
||||
ldap.put( Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory" );
|
||||
ldap.put( Context.SECURITY_AUTHENTICATION, "simple" );
|
||||
ldap.put( Context.PROVIDER_URL, ldapServerUrl );
|
||||
ldap.put( Context.SECURITY_PRINCIPAL, userName );
|
||||
ldap.put( Context.SECURITY_CREDENTIALS, password );
|
||||
|
||||
try
|
||||
{
|
||||
ctx = new InitialDirContext( ldap );
|
||||
ctx.close();
|
||||
|
||||
result = true;
|
||||
}
|
||||
catch ( CommunicationException error )
|
||||
{
|
||||
error.printStackTrace();
|
||||
error.getMessage();
|
||||
|
||||
result = false;
|
||||
}
|
||||
catch ( NamingException error )
|
||||
{
|
||||
error.printStackTrace();
|
||||
result = false;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-16 08:50:47
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-16 10:15:11
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\myutils\config\json\AppConfig.java
|
||||
* @Description: 应用的JSON格式配置文件对象
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.myutils.config.json;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
@SuppressWarnings(
|
||||
{ "unused"})
|
||||
public class AppConfig
|
||||
{
|
||||
|
||||
}
|
@@ -0,0 +1,16 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-15 16:19:39
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-15 16:19:41
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpicxim\myutils\config\json\ConfigLoader.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.myutils.config.json;
|
||||
|
||||
public class ConfigLoader
|
||||
{
|
||||
|
||||
}
|
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-16 08:55:32
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-16 10:15:42
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\myutils\config\json\DatabaseConfig.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.myutils.config.json;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
@SuppressWarnings(
|
||||
{ "unused"})
|
||||
public class DatabaseConfig
|
||||
{
|
||||
private String dbType;
|
||||
private String userName;
|
||||
private String password;
|
||||
private String dbName;
|
||||
private String jdbcURL;
|
||||
}
|
@@ -0,0 +1,107 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-15 11:11:21
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-16 22:02:03
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\web\controllers\account\P13AccountCheckController.java
|
||||
* @Description: P13账号验证用Controller。
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.controllers.account;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.channels.IllegalSelectorException;
|
||||
import java.sql.SQLException;
|
||||
import javax.servlet.ServletContext;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.servlet.http.HttpSession;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import com.cpic.xim.myutils.account.CpicXIMStaffInfo;
|
||||
import com.cpic.xim.myutils.account.LdapAccountCheck;
|
||||
|
||||
@Controller
|
||||
@RequestMapping( path = "/account")
|
||||
@SuppressWarnings( "unused")
|
||||
public class P13AccountCheckController
|
||||
{
|
||||
/*****************************************************
|
||||
*
|
||||
*****************************************************/
|
||||
@ResponseBody
|
||||
@RequestMapping( path = "/p13_account_check.do")
|
||||
public P13AccountCheckResult checkP13Account( @RequestBody P13AccountCheckRequest param,
|
||||
HttpServletRequest request, HttpServletResponse response )
|
||||
throws IllegalSelectorException, IOException
|
||||
{
|
||||
P13AccountCheckResult result = new P13AccountCheckResult();
|
||||
ServletContext context = request.getServletContext();
|
||||
|
||||
// context.getAttribute( null );
|
||||
CpicXIMStaffInfo staff = null;
|
||||
|
||||
try
|
||||
{
|
||||
// 先根据用户输入的09工号或p13账号获得p13账号,确定账号存在
|
||||
staff = CpicXIMStaffInfo.getStaffInfo( param.getP13Account() );
|
||||
}
|
||||
catch ( SQLException error )
|
||||
{
|
||||
staff = null;
|
||||
result.setMessage( "人员工号或P13账号不存在!" );
|
||||
result.setSuccess( false );
|
||||
|
||||
}
|
||||
catch ( ClassNotFoundException error )
|
||||
{
|
||||
staff = null;
|
||||
result.setMessage( "加载Oracle驱动失败!" );
|
||||
result.setSuccess( false );
|
||||
}
|
||||
|
||||
// 查询结果是null,说明没有查询到结果,工号或p13账号不存在,返回结果。
|
||||
if ( staff == null)
|
||||
{
|
||||
result.setMessage( "人员工号或P13账号不存在!" );
|
||||
result.setSuccess( false );
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// 判断一下p13是否存在,如果不存在就结束过程
|
||||
if ( staff.getP13UID().isEmpty() == true)
|
||||
{
|
||||
result.setMessage( "P13账号不存在,请联系信息技术部申请账号!" );
|
||||
result.setSuccess( false );
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
// 进行ldap验证
|
||||
boolean ldapCheckResult =
|
||||
LdapAccountCheck.ldapLogin( staff.getP13UID(), param.getPassword() );
|
||||
|
||||
if ( ldapCheckResult == true)
|
||||
{
|
||||
result.setSuccess( true );
|
||||
result.setMessage( "验证成功!" );
|
||||
result.setStaffInfo( staff );
|
||||
|
||||
// 将获取到的人员信息保存到会话中
|
||||
HttpSession session = request.getSession();
|
||||
|
||||
session.setAttribute( "staff_info", staff );
|
||||
} else
|
||||
{
|
||||
result.setSuccess( false );
|
||||
result.setMessage( "验证失败,密码错误!" );
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-15 21:01:43
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-15 21:03:21
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\web\controllers\account\P13AccountCheckRequest.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.controllers.account;
|
||||
|
||||
import com.fasterxml.jackson.annotation.*;
|
||||
|
||||
public class P13AccountCheckRequest
|
||||
{
|
||||
P13AccountCheckRequest()
|
||||
{}
|
||||
|
||||
public String getP13Account()
|
||||
{
|
||||
return p13Account;
|
||||
}
|
||||
|
||||
public void setP13Account( String p13Account )
|
||||
{
|
||||
this.p13Account = p13Account;
|
||||
}
|
||||
|
||||
public String getPassword()
|
||||
{
|
||||
return password;
|
||||
}
|
||||
|
||||
public void setPassword( String password )
|
||||
{
|
||||
this.password = password;
|
||||
}
|
||||
|
||||
@JsonProperty( "p13account")
|
||||
private String p13Account;
|
||||
|
||||
@JsonProperty( "password")
|
||||
private String password;
|
||||
}
|
@@ -0,0 +1,91 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-15 11:17:26
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-16 21:53:30
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\web\controllers\account\P13AccountCheckResult.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
|
||||
package com.cpic.xim.web.controllers.account;
|
||||
|
||||
import com.cpic.xim.myutils.account.CpicXIMStaffInfo;
|
||||
import com.fasterxml.jackson.annotation.*;;
|
||||
|
||||
public class P13AccountCheckResult
|
||||
{
|
||||
P13AccountCheckResult()
|
||||
{}
|
||||
|
||||
public boolean isSuccess()
|
||||
{
|
||||
return success;
|
||||
}
|
||||
|
||||
public void setSuccess( boolean success )
|
||||
{
|
||||
this.success = success;
|
||||
}
|
||||
|
||||
public String getMessage()
|
||||
{
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage( String message )
|
||||
{
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
public CpicXIMStaffInfo getStaffInfo()
|
||||
{
|
||||
return staffInfo;
|
||||
}
|
||||
|
||||
public void setStaffInfo( CpicXIMStaffInfo staffInfo )
|
||||
{
|
||||
this.staffInfo = staffInfo;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
final int prime = 31;
|
||||
int result = 1;
|
||||
result = prime * result + (success ? 1231 : 1237);
|
||||
result = prime * result + ((message == null) ? 0 : message.hashCode());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals( Object obj )
|
||||
{
|
||||
if ( this == obj)
|
||||
return true;
|
||||
if ( obj == null)
|
||||
return false;
|
||||
if ( getClass() != obj.getClass())
|
||||
return false;
|
||||
P13AccountCheckResult other = (P13AccountCheckResult) obj;
|
||||
if ( success != other.success)
|
||||
return false;
|
||||
if ( message == null)
|
||||
{
|
||||
if ( other.message != null)
|
||||
return false;
|
||||
} else if ( !message.equals( other.message ))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@JsonProperty( "success")
|
||||
private boolean success;
|
||||
|
||||
@JsonProperty( "message")
|
||||
private String message;
|
||||
|
||||
@JsonProperty( "staff_info")
|
||||
CpicXIMStaffInfo staffInfo;
|
||||
}
|
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-15 10:44:20
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-15 20:53:14
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\web\filters\cros\CrosFilter.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.filters.cros;
|
||||
|
||||
import java.io.IOException;
|
||||
import javax.servlet.Filter;
|
||||
import javax.servlet.FilterChain;
|
||||
import javax.servlet.ServletException;
|
||||
import javax.servlet.ServletRequest;
|
||||
import javax.servlet.ServletResponse;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
public class CrosFilter implements Filter
|
||||
{
|
||||
@Override
|
||||
public void doFilter( ServletRequest req, ServletResponse resp, FilterChain chain )
|
||||
throws ServletException, IOException
|
||||
{
|
||||
HttpServletRequest request = (HttpServletRequest) req;
|
||||
HttpServletResponse response = (HttpServletResponse) resp;
|
||||
String originHeader = request.getHeader( "Origin" );
|
||||
|
||||
response.setHeader( "Access-Control-Allow-Origin", originHeader );
|
||||
response.setHeader( "Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE" );
|
||||
response.setHeader( "Access-Control-Max-Age", "0" );
|
||||
response.setHeader( "Access-Control-Allow-Headers",
|
||||
"Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token" );
|
||||
response.setHeader( "Access-Control-Allow-Credentials", "true" );
|
||||
response.setHeader( "XDomainRequestAllowed", "1" );
|
||||
response.setHeader( "XDomainRequestAllowed", "1" );
|
||||
|
||||
chain.doFilter( request, response );
|
||||
}
|
||||
}
|
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-15 19:40:12
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-16 10:14:54
|
||||
* @FilePath: \AdminSys\src\main\java\com\cpic\xim\web\listener\ContextLoaderListener.java
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
package com.cpic.xim.web.listener;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import javax.servlet.ServletContext;
|
||||
import javax.servlet.ServletContextEvent;
|
||||
import javax.servlet.ServletContextListener;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
@SuppressWarnings(
|
||||
{ "unused"})
|
||||
public class ContextLoaderListener implements ServletContextListener
|
||||
{
|
||||
private static final int BUFFER_SIZE = 1024;
|
||||
private static final String CONFIG_FILE_CHARSET = "UTF-8";
|
||||
|
||||
@Override
|
||||
public void contextInitialized( ServletContextEvent event )
|
||||
{
|
||||
ServletContext context = event.getServletContext();
|
||||
|
||||
String configFileLocation = context.getInitParameter( "config_file_location" );
|
||||
|
||||
// loadConfig( configFileLocation );
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void loadConfig( String configFileLocation )
|
||||
{
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
FileInputStream configFile = null;
|
||||
InputStreamReader in = null;
|
||||
StringBuilder json = null;
|
||||
char[] buffer = new char[BUFFER_SIZE];
|
||||
|
||||
try
|
||||
{
|
||||
configFile = new FileInputStream( configFileLocation );
|
||||
}
|
||||
catch ( IOException exception )
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,25 @@
|
||||
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" xmlns:jpa="http://www.springframework.org/schema/data/jpa" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
|
||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
|
||||
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
|
||||
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
|
||||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
|
||||
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
|
||||
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
|
||||
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
|
||||
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
|
||||
|
||||
<context:component-scan base-package="com.cpic.xim" />
|
||||
<mvc:annotation-driven />
|
||||
<mvc:default-servlet-handler />
|
||||
|
||||
<!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
|
||||
<property name="prefix" value="/WEB-INF/jsp/" />
|
||||
<property name="suffix" value=".jsp" />
|
||||
</bean> -->
|
||||
|
||||
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
|
||||
<property name="defaultEncoding" value="UTF-8" />
|
||||
<property name="maxUploadSize" value="-1" />
|
||||
</bean>
|
||||
|
||||
</beans>
|
37
企业级管理系统/java/AdminSys/src/main/webapp/WEB-INF/web.xml
Normal file
@@ -0,0 +1,37 @@
|
||||
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
|
||||
<display-name>Archetype Created Web Application</display-name>
|
||||
|
||||
<servlet>
|
||||
<servlet-name>springmvc</servlet-name>
|
||||
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
|
||||
<init-param>
|
||||
<param-name>contextConfigLocation</param-name>
|
||||
<param-value>classpath:spring.xml</param-value>
|
||||
</init-param>
|
||||
<load-on-startup>1</load-on-startup>
|
||||
</servlet>
|
||||
<servlet-mapping>
|
||||
<servlet-name>springmvc</servlet-name>
|
||||
<url-pattern>*.do</url-pattern>
|
||||
</servlet-mapping>
|
||||
|
||||
<filter>
|
||||
<filter-name>cros-filter</filter-name>
|
||||
<filter-class>com.cpic.xim.web.filters.cros.CrosFilter</filter-class>
|
||||
</filter>
|
||||
<filter-mapping>
|
||||
<filter-name>cros-filter</filter-name>
|
||||
<url-pattern>*.do</url-pattern>
|
||||
</filter-mapping>
|
||||
|
||||
<!-- 配置文件路径参数 -->
|
||||
<context-param>
|
||||
<param-name>config_file_location</param-name>
|
||||
<param-value>config.xml</param-value>
|
||||
</context-param>
|
||||
|
||||
<listener>
|
||||
<listener-class>com.cpic.xim.web.listener.ContextLoaderListener</listener-class>
|
||||
</listener>
|
||||
|
||||
</web-app>
|
68
企业级管理系统/java/AdminSys/src/main/webapp/css/kane.css
Normal file
@@ -0,0 +1,68 @@
|
||||
html {
|
||||
--backupground-color: #f7f7f7;
|
||||
--btn-color-blue: #307dbe;
|
||||
--btn-color-yellow: #f7b24d;
|
||||
--btn-color-green: #5bad60;
|
||||
--btn-color-red: #e56651;
|
||||
--btn-font-color: #fff;
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
#root,
|
||||
#app {
|
||||
height: 100vh;
|
||||
width: 100vw;
|
||||
position: fixed;
|
||||
padding: 50px;
|
||||
/* font-size: 0; */
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#root,
|
||||
#app * + * {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
hr {
|
||||
background-color: steelblue;
|
||||
border: none;
|
||||
height: 3px;
|
||||
}
|
||||
|
||||
.test {
|
||||
width: 110vw;
|
||||
height: 100vh;
|
||||
border: 1px solid red;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
button {
|
||||
padding: 5px 10px;
|
||||
background-color: var(--btn-color-red);
|
||||
color: var(--btn-font-color);
|
||||
width: 10em;
|
||||
border: none;
|
||||
border-radius: 0.25em;
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
button + button {
|
||||
margin-left: 0.5em;
|
||||
}
|
||||
|
||||
button:active {
|
||||
background-color: var(--btn-font-color);
|
||||
color: var(--btn-color-red);
|
||||
}
|
||||
|
||||
input {
|
||||
border: none;
|
||||
outline: solid 2px #e56651;
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
font-size: 2rem;
|
||||
margin-top: 15px;
|
||||
}
|
25
企业级管理系统/java/AdminSys/src/main/webapp/css/main_frame.css
Normal file
@@ -0,0 +1,25 @@
|
||||
#app {
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
#header {
|
||||
flex-basis: 50px;
|
||||
border: 1px solid red;
|
||||
max-height: 50px;
|
||||
}
|
||||
|
||||
#main {
|
||||
flex-grow: 1;
|
||||
border: 1px solid red;
|
||||
}
|
||||
|
||||
#footer {
|
||||
flex-basis: 100px;
|
||||
max-height: 100px;
|
||||
border: 1px solid red;
|
||||
}
|
@@ -9,10 +9,8 @@
|
||||
*/
|
||||
|
||||
html {
|
||||
line-height: 1.15;
|
||||
/* 1 */
|
||||
-webkit-text-size-adjust: 100%;
|
||||
/* 2 */
|
||||
line-height: 1.15; /* 1 */
|
||||
-webkit-text-size-adjust: 100%; /* 2 */
|
||||
}
|
||||
|
||||
/* Sections
|
||||
@@ -53,12 +51,9 @@ h1 {
|
||||
*/
|
||||
|
||||
hr {
|
||||
box-sizing: content-box;
|
||||
/* 1 */
|
||||
height: 0;
|
||||
/* 1 */
|
||||
overflow: visible;
|
||||
/* 2 */
|
||||
box-sizing: content-box; /* 1 */
|
||||
height: 0; /* 1 */
|
||||
overflow: visible; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -67,10 +62,8 @@ hr {
|
||||
*/
|
||||
|
||||
pre {
|
||||
font-family: monospace, monospace;
|
||||
/* 1 */
|
||||
font-size: 1em;
|
||||
/* 2 */
|
||||
font-family: monospace, monospace; /* 1 */
|
||||
font-size: 1em; /* 2 */
|
||||
}
|
||||
|
||||
/* Text-level semantics
|
||||
@@ -90,12 +83,9 @@ a {
|
||||
*/
|
||||
|
||||
abbr[title] {
|
||||
border-bottom: none;
|
||||
/* 1 */
|
||||
text-decoration: underline;
|
||||
/* 2 */
|
||||
text-decoration: underline dotted;
|
||||
/* 2 */
|
||||
border-bottom: none; /* 1 */
|
||||
text-decoration: underline; /* 2 */
|
||||
text-decoration: underline dotted; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -115,10 +105,8 @@ strong {
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: monospace, monospace;
|
||||
/* 1 */
|
||||
font-size: 1em;
|
||||
/* 2 */
|
||||
font-family: monospace, monospace; /* 1 */
|
||||
font-size: 1em; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -174,14 +162,10 @@ input,
|
||||
optgroup,
|
||||
select,
|
||||
textarea {
|
||||
font-family: inherit;
|
||||
/* 1 */
|
||||
font-size: 100%;
|
||||
/* 1 */
|
||||
line-height: 1.15;
|
||||
/* 1 */
|
||||
margin: 0;
|
||||
/* 2 */
|
||||
font-family: inherit; /* 1 */
|
||||
font-size: 100%; /* 1 */
|
||||
line-height: 1.15; /* 1 */
|
||||
margin: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -190,8 +174,7 @@ textarea {
|
||||
*/
|
||||
|
||||
button,
|
||||
input {
|
||||
/* 1 */
|
||||
input { /* 1 */
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
@@ -201,8 +184,7 @@ input {
|
||||
*/
|
||||
|
||||
button,
|
||||
select {
|
||||
/* 1 */
|
||||
select { /* 1 */
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
@@ -256,18 +238,12 @@ fieldset {
|
||||
*/
|
||||
|
||||
legend {
|
||||
box-sizing: border-box;
|
||||
/* 1 */
|
||||
color: inherit;
|
||||
/* 2 */
|
||||
display: table;
|
||||
/* 1 */
|
||||
max-width: 100%;
|
||||
/* 1 */
|
||||
padding: 0;
|
||||
/* 3 */
|
||||
white-space: normal;
|
||||
/* 1 */
|
||||
box-sizing: border-box; /* 1 */
|
||||
color: inherit; /* 2 */
|
||||
display: table; /* 1 */
|
||||
max-width: 100%; /* 1 */
|
||||
padding: 0; /* 3 */
|
||||
white-space: normal; /* 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -293,10 +269,8 @@ textarea {
|
||||
|
||||
[type="checkbox"],
|
||||
[type="radio"] {
|
||||
box-sizing: border-box;
|
||||
/* 1 */
|
||||
padding: 0;
|
||||
/* 2 */
|
||||
box-sizing: border-box; /* 1 */
|
||||
padding: 0; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -314,10 +288,8 @@ textarea {
|
||||
*/
|
||||
|
||||
[type="search"] {
|
||||
-webkit-appearance: textfield;
|
||||
/* 1 */
|
||||
outline-offset: -2px;
|
||||
/* 2 */
|
||||
-webkit-appearance: textfield; /* 1 */
|
||||
outline-offset: -2px; /* 2 */
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -334,10 +306,8 @@ textarea {
|
||||
*/
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
-webkit-appearance: button;
|
||||
/* 1 */
|
||||
font: inherit;
|
||||
/* 2 */
|
||||
-webkit-appearance: button; /* 1 */
|
||||
font: inherit; /* 2 */
|
||||
}
|
||||
|
||||
/* Interactive
|
11
企业级管理系统/java/AdminSys/src/main/webapp/css/product_form.css
Normal file
@@ -0,0 +1,11 @@
|
||||
.panel {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.main_form {
|
||||
height: 50vh;
|
||||
width: 50vw;
|
||||
border: 1px solid red;
|
||||
}
|
17
企业级管理系统/java/AdminSys/src/main/webapp/css/test.css
Normal file
@@ -0,0 +1,17 @@
|
||||
a,
|
||||
p {
|
||||
padding: 5rem;
|
||||
border: 1px solid red;
|
||||
line-height: 2rem;
|
||||
margin: 2em;
|
||||
}
|
||||
|
||||
.warp_test {
|
||||
width: 5rem;
|
||||
border: 1px solid red;
|
||||
}
|
||||
|
||||
ol,
|
||||
li {
|
||||
background-color: cornflowerblue;
|
||||
}
|
23
企业级管理系统/java/AdminSys/src/main/webapp/index.jsp
Normal file
@@ -0,0 +1,23 @@
|
||||
<%-- /*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-10-21 00:14:43
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-10-21 00:16:48
|
||||
* @FilePath: \car_dealer\src\main\webapp\test.jsp
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/ --%>
|
||||
<%@ page contentType="text/html;charset=UTF-8" %>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Document</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
5
企业级管理系统/web/admin_system/.browserslistrc
Normal file
@@ -0,0 +1,5 @@
|
||||
> 1%
|
||||
last 2 versions
|
||||
not dead
|
||||
not ie 11
|
||||
safari >= 7
|
27
企业级管理系统/web/admin_system/.eslintrc.js
Normal file
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-14 15:12:46
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-14 15:20:20
|
||||
* @FilePath: \admin_system\.eslintrc.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
node: true
|
||||
},
|
||||
'extends': [
|
||||
'plugin:vue/vue3-essential',
|
||||
'eslint:recommended'
|
||||
],
|
||||
parserOptions: {
|
||||
parser: '@babel/eslint-parser'
|
||||
},
|
||||
rules: {
|
||||
'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
|
||||
}
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
# hello-cli
|
||||
# admin_system
|
||||
|
||||
## Project setup
|
||||
```
|
19699
企业级管理系统/web/admin_system/package-lock.json
generated
Normal file
34
企业级管理系统/web/admin_system/package.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "admin_system",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^1.2.1",
|
||||
"core-js": "^3.8.3",
|
||||
"element-plus": "^2.2.26",
|
||||
"sass": "^1.56.2",
|
||||
"sass-loader": "^13.2.0",
|
||||
"scss": "^0.2.4",
|
||||
"scss-loader": "^0.0.1",
|
||||
"vue": "^3.2.13",
|
||||
"vue-router": "^4.0.3",
|
||||
"vuex": "^4.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.12.16",
|
||||
"@babel/eslint-parser": "^7.12.16",
|
||||
"@vue/cli-plugin-babel": "~5.0.0",
|
||||
"@vue/cli-plugin-eslint": "~5.0.0",
|
||||
"@vue/cli-plugin-router": "~5.0.0",
|
||||
"@vue/cli-plugin-vuex": "~5.0.0",
|
||||
"@vue/cli-service": "~5.0.0",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-vue": "^8.0.3",
|
||||
"vue-cli-plugin-element-plus": "~0.0.13"
|
||||
}
|
||||
}
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
27
企业级管理系统/web/admin_system/public/index.html
Normal file
@@ -0,0 +1,27 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico" />
|
||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong
|
||||
>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't
|
||||
work properly without JavaScript enabled. Please enable it to
|
||||
continue.</strong
|
||||
>
|
||||
</noscript>
|
||||
<div id="app" v-cloak></div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
<style>
|
||||
.v-cloak {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
</html>
|
||||
|
27
企业级管理系统/web/admin_system/src/App.vue
Normal file
@@ -0,0 +1,27 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-14 15:12:46
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-14 17:03:58
|
||||
* @FilePath: \admin_system\src\App.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
<router-view></router-view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// import HelloWorld from "./components/HelloWorld.vue";
|
||||
|
||||
export default {
|
||||
name: "App",
|
||||
components: {
|
||||
// HelloWorld,
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<style>
|
||||
</style>
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB |
@@ -2,8 +2,8 @@
|
||||
* @Author: Kane
|
||||
* @Date: 2022-11-12 23:22:59
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-11-16 15:26:04
|
||||
* @FilePath: \car_dealer\css\colors.css
|
||||
* @LastEditTime: 2022-12-05 01:07:18
|
||||
* @FilePath: \hello-cli\src\assets\css\colors.css
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
@@ -18,4 +18,7 @@ html {
|
||||
--btn-font-color: #fff;
|
||||
|
||||
--input-focus-color: #e56651;
|
||||
|
||||
/* 标题栏背景色 */
|
||||
--banner-background-color: #1d74b2;
|
||||
}
|
17
企业级管理系统/web/admin_system/src/css/global.css
Normal file
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-05 00:07:49
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-05 00:48:04
|
||||
* @FilePath: \hello-cli\src\assets\css\global.css
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
html,
|
||||
body,
|
||||
#app {
|
||||
/* padding: 0px; */
|
||||
margin: 0px;
|
||||
overflow: hidden;
|
||||
}
|
25
企业级管理系统/web/admin_system/src/main.js
Normal file
@@ -0,0 +1,25 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-14 15:12:46
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-22 21:13:59
|
||||
* @FilePath: \admin_system\src\main.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
import { createApp } from 'vue';
|
||||
import App from './App.vue';
|
||||
import router from './router';
|
||||
import store from './store';
|
||||
|
||||
import("./css/root.css");
|
||||
import("./css/normalize.css");
|
||||
import("element-plus/dist/index.css");
|
||||
|
||||
import ElementPlus from "element-plus";
|
||||
|
||||
const app = createApp(App);
|
||||
|
||||
app.use(ElementPlus);
|
||||
app.use(store).use(router).mount('#app');
|
31
企业级管理系统/web/admin_system/src/router/index.js
Normal file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-14 15:12:46
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-14 16:19:17
|
||||
* @FilePath: \admin_system\src\router\index.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
import { createRouter, createWebHashHistory } from 'vue-router'
|
||||
|
||||
const routes = [
|
||||
{
|
||||
path: "/",
|
||||
name: "Home",
|
||||
redirect: "Login",
|
||||
},
|
||||
{
|
||||
path: "/login",
|
||||
name: "Login",
|
||||
component: () => import("../views/account/Login.vue"),
|
||||
}
|
||||
];
|
||||
|
||||
const router = createRouter({
|
||||
history: createWebHashHistory(),
|
||||
routes
|
||||
})
|
||||
|
||||
export default router
|
14
企业级管理系统/web/admin_system/src/store/index.js
Normal file
@@ -0,0 +1,14 @@
|
||||
import { createStore } from 'vuex'
|
||||
|
||||
export default createStore({
|
||||
state: {
|
||||
},
|
||||
getters: {
|
||||
},
|
||||
mutations: {
|
||||
},
|
||||
actions: {
|
||||
},
|
||||
modules: {
|
||||
}
|
||||
})
|
29
企业级管理系统/web/admin_system/src/utils/api/common.js
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-22 17:16:53
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-22 20:48:03
|
||||
* @FilePath: \admin_system\src\utils\api\common.js
|
||||
* @Description: 通用请求
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
//import axios from "axios";
|
||||
import instance from "@utils/request";
|
||||
|
||||
const URL_GET_VALIDATE_CODE = "";
|
||||
|
||||
/**
|
||||
* 获取验证码
|
||||
*/
|
||||
export function GetValidate(data)
|
||||
{
|
||||
return instance.request(
|
||||
{
|
||||
method: "post",
|
||||
url: URL_GET_VALIDATE_CODE,
|
||||
data,
|
||||
}
|
||||
);
|
||||
}
|
||||
|
24
企业级管理系统/web/admin_system/src/utils/api/info/account.js
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-22 09:10:20
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-22 20:54:10
|
||||
* @FilePath: \admin_system\src\utils\api\info\account.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
import instance from "@/utils/api/request";
|
||||
|
||||
const URL_LOGIN = "http://localhost:8000/admin-sys/";
|
||||
|
||||
export function Login(userInfo)
|
||||
{
|
||||
return instance.request(
|
||||
{
|
||||
method: "post",
|
||||
url: URL_LOGIN,
|
||||
userInfo,
|
||||
}
|
||||
);
|
||||
}
|
43
企业级管理系统/web/admin_system/src/utils/api/request.js
Normal file
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-22 17:18:10
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-22 20:47:10
|
||||
* @FilePath: \admin_system\src\utils\api\request.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
import axios from "axios";
|
||||
|
||||
const service = axios.create(
|
||||
{
|
||||
baseURL: "",
|
||||
timeout: 5000,
|
||||
}
|
||||
);
|
||||
|
||||
//加上请求拦截器
|
||||
service.interceptors.request.use(
|
||||
function (config)
|
||||
{
|
||||
return config;
|
||||
},
|
||||
function (error)
|
||||
{
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
|
||||
service.interceptors.response.use(
|
||||
function (response)
|
||||
{
|
||||
return response;
|
||||
},
|
||||
function (error)
|
||||
{
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
|
||||
export default service;
|
146
企业级管理系统/web/admin_system/src/views/account/Login.vue
Normal file
@@ -0,0 +1,146 @@
|
||||
<!--
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-14 15:23:54
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-21 11:14:57
|
||||
* @FilePath: \admin_system\src\views\account\Login.vue
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
-->
|
||||
<template>
|
||||
<div id="login">
|
||||
<div class="form-warp">
|
||||
<ul class="menu-tab">
|
||||
<li :class="{ 'current': current_menu === item.type }" @click="onToggleMenu(item.type)" v-for="item in tab_menu"
|
||||
:key="item.type">{{ item.label
|
||||
}}
|
||||
</li>
|
||||
</ul>
|
||||
<el-form ref="form" :model="form">
|
||||
<el-form-item>
|
||||
<label class="form-label">用户名</label>
|
||||
<el-input type="text" v-model.lazy.trim="loginForm.username"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<label class="form-label">密码</label>
|
||||
<el-input type="password" v-model.lazy.trim="loginForm.password"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item v-show="current_menu === tab_menu[1].type">
|
||||
<label class="form-label">确认密码</label>
|
||||
<el-input type="password" v-model.lazy.trim="loginForm.confirm_password"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<label class="form-label">验证码</label>
|
||||
<el-row :gutter="10">
|
||||
<el-col :span="14">
|
||||
<el-input type="text"></el-input>
|
||||
</el-col>
|
||||
<el-col :span="10">
|
||||
<el-button type="danger" class="el-button-block" @click="getValidateCode()">获取验证码</el-button>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" class="el-button-block">立即创建</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
// import { ref } from "vue";
|
||||
export default {
|
||||
name: "loginPage",
|
||||
data() {
|
||||
return {
|
||||
loginForm: {
|
||||
username: "",
|
||||
password: "",
|
||||
confirm_password: "",
|
||||
},
|
||||
tab_menu: [
|
||||
{ type: "login", label: "登录" },
|
||||
{ type: "regiester", label: "注册" },
|
||||
],
|
||||
current_menu: "",
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
onToggleMenu(type) {
|
||||
this.current_menu = type;
|
||||
},
|
||||
getValidateCode() {
|
||||
console.log(this.$axios);
|
||||
}
|
||||
},
|
||||
created() {
|
||||
//初始化菜单选项
|
||||
this.current_menu = this.tab_menu[0].type;
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
#login {
|
||||
height: 100vh;
|
||||
background-color: #344a5f;
|
||||
padding-top: 50px;
|
||||
}
|
||||
|
||||
.form-warp {
|
||||
width: 320px;
|
||||
padding: 30px;
|
||||
margin: auto;
|
||||
background-color: #ffffff10;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
/*.menu-tab {
|
||||
text-align: center;
|
||||
margin-bottom: 15px;
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
padding: 10px 24px;
|
||||
margin: 0 10px;
|
||||
color: #fff;
|
||||
font-size: 16px;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
|
||||
&.current {
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
.menu-tab {
|
||||
text-align: center;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.menu-tab li {
|
||||
display: inline-block;
|
||||
padding: 10px 24px;
|
||||
margin: 0 10px;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
border-radius: 5px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.menu-tab .current {
|
||||
background-color: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.form-label {
|
||||
display: block;
|
||||
color: #fff;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.el-button-block {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
21
企业级管理系统/web/admin_system/vue.config.js
Normal file
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
* @Author: Kane
|
||||
* @Date: 2022-12-17 11:08:18
|
||||
* @LastEditors: Kane
|
||||
* @LastEditTime: 2022-12-22 23:47:51
|
||||
* @FilePath: \admin_system\vue.config.js
|
||||
* @Description:
|
||||
*
|
||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||
*/
|
||||
const { defineConfig } = require('@vue/cli-service');
|
||||
module.exports = defineConfig(
|
||||
{
|
||||
transpileDependencies: true,
|
||||
devServer: {
|
||||
open: true,
|
||||
host: "localhost",
|
||||
port: 8000,
|
||||
}
|
||||
}
|
||||
);
|
3
企业级管理系统/web/项目源码/.browserslistrc
Normal file
@@ -0,0 +1,3 @@
|
||||
> 1%
|
||||
last 2 versions
|
||||
not dead
|
3
企业级管理系统/web/项目源码/.env.development
Normal file
@@ -0,0 +1,3 @@
|
||||
VUE_APP_API = '/devApi'
|
||||
VUE_APP_DEV_TARGET = 'http://v3.web-jshtml.cn/api'
|
||||
# VUE_API_DEV_TARGET = 'http://v3.com/api'
|
1
企业级管理系统/web/项目源码/.env.production
Normal file
@@ -0,0 +1 @@
|
||||
VUE_APP_API = 'http://v3.web-jshtml.cn/api'
|
1
企业级管理系统/web/项目源码/.env.test
Normal file
@@ -0,0 +1 @@
|
||||
VUE_APP_API = 'http://v3.web-jshtml.cn/api'
|
14
企业级管理系统/web/项目源码/.eslintrc.js
Normal file
@@ -0,0 +1,14 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
node: true,
|
||||
},
|
||||
extends: ["plugin:vue/vue3-essential", "eslint:recommended", "@vue/prettier"],
|
||||
parserOptions: {
|
||||
parser: "babel-eslint",
|
||||
},
|
||||
rules: {
|
||||
"no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
|
||||
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
|
||||
},
|
||||
};
|
22
企业级管理系统/web/项目源码/.gitignore
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
.DS_Store
|
||||
node_modules
|
||||
|
||||
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
24
企业级管理系统/web/项目源码/README.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# vue3-element-plus-admin
|
||||
|
||||
## Project setup
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
### Compiles and hot-reloads for development
|
||||
```
|
||||
npm run serve
|
||||
```
|
||||
|
||||
### Compiles and minifies for production
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Lints and fixes files
|
||||
```
|
||||
npm run lint
|
||||
```
|
||||
|
||||
### Customize configuration
|
||||
See [Configuration Reference](https://cli.vuejs.org/config/).
|
3
企业级管理系统/web/项目源码/babel.config.js
Normal file
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
presets: ["@vue/cli-plugin-babel/preset"],
|
||||
};
|
30307
企业级管理系统/web/项目源码/package-lock.json
generated
Normal file
44
企业级管理系统/web/项目源码/package.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "vue3-element-plus-admin",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"dev": "vue-cli-service serve --mode test",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint",
|
||||
"build:test": "vue-cli-service build --mode test"
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^0.21.0",
|
||||
"core-js": "^3.6.5",
|
||||
"element-plus": "^2.2.26",
|
||||
"js-cookie": "^2.2.1",
|
||||
"js-sha1": "^0.6.0",
|
||||
"vue": "^3.2.27",
|
||||
"vue-router": "^4.1.6",
|
||||
"vuex": "^4.0.2",
|
||||
"wangeditor": "^4.7.12"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vue/cli-plugin-babel": "~4.5.0",
|
||||
"@vue/cli-plugin-eslint": "~4.5.0",
|
||||
"@vue/cli-plugin-router": "~4.5.0",
|
||||
"@vue/cli-plugin-vuex": "~4.5.0",
|
||||
"@vue/cli-service": "~4.5.0",
|
||||
"@vue/compiler-sfc": "^3.0.0",
|
||||
"@vue/eslint-config-prettier": "^6.0.0",
|
||||
"babel-eslint": "^10.1.0",
|
||||
"babel-plugin-component": "^1.1.1",
|
||||
"eslint": "^6.7.2",
|
||||
"eslint-plugin-prettier": "^3.3.1",
|
||||
"eslint-plugin-vue": "^7.0.0",
|
||||
"prettier": "^2.2.1",
|
||||
"sass": "^1.26.5",
|
||||
"sass-loader": "^8.0.2",
|
||||
"svg-sprite-loader": "^5.2.1",
|
||||
"unplugin-auto-import": "^0.5.11",
|
||||
"unplugin-element-plus": "^0.2.0",
|
||||
"unplugin-vue-components": "^0.17.17"
|
||||
}
|
||||
}
|
BIN
企业级管理系统/web/项目源码/public/favicon.ico
Normal file
After Width: | Height: | Size: 4.2 KiB |
25
企业级管理系统/web/项目源码/public/index.html
Normal file
@@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<!-- vue3最新版本 -->
|
||||
<script src="https://unpkg.com/vue@next"></script>
|
||||
<!-- 引入Element Plus UI 组件库 -->
|
||||
<link rel="stylesheet" href="//unpkg.com/element-plus/dist/index.css" />
|
||||
<script src="//unpkg.com/element-plus"></script>
|
||||
<!-- 语言包 -->
|
||||
<script src="https://unpkg.com/browse/element-plus@1.2.0-beta.4/es/locale/lang/zh-cn.mjs"></script>
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
|
||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||
</noscript>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
|
||||
</body>
|
||||
</html>
|
21
企业级管理系统/web/项目源码/src/App.vue
Normal file
@@ -0,0 +1,21 @@
|
||||
<template>
|
||||
<el-config-provider :locale="locale">
|
||||
<router-view />
|
||||
</el-config-provider>
|
||||
</template>
|
||||
<script>
|
||||
import zhCn from 'element-plus/lib/locale/lang/zh-cn'
|
||||
export default {
|
||||
name: "App",
|
||||
setup() {
|
||||
// 切换为中文
|
||||
let locale = zhCn
|
||||
return {
|
||||
locale
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss">
|
||||
#app{}
|
||||
</style>
|
37
企业级管理系统/web/项目源码/src/api/account.js
Normal file
@@ -0,0 +1,37 @@
|
||||
import instance from "@/utils/request"; // 引入拦截器
|
||||
/** 注册 */
|
||||
export function Register(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/register/",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 登录 */
|
||||
export function Login(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/login/",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 登出 */
|
||||
export function Logout(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/logout/",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 路由权限 */
|
||||
export function GetPermission(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/permission",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
72
企业级管理系统/web/项目源码/src/api/common.js
Normal file
@@ -0,0 +1,72 @@
|
||||
import instance from "@/utils/request"; // 引入拦截器
|
||||
/** 获取验证码 */
|
||||
export function GetCode(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/getCode/",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** http 状态码异常演示接口 */
|
||||
export function ErrorHttp(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/error/",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* BasisTable组件公共接口
|
||||
* @param { String } method 请求类型
|
||||
* @param { String } url 请求地址
|
||||
* @param { Object } data 请求参数
|
||||
*/
|
||||
export function TableData(params = {}){
|
||||
return instance.request({
|
||||
method: params.method,
|
||||
url: params.url,
|
||||
data: params.data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param { method } String 请求类型
|
||||
* @param { url } String 请求地址
|
||||
* @param { data } Object 请求参数
|
||||
* @description BasisTable组件公共接口
|
||||
*/
|
||||
export function SwitchStatus(params = {}){
|
||||
return instance.request({
|
||||
method: params.method,
|
||||
url: params.url,
|
||||
data: params.data
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param { method } String 请求类型
|
||||
* @param { url } String 请求地址
|
||||
* @param { data } Object 请求参数
|
||||
* @description BasisTable组件公共接口
|
||||
*/
|
||||
export function CommonApi(params = {}){
|
||||
return instance.request({
|
||||
method: params.method,
|
||||
url: params.url,
|
||||
data: params.data
|
||||
})
|
||||
}
|
||||
|
||||
/** 文件上传 */
|
||||
export function UploadFile(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/upload",
|
||||
data
|
||||
})
|
||||
}
|
102
企业级管理系统/web/项目源码/src/api/info.js
Normal file
@@ -0,0 +1,102 @@
|
||||
import instance from "@/utils/request"; // 引入拦截器
|
||||
/** 一级分类添加 */
|
||||
export function firstCategoryAdd(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/news/addFirstCategory/",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取分类 */
|
||||
export function GetCategory(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/news/getCategoryAll/",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 子级分类添加 */
|
||||
export function ChildCategoryAdd(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/news/addChildrenCategory/",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 分类编辑 */
|
||||
export function CategoryEdit(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/news/editCategory/",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 分类删除 */
|
||||
export function CategoryDel(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/news/deleteCategory/",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/** 添加信息 */
|
||||
export function InfoCreate(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/news/add/",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取列表 */
|
||||
export function GetTableList(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/news/getList/",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 发布状态 */
|
||||
export function Status(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/news/status/",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 删除 */
|
||||
export function Delete(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/news/delete/",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取详情 */
|
||||
export function GetDetailed(data = {}){
|
||||
return instance.request({
|
||||
method: "get",
|
||||
url: "/news/detailed/",
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/** 信息修改 */
|
||||
export function InfoEdit(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/news/editInfo/",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
46
企业级管理系统/web/项目源码/src/api/menu.js
Normal file
@@ -0,0 +1,46 @@
|
||||
import instance from "@/utils/request"; // 引入拦截器
|
||||
/** 创建菜单 */
|
||||
export function MenuCreate(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/menu/create",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取菜单详情 */
|
||||
export function MenuDetailed(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/menu/detailed",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/** 菜单编辑 */
|
||||
export function MenuUpdate(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/menu/update",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 菜单列表 */
|
||||
export function MenuList(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/menu/listsTree",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 菜单列表树状数据 */
|
||||
export function MenuListTree(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/menu/listsTree",
|
||||
data
|
||||
})
|
||||
}
|
75
企业级管理系统/web/项目源码/src/api/requestUrl.js
Normal file
@@ -0,0 +1,75 @@
|
||||
const apiUrl = {
|
||||
// 信息模块
|
||||
info: { // 模块键名
|
||||
list: { // 列表数据接口
|
||||
url: "/news/getList/",
|
||||
method: "post"
|
||||
},
|
||||
info_status: {
|
||||
url: "/news/status/",
|
||||
method: "post"
|
||||
},
|
||||
delete: {
|
||||
method: "post",
|
||||
url: "/news/delete/"
|
||||
}
|
||||
},
|
||||
// 级联选择器模块
|
||||
cascader: {
|
||||
category: {
|
||||
url: "/news/getCategoryAll/",
|
||||
method: "post"
|
||||
}
|
||||
},
|
||||
// 菜单模块
|
||||
menu: {
|
||||
list: {
|
||||
url: "/menu/lists",
|
||||
method: "post"
|
||||
},
|
||||
delete: {
|
||||
method: "post",
|
||||
url: "/menu/remove"
|
||||
},
|
||||
hidden_status: {
|
||||
url: "/menu/statusHidden",
|
||||
method: "post"
|
||||
},
|
||||
disabled_status: {
|
||||
url: "/menu/statusDisabled",
|
||||
method: "post"
|
||||
}
|
||||
},
|
||||
// 角色模块
|
||||
role: {
|
||||
status: {
|
||||
url: "/role/status",
|
||||
method: "post"
|
||||
},
|
||||
delete: {
|
||||
url: "/role/delete",
|
||||
method: "post"
|
||||
},
|
||||
list: {
|
||||
url: "/role/lists",
|
||||
method: "post"
|
||||
}
|
||||
},
|
||||
// 用户模块
|
||||
user: {
|
||||
status: {
|
||||
url: "/user/status",
|
||||
method: "post"
|
||||
},
|
||||
delete: {
|
||||
method: "post",
|
||||
url: "/user/remove"
|
||||
},
|
||||
list: {
|
||||
url: "/user/lists",
|
||||
method: "post"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
export default apiUrl;
|
38
企业级管理系统/web/项目源码/src/api/role.js
Normal file
@@ -0,0 +1,38 @@
|
||||
import instance from "@/utils/request"; // 引入拦截器
|
||||
/** 创建角色 */
|
||||
export function RoleCreate(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/role/create",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 角色详情 */
|
||||
export function RoleDetailed(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/role/detailed",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 角色修改 */
|
||||
export function RoleUpdate(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/role/update",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 角色列表 */
|
||||
export function RoleListAll(data = {}){
|
||||
return instance.request({
|
||||
method: "post",
|
||||
url: "/role/all",
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
|