Compare commits
4 Commits
Author | SHA1 | Date |
---|---|---|
|
553c498d51 | |
|
3b5293a5ed | |
|
5651b91131 | |
|
aad4061a66 |
2
.env
2
.env
|
@ -1,5 +1,5 @@
|
||||||
NODE_ENV=production
|
NODE_ENV=production
|
||||||
VUE_APP_PLATFORM_NAME=数据查询平台
|
VUE_APP_PLATFORM_NAME=JeecgBoot 企业级低代码平台
|
||||||
# 开启单点登录
|
# 开启单点登录
|
||||||
VUE_APP_SSO=false
|
VUE_APP_SSO=false
|
||||||
# 开启微应用模式
|
# 开启微应用模式
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
NODE_ENV=development
|
NODE_ENV=development
|
||||||
VUE_APP_API_BASE_URL=http://192.168.15.219:8080/jeecg-boot
|
VUE_APP_API_BASE_URL=http://localhost:8080/jeecg-boot
|
||||||
VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
|
VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
|
||||||
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
|
VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
44
package.json
44
package.json
|
@ -10,43 +10,42 @@
|
||||||
"lint": "vue-cli-service lint"
|
"lint": "vue-cli-service lint"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@antv/data-set": "^0.11.4",
|
|
||||||
"@jeecg/antd-online-mini": "3.4.3-beta2",
|
"@jeecg/antd-online-mini": "3.4.3-beta2",
|
||||||
"@tinymce/tinymce-vue": "2.1.0",
|
|
||||||
"@toast-ui/editor": "^2.1.2",
|
|
||||||
"ant-design-vue": "^1.7.2",
|
"ant-design-vue": "^1.7.2",
|
||||||
|
"@antv/data-set": "^0.11.4",
|
||||||
|
"viser-vue": "^2.4.8",
|
||||||
"axios": "^0.18.0",
|
"axios": "^0.18.0",
|
||||||
"china-area-data": "^5.0.1",
|
|
||||||
"clipboard": "^2.0.4",
|
|
||||||
"codemirror": "^5.46.0",
|
|
||||||
"cron-parser": "^2.10.0",
|
|
||||||
"dayjs": "^1.8.0",
|
"dayjs": "^1.8.0",
|
||||||
"dom-align": "1.12.0",
|
|
||||||
"echarts": "^5.4.3",
|
|
||||||
"enquire.js": "^2.1.6",
|
"enquire.js": "^2.1.6",
|
||||||
"js-cookie": "^2.2.0",
|
"js-cookie": "^2.2.0",
|
||||||
"lodash.get": "^4.4.2",
|
"lodash.get": "^4.4.2",
|
||||||
"lodash.pick": "^4.4.0",
|
"lodash.pick": "^4.4.0",
|
||||||
"md5": "^2.2.1",
|
"md5": "^2.2.1",
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
"qiankun": "^2.5.1",
|
|
||||||
"tinymce": "5.4.1",
|
|
||||||
"viser-vue": "^2.4.8",
|
|
||||||
"vue": "^2.6.10",
|
"vue": "^2.6.10",
|
||||||
"vue-area-linkage": "^5.1.0",
|
|
||||||
"vue-cropper": "^0.5.4",
|
"vue-cropper": "^0.5.4",
|
||||||
"vue-i18n": "^8.7.0",
|
"vue-i18n": "^8.7.0",
|
||||||
"vue-loader": "^15.7.0",
|
"vue-loader": "^15.7.0",
|
||||||
"vue-ls": "^3.2.0",
|
"vue-ls": "^3.2.0",
|
||||||
"vue-photo-preview": "^1.1.3",
|
|
||||||
"vue-print-nb-jeecg": "^1.0.12",
|
|
||||||
"vue-router": "^3.0.1",
|
"vue-router": "^3.0.1",
|
||||||
|
"vuex": "^3.1.0",
|
||||||
|
"vue-print-nb-jeecg": "^1.0.12",
|
||||||
|
"clipboard": "^2.0.4",
|
||||||
|
"vue-photo-preview": "^1.1.3",
|
||||||
"vue-splitpane": "^1.0.4",
|
"vue-splitpane": "^1.0.4",
|
||||||
"vuedraggable": "^2.20.0",
|
"vuedraggable": "^2.20.0",
|
||||||
"vuex": "^3.1.0",
|
"codemirror": "^5.46.0",
|
||||||
|
"@tinymce/tinymce-vue": "2.1.0",
|
||||||
|
"tinymce": "5.4.1",
|
||||||
|
"@toast-ui/editor": "^2.1.2",
|
||||||
|
"vue-area-linkage": "^5.1.0",
|
||||||
|
"china-area-data": "^5.0.1",
|
||||||
|
"dom-align": "1.12.0",
|
||||||
|
"xe-utils": "2.4.8",
|
||||||
"vxe-table": "2.9.13",
|
"vxe-table": "2.9.13",
|
||||||
"vxe-table-plugin-antd": "1.8.10",
|
"vxe-table-plugin-antd": "1.8.10",
|
||||||
"xe-utils": "2.4.8",
|
"cron-parser": "^2.10.0",
|
||||||
|
"qiankun": "^2.5.1",
|
||||||
"xss": "^1.0.13"
|
"xss": "^1.0.13"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@ -56,13 +55,13 @@
|
||||||
"@vue/cli-service": "^3.3.0",
|
"@vue/cli-service": "^3.3.0",
|
||||||
"@vue/eslint-config-standard": "^4.0.0",
|
"@vue/eslint-config-standard": "^4.0.0",
|
||||||
"babel-eslint": "7.2.3",
|
"babel-eslint": "7.2.3",
|
||||||
"compression-webpack-plugin": "^3.1.0",
|
|
||||||
"eslint": "^5.16.0",
|
"eslint": "^5.16.0",
|
||||||
"eslint-plugin-vue": "^5.1.0",
|
"eslint-plugin-vue": "^5.1.0",
|
||||||
"html-webpack-plugin": "^4.2.0",
|
|
||||||
"less": "^3.9.0",
|
"less": "^3.9.0",
|
||||||
"less-loader": "^4.1.0",
|
"less-loader": "^4.1.0",
|
||||||
"vue-template-compiler": "^2.6.10"
|
"vue-template-compiler": "^2.6.10",
|
||||||
|
"html-webpack-plugin": "^4.2.0",
|
||||||
|
"compression-webpack-plugin": "^3.1.0"
|
||||||
},
|
},
|
||||||
"eslintConfig": {
|
"eslintConfig": {
|
||||||
"root": true,
|
"root": true,
|
||||||
|
@ -100,10 +99,7 @@
|
||||||
"vue/html-closing-bracket-newline": 0,
|
"vue/html-closing-bracket-newline": 0,
|
||||||
"vue/no-parsing-error": 0,
|
"vue/no-parsing-error": 0,
|
||||||
"no-tabs": 0,
|
"no-tabs": 0,
|
||||||
"indent": [
|
"indent": ["off", 2],
|
||||||
"off",
|
|
||||||
2
|
|
||||||
],
|
|
||||||
"no-console": 0,
|
"no-console": 0,
|
||||||
"space-before-function-paren": 0
|
"space-before-function-paren": 0
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||||
<title>查询系统(测试)</title>
|
<title>JeecgBoot 企业级低代码平台</title>
|
||||||
<link rel="icon" href="<%= BASE_URL %>logo.svg">
|
<link rel="icon" href="<%= BASE_URL %>logo.png">
|
||||||
<script src="<%= BASE_URL %>cdn/babel-polyfill/polyfill_7_2_5.js"></script>
|
<script src="<%= BASE_URL %>cdn/babel-polyfill/polyfill_7_2_5.js"></script>
|
||||||
<style>
|
<style>
|
||||||
html,
|
html,
|
||||||
|
@ -249,7 +249,7 @@
|
||||||
<div id="loader"></div>
|
<div id="loader"></div>
|
||||||
<div class="loader-section section-left"></div>
|
<div class="loader-section section-left"></div>
|
||||||
<div class="loader-section section-right"></div>
|
<div class="loader-section section-right"></div>
|
||||||
<div class="load_title">正在加载 教务处查询系统,请耐心等待
|
<div class="load_title">正在加载 JeecgBoot 低代码平台,请耐心等待
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 8.7 KiB |
|
@ -1,226 +1,172 @@
|
||||||
<?xml version="1.0" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="293px" height="293px" viewBox="0 0 293 293" enable-background="new 0 0 293 293" xml:space="preserve"> <image id="image0" width="293" height="293" x="0" y="0"
|
||||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASUAAAElCAQAAAAIbjz8AAAABGdBTUEAALGOfPtRkwAAACBjSFJN
|
||||||
width="400.000000pt" height="400.000000pt" viewBox="0 0 400.000000 400.000000"
|
AAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAAAmJLR0QA/4ePzL8AAAAJcEhZ
|
||||||
preserveAspectRatio="xMidYMid meet">
|
cwAACxMAAAsTAQCanBgAAAAHdElNRQfjBgUEFBDQiqnzAAAkNUlEQVR42u2dfXwU1bnHz+zbZDfJ
|
||||||
|
ErJsAmQDJLBAIQQUbgS0UbQNasVKxZbeaFtTFajFWkRtMRWwkVZFaqUWUBvbq7mXVixWrEpaRVMF
|
||||||
<g transform="translate(0.000000,400.000000) scale(0.100000,-0.100000)"
|
zAWFELjAQgJkAyTLhrBJdjP7ev+YO3d2ZmdmZ7PzcmZzvnz4ZHZ2dvec2d+e85znPOc5WAwgEFKg
|
||||||
fill="#000000" stroke="none">
|
U7sAiEwBSQkhEUhKCIlAUkJIBJISQiKQlBASgaSEkAgkJYREICn9H26H2iXQOpgU3m6X0+niOt9S
|
||||||
<path d="M1825 3990 c-476 -48 -908 -251 -1236 -579 -477 -479 -678 -1149
|
fmAOAADYPYt2qV3RZPgtH97ksQMAAE44XRXNXNe4HY1VZH1u+tDiV7vEyWiucDkJHAAAHO7ZB21e
|
||||||
-544 -1811 91 -450 339 -861 690 -1144 287 -233 589 -368 965 -433 153 -26
|
uT8vQUovPrR3vriXXh7Zn0Me6SMjrmQPsJ8PG3rzAmYA9BFzYORluSuSPj5rf05ET9Ynp9/qS6xP
|
||||||
472 -24 630 5 411 75 756 248 1050 529 675 642 814 1674 332 2473 -172 284
|
Xy5ZY3Mgr9cQVru8yRjI7s8JmshjcyC3Tx9hl5m6Qh/J6bf4xdZo0a7qBq7zCVIqbessUvsmIGDm
|
||||||
-440 545 -732 711 -146 83 -356 165 -520 203 -184 42 -470 63 -635 46z m436
|
ms//898d7sTzyFZCSASSEkIiDLxPhLMGAQAghglZ5jGM/o/F6GtjGABk74nFJLHsJYIsp/AVMYws
|
||||||
-86 c640 -89 1181 -481 1465 -1059 262 -535 265 -1136 9 -1671 -101 -212 -209
|
PVUDZo3gqk/8neavD3VVfJ2oM2R9xNQpYCYtST54pfSV/zkwB4Dmit68ace4ekaalvKTk31Wrmfs
|
||||||
-366 -377 -535 -502 -508 -1270 -692 -1951 -468 -675 221 -1166 782 -1298
|
nqu+FH6t0ric7SWjL5a3CF9zeCZffaYe5x6rqoXb0VYKwPSjQuMzr+3o9I5icizHBCeKO4RfG8+4
|
||||||
1484 -30 157 -37 440 -15 595 63 429 229 773 521 1078 248 258 536 432 875
|
c90F8ZJkYxB6cXNFaxkABB4wC93A8hbyP/y4nM0VBO6xC5fX6eKubWNVsh+V0nhtx6a5HQAMZlU1
|
||||||
525 92 26 233 52 315 60 112 10 354 6 456 -9z"/>
|
8l9l81Y2KVEaXilF9G6Hy1lTL+ZNtCEkfpGIQwnfTGrYvEISUhpes1sfMQdwQu3iwQRsQoINgRGc
|
||||||
<path d="M1811 3869 c-516 -54 -998 -325 -1308 -736 -331 -437 -454 -1001
|
zTvzsNrFQ2gHQWcAXCYmAm6QXwkhEUhKCIlAUkJIBJISQiKQlBASgaSEkAgkJYREICkhJIIlJb9F
|
||||||
-336 -1533 81 -368 258 -687 520 -941 164 -158 307 -259 503 -353 592 -284
|
7QIhtApLSp9ep3aBEFqFJSWfVTi8CYHggyUlAkdSQgyNBCkJxckhEPwkjOCQlBBDAzkDEBLBkFJz
|
||||||
1280 -239 1838 121 109 70 213 157 323 270 106 109 151 165 222 273 355 548
|
hdrFQWgXhpTKWunlzcj8hoOmSrVLIBaGlCz+ufupFVHUanOEupyapHYJxMJaceJwU1IKG/wW+LN1
|
||||||
405 1247 128 1825 -103 215 -194 346 -355 513 -398 411 -969 620 -1535 561z
|
qMOOJZ9cL9+7B8xeW18u1StMOSFu1Y/6MKTktdm8xhB5HMNay7hTwyCWbleu+//0uq3L1a6vOBgd
|
||||||
m458 -44 c610 -89 1146 -488 1404 -1044 325 -703 182 -1531 -358 -2076 -527
|
3N75Lif96Nw4r03t4iG0A6NV8th91pCReuSzopVf6gNXhgIhWLYS8nangilY2ibNO0X0AOgj8Wdc
|
||||||
-532 -1308 -695 -2000 -418 -536 215 -937 663 -1094 1223 -61 219 -80 525 -46
|
TrITjWFemzmgBauVISWrz2dFUhJPccf/fEWK93E7EnMR2D2XRpFHpydqw2Zl2EozD086RT/SyshB
|
||||||
751 83 559 411 1047 897 1333 194 113 425 195 653 231 117 18 416 18 544 0z"/>
|
67gdX16VeJbu2LoKtWGzMlolp6uoE/4ci5mGwy2cH0UrNitrDk58ckuEUnBlRoIRgUwmahdtOONy
|
||||||
<path d="M2005 3731 c-19 -38 -32 -46 -51 -30 -13 11 -19 9 -35 -11 -23 -31
|
RjU30c5bYDJ9IEIdDs+knaBasVlRqwQldGC0dvxKmmtGEbCCpAQldL497fj5GFJqKVe7OAiSimZd
|
||||||
-24 -68 -2 -92 17 -19 13 -35 -19 -81 -11 -14 -10 -19 2 -27 20 -12 24 -7 45
|
VO0ypArDr3RxtFYSlGYS9TUAAGD1LdhD+4+cLu05ZRhSKmlXuziZgcv5p+8zz9TVkn/pGDCv7Tc/
|
||||||
47 30 77 69 137 101 153 16 9 56 15 91 15 33 0 59 4 56 8 -3 5 -37 7 -77 5
|
BQCAKyMujCFN7LfvKOqkQny+/Rf+Vqm2DgAACrqrG+ByXbK83WoXJzN4/pHX7o1/fMPH5F+349i0
|
||||||
-67 -3 -71 -2 -74 20 -5 30 -19 28 -37 -7z"/>
|
rMExF5wut6OsNWDme73VR0mPawT33KMAAGDxm4LLt6pd03iQ2S07N3y8eyEAALicX17ldpyadHjm
|
||||||
<path d="M2542 3671 c6 -19 38 -29 68 -20 22 6 21 7 -10 8 -20 1 -42 7 -49 14
|
jiXTjgkJidyXjgSLeW3NFfP2Wfw4Qf5Tuz4U7JlBw9DeBiEWSkhe2/GppETOTFi/lj9yPrcvXkgA
|
||||||
-11 10 -13 9 -9 -2z"/>
|
kLsBnJkA37INdveKpCQrlJBoevKfepJfSNkDh2axz00/qo2lAqiDk5F4Idm8U49bfT35Tz3JPz2b
|
||||||
<path d="M2092 3649 c-9 -14 -19 -18 -33 -14 -20 7 -58 -27 -59 -52 0 -15 46
|
PbB5ZVsp81zIqA0hISnJCLtFKuokcGEhbVxN4N0FzA2hNeqiREgHV9e2Ygu/kHL6ty/FCQAI/Ng0
|
||||||
-17 55 -3 3 6 13 10 22 10 14 0 15 -13 9 -110 -4 -72 -3 -110 4 -110 11 0 13
|
Me+PxUxBterGHV+FpCQLiULy2mYcEWqR3r9l9EWrDycI3GeNX/fDDRa78aOl29WuJRNkdssAtXLN
|
||||||
10 14 100 1 64 1 65 31 68 36 4 77 47 73 75 -2 16 -13 23 -42 29 -22 5 -44 13
|
bwmYyXGO1zbpFH9yxpz+5x51OalF9j7r8an5PZdH8r8/Fvv6P7Ytg23pAJKSbLic7SUAlLQXdfbk
|
||||||
-51 18 -7 6 -15 2 -23 -11z m76 -36 c-2 -10 -13 -19 -26 -21 -17 -3 -22 2 -22
|
zzjCL6TsgW3LfFYC91kJnPQa+az/9t/8g38sduNHf/yBep5uenkbEyQlmXA7yG1TPXYAHnyJ3yGZ
|
||||||
17 0 16 6 21 26 21 19 0 25 -5 22 -17z"/>
|
23du3KlJZ8d77AROBd/W1p0fy3c9Fvv6P9QQkt9CiZvvR4GkJAt+S1spuf/uhTFCozbSs13eUtR5
|
||||||
<path d="M1430 3650 c0 -5 11 -10 25 -10 31 0 32 -16 3 -49 l-23 -26 26 23
|
emJXIemc/OUvhIR0y/uv3qdGi9RZRI0lwzyaQVKSAb+lsyiv1+H22IWFlD1AebZtXpvX7Wgr7S54
|
||||||
c16 14 32 20 42 16 24 -9 21 -19 -10 -39 -16 -10 -40 -29 -55 -43 -26 -24 -26
|
9DkYheS1JY/nRFKSgVOTzo4ff3b2wT0LhIX08gNeGy0Mhzu/Z9YhISHd8XZ9jTrG9tHpya9BUpKc
|
||||||
-25 -9 -41 11 -9 22 -28 25 -43 5 -23 0 -32 -39 -64 -25 -20 -45 -40 -45 -45
|
lvIjMwC4OBqA+18Rdkj6rAdnX/cpLY5/+++z4/mu10W/+Te1hATAqUk4Qa2B4YukQn4lifHaTk4m
|
||||||
0 -15 58 -10 64 6 7 18 37 20 55 3 11 -11 12 -9 6 10 -5 17 1 29 24 52 42 42
|
cAJvK73+E6HhP+mQ9Fk7i6hzQnNtuuidb6knJADiV+PxlQJJSWLMAasPgP6cx54VEtKeBXm9pG+7
|
||||||
78 41 96 -4 8 -19 19 -37 25 -41 17 -11 11 15 -11 45 -26 34 -19 60 16 60 14
|
vYQM1hASkj5y51svP8D8CpO7MaWGapWo8Dw2SEoSY/FPOxY01dYJTZE89+iRGV2FAABA4B776YnC
|
||||||
0 25 5 25 10 0 15 -41 12 -74 -5 -36 -19 -47 -12 -39 27 5 27 4 30 -11 25 -10
|
QjKE376DLaQdS+54mwzkhQdkK0mOw/3PrwkLiZQQ6Y4k8K7CKSfOTOB/vz0L2JlMdix54GVls4Xa
|
||||||
-4 -21 -7 -24 -7 -4 0 0 -5 8 -10 17 -11 6 -36 -23 -54 -23 -15 -33 1 -14 22
|
PewoqkRQqyQD/CubR1zZP9fhpkREnnvoRSEhGcJcQhrIVjZioLArefQmapVkIKef+3xeb1chAEWd
|
||||||
21 23 22 39 2 22 -8 -6 -19 -9 -25 -5 -19 12 -10 33 29 64 40 32 55 81 24 81
|
pyadHe+zklISckgCAAB7uUBD9crNA9lK12jiabJDBoA/DTeSkmKQQgLA4ie92+fGEbjQFAkX6giJ
|
||||||
-9 0 -13 6 -9 15 4 12 -4 15 -39 15 -25 0 -45 -4 -45 -10z"/>
|
DNyjlv6jOTiVoYREYvPavCMvL9ytDSEBAEBRJ+Xt5rMDka2UJuJWNDOFRHLL+7RPiY0hnNfLPldf
|
||||||
<path d="M2650 3629 c-43 -18 -163 -41 -203 -41 -34 1 -38 -2 -35 -21 3 -25
|
o56QALD4kyUkQVJKC68t0T+d6E/K6U8U0uSTHcV872oI71nA9inX1zzyvHpCiodvOhdJKS1s3sIu
|
||||||
20 -27 161 -26 62 0 85 -4 114 -21 37 -22 54 -20 34 4 -13 15 -85 36 -125 36
|
9rkDc/pz4h/n9L/4EHsjoskn+adIDOHE4f/W5as2wb6vMZJSmpS1ss90FPfk049y+p97lMCZ6fRT
|
||||||
-14 0 -26 4 -26 9 0 13 26 21 70 21 36 0 70 20 70 41 0 12 -28 11 -60 -2z"/>
|
FVJt3c9+zR/xpAzxeejWr+W6AkkpTRJnpAicdh6OuPJf3yXP0XPrqQpp1aaNq9UWEgDNFZQTQBfl
|
||||||
<path d="M1575 3620 c4 -6 1 -17 -5 -25 -10 -12 -10 -15 2 -15 18 0 38 20 38
|
njpBUpIc2pmX2/fF1aMv4gROEHhHMTlrlqqQIvqXHoRhAROBU60SX2IMJCXJcbrMAQAAyOl/9rEv
|
||||||
37 0 7 -9 13 -21 13 -11 0 -17 -4 -14 -10z"/>
|
r+rNs3sAICdu/ZZUhQTnvnzcLlgkpZRxOYVbiYrmEVeouTaPvaOYmr3yWacfTVVI8ED+IEiCpoZq
|
||||||
<path d="M1325 3596 c-22 -34 -30 -93 -15 -111 21 -25 28 -8 17 41 -10 44 -9
|
jhqoXUStQQa2CZPTP+LKZ9deGNNdQE2PAADAwy/wT4mmLiSna/5eJes9fy/lnggbBrK53JSoVUqJ
|
||||||
48 11 62 23 15 29 32 12 32 -5 0 -17 -11 -25 -24z"/>
|
5oqTk+nbyDc3X1PfXeB0VTbNPGz3UJbTk0+lJiSmQ4HNpFO/+7GyGfpsXuSilBDSs0Ob1SEjt6+b
|
||||||
<path d="M1370 3555 c-7 -14 -10 -28 -7 -32 9 -8 57 17 57 30 0 5 -6 4 -13 -2
|
koXTNX9vcYfVhxOpCmnVpsEs/nKUtm1ZoV5naAhnD3CeV6tAWsTir2gee57ONRLRn5ws3DbYvJVN
|
||||||
-18 -14 -30 -2 -16 16 6 7 7 13 2 13 -5 0 -16 -11 -23 -25z"/>
|
bse1n6UqpJce5H/P0rZtyyqb1LwLE87Q23XH1US9ImkT5uY25Fo3YW786OJovue0JyQAjKHJJ+N3
|
||||||
<path d="M2494 3512 c-13 -9 -74 -116 -74 -131 0 -22 18 -10 46 32 16 23 27
|
6KKAoIPjGg3ATfIM/3Rim9QdknALCQAA8nu4lgqoLqWGaq3sLJSIIcwXW0h1gsJC2jcvNSEVd6gn
|
||||||
48 26 55 -2 8 4 19 14 26 18 13 6 30 -12 18z"/>
|
pOQb+KguJatPK9vBJJI1OOMI9zPdBS3lyYXEtrOSCam+Rr0Wqb0kmc9dZSk1VC/apW4J0kEX5TO6
|
||||||
<path d="M2575 3473 c52 -7 59 -11 45 -28 -7 -9 -21 -13 -35 -9 -44 11 -94
|
Cfzs+NK2zBESAB471FKqr6luUPPz5YPAV2wRCmxLVUhFnb//kbo2UvINulWVkna7NiHqa+prhP1I
|
||||||
-96 -60 -129 23 -23 108 -22 162 3 48 21 63 55 43 98 l-13 27 -12 -35 c-16
|
qQrp6i+2Lq9qjD/jtS3Ys2OJ2jVl1UvtAmQiOxdLKaQ5Bz67lnnGb7n6i4FsasdvZZh0KtkGPqqb
|
||||||
-47 -66 -80 -121 -80 -24 0 -46 5 -49 11 -11 17 4 59 21 59 8 0 32 12 52 27
|
3ZkHl/uOInUh6aKJQipr7SpUOmJg+tFkLhAkJcmZeZh7YmEoQkrMG+K3lLWeH6t8BJPNi1olxXG6
|
||||||
70 52 69 63 -5 62 -32 -1 -44 -4 -28 -6z"/>
|
EleLADA0IbFRS0hiQLaSQnAJaflW5g5NyfBbyltgFRJqlRQidSElJsTyW8pb3A5YhYSkpAipC2nO
|
||||||
<path d="M1311 3365 c1 -53 11 -87 28 -93 11 -4 13 4 7 38 -4 23 -13 54 -21
|
AXYnCbuQkJQUYChCYo/aAJh1CG4hISnJTupC+uq/EoU05URHMdxCQma3zAxFSP/8GvvcqEsD2cnm
|
||||||
69 l-14 26 0 -40z"/>
|
5dUHSUlGpBBSDLN5heO8YQF6rWsXaVqksEEbQkJSkg1phIS2Fhz2SCUkfqy+0ja1a8kESUkGZh1K
|
||||||
<path d="M826 3278 c4 -24 7 -73 6 -109 -1 -49 2 -68 12 -72 19 -8 42 20 61
|
X0jCZnb2wNr1zLAT9UFmtwws35p4JjUh+S1CWwtmD2xYA1+sF2qVFCB1ITnc/DZS9sCGNYliVR8k
|
||||||
73 17 49 41 80 62 80 7 0 13 -9 13 -20 0 -11 -7 -20 -15 -20 -26 0 -29 -30 -6
|
JdkRFtJNH3IJiT9VIKxCQlKSnWRCeu9W5hmvTZtCQraSzKQupImn+TO8wSwk1CrJynASEpKSjEgr
|
||||||
-60 25 -34 26 -48 6 -74 -11 -15 -17 -16 -28 -7 -12 9 -16 7 -20 -10 -7 -27 1
|
JHNg3TqYhYSkJBtSC6m27qEX1a6TMMNaSm5HfApkKZFWSFZfbd3qjcxz973aVKnUfRLHEMzulnJl
|
||||||
-47 24 -59 15 -9 21 -5 34 19 8 17 15 37 15 46 0 17 16 20 26 4 3 -6 1 -15 -6
|
843Jh8PdWJU1KP2q163LUxVSSXuyDeSZzNt3ZsKcA+rnNIlnCK3SgTlqF1o63A7+3SGHzqFZ/M/d
|
||||||
-19 -9 -6 -7 -11 8 -19 50 -27 55 -6 10 44 l-31 36 20 21 c22 21 43 17 43 -8
|
+l5qQsJiiUKqbDo8E778L0OQEnwue+1w63s7FzPPCAuJa6fayqYDc2BMwTysbSUAcCL57ovSkbqQ
|
||||||
0 -22 37 -17 55 8 14 21 14 24 -2 35 -23 17 -55 16 -79 -2 -34 -26 -47 -19
|
ElmwRyoh0enEpCFBSmMukJlQPfbGKmk/CkaqG4aSS4Xa0LSjmDsFxLhzXAKddOrnv2Ke8dqu/iLZ
|
||||||
-40 23 14 81 13 87 -17 90 -27 3 -78 -35 -88 -67 -11 -32 -29 3 -29 55 0 48
|
Drgh4+PP0I8W7qY3iEiXtlJpxTTMWyXlmHTqtXuZOd68tqu/6Crkm7blWla9cPen14Ulm5+Q2mhH
|
||||||
-2 54 -21 54 -19 0 -20 -4 -13 -42z"/>
|
UlKExPTIwkIyB0ZeZp+TVkgAABCfoDV9BKTkdrB3MUMMjcRkpMmE9NSTBd3Mc2whxbCefHE7ZCoF
|
||||||
<path d="M3167 3301 c-2 -11 -24 -29 -47 -41 -42 -21 -72 -22 -114 -5 -18 8
|
r5TChrZScq8gRHoMRUhsz3ZiixTDLoxJvkWGkvA2mFHdlRHw+S60hxRCmnGkrZTdtUV1fblwpV9M
|
||||||
-19 5 -12 -33 6 -38 4 -43 -18 -53 -30 -14 -76 -4 -76 16 0 19 -24 19 -40 0
|
kBL8S/e0hBRCeuNuZfO7DZUE4dC7yFv8XDnjEeJJFJLfkqqQYlh3AffViblO1IUlJa8tZCQrqouW
|
||||||
-17 -21 -1 -79 24 -83 28 -6 62 6 94 33 37 31 43 25 59 -69 12 -72 41 -116 75
|
tMM1x6M1uIRU1pqakADgXwk3+qLaNWTCktLpiVSfbAgXdapdOC3DLST+RFt8QuJDF2WP8dSGISW/
|
||||||
-116 33 0 31 29 -6 100 -20 38 -36 81 -36 96 0 28 -2 27 66 8 14 -4 23 0 28
|
pauQtpWUnFLINObtk1dIAGAxU1DtWjJhmN2dRWJ2EkIkY82GNRuYZ4SFxBVq21Es/BnJt+xRGkar
|
||||||
11 8 22 -1 35 -23 35 -10 0 -24 6 -30 14 -13 15 -5 24 47 50 31 16 42 39 23
|
pP4W5JlJ6kJauJvcxlBLoKG/7AxFSJ9epz2njOYKrDWGJiRp59qUgSElc0Dt4mQa8gkJvmQ5DCnl
|
||||||
50 -5 3 -11 -3 -14 -13z"/>
|
98RvqoCmTdJFzhYphiWLdFIahpRs3hFXqDiZsAGN5tJD3q4tqoMtGxzLVhpzgZJSVHdhjNqF0zLy
|
||||||
<path d="M1840 3279 c-340 -43 -662 -220 -865 -472 -142 -176 -229 -356 -277
|
20iwzcyxpOR04QTlsTg/Vu3CaRfhLSSkMbZh6zUSRnB0ICg9sYtIDeHM/1KN2mAb5SVIKXGxDCJV
|
||||||
-569 -31 -137 -33 -416 -4 -548 88 -408 348 -745 714 -929 100 -50 112 -54
|
Xni4u2A4DP+ZIL+SomSukASkpIta/GoXLtOQUki6aG5ffY3aNWKUiO8JFGQiNdK2SFhs1KWyVrXr
|
||||||
112 -32 0 14 -21 29 -76 55 -587 279 -879 955 -678 1571 144 440 511 770 969
|
FI9ABzf1uNqFyySk7tqwWGEXXFLKgD5aC3AJKf21/3CZIMjsVgB5hAQbSEqyMzyEJCClGAabN1Wb
|
||||||
872 112 24 353 29 476 9 646 -107 1120 -692 1086 -1341 -26 -471 -290 -880
|
yCUk6OfgaMKGMxO0F8kHG/K1SFHd+bFwrZ4WaJU89s4itYunbeTt2nry20tg+rEnSIkOBA0ZhbZs
|
||||||
-706 -1094 -61 -31 -101 -58 -101 -67 0 -21 24 -13 135 45 379 197 639 571
|
QSRDfhuJwGGKxheYzrX4ExOzIMQiv5AM4RFXYIp75fUr6aIOt9OldvG0yqhLjz0r96jN5i1tg8mz
|
||||||
696 999 15 110 6 352 -15 452 -48 223 -160 443 -314 619 -147 167 -392 321
|
xCslNHEydG579+EX2F+y1ELSR4o6pU21lS4CmUzQ6tyhkpjXXHo/EnyrcxNspcEstYuUeWSiQzIR
|
||||||
-617 386 -165 48 -372 65 -535 44z"/>
|
gREcQhqGh5BQFKXsDBchISnJzPARkqBfCZEuw0lIGo8M8FuaK7jz+cPA8BKSxkPfLP6yVmqTCNgY
|
||||||
<path d="M3466 2904 c-18 -18 -21 -34 -6 -34 6 0 10 5 10 11 0 7 8 18 18 25 9
|
bkLSeKsEgMUP5950w09ImpaS2wHTvHg8G1cfmjXchKThDq6heteivN6aeubOIUrDne0FthwjyqBR
|
||||||
7 12 14 5 14 -6 0 -19 -7 -27 -16z"/>
|
KdXXAPCXb8ewv37r3duUFxO18haLocklGk12cPU1APz4dzEMAI/95g+U346YWnCki8bnoxruaFJK
|
||||||
<path d="M483 2904 c-8 -4 -6 -11 7 -24 10 -10 21 -37 25 -61 3 -24 13 -66 22
|
Vt/r91BBX5dHfuuvSu9ARE0u6aKwjh/VQINScjkLuj+5nn7stS3Yo6yYKCmZgmMuqH034EGDUnK6
|
||||||
-92 11 -35 12 -52 5 -59 -12 -12 -25 13 -37 65 -9 41 -43 33 -72 -18 -12 -22
|
Fu5m5gnpyb/hYyXFRH16YZcSwYGwZegezDo2jWvsrEEpLdiTGAhzeWRlk/IbIfJ1b5mXmcpvaSmn
|
||||||
-23 -43 -23 -47 0 -16 30 -7 40 12 15 28 27 25 32 -8 6 -41 0 -52 -30 -52
|
LMSA+fjUT69LvEZzUmqu+PgG6nj+XjqvwZUR1362dbkyJaBapbxe7iuujEg/fy1cGXAt/iMzKE9Z
|
||||||
l-27 -1 28 -15 c37 -20 70 -15 82 14 12 26 35 29 35 5 0 -43 21 -93 39 -93 17
|
VPfQi1WNiddoTkrXfkYdlbT/8A+PPnfTh9TjsOFHv2fHU8vBj39HHXGHLLucPflwCUEKkudL1piU
|
||||||
0 16 5 -7 75 -13 41 -22 81 -19 90 9 21 34 19 42 -4 9 -30 42 -54 62 -46 12 5
|
ph+lmlmcuONtAKy+LSueeJp6NoZtWzbzsNw+8ONTyb+6KLeldHimlOtmsRhsthIfmpJSfc2xaeQR
|
||||||
14 9 6 12 -14 5 -17 50 -7 77 3 9 15 16 26 16 15 0 18 -4 12 -17 -4 -10 -8
|
Frv+k7JWnBh3rqizrvbNu+jb3VLucMtrNVFSNQdueZ/r+cxcIG/1UeFHfAumNCWl+1+hjiad+s6f
|
||||||
-31 -8 -48 -1 -23 4 -31 19 -33 11 -1 26 2 34 7 13 8 13 12 0 27 -8 9 -14 33
|
ccLpKmu1+AFYsuPEFH2Eeu7yyHn71q+VqwxNlZTN4HQp42eHo1WafJK6w3wLpjQhJXKgX9hF+XMs
|
||||||
-14 53 0 33 -2 36 -30 36 -24 0 -34 -7 -50 -37 -11 -21 -26 -38 -32 -38 -21 0
|
/uoGq48SEgAAOF1hQ04/dX1Ut27dnAPydHTf+TN1NOUE3zVSOi7hEBIA5S3JgiI1IaWz47222jpq
|
||||||
-27 49 -9 69 18 20 20 31 6 31 -6 0 -20 -16 -31 -35 -25 -41 -46 -45 -55 -9
|
D1ksdsv78/bNPFzRzPx99OXGB5wcnF3Q3VglfVm6Csm/WYP8+2lnDaYrAC3GFWhASvU1HvvR6RvW
|
||||||
-9 35 7 47 93 73 68 20 93 39 93 70 0 18 -18 12 -67 -23 -52 -36 -110 -59
|
UI/nHHjyqdkHuUzewzPjv96B7Js/uPsNacuyfCs1Npt1aNEu7musvvSXX2txBAi9lMgssLR/u6jz
|
||||||
-125 -50 -5 3 -8 22 -6 43 3 32 0 36 -22 38 -14 1 -30 0 -37 -3z"/>
|
r98qb7F5ua9+4+7dC2mrKYY1VJuCUnqbXn6A/KuL8gkJAJxIf6kFLSVYOrjkQC8lAAD4/Y8o/7Y+
|
||||||
<path d="M3350 2865 c-25 -13 -53 -24 -62 -25 -10 0 -18 -4 -18 -10 0 -13 0
|
UlsnvLy5qjFsmHaMfhwyrthS0C3NmC6nn/qKy1vYW5rSEHhmjuFo3A6us5BLyeXEiYujD86mHt/x
|
||||||
-14 63 15 l56 24 28 -23 c15 -13 42 -31 60 -40 49 -25 71 -76 33 -76 -24 0
|
thgn5NHp8W0TAB77NZ/PPMx9A8SzcPdANnmkj9z7Gv91Pmt/TrodFB0Rxd8qQb/QGy7MAZxYu556
|
||||||
-26 -13 -4 -34 41 -41 67 15 33 72 -24 42 -16 56 27 47 21 -3 34 -2 34 5 0 5
|
NPH0f3xP3OtGXxx5mWmxtJQXd0w/OvQ8aZVNtBF/w8fCu29fHimdrcM3boJvkRnkUgqY12yg/du/
|
||||||
-17 10 -38 10 -55 0 -142 28 -142 45 0 21 -18 18 -70 -10z"/>
|
/pnYJDB3vdmfE9FPPc6U07Fpk09OPjmUGILpR//1Veq4qPPP3xG+2mtLT0r0+I2/TVI6gtPlTJYC
|
||||||
<path d="M3520 2871 c0 -6 4 -13 10 -16 6 -3 7 1 4 9 -7 18 -14 21 -14 7z"/>
|
AGop+S1/+ybdjizdvmSHuNfd/UZnUVQHQFtpSftjzxrCzFsy87AhvGSH1ya2FI1VWYOUlx0Ac6C+
|
||||||
<path d="M3380 2805 c0 -3 16 -11 35 -19 56 -24 45 -40 -24 -33 -49 4 -61 2
|
hs/op+jLTU9K9JfGLyWlW6X2kmR1glpKnUWPP0Mdl7X+8QfiXtVY9fdvUGEepya9deeHN/3wD8wb
|
||||||
-66 -11 -4 -10 2 -22 17 -33 19 -15 20 -19 9 -33 -16 -19 -57 -21 -67 -4 -4 6
|
H9G/deeoSzhx9xvJBOVyWn0Ld9NTmRb/23dwzYozGchOT0pixm+6qLKtktuh4VappbyyiSq+OfD8
|
||||||
-11 25 -15 42 -6 28 -7 26 -8 -17 -1 -43 2 -49 26 -58 22 -8 32 -6 62 15 23
|
I2Jft3xrfIbGjuJ7Xv/m3yL6LSvYtz5oaqgedUkXtfpWbUr0jN/9RvaALjr5ZF8ufW70xX3zhIXk
|
||||||
17 39 22 45 16 16 -16 36 -11 36 8 0 10 -5 23 -11 29 -12 12 -3 37 11 28 13
|
tTVWAeC3SGMrCRndyttKmpVSU+WmVRdHk8dY7Id/SN4WkNz6Xlch84u8OPre1xqql28dzOooTgwL
|
||||||
-8 40 6 40 20 0 7 -16 22 -36 34 -34 20 -54 26 -54 16z"/>
|
iWF9ub/5afYAFmP+a6hmCgKLLdt2YQzpT+cfC9q8sw+mm1go/tVC4ze1ligMZh2bxjV8gVRKDdWn
|
||||||
<path d="M1990 2635 c-25 -7 -57 -18 -72 -24 -15 -6 -35 -8 -43 -5 -16 6 -59
|
JtGjtXn7Nq8U97odS/bOT9yApi932bZVmwBwuN2OGPbE06lncBx5+YObaVenkGfL5m2uSG93NzFG
|
||||||
-17 -85 -45 -145 -156 -229 -280 -290 -426 -22 -55 -45 -104 -51 -109 -12 -13
|
NwBZg3yBd3ITMLeUc/npoJRSfQ2B/+S3VJuQ27dlhdhXPvwCd9a6kHHLCsrUrqsdyI5hTzwtdnoj
|
||||||
-12 -145 2 -222 19 -111 54 -154 211 -260 96 -65 156 -99 205 -114 95 -30 247
|
r/fNu3ryqVYx+STxF1en1yqJ83RnDyi72oVuA6O6gWyuQDgopQTA6/dQ4WO66EMvis0LUNnEH78Y
|
||||||
-37 392 -16 104 14 120 20 180 58 174 111 270 198 350 316 36 54 71 120 71
|
1b172y3v046Aulq/JYbFsKpGPvMVi+X1rlsXwy6PjB85tpYlK8XZ8elMxsYLScgeyu3L7xn6p6SK
|
||||||
136 0 2 -20 28 -45 57 -60 71 -80 123 -66 177 23 84 156 192 238 192 54 0 110
|
3zL5JLM0idsaQrg6t6EaJ+jFSQv21NWKe92GNcIr9WPY4Zm3vL91OXP2bPdC6qipsr7m8MzBLACm
|
||||||
-28 124 -62 16 -39 16 -158 -1 -228 -17 -74 -57 -151 -157 -304 -171 -262
|
Hl+/lk++wjFKfssLD6eXlp3uHIXjJ/N6lZSSxV/eQs0f6KLZA1ZfQTf7GgildP0nk09Sv027R2zn
|
||||||
-352 -396 -641 -472 -84 -23 -110 -26 -192 -21 -164 10 -359 81 -524 191 -127
|
5rVtXpl8rf6lUd/9rzve/u1PuDxDlU2VTemWvbWsoTq99SZiJ3ILu5TO2U1HUZa3TDuWKGQIO7gV
|
||||||
85 -447 420 -470 492 -5 16 -12 20 -26 17 -32 -9 -150 34 -243 87 -48 27 -89
|
W6jftT7y2LNiV5rd+FFvnpgheMj45l3XfC5HJBMAALxze0dxOpaS2O4Ni6m3mDNrcNoxhztRyNBJ
|
||||||
50 -92 50 -19 0 9 -42 103 -156 59 -72 153 -187 209 -255 108 -132 252 -280
|
yeX8+zeo41veX71R3KtWbWorFf8VdhQv2bFys9RRlvU19TXptkliuzdTsLBL2tKnD3RSKmulfpkT
|
||||||
318 -328 80 -58 257 -160 331 -191 152 -63 212 -74 399 -74 151 0 181 3 266
|
ziSb66JwOf/je6kloiHwV+4vb5G6bdq1yGNXYvQGQE7/qEvSll0YMdNMkElp3j5KEqZgXa1Ya+C2
|
||||||
26 341 92 599 307 759 631 73 147 84 196 78 352 -6 136 -28 212 -77 259 -38
|
d6nwD/HEsI7ixTsX7k439ISiofri6E+uT69Nol+ti8YHySQy8vK4c9KUWxw2r9eW7EcCldm9Y8n+
|
||||||
37 -134 57 -271 59 -146 1 -196 -17 -275 -98 -50 -52 -164 -200 -195 -255 -7
|
udTx4p38sdNMqMnb1AkbPr5h1qGVm+kwltRprjg3jsABwInf/iTdLlN87KTDPfZ8ep+VKgdna2g6
|
||||||
-12 -12 -13 -27 -2 -85 60 -194 82 -283 58 -30 -8 -57 -13 -59 -10 -8 8 50 80
|
1+1Yup06droS/RbcNFa9d2s6bUFf7q9+Pv7sxtVDfX1Z6+STVp/Vt2pTusu74+2kZDNs048qvVVO
|
||||||
111 140 71 69 157 136 267 208 85 55 81 69 -14 55 -33 -5 -88 -8 -123 -7 -60
|
8q4bIilVNFNeoazB5x8R27nd/0r6bcHF0U88bfMu3T6Uzs7iL28h8Pte7S5Idwo3PrREuFXCiQln
|
||||||
1 -67 -1 -125 -43 -107 -77 -297 -280 -297 -317 0 -5 -9 -17 -20 -27 -22 -20
|
0vus1NHQQu+mygtjqOO5+/mD8Jks2nVplDSz8P05OxdPPT7zcOqvvPuNe18T54gQgm5ZsZiwnQRA
|
||||||
-59 -15 -84 11 -22 21 -13 35 109 179 111 130 169 187 258 254 79 60 73 90
|
Xm9JuxR1TgW7J1lLCY2tNP2oPkK1Sp9cv3KzmAnchup/fTW9qVMmIePxqThh8U879rNfc4vZa9s7
|
||||||
-12 60 -26 -9 -35 -8 -50 5 -10 9 -19 16 -22 15 -2 0 -24 -7 -49 -14z m-238
|
32Mnjx3urMEXH/roRmlCSuLtpGSWUnEHncFFKaYeT1YqSKTkcjpdZyaMO0fe0Bj20oMW/zOPC7/G
|
||||||
-552 c26 -23 23 -50 -18 -175 -33 -101 -35 -113 -24 -156 6 -26 20 -62 31 -81
|
b3nsWTm2HPNbDsxZssMcKOiecuIbf7/pw/we2jdu8xZ2EbjP2pO/f+7+uclHNWJJpU0CYMYR5fcP
|
||||||
18 -30 18 -36 5 -49 -24 -24 -40 -8 -71 69 -24 59 -30 89 -29 144 1 100 48
|
LerUSKvkdAHgcB+aNesQJaaNqy1+4ZHVzR9IGY7PJmA+O/7s+MYqXdQYwglTECeyBwxhAAay+3IH
|
||||||
265 76 265 6 0 20 -7 30 -17z m777 -149 c37 -47 18 -137 -38 -188 -28 -25 -33
|
soMmKT85qqPfTRdN9us3huIXZylFctsVEimRlLd8cPPNH5C3Nap76kljiH+12dblyqRZj+oIPLnJ
|
||||||
-18 -20 30 6 21 9 66 7 99 -3 33 -3 66 -1 73 7 20 30 14 52 -14z m-639 -120
|
mR50J53MnwQAAKMvKt+9iQEas5ukqvHV+6jjqO4Xv6SXdzPx2tavzZRE6/GuDDFhtnP3X/ep2mXm
|
||||||
c0 -49 46 -138 95 -183 27 -25 65 -46 110 -61 62 -21 75 -22 125 -12 110 23
|
Ik0pDX1dGR819U8/QR3zi0ns5C38RPTxnVtyKRlD7LQbsJCmlOQw/9ZsWLeOOuYW0+PPpDJ5Czfx
|
||||||
125 13 59 -39 -138 -109 -303 -58 -395 123 -43 85 -45 208 -3 208 5 0 9 -16 9
|
4bfJOzcARl+cdUjseyu7BwyUX8ja9XRSwKiuto65uNvl/MMPM7Fz00fEpJqYu198VJWyrReUUgKg
|
||||||
-36z"/>
|
rnbZNuo4hm1bRiczHdrkLZyEjKl1bgBkD9z4kdql5gNSKQGwdfmWFfSvdO/8knZyWuMHfxzq5C1s
|
||||||
<path d="M428 1752 c-93 -20 -115 -37 -37 -27 l57 7 11 -51 c18 -83 16 -89
|
hA3xbknmGmI+ylrFLuJSHoi/lOVbD82if6lnJkw50VjVVPnO7ZmRYD1siJ9zE2MlAWAI3/6O0tO4
|
||||||
-26 -97 -21 -4 -45 -10 -53 -15 -25 -14 18 -11 106 7 96 20 132 38 57 29 -58
|
4oHKr8SmvCWiNwUp6fgtt76X0y+Hf1t54oUEgD4ibq3thDPpR5/LB8StEknQNPIydRzRXxkh5Zyb
|
||||||
-7 -51 -14 -68 73 -3 15 -8 35 -11 44 -4 13 4 18 41 23 25 4 48 11 51 16 8 13
|
WjCFZAiLE5Iu+u2/qLuRYpLyqV2A5PTkzz5IP4roQ0Zt20rM8osVEgATznDnCYcFTXwpB+bER1TG
|
||||||
-41 10 -128 -9z"/>
|
sLBBixlkSeJHbeK7NgD0kXteh7lN0oiUAHjj7jfvir/pWm2bmNPA+og4cxsAAKacuO1dtUsvjGa+
|
||||||
<path d="M3470 1735 c0 -6 18 -30 41 -54 22 -24 37 -46 34 -49 -3 -4 -29 -16
|
jiU7Ivr4eOYYFjZoy26K6piOVUNYvJCMoeoGscvd1UIzUgIAgM6ip5+I9whHdUGTVtqmkJEpfPE2
|
||||||
-58 -27 -51 -21 -52 -22 -79 -100 -16 -43 -26 -84 -24 -89 2 -6 9 4 16 22 7
|
EgAAVDYJJVJNl8YqKaZYNPJFUKzZENUxM3iEDUzrA0aiOmbHhsWMoVSENOPIwy8kS1qYDiXtUkyx
|
||||||
17 17 32 23 32 7 -1 50 -14 96 -30 47 -16 87 -27 90 -24 8 8 -14 19 -104 49
|
aExKAAAQMMeP6ACIYSFjvOcYNtjtERYzhFNJ7I7FDsyR08fdVMm9r12qaFBKAByYs24d81cd1cEp
|
||||||
-91 31 -88 27 -65 90 9 23 127 70 157 62 51 -14 73 -17 73 -8 0 5 -21 14 -47
|
p5CRHW+pjxhDqe0QcNWX8pZx+lFppn01KSUA1q5/5nF2qirY5BQ2sGWExYwh8aY2SX7PI8/zP+u1
|
||||||
20 -36 9 -62 26 -100 64 -29 28 -53 47 -53 42z"/>
|
tZQ3VwgvwxaOKXM7pOo6BaRE4NIHtknH6o2v3jfyMtviiOpCRhjcBGFD4oAg9fYIAJz4+a/4U0x7
|
||||||
<path d="M385 1502 c6 -6 26 -12 45 -14 31 -3 36 -7 53 -53 l19 -50 -33 -27
|
bUenH5nhcgqLQTimTLo5PYGb7rFTW3vCSXXD9qU2L06wv54YFjYETWq1T1FdyJgoI1009fYIAF30
|
||||||
c-18 -15 -30 -30 -27 -34 11 -10 187 147 181 162 -3 9 -22 14 -57 14 -28 0
|
+3/i37fAbzk9sbuAwMUuiJcbASkFTXKHx6dLVeNn1xZ0m4KmYOKvnfxKlfWKh4xcEtZFjaHUDG0S
|
||||||
-82 3 -121 6 -49 5 -67 3 -60 -4z m200 -22 l30 -1 -35 -30 c-58 -49 -69 -53
|
LPa1f9LxpNwQeE29kjUUQsDJV9QJ58qGeJyu41Ov+fzUJGOIPUlKEtFH9OQ6Djk3w4phfG1gqqO1
|
||||||
-79 -27 -27 72 -27 72 15 65 22 -4 53 -7 69 -7z"/>
|
eGYf3LRKqOuy+CeehmkqRaBVwgnlF+6ljsV/ZMbNHxjCABjCpiB3J0K2UHJ0ehF9yBg0cXu2dFFj
|
||||||
<path d="M3362 1370 c4 -13 178 -92 193 -87 5 2 -21 19 -60 37 -120 55 -137
|
KHXriGLyyd/8NNn9l9PXlDqqG6hSsHPxE09nDwAAgD5iCvK3A5SkgqZ0TPMYFjZQ7xO/XoQGixnC
|
||||||
62 -133 50z"/>
|
QuVITnHHSw/C1OKIISOkBMCaDZ9fU9RJfnW6qDGU7IskTXNKVmFDRM8tCvpqSjykDPmv1UeModR8
|
||||||
<path d="M558 1324 c-91 -45 -123 -79 -42 -43 25 12 47 19 49 17 1 -1 10 -17
|
2YlMO/bXb8Ec5MaNpiZEhXC62koX72ysojzLZNh9VCckEZIYRl6RnomOxcQHjAi/z7x9r98Db9gt
|
||||||
19 -35 26 -51 21 -76 -19 -97 -30 -17 -46 -36 -30 -36 12 0 85 51 85 59 0 4
|
PxnSKpHsXPzyAyOuxLdGZAuVbishDNmdSfMZ+sjS7X//hhaFlGFSAqC64cyEq75kG9/kl20KmoLS
|
||||||
17 8 37 7 30 -1 40 4 51 25 14 23 13 30 -13 87 -15 34 -33 62 -39 61 -6 0 -50
|
jeSwmD5iDJmCUgoVJx5/5o8/gHPtbXIyTEoAWPz75tXWkUZ4ItTXbwoawrpo8kxGTGj5mILGkNQO
|
||||||
-21 -98 -45z m122 -14 c34 -67 24 -100 -31 -100 -12 0 -27 17 -45 51 -14 28
|
BrunoTqdrJhqw7CVvDa4hpdDZc2G295dtq2lXCg0TtwSRqXQRRfsefkBbXZs/1+H+AenJ6pdHGnw
|
||||||
-24 52 -22 53 5 3 73 35 75 35 2 1 12 -17 23 -39z"/>
|
2s6Ov/+Vx56dcAYmufAz4sozj793q7aFxGqVzo0be179qdD0sXkX7QKgvubJp86O37asuwDmOhlD
|
||||||
<path d="M3305 1275 c-29 -28 -34 -85 -9 -109 23 -23 37 -20 85 19 65 55 75
|
t7370oOZ0BswbvKSHcemaXctB5uaegKfc+CLq3/xy/weOadNho4uOvnkRzduX5oJQkowuz122Kdw
|
||||||
59 99 35 24 -24 20 -52 -14 -88 -14 -16 -29 -22 -44 -19 -28 5 -39 -9 -13 -18
|
U6Gm3mM/PfHhFy6MWb0xeYZXpRl7/tX7jszQmk+bH5aUCFxbqziSUd1Q0dyTD0Bdrduxe+GcA8aQ
|
||||||
27 -8 58 10 81 48 25 40 25 69 2 90 -29 26 -57 20 -107 -23 -52 -45 -69 -49
|
2iUCAAAsZvM+/UR7CSzhIdLAYUXAE4coDQ43uZ6isumza/tzHnjZ5lWzuzOGZhx55/bzY8XuKaUd
|
||||||
-85 -20 -20 38 12 90 56 90 13 0 24 5 24 10 0 20 -51 10 -75 -15z"/>
|
EqQEs4k6VOKdfptXnh/7zu0zjijfPmExu+fBl86OlzfoXz0yqjsTS1XjdZ+2lr1154c3nR3flyt/
|
||||||
<path d="M665 1139 c-49 -33 -91 -62 -93 -64 -7 -7 59 -95 84 -112 24 -15 27
|
K4zFcvpnH3zuUdgXRaYHS0p8WxJnGj3558ZNOTHlBAB2zxdX71rUXjKQLYekDOGRl+fu/9XPtRD5
|
||||||
-15 52 4 15 11 28 30 30 42 3 16 8 20 22 16 22 -7 60 26 60 53 0 9 -15 41 -33
|
lXZdmQ/tHrULpAwONx18v2jX2vUAuB2bV354U0dxX2767hAsZgravLMO1dSL3aslE2BJqaSdSmQX
|
||||||
69 l-33 53 -89 -61z m113 -4 c26 -41 28 -68 7 -85 -22 -18 -57 0 -83 44 l-21
|
0WeSWyA5Dje1EcaOJf/82rlx3QU9+QPZBC4uPlwXNYayBrMHbN6y1q//Y/FOrU7JpgNLSk4XFTIW
|
||||||
35 32 20 c18 11 34 21 37 21 3 0 15 -16 28 -35z m-64 -90 c13 -25 13 -33 2
|
1VHbwgw3luxIXC7ktfXkB8yDWYNZzKxzeb1jz+f3DEfhJJJgdlMjmxh2cbTahYMHmzczPNJywhr6
|
||||||
-50 -28 -41 -65 -27 -105 41 l-19 32 36 25 37 25 17 -21 c10 -12 24 -35 32
|
t5TTx1dGqF04hJZgSenIDNpCUjYXPULrcEycZJq3G6EMw8LbjVAClnAcbtjmzzMf4Twk2oElpdkH
|
||||||
-52z"/>
|
udbfI+QkU8aGLCnZvLSPBHlLEKnAaxnpotKklUMMF3ilpI/EpzZGIJLBKyUsZvWpXTiElkBDf4RE
|
||||||
<path d="M3191 1093 c-23 -27 -40 -53 -39 -60 3 -13 156 -133 169 -133 19 0 7
|
ICkhJAJJCSERLCllirsMoTwsKZkDahcIoVUYUvJbkFsSMVQYUkJCQgwdZHYjJAJJCSERSEoIiYBY
|
||||||
16 -31 43 l-40 28 17 31 c10 17 28 37 40 45 20 14 26 13 56 -6 47 -29 69 -26
|
Sn5LY5XaZUCIB+KF3hZ/SbvaZZCb+hoAcMLuKWnP7zk6vaOYwAFwuGcf1GIME8RSSrb9lPbwW1rL
|
||||||
32 4 -16 14 -42 25 -57 25 -23 0 -28 5 -28 23 0 31 -18 47 -51 47 -20 0 -38
|
zo3zWXGiuKO07fzYc+MAAIDA3Q6ftaA7a9Dq89gBcDvyes0B7Y2meaXksX/7L+oH5/bkp3J1fo/a
|
||||||
-12 -68 -47z m105 2 c7 -16 -17 -64 -44 -89 -20 -18 -22 -18 -51 4 -17 12 -31
|
5U1OVBfVAUBm5yWTz5PR9OS9po5Tzd2rBAGz8AISXilF9AGz2oUfPukwtASfMiA2uxFw4re0l3Cd
|
||||||
25 -31 30 0 5 18 28 39 50 35 37 42 40 61 30 12 -6 23 -17 26 -25z"/>
|
R1JCpEjQ1FLeXJF4PqFL3rHkg5uZKRbkJ2wYyAYgYA6aqDP6iClo8eOEIQzAYFZfLtmk5vRbfVSm
|
||||||
<path d="M800 964 c-83 -70 -95 -82 -88 -89 6 -6 160 120 166 136 8 19 -16 5
|
lcEsAg+aAmYAzIHcPkOYOg8DYQOBEzizIzAFzYHsAbI+fkvAHNHz1ccUzO0jaw4Pg1l+S0RPZnVp
|
||||||
-78 -47z"/>
|
quS+BgrrrqX87Pipx/N7Tk88N47AqaXmdk9h18TTNi8Absf+uT4rAHbP/L3xw2S/pbPo8kjyGphw
|
||||||
<path d="M3070 955 l-54 -55 64 -66 c96 -96 94 -96 151 -33 26 29 46 56 43 59
|
O45Ny+sde74n/+x4Oh+M1VfQXdrmcAPgte2d77EDYPVNPhmfCc5v6SwKmIs6YauP13Z6IgATT/fk
|
||||||
-3 2 -25 -18 -49 -45 l-43 -50 -31 29 c-17 17 -31 35 -31 41 0 6 16 26 35 45
|
t5fwJz9UXUp+y6lJmZ1YT+t4bQdnux1s2SeiupQQcOO3HJjTUSxmu2dkdiOSkNcLgJh9w1GrhJAI
|
||||||
19 19 35 38 35 44 0 6 -20 -10 -45 -34 l-45 -44 -30 29 -30 29 47 48 c26 26
|
1CohJAJJCSERSEoIifhfYiLpk0SDlz8AAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMDYtMDRUMjA6
|
||||||
45 50 42 53 -3 2 -30 -20 -59 -50z"/>
|
MjA6MTYrMDg6MDBOMzq8AAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTA2LTA0VDIwOjIwOjE2KzA4
|
||||||
<path d="M841 894 c-90 -97 -93 -120 -3 -31 37 37 70 67 73 67 3 0 -3 -50 -13
|
OjAwP26CAAAAAABJRU5ErkJggg==" />
|
||||||
-112 -10 -62 -14 -116 -10 -120 11 -11 163 143 155 156 -4 5 -37 -24 -74 -65
|
|
||||||
-38 -41 -68 -69 -68 -64 -1 6 6 53 14 105 17 111 18 140 6 140 -5 0 -41 -34
|
|
||||||
-80 -76z"/>
|
|
||||||
<path d="M2990 872 c0 -6 16 -53 35 -104 19 -51 33 -94 31 -95 -2 -2 -42 19
|
|
||||||
-89 48 -47 28 -91 49 -97 47 -12 -4 180 -118 198 -118 17 0 16 2 -24 114 -35
|
|
||||||
97 -54 134 -54 108z"/>
|
|
||||||
<path d="M1781 853 c-1 -7 -16 -16 -33 -21 l-33 -8 27 -7 26 -7 -19 -72 c-22
|
|
||||||
-86 -21 -78 -11 -78 11 0 55 175 49 192 -4 10 -6 10 -6 1z"/>
|
|
||||||
<path d="M2218 819 l-27 -26 24 4 c25 5 33 -12 50 -109 3 -21 10 -38 14 -38 7
|
|
||||||
0 -24 191 -31 194 -2 1 -15 -10 -30 -25z"/>
|
|
||||||
<path d="M1880 833 c-42 -15 -54 -78 -21 -107 21 -19 55 -24 84 -12 25 11 23
|
|
||||||
-24 -3 -52 -27 -28 -63 -28 -83 1 -12 16 -16 18 -16 6 -1 -23 20 -39 52 -39
|
|
||||||
41 0 63 15 76 51 34 97 -14 179 -89 152z m58 -19 c40 -28 22 -94 -26 -94 -35
|
|
||||||
0 -52 17 -52 50 0 29 9 45 30 53 23 8 24 8 48 -9z"/>
|
|
||||||
<path d="M2016 779 c-4 -28 -5 -54 -2 -56 3 -3 15 2 28 11 12 9 28 16 35 16
|
|
||||||
20 0 53 -38 53 -60 0 -11 -9 -29 -20 -40 -14 -14 -16 -20 -6 -20 18 0 33 19
|
|
||||||
41 52 5 21 1 33 -20 54 -22 22 -33 25 -61 21 -35 -6 -35 -5 -32 26 3 30 6 32
|
|
||||||
53 38 l50 6 -56 1 -56 2 -7 -51z"/>
|
|
||||||
<path d="M1091 689 c-29 -46 -55 -88 -58 -96 -9 -22 16 -14 28 9 7 12 28 47
|
|
||||||
48 78 l35 55 7 -30 c4 -16 7 -69 8 -117 0 -48 5 -90 11 -93 5 -3 34 31 63 77
|
|
||||||
71 111 70 108 58 108 -5 0 -31 -34 -58 -75 -26 -41 -51 -75 -55 -75 -4 0 -9
|
|
||||||
53 -10 117 -2 71 -7 118 -14 120 -6 2 -34 -33 -63 -78z"/>
|
|
||||||
<path d="M2823 727 c12 -32 113 -167 125 -167 7 0 -5 25 -29 58 -22 31 -51 72
|
|
||||||
-63 89 -21 32 -43 45 -33 20z"/>
|
|
||||||
<path d="M2762 692 c2 -4 23 -42 47 -85 23 -43 41 -80 40 -82 -2 -1 -48 19
|
|
||||||
-102 46 -92 46 -127 58 -127 43 0 -14 104 -194 112 -194 14 0 9 13 -37 94 -25
|
|
||||||
43 -44 80 -42 82 1 2 49 -19 106 -46 106 -51 121 -57 121 -41 0 15 -104 191
|
|
||||||
-113 191 -5 0 -7 -3 -5 -8z"/>
|
|
||||||
<path d="M2011 669 c-1 -20 15 -34 49 -44 22 -6 21 -4 -6 13 -18 11 -34 26
|
|
||||||
-37 34 -4 9 -6 8 -6 -3z"/>
|
|
||||||
<path d="M1305 606 c-13 -13 -29 -42 -36 -64 -16 -56 1 -96 52 -123 46 -23 61
|
|
||||||
-24 99 -4 38 20 60 63 60 119 0 37 -5 48 -31 70 -42 35 -110 36 -144 2z m136
|
|
||||||
-15 c33 -33 36 -56 14 -108 -20 -47 -41 -62 -88 -63 -68 0 -108 71 -76 133 38
|
|
||||||
74 99 89 150 38z"/>
|
|
||||||
<path d="M2580 591 c0 -8 11 -45 26 -84 30 -85 26 -112 -21 -134 -55 -26 -77
|
|
||||||
-9 -113 84 -17 42 -35 79 -41 81 -14 5 33 -124 58 -158 22 -31 68 -37 111 -15
|
|
||||||
50 26 55 57 25 145 -27 74 -45 107 -45 81z"/>
|
|
||||||
<path d="M1515 471 c-15 -53 -30 -102 -32 -108 -3 -7 0 -13 6 -13 6 0 16 21
|
|
||||||
24 46 7 25 15 45 17 46 25 1 82 -18 95 -32 13 -15 15 -25 7 -54 -6 -21 -7 -38
|
|
||||||
-1 -41 10 -7 22 37 22 80 0 18 8 35 19 43 10 8 18 25 18 42 0 35 -22 52 -96
|
|
||||||
73 l-51 15 -28 -97z m152 33 c16 -23 1 -58 -28 -62 -13 -2 -41 1 -62 8 -38 11
|
|
||||||
-39 12 -32 48 4 20 9 40 11 44 7 11 98 -20 111 -38z"/>
|
|
||||||
<path d="M1722 443 c-20 -130 -22 -153 -13 -153 8 0 13 22 27 138 4 29 10 50
|
|
||||||
14 45 4 -4 17 -50 30 -100 12 -51 26 -93 31 -93 5 0 26 33 48 73 22 39 47 81
|
|
||||||
55 92 15 19 15 19 11 -10 -12 -69 -22 -160 -19 -164 9 -10 15 11 28 105 21
|
|
||||||
148 1 152 -70 12 -49 -97 -49 -97 -79 22 -22 85 -28 100 -39 100 -10 0 -18
|
|
||||||
-22 -24 -67z"/>
|
|
||||||
<path d="M2185 468 c7 -41 25 -170 25 -182 0 -11 132 3 145 15 9 9 -39 6 -102
|
|
||||||
-7 -26 -5 -27 -1 -43 119 -7 48 -16 87 -21 87 -6 0 -7 -15 -4 -32z"/>
|
|
||||||
<path d="M2043 473 c-4 -10 -22 -56 -40 -103 -35 -91 -38 -100 -24 -100 4 0
|
|
||||||
12 15 17 33 9 31 12 32 66 35 57 3 57 3 72 -33 8 -19 19 -35 25 -35 13 0 -81
|
|
||||||
212 -97 218 -6 2 -15 -5 -19 -15z m61 -114 c-3 -5 -23 -9 -46 -9 -39 0 -40 1
|
|
||||||
-33 27 3 15 13 43 22 62 l15 36 24 -54 c13 -29 21 -57 18 -62z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 13 KiB |
|
@ -183,7 +183,7 @@
|
||||||
* @param title 要修改的新标题
|
* @param title 要修改的新标题
|
||||||
*/
|
*/
|
||||||
changeTitle(title) {
|
changeTitle(title) {
|
||||||
let projectTitle = "数据查询平台"
|
let projectTitle = "Jeecg-Boot 企业级低代码平台"
|
||||||
// 首页特殊处理
|
// 首页特殊处理
|
||||||
if (this.$route.path === indexKey) {
|
if (this.$route.path === indexKey) {
|
||||||
document.title = projectTitle
|
document.title = projectTitle
|
||||||
|
|
|
@ -5,19 +5,24 @@
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<a href="/">
|
<a href="/">
|
||||||
<img src="~@/assets/logo.svg" class="logo" alt="logo">
|
<img src="~@/assets/logo.svg" class="logo" alt="logo">
|
||||||
<span class="title">查询系统</span>
|
<span class="title">Jeecg Boot</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="desc">
|
<div class="desc">
|
||||||
欢迎使用!
|
Jeecg Boot 是中国最具影响力的 企业级 低代码平台
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<route-view></route-view>
|
<route-view></route-view>
|
||||||
|
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
|
<div class="links">
|
||||||
|
<a href="http://doc.jeecg.com" target="_blank">帮助</a>
|
||||||
|
<a href="https://github.com/zhangdaiscott/jeecg-boot" target="_blank">隐私</a>
|
||||||
|
<a href="https://github.com/zhangdaiscott/jeecg-boot/blob/master/LICENSE" target="_blank">条款</a>
|
||||||
|
</div>
|
||||||
<div class="copyright">
|
<div class="copyright">
|
||||||
Copyright © 2023 计科院</a> 出品
|
Copyright © 2019 <a href="http://www.jeecg.com" target="_blank">JEECG开源社区</a> 出品
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -25,126 +30,121 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import RouteView from "@/components/layouts/RouteView"
|
import RouteView from "@/components/layouts/RouteView"
|
||||||
import { mixinDevice } from '@/utils/mixin.js'
|
import { mixinDevice } from '@/utils/mixin.js'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "UserLayout",
|
name: "UserLayout",
|
||||||
components: { RouteView },
|
components: { RouteView },
|
||||||
mixins: [mixinDevice],
|
mixins: [mixinDevice],
|
||||||
data() {
|
data () {
|
||||||
return {}
|
return {}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted () {
|
||||||
document.body.classList.add('userLayout')
|
document.body.classList.add('userLayout')
|
||||||
},
|
},
|
||||||
beforeDestroy() {
|
beforeDestroy () {
|
||||||
document.body.classList.remove('userLayout')
|
document.body.classList.remove('userLayout')
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
#userLayout.user-layout-wrapper {
|
#userLayout.user-layout-wrapper {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
|
||||||
|
&.mobile {
|
||||||
|
.container {
|
||||||
|
.main {
|
||||||
|
max-width: 368px;
|
||||||
|
width: 98%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
&.mobile {
|
|
||||||
.container {
|
.container {
|
||||||
.main {
|
|
||||||
max-width: 368px;
|
|
||||||
width: 98%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.container {
|
|
||||||
width: 100%;
|
|
||||||
min-height: 100vh;
|
|
||||||
/* 使用vh(视窗高度)确保元素至少占据整个屏幕高度 */
|
|
||||||
background: #f0f2f5 url(~@/assets/background.svg) no-repeat center;
|
|
||||||
background-size: cover;
|
|
||||||
/* 让背景图片拉伸以覆盖整个元素 */
|
|
||||||
padding: 110px 0 144px;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
a {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.top {
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
.header {
|
|
||||||
height: 44px;
|
|
||||||
line-height: 44px;
|
|
||||||
|
|
||||||
.badge {
|
|
||||||
position: absolute;
|
|
||||||
display: inline-block;
|
|
||||||
line-height: 1;
|
|
||||||
vertical-align: middle;
|
|
||||||
margin-left: -12px;
|
|
||||||
margin-top: -10px;
|
|
||||||
opacity: 0.8;
|
|
||||||
}
|
|
||||||
|
|
||||||
.logo {
|
|
||||||
height: 44px;
|
|
||||||
vertical-align: top;
|
|
||||||
margin-right: 16px;
|
|
||||||
border-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
font-size: 46px;
|
|
||||||
color: rgba(0, 0, 0, .85);
|
|
||||||
font-family: "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
|
||||||
font-weight: 600;
|
|
||||||
position: relative;
|
|
||||||
top: 2px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.desc {
|
|
||||||
font-size: 24px;
|
|
||||||
color: rgba(0, 0, 0, 0.9);
|
|
||||||
margin-top: 12px;
|
|
||||||
margin-bottom: 40px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.main {
|
|
||||||
min-width: 260px;
|
|
||||||
width: 368px;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer {
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
width: 100%;
|
||||||
bottom: 10px;
|
min-height: 100%;
|
||||||
padding: 0 16px;
|
background: #f0f2f5 url(~@/assets/background.svg) no-repeat 50%;
|
||||||
margin: 48px 0 24px;
|
background-size: 100%;
|
||||||
text-align: center;
|
padding: 110px 0 144px;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
.links {
|
a {
|
||||||
margin-bottom: 8px;
|
text-decoration: none;
|
||||||
font-size: 14px;
|
}
|
||||||
|
|
||||||
a {
|
.top {
|
||||||
color: rgba(0, 0, 0, 0.45);
|
text-align: center;
|
||||||
transition: all 0.3s;
|
|
||||||
|
|
||||||
&:not(:last-child) {
|
.header {
|
||||||
margin-right: 40px;
|
height: 44px;
|
||||||
|
line-height: 44px;
|
||||||
|
|
||||||
|
.badge {
|
||||||
|
position: absolute;
|
||||||
|
display: inline-block;
|
||||||
|
line-height: 1;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-left: -12px;
|
||||||
|
margin-top: -10px;
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
height: 44px;
|
||||||
|
vertical-align: top;
|
||||||
|
margin-right: 16px;
|
||||||
|
border-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
font-size: 33px;
|
||||||
|
color: rgba(0, 0, 0, .85);
|
||||||
|
font-family: "Chinese Quote", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||||
|
font-weight: 600;
|
||||||
|
position: relative;
|
||||||
|
top: 2px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.desc {
|
||||||
|
font-size: 14px;
|
||||||
|
color: rgba(0, 0, 0, 0.45);
|
||||||
|
margin-top: 12px;
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.copyright {
|
.main {
|
||||||
color: rgba(0, 0, 0);
|
min-width: 260px;
|
||||||
font-size: 14px;
|
width: 368px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
bottom: 0;
|
||||||
|
padding: 0 16px;
|
||||||
|
margin: 48px 0 24px;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.links {
|
||||||
|
margin-bottom: 8px;
|
||||||
|
font-size: 14px;
|
||||||
|
a {
|
||||||
|
color: rgba(0, 0, 0, 0.45);
|
||||||
|
transition: all 0.3s;
|
||||||
|
&:not(:last-child) {
|
||||||
|
margin-right: 40px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.copyright {
|
||||||
|
color: rgba(0, 0, 0, 0.45);
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}</style>
|
</style>
|
|
@ -1,9 +1,17 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
|
<div class="links">
|
||||||
|
<a href="http://www.jeecg.com" target="_blank">JEECG 首页</a>
|
||||||
|
<a href="https://github.com/zhangdaiscott/jeecg-boot" target="_blank">
|
||||||
|
<a-icon type="github"/>
|
||||||
|
</a>
|
||||||
|
<a href="https://ant.design/">Ant Design</a>
|
||||||
|
<a href="https://vuecomponent.github.io/ant-design-vue/docs/vue/introduce-cn/">Vue Antd</a>
|
||||||
|
</div>
|
||||||
<div class="copyright">
|
<div class="copyright">
|
||||||
Copyright
|
Copyright
|
||||||
<a-icon type="copyright"/>
|
<a-icon type="copyright"/>
|
||||||
2023 <span>计科院 出品</span>
|
2019 <span>JEECG开源社区 出品</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -17,8 +17,8 @@
|
||||||
:type="collapsed ? 'menu-unfold' : 'menu-fold'"
|
:type="collapsed ? 'menu-unfold' : 'menu-fold'"
|
||||||
@click="toggle"/>
|
@click="toggle"/>
|
||||||
|
|
||||||
<span v-if="device === 'desktop'">欢迎使用 教务处系统 </span>
|
<span v-if="device === 'desktop'">欢迎进入 Jeecg-Boot 企业级低代码平台</span>
|
||||||
<span v-else>查询系统</span>
|
<span v-else>Jeecg-Boot</span>
|
||||||
|
|
||||||
<user-menu :theme="theme"/>
|
<user-menu :theme="theme"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
props: {
|
props: {
|
||||||
title: {
|
title: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '系统(测试)',
|
default: 'Jeecg-Boot Pro',
|
||||||
required: false
|
required: false
|
||||||
},
|
},
|
||||||
showTitle: {
|
showTitle: {
|
||||||
|
|
|
@ -16,7 +16,8 @@ let apiBaseUrl = window._CONFIG['domianURL'] || "/jeecg-boot";
|
||||||
// 创建 axios 实例
|
// 创建 axios 实例
|
||||||
const service = axios.create({
|
const service = axios.create({
|
||||||
//baseURL: '/jeecg-boot',
|
//baseURL: '/jeecg-boot',
|
||||||
baseURL: apiBaseUrl, // api base_url
|
// baseURL: apiBaseUrl, // api base_url
|
||||||
|
baseURL: 'http://localhost:8080/jeecg-boot',
|
||||||
timeout: 15000 // 请求超时时间
|
timeout: 15000 // 请求超时时间
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="home">
|
<div class="home">
|
||||||
<div class="banner">
|
<div class="banner">
|
||||||
<img alt="Vue logo" style="width: 64px; height: 64px" src="../assets/logo.svg">
|
<img alt="Vue logo" style="width: 64px; height: 64px" src="../assets/logo.png">
|
||||||
<h3 style="margin-top: 1rem">Welcome to Your Vue.js App</h3>
|
<h3 style="margin-top: 1rem">Welcome to Your Vue.js App</h3>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<a-card :bordered="false">
|
<div>
|
||||||
<div class="title">该系统为测试系统</div>
|
<index-chart v-if="indexStyle==1"></index-chart>
|
||||||
</a-card>
|
|
||||||
<!-- <index-chart v-if="indexStyle==1"></index-chart>
|
|
||||||
<index-bdc v-if="indexStyle==2"></index-bdc>
|
<index-bdc v-if="indexStyle==2"></index-bdc>
|
||||||
<index-task v-if="indexStyle==3"></index-task>
|
<index-task v-if="indexStyle==3"></index-task>
|
||||||
<div style="width: 100%;text-align: right;margin-top: 20px">
|
<div style="width: 100%;text-align: right;margin-top: 20px">
|
||||||
|
@ -12,40 +10,32 @@
|
||||||
<a-radio :value="2">统计图表2</a-radio>
|
<a-radio :value="2">统计图表2</a-radio>
|
||||||
<a-radio :value="3">任务表格</a-radio>
|
<a-radio :value="3">任务表格</a-radio>
|
||||||
</a-radio-group>
|
</a-radio-group>
|
||||||
</div> -->
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import IndexChart from './IndexChart'
|
import IndexChart from './IndexChart'
|
||||||
import IndexTask from "./IndexTask"
|
import IndexTask from "./IndexTask"
|
||||||
import IndexBdc from './IndexBdc'
|
import IndexBdc from './IndexBdc'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: "Analysis",
|
||||||
|
components: {
|
||||||
|
IndexChart,
|
||||||
|
IndexTask,
|
||||||
|
IndexBdc
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
indexStyle:1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
|
||||||
export default {
|
|
||||||
name: "Analysis",
|
|
||||||
components: {
|
|
||||||
IndexChart,
|
|
||||||
IndexTask,
|
|
||||||
IndexBdc
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
indexStyle: 1
|
|
||||||
}
|
}
|
||||||
},
|
|
||||||
created() {
|
|
||||||
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
</script>
|
||||||
</script>
|
|
||||||
<style scoped>
|
|
||||||
.title {
|
|
||||||
width: 100%;
|
|
||||||
font-size: 20px;
|
|
||||||
font-weight: bold;
|
|
||||||
text-align: center;
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,450 +1,129 @@
|
||||||
<template>
|
<template>
|
||||||
<div v-if=divIsShow>
|
<a-card :bordered="false">
|
||||||
<div class="pc">
|
<!-- 查询区域 -->
|
||||||
|
<div>
|
||||||
<div class="pc-left">
|
<a-button type="primary" @click="visible = true">打开筛选项</a-button>
|
||||||
<a-card :bordered="false">
|
|
||||||
<!-- 查询区域 -->
|
|
||||||
<div>
|
|
||||||
<a-button type="primary" @click="visible = true">打开筛选项</a-button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a-drawer placement="right" :visible="visible" width="90%" :closable="false">
|
|
||||||
<template slot="title">
|
|
||||||
<span>CET查询筛选项</span>
|
|
||||||
</template>
|
|
||||||
<a-descriptions bordered>
|
|
||||||
<a-descriptions-item label="学院" :span="3">
|
|
||||||
|
|
||||||
<div class="collegeDesc">
|
|
||||||
<a-checkbox :indeterminate="college.liberalData.indeterminate" :checked="college.liberalData.checkAll"
|
|
||||||
@change="liberalCheckAllOptions($event)">
|
|
||||||
{{ college.liberalData.label }}
|
|
||||||
</a-checkbox>
|
|
||||||
<!-- <hr class="objectHr"> -->
|
|
||||||
<a-checkbox-group v-model="college.liberalData.liberalCheckList"
|
|
||||||
:options="college.liberalData.liberalOptions" />
|
|
||||||
|
|
||||||
<hr class="objectHr">
|
|
||||||
<a-checkbox :indeterminate="college.scienceData.indeterminate" :checked="college.scienceData.checkAll"
|
|
||||||
@change="scienceCheckAllOptions($event)">
|
|
||||||
{{ college.scienceData.label }}
|
|
||||||
</a-checkbox>
|
|
||||||
<!-- <hr class="objectHr"> -->
|
|
||||||
<a-checkbox-group v-model="college.scienceData.scienceCheckList"
|
|
||||||
:options="college.scienceData.scienceOpitons" />
|
|
||||||
|
|
||||||
<hr class="objectHr">
|
|
||||||
<a-checkbox :indeterminate="college.artsData.indeterminate" :checked="college.artsData.checkAll"
|
|
||||||
@change="artsCheckAllOptions($event)">
|
|
||||||
{{ college.artsData.label }}
|
|
||||||
</a-checkbox>
|
|
||||||
<!-- <hr class="objectHr"> -->
|
|
||||||
<br>
|
|
||||||
<a-checkbox-group v-model="college.artsData.artsCheckList" :options="college.artsData.artsOptions" />
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</a-descriptions-item>
|
|
||||||
<a-descriptions-item label="批次" :span="3">
|
|
||||||
<a-checkbox-group v-model="batch.checkedList" :options="batch.plainOptions" />
|
|
||||||
</a-descriptions-item>
|
|
||||||
<a-descriptions-item label="级别" :span="3">
|
|
||||||
<a-radio-group v-model="selectedLevel" size="large">
|
|
||||||
<a-radio-button v-for="option in levelOptions" :key="option.value" :value="option.value">
|
|
||||||
{{ option.label }}
|
|
||||||
</a-radio-button>
|
|
||||||
</a-radio-group>
|
|
||||||
</a-descriptions-item>
|
|
||||||
<a-descriptions-item label="培养层次" :span="3">
|
|
||||||
<a-radio-group v-model="selectedCultivationLevel" size="large">
|
|
||||||
<a-radio-button v-for="option in cultivationLevelOptions" :key="option.value" :value="option.value"
|
|
||||||
:disabled="(option.value === '研究生' && (selectedExamGrade === '大一' || selectedExamGrade === '大二' || selectedExamGrade === '大三' || selectedExamGrade === '大四')) || ((option.value === '本科') && selectedExamGrade === '研究生')">
|
|
||||||
{{ option.label }}
|
|
||||||
</a-radio-button>
|
|
||||||
</a-radio-group>
|
|
||||||
</a-descriptions-item>
|
|
||||||
<a-descriptions-item label="考试时年级" :span="3">
|
|
||||||
<a-radio-group v-model="selectedExamGrade" size="large">
|
|
||||||
<a-radio-button v-for="option in examGradeOptions" :key="option.value" :value="option.value"
|
|
||||||
:disabled="(option.value === '研究生' && selectedCultivationLevel === '本科') || ((option.value === '大一' || option.value === '大二' || option.value === '大三' || option.value === '大四') && selectedCultivationLevel === '研究生')">
|
|
||||||
{{ option.label }}
|
|
||||||
</a-radio-button>
|
|
||||||
</a-radio-group>
|
|
||||||
|
|
||||||
</a-descriptions-item>
|
|
||||||
|
|
||||||
</a-descriptions>
|
|
||||||
<div class="buttons">
|
|
||||||
<a-button type="primary" style="margin-right: 5px;" @click="visible = false" icon="close">取消</a-button>
|
|
||||||
<a-button type="primary" @click="seachClick" icon="search">查询</a-button>
|
|
||||||
</div>
|
|
||||||
</a-drawer>
|
|
||||||
<a-descriptions bordered style="margin-top:10px;">
|
|
||||||
<a-descriptions-item label="总人数">
|
|
||||||
{{ totalEntries }}
|
|
||||||
</a-descriptions-item>
|
|
||||||
<a-descriptions-item label="总通过数">
|
|
||||||
{{ totalPassCount }}
|
|
||||||
</a-descriptions-item>
|
|
||||||
<a-descriptions-item label="总通过率">
|
|
||||||
{{ totalPassRate }}
|
|
||||||
</a-descriptions-item>
|
|
||||||
</a-descriptions>
|
|
||||||
<div v-if="isSeach">
|
|
||||||
正在加载中 <a-spin />
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div v-if="colleges.length > 0 && loading === false">
|
|
||||||
<div class="title">各学院通过率变化</div>
|
|
||||||
<a-tabs v-model:activeKey="activeKey" type="card" @change="darwLine">
|
|
||||||
<a-tab-pane v-for="(college, index) in colleges" :key="index" :tab="college">
|
|
||||||
</a-tab-pane>
|
|
||||||
</a-tabs>
|
|
||||||
</div>
|
|
||||||
<div class="LineChart">
|
|
||||||
<div id="LineChart"></div>
|
|
||||||
</div>
|
|
||||||
<a-table :dataSource="dataSource" :columns="columns" bordered style="margin-top:10px;" :loading="loading"
|
|
||||||
v-if="colleges.length > 0">
|
|
||||||
<template slot="passRate" slot-scope="text">
|
|
||||||
{{ text }}%
|
|
||||||
</template>
|
|
||||||
</a-table>
|
|
||||||
|
|
||||||
|
|
||||||
</a-card>
|
|
||||||
</div>
|
|
||||||
<div class="pc-right">
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<br>
|
|
||||||
<a-tabs type="card" v-model:activeKey="objectKey" @change="drawPic">
|
|
||||||
<a-tab-pane v-for="(object, index) in objectList" :key="index" :tab="object.label"></a-tab-pane>
|
|
||||||
</a-tabs>
|
|
||||||
<div class="pie">
|
|
||||||
<div class="CircleChart">
|
|
||||||
<div id="registered"></div>
|
|
||||||
<div id="passed"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div id="passrate"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<a-drawer placement="right" :visible="visible" width="90%" :closable="false">
|
||||||
|
<template slot="title">
|
||||||
|
<span>CET查询筛选项</span>
|
||||||
|
</template>
|
||||||
|
<a-descriptions bordered>
|
||||||
|
<a-descriptions-item label="学院" :span="3">
|
||||||
|
|
||||||
</div>
|
<div class="collegeDesc">
|
||||||
<div v-else>
|
<a-checkbox :indeterminate="college.liberalData.indeterminate" :checked="college.liberalData.checkAll"
|
||||||
<a-card :bordered="false">
|
@change="liberalCheckAllOptions($event)">
|
||||||
<!-- 查询区域 -->
|
{{ college.liberalData.label }}
|
||||||
<div>
|
</a-checkbox>
|
||||||
<a-button type="primary" @click="visible = true">打开筛选项</a-button>
|
<!-- <hr class="objectHr"> -->
|
||||||
</div>
|
<a-checkbox-group v-model="college.liberalData.liberalCheckList"
|
||||||
|
:options="college.liberalData.liberalOptions" />
|
||||||
|
|
||||||
<a-drawer placement="right" :visible="visible" width="90%" :closable="false">
|
<hr class="objectHr">
|
||||||
<template slot="title">
|
<a-checkbox :indeterminate="college.scienceData.indeterminate" :checked="college.scienceData.checkAll"
|
||||||
<span>CET查询筛选项</span>
|
@change="scienceCheckAllOptions($event)">
|
||||||
</template>
|
{{ college.scienceData.label }}
|
||||||
<a-descriptions bordered>
|
</a-checkbox>
|
||||||
<a-descriptions-item label="学院" :span="3">
|
<!-- <hr class="objectHr"> -->
|
||||||
|
<a-checkbox-group v-model="college.scienceData.scienceCheckList"
|
||||||
|
:options="college.scienceData.scienceOpitons" />
|
||||||
|
|
||||||
<div class="collegeDesc">
|
<hr class="objectHr">
|
||||||
<a-checkbox :indeterminate="college.liberalData.indeterminate" :checked="college.liberalData.checkAll"
|
<a-checkbox :indeterminate="college.artsData.indeterminate" :checked="college.artsData.checkAll"
|
||||||
@change="liberalCheckAllOptions($event)">
|
@change="artsCheckAllOptions($event)">
|
||||||
{{ college.liberalData.label }}
|
{{ college.artsData.label }}
|
||||||
</a-checkbox>
|
</a-checkbox>
|
||||||
<!-- <hr class="objectHr"> -->
|
<!-- <hr class="objectHr"> -->
|
||||||
<a-checkbox-group v-model="college.liberalData.liberalCheckList"
|
<br>
|
||||||
:options="college.liberalData.liberalOptions" />
|
<a-checkbox-group v-model="college.artsData.artsCheckList" :options="college.artsData.artsOptions" />
|
||||||
|
|
||||||
<hr class="objectHr">
|
|
||||||
<a-checkbox :indeterminate="college.scienceData.indeterminate" :checked="college.scienceData.checkAll"
|
|
||||||
@change="scienceCheckAllOptions($event)">
|
|
||||||
{{ college.scienceData.label }}
|
|
||||||
</a-checkbox>
|
|
||||||
<!-- <hr class="objectHr"> -->
|
|
||||||
<a-checkbox-group v-model="college.scienceData.scienceCheckList"
|
|
||||||
:options="college.scienceData.scienceOpitons" />
|
|
||||||
|
|
||||||
<hr class="objectHr">
|
|
||||||
<a-checkbox :indeterminate="college.artsData.indeterminate" :checked="college.artsData.checkAll"
|
|
||||||
@change="artsCheckAllOptions($event)">
|
|
||||||
{{ college.artsData.label }}
|
|
||||||
</a-checkbox>
|
|
||||||
<!-- <hr class="objectHr"> -->
|
|
||||||
<br>
|
|
||||||
<a-checkbox-group v-model="college.artsData.artsCheckList" :options="college.artsData.artsOptions" />
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</a-descriptions-item>
|
|
||||||
<a-descriptions-item label="批次" :span="3">
|
|
||||||
<a-checkbox-group v-model="batch.checkedList" :options="batch.plainOptions" />
|
|
||||||
</a-descriptions-item>
|
|
||||||
<a-descriptions-item label="级别" :span="3">
|
|
||||||
<a-radio-group v-model="selectedLevel" size="large">
|
|
||||||
<a-radio-button v-for="option in levelOptions" :key="option.value" :value="option.value">
|
|
||||||
{{ option.label }}
|
|
||||||
</a-radio-button>
|
|
||||||
</a-radio-group>
|
|
||||||
</a-descriptions-item>
|
|
||||||
<a-descriptions-item label="培养层次" :span="3">
|
|
||||||
<a-radio-group v-model="selectedCultivationLevel" size="large">
|
|
||||||
<a-radio-button v-for="option in cultivationLevelOptions" :key="option.value" :value="option.value"
|
|
||||||
:disabled="(option.value === '研究生' && (selectedExamGrade === '大一' || selectedExamGrade === '大二' || selectedExamGrade === '大三' || selectedExamGrade === '大四')) || ((option.value === '本科') && selectedExamGrade === '研究生')">
|
|
||||||
{{ option.label }}
|
|
||||||
</a-radio-button>
|
|
||||||
</a-radio-group>
|
|
||||||
</a-descriptions-item>
|
|
||||||
<a-descriptions-item label="考试时年级" :span="3">
|
|
||||||
<a-radio-group v-model="selectedExamGrade" size="large">
|
|
||||||
<a-radio-button v-for="option in examGradeOptions" :key="option.value" :value="option.value"
|
|
||||||
:disabled="(option.value === '研究生' && selectedCultivationLevel === '本科') || ((option.value === '大一' || option.value === '大二' || option.value === '大三' || option.value === '大四') && selectedCultivationLevel === '研究生')">
|
|
||||||
{{ option.label }}
|
|
||||||
</a-radio-button>
|
|
||||||
</a-radio-group>
|
|
||||||
|
|
||||||
</a-descriptions-item>
|
|
||||||
|
|
||||||
</a-descriptions>
|
|
||||||
<div class="buttons">
|
|
||||||
<a-button type="primary" style="margin-right: 5px;" @click="visible = false" icon="close">取消</a-button>
|
|
||||||
<a-button type="primary" @click="seachClick" icon="search">查询</a-button>
|
|
||||||
</div>
|
|
||||||
</a-drawer>
|
|
||||||
<a-descriptions bordered style="margin-top:10px;">
|
|
||||||
<a-descriptions-item label="总人数">
|
|
||||||
{{ totalEntries }}
|
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
<a-descriptions-item label="总通过数">
|
<a-descriptions-item label="批次" :span="3">
|
||||||
{{ totalPassCount }}
|
<a-checkbox-group v-model="batch.checkedList" :options="batch.plainOptions" />
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
<a-descriptions-item label="总通过率">
|
<a-descriptions-item label="级别" :span="3">
|
||||||
{{ totalPassRate }}
|
<a-radio-group v-model="selectedLevel" size="large">
|
||||||
|
<a-radio-button v-for="option in levelOptions" :key="option.value" :value="option.value">
|
||||||
|
{{ option.label }}
|
||||||
|
</a-radio-button>
|
||||||
|
</a-radio-group>
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="培养层次" :span="3">
|
||||||
|
<a-radio-group v-model="selectedCultivationLevel" size="large">
|
||||||
|
<a-radio-button v-for="option in cultivationLevelOptions" :key="option.value" :value="option.value"
|
||||||
|
:disabled="(option.value === '研究生' && (selectedExamGrade === '大一' || selectedExamGrade === '大二' || selectedExamGrade === '大三' || selectedExamGrade === '大四')) || ((option.value === '本科') && selectedExamGrade === '研究生')">
|
||||||
|
{{ option.label }}
|
||||||
|
</a-radio-button>
|
||||||
|
</a-radio-group>
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="考试时年级" :span="3">
|
||||||
|
<a-radio-group v-model="selectedExamGrade" size="large">
|
||||||
|
<a-radio-button v-for="option in examGradeOptions" :key="option.value" :value="option.value"
|
||||||
|
:disabled="(option.value === '研究生' && selectedCultivationLevel === '本科') || ((option.value === '大一' || option.value === '大二' || option.value === '大三' || option.value === '大四') && selectedCultivationLevel === '研究生')">
|
||||||
|
{{ option.label }}
|
||||||
|
</a-radio-button>
|
||||||
|
</a-radio-group>
|
||||||
|
|
||||||
|
</a-descriptions-item>
|
||||||
|
|
||||||
</a-descriptions>
|
</a-descriptions>
|
||||||
<div v-if="isSeach">
|
<div class="buttons">
|
||||||
正在加载中 <a-spin />
|
<a-button type="primary" style="margin-right: 5px;" @click="visible = false" icon="close">取消</a-button>
|
||||||
|
<a-button type="primary" @click="seachClick" icon="search">查询</a-button>
|
||||||
</div>
|
</div>
|
||||||
|
</a-drawer>
|
||||||
|
<a-descriptions bordered style="margin-top:10px;">
|
||||||
|
<a-descriptions-item label="总人数">
|
||||||
|
{{ totalEntries }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="总通过数">
|
||||||
|
{{ totalPassCount }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
<a-descriptions-item label="总通过率">
|
||||||
|
{{ totalPassRate }}
|
||||||
|
</a-descriptions-item>
|
||||||
|
</a-descriptions>
|
||||||
|
<div v-if="isSeach">
|
||||||
|
正在加载中 <a-spin />
|
||||||
|
</div>
|
||||||
|
|
||||||
<div v-if="colleges.length > 0 && loading === false">
|
<div v-if="colleges.length > 0 && loading === false">
|
||||||
<div class="title">各学院通过率变化</div>
|
<div class="title">各学院通过率变化</div>
|
||||||
<a-tabs v-model:activeKey="activeKey" type="card" @change="darwLine">
|
<a-tabs v-model:activeKey="activeKey" type="card" @change="darwLine">
|
||||||
<a-tab-pane v-for="(college, index) in colleges" :key="index" :tab="college">
|
<a-tab-pane v-for="(college, index) in colleges" :key="index" :tab="college">
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
</a-tabs>
|
</a-tabs>
|
||||||
</div>
|
</div>
|
||||||
<div class="LineChart">
|
<div class="LineChart">
|
||||||
<div id="LineChart"></div>
|
<div id="LineChart"></div>
|
||||||
</div>
|
</div>
|
||||||
<a-table :dataSource="dataSource" :columns="columns" bordered style="margin-top:10px;" :loading="loading"
|
<a-table :dataSource="dataSource" :columns="columns" bordered style="margin-top:10px;" :loading="loading"
|
||||||
v-if="colleges.length > 0">
|
v-if="colleges.length > 0">
|
||||||
<template slot="passRate" slot-scope="text">
|
<template slot="passRate" slot-scope="text">
|
||||||
{{ text }}%
|
{{ text }}%
|
||||||
</template>
|
</template>
|
||||||
</a-table>
|
</a-table>
|
||||||
|
|
||||||
|
|
||||||
</a-card>
|
</a-card>
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getAction, postAction } from '@/api/manage'
|
import { getAction, postAction } from '@/api/manage'
|
||||||
import '@/assets/less/TableExpand.less'
|
import '@/assets/less/TableExpand.less'
|
||||||
import * as echarts from 'echarts';
|
import * as echarts from 'echarts';
|
||||||
import { mixin, mixinDevice } from '@/utils/mixin.js'
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|
||||||
mixins: [mixin, mixinDevice],
|
|
||||||
name: 'CetEnglishList',
|
name: 'CetEnglishList',
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
objectList: [
|
|
||||||
{
|
|
||||||
label: '文科',
|
|
||||||
childrenObject: [
|
|
||||||
{
|
|
||||||
label: '东语学院',
|
|
||||||
registrations: 2210,
|
|
||||||
passed: 357,
|
|
||||||
passrate: 16.15
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '法学院',
|
|
||||||
registrations: 1595,
|
|
||||||
passed: 314,
|
|
||||||
passrate: 19.69
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '管理学院',
|
|
||||||
registrations: 5394,
|
|
||||||
passed: 1025,
|
|
||||||
passrate: 19.00
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '教师教育学院',
|
|
||||||
registrations: 1406,
|
|
||||||
passed: 183,
|
|
||||||
passrate: 13.02,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
label: '教育科学学院',
|
|
||||||
registrations: 5911,
|
|
||||||
passed: 1104,
|
|
||||||
passrate: 18.68,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '经济学院',
|
|
||||||
registrations: 5809,
|
|
||||||
passed: 1049,
|
|
||||||
passrate: 18.06,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '历史文化学院',
|
|
||||||
registrations: 4352,
|
|
||||||
passed: 772,
|
|
||||||
passrate: 17.74,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '马克思主义学院',
|
|
||||||
registrations: 2466,
|
|
||||||
passed: 492,
|
|
||||||
passrate: 19.95,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '西语学院',
|
|
||||||
registrations: 5888,
|
|
||||||
passed: 2717,
|
|
||||||
passrate: 46.14,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '公共英语教研部',
|
|
||||||
registrations: 56,
|
|
||||||
passed: 32,
|
|
||||||
passrate: 57.14,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '国际教育学院',
|
|
||||||
registrations: 175,
|
|
||||||
passed: 28,
|
|
||||||
passrate: 16.00,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '斯拉夫语学院',
|
|
||||||
registrations: 1083,
|
|
||||||
passed: 204,
|
|
||||||
passrate: 18.84,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '文学院',
|
|
||||||
registrations: 7183,
|
|
||||||
passed: 1599,
|
|
||||||
passrate: 22.26,
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '理科',
|
|
||||||
childrenObject: [
|
|
||||||
{
|
|
||||||
label: '物理与电子工程学院',
|
|
||||||
registrations: 5586,
|
|
||||||
passed: 929,
|
|
||||||
passrate: 16.63
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '生命科学与技术学院',
|
|
||||||
registrations: 5022,
|
|
||||||
passed: 829,
|
|
||||||
passrate: 16.51
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '数学科学学院',
|
|
||||||
registrations: 7230,
|
|
||||||
passed: 1373,
|
|
||||||
passrate: 18.99
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '计算机科学与信息工程学院',
|
|
||||||
registrations: 5708,
|
|
||||||
passed: 861,
|
|
||||||
passrate: 15.08,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
label: '化学化工学院',
|
|
||||||
registrations: 5346,
|
|
||||||
passed: 998,
|
|
||||||
passrate: 18.67,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '地理科学学院',
|
|
||||||
registrations: 6999,
|
|
||||||
passed: 1190,
|
|
||||||
passrate: 17.00,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '光电带隙材料教育部重点实验室',
|
|
||||||
registrations: 87,
|
|
||||||
passed: 5,
|
|
||||||
passrate: 5.75,
|
|
||||||
},
|
|
||||||
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '艺体',
|
|
||||||
childrenObject: [
|
|
||||||
{
|
|
||||||
label: '传媒学院',
|
|
||||||
registrations: 5097,
|
|
||||||
passed: 615,
|
|
||||||
passrate: 12.07
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '国际美术学院',
|
|
||||||
registrations: 308,
|
|
||||||
passed: 11,
|
|
||||||
passrate: 3.57
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '音乐学院',
|
|
||||||
registrations: 2413,
|
|
||||||
passed: 138,
|
|
||||||
passrate: 5.72
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: '美术学院',
|
|
||||||
registrations: 5122,
|
|
||||||
passed: 427,
|
|
||||||
passrate: 8.34,
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
label: '体育科学学院',
|
|
||||||
registrations: 1360,
|
|
||||||
passed: 75,
|
|
||||||
passrate: 5.51,
|
|
||||||
},
|
|
||||||
]
|
|
||||||
},
|
|
||||||
],
|
|
||||||
objectKey: 0,
|
|
||||||
divIsShow: true,
|
|
||||||
indeterminate: false,
|
indeterminate: false,
|
||||||
isSeach: false,
|
isSeach: false,
|
||||||
activeKey: 0,
|
activeKey: 0,
|
||||||
|
@ -600,26 +279,13 @@ export default {
|
||||||
getPassRate: function () {
|
getPassRate: function () {
|
||||||
return `${window._CONFIG['domianURL']}/${this.url.getPassRate}`
|
return `${window._CONFIG['domianURL']}/${this.url.getPassRate}`
|
||||||
|
|
||||||
},
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
// const cancelButton = document.querySelector('.cancelButton');
|
|
||||||
// const width = cancelButton.getBoundingClientRect().width;
|
|
||||||
// cancelButton.style.marginRight = `${width}px`;
|
|
||||||
if (this.isMobile()) {
|
|
||||||
this.divIsShow = false
|
|
||||||
console.log(this.divIsShow, 321)
|
|
||||||
} else {
|
|
||||||
this.divIsShow = true
|
|
||||||
console.log(this.divIsShow, 123)
|
|
||||||
}
|
}
|
||||||
// this.drawPic()
|
|
||||||
|
|
||||||
|
|
||||||
},
|
|
||||||
create() {
|
|
||||||
console.log("abcreate")
|
|
||||||
},
|
},
|
||||||
|
// mounted() {
|
||||||
|
// const cancelButton = document.querySelector('.cancelButton');
|
||||||
|
// const width = cancelButton.getBoundingClientRect().width;
|
||||||
|
// cancelButton.style.marginRight = `${width}px`;
|
||||||
|
// },
|
||||||
methods: {
|
methods: {
|
||||||
//切换tab,获取当前的学院,绘制折线图
|
//切换tab,获取当前的学院,绘制折线图
|
||||||
darwLine() {
|
darwLine() {
|
||||||
|
@ -659,16 +325,10 @@ export default {
|
||||||
xAxis: {
|
xAxis: {
|
||||||
type: 'category',
|
type: 'category',
|
||||||
boundaryGap: false,
|
boundaryGap: false,
|
||||||
data: dates,
|
data: dates
|
||||||
axisLabel: {
|
|
||||||
interval: 0, // 设置横轴标签全部显示
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
yAxis: {
|
yAxis: {
|
||||||
type: 'value',
|
type: 'value'
|
||||||
axisLabel: {
|
|
||||||
margin: 30 // 调整 Y 轴标签和图表之间的间距
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
series: drawData
|
series: drawData
|
||||||
};
|
};
|
||||||
|
@ -714,7 +374,6 @@ export default {
|
||||||
});
|
});
|
||||||
//收集折线图的数据
|
//收集折线图的数据
|
||||||
this.getDrawData(data);
|
this.getDrawData(data);
|
||||||
this.drawPic()
|
|
||||||
this.isSeach = false
|
this.isSeach = false
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -731,39 +390,17 @@ export default {
|
||||||
//判断日期是否存在,不存在则添加
|
//判断日期是否存在,不存在则添加
|
||||||
let dateIndex = this.dates.indexOf(item.batch);
|
let dateIndex = this.dates.indexOf(item.batch);
|
||||||
if (!this.LineChartData[collegeIndex]) {
|
if (!this.LineChartData[collegeIndex]) {
|
||||||
this.LineChartData[collegeIndex] = [
|
this.LineChartData[collegeIndex] = {
|
||||||
{
|
name: item.college,
|
||||||
name: item.college,
|
type: 'line',
|
||||||
type: 'line',
|
data: [],
|
||||||
data: [],
|
label: {
|
||||||
tooltip: {
|
show: true,
|
||||||
show: true,
|
position: 'top'
|
||||||
},
|
}
|
||||||
label: {
|
};
|
||||||
show: true,
|
|
||||||
position: 'top'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: item.college,
|
|
||||||
type: 'bar',
|
|
||||||
data: [],
|
|
||||||
//宽度
|
|
||||||
barWidth: 50,
|
|
||||||
tooltip: {
|
|
||||||
show: false,
|
|
||||||
},
|
|
||||||
//透明度
|
|
||||||
itemStyle: {
|
|
||||||
color: 'rgba(84,122,198,0.9)',
|
|
||||||
},
|
|
||||||
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
this.LineChartData[collegeIndex][0].data[dateIndex] = parseFloat(item.passRate.toFixed(2));
|
this.LineChartData[collegeIndex].data[dateIndex] = parseFloat(item.passRate.toFixed(2));
|
||||||
this.LineChartData[collegeIndex][1].data[dateIndex] = parseFloat(item.passRate.toFixed(2));
|
|
||||||
|
|
||||||
});
|
});
|
||||||
this.activeKey = 0
|
this.activeKey = 0
|
||||||
this.darwLine();
|
this.darwLine();
|
||||||
|
@ -822,184 +459,11 @@ export default {
|
||||||
this.college.artsData.indeterminate = false
|
this.college.artsData.indeterminate = false
|
||||||
this.college.artsData.checkAll = e.target.checked
|
this.college.artsData.checkAll = e.target.checked
|
||||||
},
|
},
|
||||||
drawPic() {
|
|
||||||
// this.drawCircle(this.objectKey)
|
|
||||||
this.drawPassedCircle(this.objectKey)
|
|
||||||
this.drawregisteredCircle(this.objectKey)
|
|
||||||
this.drawPassRateBar(this.objectKey)
|
|
||||||
},
|
|
||||||
|
|
||||||
drawPassedCircle(objectKey) {
|
|
||||||
console.log("drawCircle")
|
|
||||||
let fatherData = this.objectList[objectKey]
|
|
||||||
let data = fatherData.childrenObject.map(item => {
|
|
||||||
return {
|
|
||||||
name: item.label,
|
|
||||||
value: item.passed
|
|
||||||
}
|
|
||||||
})
|
|
||||||
let circleChart = document.getElementById("passed");
|
|
||||||
if (circleChart) {
|
|
||||||
circleChart = echarts.getInstanceByDom(circleChart)
|
|
||||||
if (circleChart) {
|
|
||||||
circleChart.dispose();
|
|
||||||
}
|
|
||||||
circleChart = echarts.init(document.getElementById("passed"))
|
|
||||||
console.log("被绘制了")
|
|
||||||
let circleOption = {
|
|
||||||
title: {
|
|
||||||
text: '通过人数',
|
|
||||||
subtext: fatherData.label,
|
|
||||||
left: 'center'
|
|
||||||
},
|
|
||||||
tooltip: {
|
|
||||||
trigger: 'item'
|
|
||||||
},
|
|
||||||
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
name: '通过人数',
|
|
||||||
type: 'pie',
|
|
||||||
radius: '50%',
|
|
||||||
data: data,
|
|
||||||
|
|
||||||
emphasis: {
|
|
||||||
itemStyle: {
|
|
||||||
shadowBlur: 10,
|
|
||||||
shadowOffsetX: 0,
|
|
||||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
circleChart.setOption(circleOption);
|
|
||||||
}
|
|
||||||
// if (circleChart != null && circleChart != undefined) {
|
|
||||||
// circleChart.dispose();
|
|
||||||
// circleChart = echarts.init(document.getElementById(type))
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
},
|
|
||||||
|
|
||||||
drawregisteredCircle(objectKey) {
|
|
||||||
console.log("drawCircle")
|
|
||||||
let fatherData = this.objectList[objectKey]
|
|
||||||
let registeredData = fatherData.childrenObject.map(item => {
|
|
||||||
return {
|
|
||||||
name: item.label,
|
|
||||||
value: item.registrations
|
|
||||||
}
|
|
||||||
})
|
|
||||||
let circleChart = document.getElementById("registered");
|
|
||||||
if (circleChart) {
|
|
||||||
circleChart = echarts.getInstanceByDom(circleChart)
|
|
||||||
if (circleChart) {
|
|
||||||
circleChart.dispose();
|
|
||||||
}
|
|
||||||
circleChart = echarts.init(document.getElementById("registered"))
|
|
||||||
console.log("被绘制了")
|
|
||||||
let circleOption = {
|
|
||||||
title: {
|
|
||||||
text: '报名人数',
|
|
||||||
subtext: fatherData.label,
|
|
||||||
left: 'center'
|
|
||||||
},
|
|
||||||
tooltip: {
|
|
||||||
trigger: 'item'
|
|
||||||
},
|
|
||||||
|
|
||||||
series: [
|
|
||||||
{
|
|
||||||
name: '报名人数',
|
|
||||||
type: 'pie',
|
|
||||||
radius: '50%',
|
|
||||||
data: registeredData,
|
|
||||||
|
|
||||||
emphasis: {
|
|
||||||
itemStyle: {
|
|
||||||
shadowBlur: 10,
|
|
||||||
shadowOffsetX: 0,
|
|
||||||
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
circleChart.setOption(circleOption);
|
|
||||||
}
|
|
||||||
// if (circleChart != null && circleChart != undefined) {
|
|
||||||
// circleChart.dispose();
|
|
||||||
// circleChart = echarts.init(document.getElementById(type))
|
|
||||||
// }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
},
|
|
||||||
drawPassRateBar(objectKey) {
|
|
||||||
let fatherData = this.objectList[objectKey]
|
|
||||||
let passrateXData = fatherData.childrenObject.map(item => {
|
|
||||||
return item.label
|
|
||||||
})
|
|
||||||
let passrateYData = fatherData.childrenObject.map(item => {
|
|
||||||
return item.passrate
|
|
||||||
})
|
|
||||||
let BarChart = echarts.getInstanceByDom(document.getElementById('passrate'));
|
|
||||||
if (BarChart != null && BarChart != undefined) {
|
|
||||||
BarChart.dispose();
|
|
||||||
}
|
|
||||||
BarChart = echarts.init(document.getElementById('passrate'));
|
|
||||||
let option = {
|
|
||||||
title: {
|
|
||||||
text: '各学院通过率'
|
|
||||||
},
|
|
||||||
tooltip: {
|
|
||||||
trigger: 'axis'
|
|
||||||
},
|
|
||||||
// legend: {
|
|
||||||
// data: registeredData.label
|
|
||||||
// },
|
|
||||||
grid: {
|
|
||||||
left: '3%',
|
|
||||||
right: '4%',
|
|
||||||
bottom: '3%',
|
|
||||||
containLabel: true
|
|
||||||
},
|
|
||||||
toolbox: {
|
|
||||||
show: false
|
|
||||||
},
|
|
||||||
xAxis: {
|
|
||||||
type: 'category',
|
|
||||||
data: passrateXData,
|
|
||||||
|
|
||||||
},
|
|
||||||
yAxis: {
|
|
||||||
type: 'value',
|
|
||||||
axisLabel: {
|
|
||||||
margin: 0 // 调整 Y 轴标签和图表之间的间距
|
|
||||||
}
|
|
||||||
},
|
|
||||||
series: {
|
|
||||||
name: passrateXData,
|
|
||||||
type: 'bar',
|
|
||||||
stack: 'Total',
|
|
||||||
data: passrateYData
|
|
||||||
},
|
|
||||||
};
|
|
||||||
BarChart.setOption(option);
|
|
||||||
|
|
||||||
}
|
|
||||||
// if (circleChart != null && circleChart != undefined) {
|
|
||||||
// circleChart.dispose();
|
|
||||||
// circleChart = echarts.init(document.getElementById(type))
|
|
||||||
// }
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<style scoped >
|
<style scoped>
|
||||||
@import '~@assets/less/common.less';
|
@import '~@assets/less/common.less';
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
|
@ -1008,29 +472,6 @@ export default {
|
||||||
margin: 10px 0;
|
margin: 10px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pie {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-around;
|
|
||||||
align-items: center;
|
|
||||||
margin-top: 20px;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.pc {
|
|
||||||
display: flex;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pc-left {
|
|
||||||
width: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pc-right {
|
|
||||||
width: 50%;
|
|
||||||
background-color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.LineChart {
|
.LineChart {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 400px;
|
height: 400px;
|
||||||
|
@ -1038,13 +479,6 @@ export default {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.CircleChart {
|
|
||||||
width: 100%;
|
|
||||||
height: 400px;
|
|
||||||
padding: 10px;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.buttons {
|
.buttons {
|
||||||
float: right;
|
float: right;
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
|
@ -1057,38 +491,19 @@ export default {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#passed {
|
|
||||||
width: 50%;
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#registered {
|
|
||||||
width: 50%;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#passrate {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
max-height: 600px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.collegeDesc {
|
.collegeDesc {
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
.objectHr{
|
||||||
.objectHr {
|
|
||||||
|
|
||||||
border: none;
|
border: none;
|
||||||
border-top: 1px dashed #ece8e8;
|
border-top: 1px dashed #ece8e8;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* #main {
|
/* #main {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
} */
|
} */
|
||||||
|
|
||||||
/* 第二步 */
|
/* 第二步 */
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -1,31 +1,36 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="main">
|
<div class="main">
|
||||||
<a-form-model class="user-layout-login" @keyup.enter.native="handleSubmit">
|
<a-form-model class="user-layout-login" @keyup.enter.native="handleSubmit">
|
||||||
<!-- <a-tabs :activeKey="customActiveKey" :tabBarStyle="{ textAlign: 'center', borderBottom: 'unset' }"
|
<a-tabs :activeKey="customActiveKey" :tabBarStyle="{ textAlign: 'center', borderBottom: 'unset' }" @change="handleTabClick">
|
||||||
@change="handleTabClick">
|
|
||||||
<a-tab-pane key="tab1" tab="账号密码登录">
|
<a-tab-pane key="tab1" tab="账号密码登录">
|
||||||
|
<login-account ref="alogin" @validateFail="validateFail" @success="requestSuccess" @fail="requestFailed"></login-account>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
|
|
||||||
<a-tab-pane key="tab2" tab="手机号登录">
|
<a-tab-pane key="tab2" tab="手机号登录">
|
||||||
<login-phone ref="plogin" @validateFail="validateFail" @success="requestSuccess" @fail="requestFailed"></login-phone>
|
<login-phone ref="plogin" @validateFail="validateFail" @success="requestSuccess" @fail="requestFailed"></login-phone>
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
</a-tabs> -->
|
</a-tabs>
|
||||||
<login-account ref="alogin" @validateFail="validateFail" @success="requestSuccess"
|
|
||||||
@fail="requestFailed"></login-account>
|
|
||||||
|
|
||||||
|
<a-form-model-item>
|
||||||
|
<a-checkbox @change="handleRememberMeChange" default-checked>自动登录</a-checkbox>
|
||||||
|
<router-link :to="{ name: 'alteration'}" class="forge-password" style="float: right;">
|
||||||
|
忘记密码
|
||||||
|
</router-link>
|
||||||
|
<router-link :to="{ name: 'register'}" class="forge-password" style="float: right;margin-right: 10px" >
|
||||||
|
注册账户
|
||||||
|
</router-link>
|
||||||
|
</a-form-model-item>
|
||||||
|
|
||||||
<a-form-item style="margin-top:24px">
|
<a-form-item style="margin-top:24px">
|
||||||
<a-button size="large" type="primary" htmlType="submit" class="login-button" :loading="loginBtn"
|
<a-button size="large" type="primary" htmlType="submit" class="login-button" :loading="loginBtn" @click.stop.prevent="handleSubmit" :disabled="loginBtn">确定
|
||||||
@click.stop.prevent="handleSubmit" :disabled="loginBtn">确定
|
|
||||||
</a-button>
|
</a-button>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
|
|
||||||
</a-form-model>
|
</a-form-model>
|
||||||
|
|
||||||
<two-step-captcha v-if="requiredTwoStepCaptcha" :visible="stepCaptchaVisible" @success="stepCaptchaSuccess"
|
<two-step-captcha v-if="requiredTwoStepCaptcha" :visible="stepCaptchaVisible" @success="stepCaptchaSuccess" @cancel="stepCaptchaCancel"></two-step-captcha>
|
||||||
@cancel="stepCaptchaCancel"></two-step-captcha>
|
|
||||||
<login-select-tenant ref="loginSelect" @success="loginSelectOk"></login-select-tenant>
|
<login-select-tenant ref="loginSelect" @success="loginSelectOk"></login-select-tenant>
|
||||||
<!-- <third-login ref="thirdLogin"></third-login> -->
|
<third-login ref="thirdLogin"></third-login>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -42,172 +47,168 @@ import LoginAccount from './LoginAccount'
|
||||||
import LoginPhone from './LoginPhone'
|
import LoginPhone from './LoginPhone'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
LoginSelectTenant,
|
LoginSelectTenant,
|
||||||
TwoStepCaptcha,
|
TwoStepCaptcha,
|
||||||
ThirdLogin,
|
ThirdLogin,
|
||||||
LoginAccount,
|
LoginAccount,
|
||||||
LoginPhone
|
LoginPhone
|
||||||
},
|
},
|
||||||
data() {
|
data () {
|
||||||
return {
|
return {
|
||||||
customActiveKey: 'tab1',
|
customActiveKey: 'tab1',
|
||||||
rememberMe: true,
|
rememberMe: true,
|
||||||
loginBtn: false,
|
loginBtn: false,
|
||||||
requiredTwoStepCaptcha: false,
|
requiredTwoStepCaptcha: false,
|
||||||
stepCaptchaVisible: false,
|
stepCaptchaVisible: false,
|
||||||
encryptedString: {
|
encryptedString:{
|
||||||
key: "",
|
key:"",
|
||||||
iv: "",
|
iv:"",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
Vue.ls.remove(ACCESS_TOKEN)
|
||||||
|
this.getRouterData();
|
||||||
|
this.rememberMe = true
|
||||||
|
},
|
||||||
|
methods:{
|
||||||
|
handleTabClick(key){
|
||||||
|
this.customActiveKey = key
|
||||||
},
|
},
|
||||||
}
|
handleRememberMeChange(e){
|
||||||
},
|
this.rememberMe = e.target.checked
|
||||||
created() {
|
},
|
||||||
Vue.ls.remove(ACCESS_TOKEN)
|
/**跳转到登录页面的参数-账号获取*/
|
||||||
this.getRouterData();
|
getRouterData(){
|
||||||
this.rememberMe = true
|
this.$nextTick(() => {
|
||||||
},
|
let temp = this.$route.params.username || this.$route.query.username || ''
|
||||||
methods: {
|
if (temp) {
|
||||||
handleTabClick(key) {
|
this.$refs.alogin.acceptUsername(temp)
|
||||||
this.customActiveKey = key
|
}
|
||||||
},
|
})
|
||||||
handleRememberMeChange(e) {
|
},
|
||||||
this.rememberMe = e.target.checked
|
|
||||||
},
|
//登录
|
||||||
/**跳转到登录页面的参数-账号获取*/
|
handleSubmit () {
|
||||||
getRouterData() {
|
this.loginBtn = true;
|
||||||
this.$nextTick(() => {
|
if (this.customActiveKey === 'tab1') {
|
||||||
let temp = this.$route.params.username || this.$route.query.username || ''
|
// 使用账户密码登录
|
||||||
if (temp) {
|
this.$refs.alogin.handleLogin(this.rememberMe)
|
||||||
this.$refs.alogin.acceptUsername(temp)
|
} else {
|
||||||
|
//手机号码登录
|
||||||
|
this.$refs.plogin.handleLogin(this.rememberMe)
|
||||||
}
|
}
|
||||||
})
|
},
|
||||||
},
|
// 校验失败
|
||||||
|
validateFail(){
|
||||||
//登录
|
this.loginBtn = false;
|
||||||
handleSubmit() {
|
},
|
||||||
this.loginBtn = true;
|
// 登录后台成功
|
||||||
if (this.customActiveKey === 'tab1') {
|
requestSuccess(loginResult){
|
||||||
// 使用账户密码登录
|
this.$refs.loginSelect.show(loginResult)
|
||||||
this.$refs.alogin.handleLogin(this.rememberMe)
|
},
|
||||||
} else {
|
//登录后台失败
|
||||||
//手机号码登录
|
requestFailed (err) {
|
||||||
this.$refs.plogin.handleLogin(this.rememberMe)
|
let description = ((err.response || {}).data || {}).message || err.message || "请求出现错误,请稍后再试"
|
||||||
}
|
this.$notification[ 'error' ]({
|
||||||
},
|
message: '登录失败',
|
||||||
// 校验失败
|
description: description,
|
||||||
validateFail() {
|
duration: 4,
|
||||||
this.loginBtn = false;
|
|
||||||
},
|
|
||||||
// 登录后台成功
|
|
||||||
requestSuccess(loginResult) {
|
|
||||||
this.$refs.loginSelect.show(loginResult)
|
|
||||||
},
|
|
||||||
//登录后台失败
|
|
||||||
requestFailed(err) {
|
|
||||||
let description = ((err.response || {}).data || {}).message || err.message || "请求出现错误,请稍后再试"
|
|
||||||
this.$notification['error']({
|
|
||||||
message: '登录失败',
|
|
||||||
description: description,
|
|
||||||
duration: 4,
|
|
||||||
});
|
|
||||||
//账户密码登录错误后更新验证码
|
|
||||||
if (this.customActiveKey === 'tab1' && description.indexOf('密码错误') > 0) {
|
|
||||||
this.$refs.alogin.handleChangeCheckCode()
|
|
||||||
}
|
|
||||||
this.loginBtn = false;
|
|
||||||
},
|
|
||||||
loginSelectOk() {
|
|
||||||
this.loginSuccess()
|
|
||||||
},
|
|
||||||
//登录成功
|
|
||||||
loginSuccess() {
|
|
||||||
this.$router.push({ path: "/dashboard/analysis" }).catch(() => {
|
|
||||||
console.log('登录跳转首页出错,这个错误从哪里来的')
|
|
||||||
})
|
|
||||||
this.$notification.success({
|
|
||||||
message: '欢迎',
|
|
||||||
description: `${timeFix()},欢迎回来`,
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
stepCaptchaSuccess() {
|
|
||||||
this.loginSuccess()
|
|
||||||
},
|
|
||||||
stepCaptchaCancel() {
|
|
||||||
this.Logout().then(() => {
|
|
||||||
this.loginBtn = false
|
|
||||||
this.stepCaptchaVisible = false
|
|
||||||
})
|
|
||||||
},
|
|
||||||
//获取密码加密规则
|
|
||||||
getEncrypte() {
|
|
||||||
var encryptedString = Vue.ls.get(ENCRYPTED_STRING);
|
|
||||||
if (encryptedString == null) {
|
|
||||||
getEncryptedString().then((data) => {
|
|
||||||
this.encryptedString = data
|
|
||||||
});
|
});
|
||||||
} else {
|
//账户密码登录错误后更新验证码
|
||||||
this.encryptedString = encryptedString;
|
if(this.customActiveKey === 'tab1' && description.indexOf('密码错误')>0){
|
||||||
|
this.$refs.alogin.handleChangeCheckCode()
|
||||||
|
}
|
||||||
|
this.loginBtn = false;
|
||||||
|
},
|
||||||
|
loginSelectOk(){
|
||||||
|
this.loginSuccess()
|
||||||
|
},
|
||||||
|
//登录成功
|
||||||
|
loginSuccess () {
|
||||||
|
this.$router.push({ path: "/dashboard/analysis" }).catch(()=>{
|
||||||
|
console.log('登录跳转首页出错,这个错误从哪里来的')
|
||||||
|
})
|
||||||
|
this.$notification.success({
|
||||||
|
message: '欢迎',
|
||||||
|
description: `${timeFix()},欢迎回来`,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
stepCaptchaSuccess () {
|
||||||
|
this.loginSuccess()
|
||||||
|
},
|
||||||
|
stepCaptchaCancel () {
|
||||||
|
this.Logout().then(() => {
|
||||||
|
this.loginBtn = false
|
||||||
|
this.stepCaptchaVisible = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
//获取密码加密规则
|
||||||
|
getEncrypte(){
|
||||||
|
var encryptedString = Vue.ls.get(ENCRYPTED_STRING);
|
||||||
|
if(encryptedString == null){
|
||||||
|
getEncryptedString().then((data) => {
|
||||||
|
this.encryptedString = data
|
||||||
|
});
|
||||||
|
}else{
|
||||||
|
this.encryptedString = encryptedString;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="less" scoped>
|
<style lang="less" scoped>
|
||||||
.user-layout-login {
|
.user-layout-login {
|
||||||
text-align: center;
|
label {
|
||||||
|
font-size: 14px;
|
||||||
label {
|
}
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.getCaptcha {
|
.getCaptcha {
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.forge-password {
|
.forge-password {
|
||||||
font-size: 14px;
|
font-size: 14px;
|
||||||
}
|
}
|
||||||
|
|
||||||
button.login-button {
|
button.login-button {
|
||||||
padding: 0 15px;
|
padding: 0 15px;
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
height: 40px;
|
height: 40px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.user-login-other {
|
.user-login-other {
|
||||||
text-align: left;
|
text-align: left;
|
||||||
margin-top: 24px;
|
margin-top: 24px;
|
||||||
line-height: 22px;
|
line-height: 22px;
|
||||||
|
|
||||||
.item-icon {
|
.item-icon {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
color: rgba(0, 0, 0, .2);
|
color: rgba(0,0,0,.2);
|
||||||
margin-left: 16px;
|
margin-left: 16px;
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
transition: color .3s;
|
transition: color .3s;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
color: #1890ff;
|
color: #1890ff;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.register {
|
.register {
|
||||||
float: right;
|
float: right;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
<style>
|
<style>
|
||||||
.valid-error .ant-select-selection__placeholder {
|
.valid-error .ant-select-selection__placeholder{
|
||||||
color: #f5222d;
|
color: #f5222d;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
|
@ -1,141 +1,160 @@
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<a-form-model ref="form" :model="model" :rules="validatorRules">
|
<a-form-model ref="form" :model="model" :rules="validatorRules">
|
||||||
<a-form-model-item required prop="username">
|
<a-form-model-item required prop="username">
|
||||||
<a-input v-model="model.username" size="large" placeholder="请输入帐户名">
|
<a-input v-model="model.username" size="large" placeholder="请输入帐户名 / admin">
|
||||||
<a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }" />
|
<a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }"/>
|
||||||
</a-input>
|
</a-input>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
<a-form-model-item required prop="password">
|
<a-form-model-item required prop="password">
|
||||||
<a-input v-model="model.password" size="large" type="password" autocomplete="false" placeholder="请输入密码">
|
<a-input v-model="model.password" size="large" type="password" autocomplete="false" placeholder="请输入密码 / 123456">
|
||||||
<a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }" />
|
<a-icon slot="prefix" type="lock" :style="{ color: 'rgba(0,0,0,.25)' }"/>
|
||||||
</a-input>
|
</a-input>
|
||||||
</a-form-model-item>
|
</a-form-model-item>
|
||||||
</a-form-model>
|
|
||||||
</div>
|
<a-row :gutter="0">
|
||||||
|
<a-col :span="16">
|
||||||
|
<a-form-model-item required prop="inputCode">
|
||||||
|
<a-input v-model="model.inputCode" size="large" type="text" placeholder="请输入验证码">
|
||||||
|
<a-icon slot="prefix" type="smile" :style="{ color: 'rgba(0,0,0,.25)' }"/>
|
||||||
|
</a-input>
|
||||||
|
</a-form-model-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :span="8" style="text-align: right">
|
||||||
|
<img v-if="requestCodeSuccess" style="margin-top: 2px;" :src="randCodeImage" @click="handleChangeCheckCode"/>
|
||||||
|
<img v-else style="margin-top: 2px;" src="../../assets/checkcode.png" @click="handleChangeCheckCode"/>
|
||||||
|
</a-col>
|
||||||
|
</a-row>
|
||||||
|
</a-form-model>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { getAction } from '@/api/manage'
|
import { getAction } from '@/api/manage'
|
||||||
import Vue from 'vue'
|
import Vue from 'vue'
|
||||||
import { mapActions } from 'vuex'
|
import { mapActions } from 'vuex'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'LoginAccount',
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
requestCodeSuccess: false,
|
||||||
|
randCodeImage: '',
|
||||||
|
currdatetime: '',
|
||||||
|
loginType: 0,
|
||||||
|
model:{
|
||||||
|
username: 'admin',
|
||||||
|
password: '123456',
|
||||||
|
inputCode: ''
|
||||||
|
},
|
||||||
|
validatorRules:{
|
||||||
|
username: [
|
||||||
|
{ required: true, message: '请输入用户名!' },
|
||||||
|
{ validator: this.handleUsernameOrEmail }
|
||||||
|
],
|
||||||
|
password: [{
|
||||||
|
required: true, message: '请输入密码!', validator: 'click'
|
||||||
|
}],
|
||||||
|
inputCode: [{
|
||||||
|
required: true, message: '请输入验证码!'
|
||||||
|
}]
|
||||||
|
}
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'LoginAccount',
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
requestCodeSuccess: false,
|
|
||||||
randCodeImage: '',
|
|
||||||
currdatetime: '',
|
|
||||||
loginType: 0,
|
|
||||||
model: {
|
|
||||||
username: 'root',
|
|
||||||
password: 'A123456!'
|
|
||||||
},
|
|
||||||
validatorRules: {
|
|
||||||
username: [{ required: true, message: '请输入用户名!' }, { validator: this.handleUsernameOrEmail }],
|
|
||||||
password: [
|
|
||||||
{
|
|
||||||
required: true,
|
|
||||||
message: '请输入密码!',
|
|
||||||
validator: 'click'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
},
|
created() {
|
||||||
created() {
|
this.handleChangeCheckCode();
|
||||||
this.handleChangeCheckCode()
|
},
|
||||||
},
|
methods:{
|
||||||
methods: {
|
...mapActions(['Login']),
|
||||||
...mapActions(['Login']),
|
/**刷新验证码*/
|
||||||
/**刷新验证码*/
|
handleChangeCheckCode(){
|
||||||
handleChangeCheckCode() {
|
this.currdatetime = new Date().getTime();
|
||||||
this.currdatetime = new Date().getTime()
|
this.model.inputCode = ''
|
||||||
getAction(`/sys/randomImage/${this.currdatetime}`)
|
getAction(`/sys/randomImage/${this.currdatetime}`).then(res=>{
|
||||||
.then(res => {
|
if(res.success){
|
||||||
if (res.success) {
|
|
||||||
this.randCodeImage = res.result
|
this.randCodeImage = res.result
|
||||||
this.requestCodeSuccess = true
|
this.requestCodeSuccess=true
|
||||||
} else {
|
}else{
|
||||||
this.$message.error(res.message)
|
this.$message.error(res.message)
|
||||||
this.requestCodeSuccess = false
|
this.requestCodeSuccess=false
|
||||||
}
|
}
|
||||||
|
}).catch(()=>{
|
||||||
|
this.requestCodeSuccess=false
|
||||||
})
|
})
|
||||||
.catch(() => {
|
},
|
||||||
this.requestCodeSuccess = false
|
// 判断登录类型
|
||||||
})
|
handleUsernameOrEmail (rule, value, callback) {
|
||||||
},
|
const regex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/;
|
||||||
// 判断登录类型
|
if (regex.test(value)) {
|
||||||
handleUsernameOrEmail(rule, value, callback) {
|
this.loginType = 0
|
||||||
const regex = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/
|
} else {
|
||||||
if (regex.test(value)) {
|
this.loginType = 1
|
||||||
this.loginType = 0
|
}
|
||||||
} else {
|
callback()
|
||||||
this.loginType = 1
|
},
|
||||||
}
|
/**
|
||||||
callback()
|
* 验证字段
|
||||||
},
|
* @param arr
|
||||||
/**
|
* @param callback
|
||||||
* 验证字段
|
*/
|
||||||
* @param arr
|
validateFields(arr, callback){
|
||||||
* @param callback
|
let promiseArray = []
|
||||||
*/
|
for(let item of arr){
|
||||||
validateFields(arr, callback) {
|
let p = new Promise((resolve, reject) => {
|
||||||
let promiseArray = []
|
this.$refs['form'].validateField(item, (err)=>{
|
||||||
for (let item of arr) {
|
if(!err){
|
||||||
let p = new Promise((resolve, reject) => {
|
resolve();
|
||||||
this.$refs['form'].validateField(item, err => {
|
}else{
|
||||||
if (!err) {
|
reject(err);
|
||||||
resolve()
|
}
|
||||||
} else {
|
})
|
||||||
reject(err)
|
});
|
||||||
}
|
promiseArray.push(p)
|
||||||
})
|
}
|
||||||
})
|
Promise.all(promiseArray).then(()=>{
|
||||||
promiseArray.push(p)
|
|
||||||
}
|
|
||||||
Promise.all(promiseArray)
|
|
||||||
.then(() => {
|
|
||||||
callback()
|
callback()
|
||||||
})
|
}).catch(err=>{
|
||||||
.catch(err => {
|
|
||||||
callback(err)
|
callback(err)
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
acceptUsername(username) {
|
acceptUsername(username){
|
||||||
this.model['username'] = username
|
this.model['username'] = username
|
||||||
},
|
},
|
||||||
//账号密码登录
|
//账号密码登录
|
||||||
handleLogin(rememberMe) {
|
handleLogin(rememberMe){
|
||||||
this.validateFields(['username', 'password'], err => {
|
this.validateFields([ 'username', 'password', 'inputCode' ], (err)=>{
|
||||||
if (!err) {
|
if(!err){
|
||||||
let loginParams = {
|
let loginParams = {
|
||||||
username: this.model.username,
|
username: this.model.username,
|
||||||
password: this.model.password,
|
password: this.model.password,
|
||||||
checkKey: this.currdatetime,
|
captcha: this.model.inputCode,
|
||||||
remember_me: rememberMe
|
checkKey: this.currdatetime,
|
||||||
}
|
remember_me: rememberMe,
|
||||||
console.log('登录参数', loginParams)
|
}
|
||||||
this.Login(loginParams)
|
console.log("登录参数", loginParams)
|
||||||
.then(res => {
|
this.Login(loginParams).then((res) => {
|
||||||
this.$emit('success', res.result)
|
this.$emit('success', res.result)
|
||||||
})
|
}).catch((err) => {
|
||||||
.catch(err => {
|
|
||||||
//update-begin-author: taoyan date:20220425 for: 登录页面,当输入验证码错误时,验证码图片要刷新一下,而不是保持旧的验证码图片不变 #41
|
//update-begin-author: taoyan date:20220425 for: 登录页面,当输入验证码错误时,验证码图片要刷新一下,而不是保持旧的验证码图片不变 #41
|
||||||
if (err && err.code === 412) {
|
if(err && err.code===412){
|
||||||
this.handleChangeCheckCode()
|
this.handleChangeCheckCode();
|
||||||
}
|
}
|
||||||
//update-end-author: taoyan date:20220425 for: 登录页面,当输入验证码错误时,验证码图片要刷新一下,而不是保持旧的验证码图片不变 #41
|
//update-end-author: taoyan date:20220425 for: 登录页面,当输入验证码错误时,验证码图片要刷新一下,而不是保持旧的验证码图片不变 #41
|
||||||
this.$emit('fail', err)
|
this.$emit('fail', err)
|
||||||
})
|
});
|
||||||
} else {
|
}else{
|
||||||
this.$emit('validateFail')
|
this.$emit('validateFail')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped></style>
|
<style scoped>
|
||||||
|
|
||||||
|
</style>
|
Loading…
Reference in New Issue