🎉 新增vue3版本架构
@ -1,3 +0,0 @@
|
|||||||
> 1%
|
|
||||||
last 2 versions
|
|
||||||
not ie <= 8
|
|
@ -1,16 +0,0 @@
|
|||||||
# http://editorconfig.org
|
|
||||||
root = true
|
|
||||||
|
|
||||||
[*]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
end_of_line = lf
|
|
||||||
charset = utf-8
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
insert_final_newline = true
|
|
||||||
|
|
||||||
[*.md]
|
|
||||||
trim_trailing_whitespace = false
|
|
||||||
|
|
||||||
[Makefile]
|
|
||||||
indent_style = tab
|
|
9
.env.development
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
# 开发环境配置
|
||||||
|
VITE_APP_ENV = 'development'
|
||||||
|
|
||||||
|
#接口地址
|
||||||
|
VITE_APP_API=/api
|
||||||
|
|
||||||
|
#页面基础路径
|
||||||
|
VITE_APP_BASE=/
|
11
.env.production
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
# 生产环境配置
|
||||||
|
VITE_APP_ENV = 'production'
|
||||||
|
|
||||||
|
#接口地址
|
||||||
|
VITE_APP_API=
|
||||||
|
|
||||||
|
#页面基础路径
|
||||||
|
VITE_APP_BASE=/
|
||||||
|
|
||||||
|
# 是否在打包时开启压缩,支持 gzip 和 brotli
|
||||||
|
VITE_BUILD_COMPRESS = gzip
|
17
.eslintrc.js
@ -1,17 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
root: true,
|
|
||||||
env: {
|
|
||||||
node: true
|
|
||||||
},
|
|
||||||
'extends': [
|
|
||||||
'plugin:vue/essential',
|
|
||||||
'eslint:recommended'
|
|
||||||
],
|
|
||||||
rules: {
|
|
||||||
'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
|
||||||
'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'
|
|
||||||
},
|
|
||||||
parserOptions: {
|
|
||||||
parser: 'babel-eslint'
|
|
||||||
}
|
|
||||||
}
|
|
4
.gitignore
vendored
Normal file → Executable file
@ -9,12 +9,12 @@ node_modules
|
|||||||
.env.local
|
.env.local
|
||||||
.env.*.local
|
.env.*.local
|
||||||
|
|
||||||
# Log files
|
# log files
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
|
|
||||||
# Editor directories and files
|
# editor directories and files
|
||||||
.idea
|
.idea
|
||||||
.vscode
|
.vscode
|
||||||
*.suo
|
*.suo
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
plugins: {
|
|
||||||
autoprefixer: {}
|
|
||||||
}
|
|
||||||
}
|
|
9
.prettierrc.json
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"printWidth": 100,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"semi": true,
|
||||||
|
"singleAttributePerLine": false,
|
||||||
|
"bracketSpacing": true,
|
||||||
|
"singleQuote": true,
|
||||||
|
"arrowParens": "avoid"
|
||||||
|
}
|
11
Dockerfile
@ -1,11 +0,0 @@
|
|||||||
FROM nginx:stable-alpine-perl
|
|
||||||
|
|
||||||
RUN rm -f /etc/nginx/nginx.conf \
|
|
||||||
&& rm -f /etc/nginx/conf.d/default.conf
|
|
||||||
COPY docker/nginx.k8s.conf /etc/nginx/nginx.conf
|
|
||||||
|
|
||||||
EXPOSE 80
|
|
||||||
|
|
||||||
COPY ./dist /usr/share/nginx/html
|
|
||||||
|
|
||||||
ENTRYPOINT ["nginx", "-g", "daemon off;"]
|
|
204
LICENSE
@ -1,191 +1,21 @@
|
|||||||
Apache License
|
MIT License
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
Copyright (c) 2020 smallwei
|
||||||
|
|
||||||
1. Definitions.
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction, and
|
The above copyright notice and this permission notice shall be included in all
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by the copyright
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
owner that is granting the License.
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
"Legal Entity" shall mean the union of the acting entity and all other entities
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
that control, are controlled by, or are under common control with that entity.
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
For the purposes of this definition, "control" means (i) the power, direct or
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
SOFTWARE.
|
||||||
contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity exercising
|
|
||||||
permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications, including
|
|
||||||
but not limited to software source code, documentation source, and configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical transformation or
|
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
|
||||||
generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or Object form, made
|
|
||||||
available under the License, as indicated by a copyright notice that is included
|
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object form, that
|
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including the original version
|
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
"submitted" means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
|
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
|
||||||
incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License.
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License.
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution.
|
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
|
||||||
provided that You meet the following conditions:
|
|
||||||
|
|
||||||
You must give any other recipients of the Work or Derivative Works a copy of
|
|
||||||
this License; and
|
|
||||||
You must cause any modified files to carry prominent notices stating that You
|
|
||||||
changed the files; and
|
|
||||||
You must retain, in the Source form of any Derivative Works that You distribute,
|
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
If the Work includes a "NOTICE" text file as part of its distribution, then any
|
|
||||||
Derivative Works that You distribute must include a readable copy of the
|
|
||||||
attribution notices contained within such NOTICE file, excluding those notices
|
|
||||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
|
||||||
following places: within a NOTICE text file distributed as part of the
|
|
||||||
Derivative Works; within the Source form or documentation, if provided along
|
|
||||||
with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of
|
|
||||||
the NOTICE file are for informational purposes only and do not modify the
|
|
||||||
License. You may add Your own attribution notices within Derivative Works that
|
|
||||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
|
||||||
provided that such additional attribution notices cannot be construed as
|
|
||||||
modifying the License.
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide
|
|
||||||
additional or different license terms and conditions for use, reproduction, or
|
|
||||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
|
||||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
|
||||||
with the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions.
|
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
|
||||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
|
||||||
conditions of this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
|
||||||
any separate license agreement you may have executed with Licensor regarding
|
|
||||||
such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks.
|
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks,
|
|
||||||
service marks, or product names of the Licensor, except as required for
|
|
||||||
reasonable and customary use in describing the origin of the Work and
|
|
||||||
reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty.
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
|
||||||
Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
|
||||||
including, without limitation, any warranties or conditions of TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
|
||||||
solely responsible for determining the appropriateness of using or
|
|
||||||
redistributing the Work and assume any risks associated with Your exercise of
|
|
||||||
permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability.
|
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence),
|
|
||||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
|
||||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special, incidental,
|
|
||||||
or consequential damages of any character arising as a result of this License or
|
|
||||||
out of the use or inability to use the Work (including but not limited to
|
|
||||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
|
||||||
any and all other commercial damages or losses), even if such Contributor has
|
|
||||||
been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability.
|
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
|
||||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
|
||||||
other liability obligations and/or rights consistent with this License. However,
|
|
||||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
|
||||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
|
||||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason of your
|
|
||||||
accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate
|
|
||||||
notice, with the fields enclosed by brackets "{}" replaced with your own
|
|
||||||
identifying information. (Don't include the brackets!) The text should be
|
|
||||||
enclosed in the appropriate comment syntax for the file format. We also
|
|
||||||
recommend that a file or class name and description of purpose be included on
|
|
||||||
the same "printed page" as the copyright notice for easier identification within
|
|
||||||
third-party archives.
|
|
||||||
|
|
||||||
Copyright 2023 BladeX (https://bladex.cn)
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
@ -1,5 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
presets: [
|
|
||||||
'@vue/app'
|
|
||||||
]
|
|
||||||
}
|
|
7
build.sh
@ -1,7 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
echo "打包文件"
|
|
||||||
yarn build
|
|
||||||
echo "传输文件"
|
|
||||||
scp -r ./dist/** pig@139.224.200.249:/data/avue/sword
|
|
||||||
echo "部署成功"
|
|
@ -1,58 +0,0 @@
|
|||||||
|
|
||||||
user root;
|
|
||||||
worker_processes 1;
|
|
||||||
|
|
||||||
error_log /var/log/nginx/error.log warn;
|
|
||||||
pid /var/run/nginx.pid;
|
|
||||||
|
|
||||||
|
|
||||||
events {
|
|
||||||
worker_connections 1024;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
http {
|
|
||||||
include /etc/nginx/mime.types;
|
|
||||||
default_type application/octet-stream;
|
|
||||||
|
|
||||||
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
|
|
||||||
'$status $body_bytes_sent "$http_referer" '
|
|
||||||
'"$http_user_agent" "$http_x_forwarded_for"';
|
|
||||||
|
|
||||||
access_log /var/log/nginx/access.log main;
|
|
||||||
|
|
||||||
sendfile on;
|
|
||||||
#tcp_nopush on;
|
|
||||||
|
|
||||||
keepalive_timeout 65;
|
|
||||||
|
|
||||||
#gzip on;
|
|
||||||
|
|
||||||
#include /etc/nginx/conf.d/*.conf;
|
|
||||||
|
|
||||||
upstream gateway {
|
|
||||||
server blade-gateway;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name web;
|
|
||||||
root /usr/share/nginx/html;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
location ^~/api {
|
|
||||||
proxy_set_header Host $host;
|
|
||||||
proxy_set_header X-Real-IP $remote_addr;
|
|
||||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
||||||
proxy_buffering off;
|
|
||||||
rewrite ^/api/(.*)$ /$1 break;
|
|
||||||
proxy_pass http://gateway;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
34
index.html
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="icon" href="/favicon.ico" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="//at.alicdn.com/t/font_567566_82imxaft0by.css" />
|
||||||
|
<link rel="stylesheet" type="text/css" href="//at.alicdn.com/t/font_1066523_6bvkeuqao36.css">
|
||||||
|
<link rel="stylesheet" href="/css/loading.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="app">
|
||||||
|
<div class="loading">
|
||||||
|
<div class="loading-wrap">
|
||||||
|
<div class="loading-dots">
|
||||||
|
<span class="dot dot-spin">
|
||||||
|
<i></i>
|
||||||
|
<i></i>
|
||||||
|
<i></i>
|
||||||
|
<i></i>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="loading-title">
|
||||||
|
系统加载中
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="module" src="/src/main.js"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
14
jsconfig.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"baseUrl": "./",
|
||||||
|
"paths": {
|
||||||
|
"@/*": [
|
||||||
|
"src/*"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"exclude": [
|
||||||
|
"node_modules",
|
||||||
|
"dist"
|
||||||
|
]
|
||||||
|
}
|
3213
package-lock.json
generated
Normal file
69
package.json
Normal file → Executable file
@ -1,52 +1,41 @@
|
|||||||
{
|
{
|
||||||
"name": "saber-admin",
|
"name": "saber-admin",
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"private": true,
|
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"serve": "vue-cli-service serve",
|
"dev": "vite --host",
|
||||||
"build": "vue-cli-service build",
|
"prod": "vite --mode production",
|
||||||
"lint": "vue-cli-service lint",
|
"build": "vite build",
|
||||||
"analyz": "npm_config_report=true npm run build",
|
"build:prod": "vite build --mode production",
|
||||||
"test:unit": "vue-cli-service test:unit",
|
"serve": "vite preview --host"
|
||||||
"test:e2e": "vue-cli-service test:e2e"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^0.18.0",
|
"@element-plus/icons-vue": "^2.3.1",
|
||||||
"babel-polyfill": "^6.26.0",
|
"@smallwei/avue": "^3.4.4",
|
||||||
"classlist-polyfill": "^1.2.0",
|
"animate.css": "^4.1.1",
|
||||||
"element-ui": "^2.15.6",
|
"avue-plugin-ueditor": "^1.0.3",
|
||||||
"js-base64": "^2.5.1",
|
"axios": "^0.21.1",
|
||||||
"js-cookie": "^2.2.0",
|
"crypto-js": "^4.1.1",
|
||||||
"crypto-js": "^4.0.0",
|
|
||||||
"sm-crypto": "^0.3.13",
|
"sm-crypto": "^0.3.13",
|
||||||
"mockjs": "^1.0.1-beta3",
|
"dayjs": "^1.10.6",
|
||||||
"node-gyp": "^5.0.6",
|
"element-plus": "^2.7.3",
|
||||||
|
"js-base64": "^3.7.4",
|
||||||
|
"js-cookie": "^3.0.0",
|
||||||
|
"mockjs": "^1.1.0",
|
||||||
"nprogress": "^0.2.0",
|
"nprogress": "^0.2.0",
|
||||||
"script-loader": "^0.7.2",
|
"vite-plugin-mock": "^2.9.4",
|
||||||
"vue": "^2.6.10",
|
"vue": "^3.4.27",
|
||||||
"vue-axios": "^2.1.2",
|
"vue-i18n": "^9.1.9",
|
||||||
"vue-i18n": "^8.7.0",
|
"vue-router": "^4.3.2",
|
||||||
"vue-router": "^3.0.1",
|
"vuex": "^4.1.0"
|
||||||
"vuex": "^3.1.1"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vue/cli-plugin-babel": "^3.1.1",
|
"@vitejs/plugin-vue": "^5.0.4",
|
||||||
"@vue/cli-plugin-eslint": "^3.1.5",
|
"@vue/compiler-sfc": "^3.4.27",
|
||||||
"@vue/cli-service": "^3.1.4",
|
"prettier": "^2.8.7",
|
||||||
"chai": "^4.1.2",
|
"sass": "^1.77.2",
|
||||||
"sass": "^1.77.6",
|
"unplugin-auto-import": "^0.11.2",
|
||||||
"sass-loader": "^10.0.5",
|
"vite": "^5.2.12",
|
||||||
"vue-template-compiler": "^2.5.17",
|
"vite-plugin-compression": "^0.5.1",
|
||||||
"webpack-bundle-analyzer": "^3.0.3"
|
"vite-plugin-vue-setup-extend": "^0.4.0"
|
||||||
},
|
|
||||||
"lint-staged": {
|
|
||||||
"*.js": [
|
|
||||||
"vue-cli-service lint",
|
|
||||||
"git add"
|
|
||||||
],
|
|
||||||
"*.vue": [
|
|
||||||
"vue-cli-service lint",
|
|
||||||
"git add"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
11
public/cdn/animate/3.5.2/animate.css
vendored
9
public/cdn/avue/2.10.16/avue.min.js
vendored
9
public/cdn/axios/1.0.0/axios.min.js
vendored
6
public/cdn/vue/2.6.10/vue.min.js
vendored
6
public/cdn/vuex/3.1.1/vuex.min.js
vendored
116
public/css/loading.css
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
.loading {
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
background-color: #f4f7f9
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading .loading-wrap {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
display: flex;
|
||||||
|
-webkit-transform: translate3d(-50%, -50%, 0);
|
||||||
|
transform: translate3d(-50%, -50%, 0);
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading .dots {
|
||||||
|
display: flex;
|
||||||
|
padding: 98px;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center
|
||||||
|
}
|
||||||
|
|
||||||
|
.loading .loading-title {
|
||||||
|
display: flex;
|
||||||
|
font-weight: bold;
|
||||||
|
margin-top: 30px;
|
||||||
|
font-size: 36px;
|
||||||
|
color: rgba(0, 0, 0, .85);
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.dot {
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
width: 48px;
|
||||||
|
height: 48px;
|
||||||
|
margin-top: 30px;
|
||||||
|
font-size: 32px;
|
||||||
|
transform: rotate(45deg);
|
||||||
|
box-sizing: border-box;
|
||||||
|
animation: antRotate 1.2s infinite linear
|
||||||
|
}
|
||||||
|
|
||||||
|
.dot i {
|
||||||
|
position: absolute;
|
||||||
|
display: block;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
background-color: #0065cc;
|
||||||
|
border-radius: 100%;
|
||||||
|
opacity: .3;
|
||||||
|
transform: scale(.75);
|
||||||
|
animation: antSpinMove 1s infinite linear alternate;
|
||||||
|
transform-origin: 50% 50%
|
||||||
|
}
|
||||||
|
|
||||||
|
.dot i:nth-child(1) {
|
||||||
|
top: 0;
|
||||||
|
left: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
.dot i:nth-child(2) {
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
-webkit-animation-delay: .4s;
|
||||||
|
animation-delay: .4s
|
||||||
|
}
|
||||||
|
|
||||||
|
.dot i:nth-child(3) {
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
-webkit-animation-delay: .8s;
|
||||||
|
animation-delay: .8s
|
||||||
|
}
|
||||||
|
|
||||||
|
.dot i:nth-child(4) {
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
-webkit-animation-delay: 1.2s;
|
||||||
|
animation-delay: 1.2s
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes antRotate {
|
||||||
|
to {
|
||||||
|
-webkit-transform: rotate(405deg);
|
||||||
|
transform: rotate(405deg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes antRotate {
|
||||||
|
to {
|
||||||
|
-webkit-transform: rotate(405deg);
|
||||||
|
transform: rotate(405deg)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes antSpinMove {
|
||||||
|
to {
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@-webkit-keyframes antSpinMove {
|
||||||
|
to {
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
}
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 54 KiB |
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 87 KiB |
Before Width: | Height: | Size: 87 KiB After Width: | Height: | Size: 87 KiB |
BIN
public/img/bg.jpg
Normal file
After Width: | Height: | Size: 81 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 239 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 3.7 KiB |
BIN
public/img/bg1.jpg
Normal file
After Width: | Height: | Size: 254 KiB |
BIN
public/img/bg2.jpg
Normal file
After Width: | Height: | Size: 310 KiB |
BIN
public/img/bg3.jpg
Normal file
After Width: | Height: | Size: 190 KiB |
BIN
public/img/bg4.jpg
Normal file
After Width: | Height: | Size: 136 KiB |
Before Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 206 KiB |
1
public/img/login-bg.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="6395" height="1079"><defs><linearGradient id="b" x1=".747" y1=".222" x2=".973" y2=".807" gradientUnits="objectBoundingBox"><stop offset="0" stop-color="#409eff"/><stop offset="1" stop-color="#1b4fab"/></linearGradient><clipPath id="a"><path transform="translate(-5391)" fill="#fff" d="M0 0h6395v1079H0z"/></clipPath></defs><g data-name="Mask Group 1" transform="translate(5391)" clip-path="url(#a)"><g data-name="Group 118"><path data-name="Path 142" d="M976.018-7.302S753.54 180.507 920.669 575.952c44.957 106.375 81.514 205.964 84.521 277 8.164 192.764-156.046 268.564-156.046 268.564l-653.53-26.8L179.349-22.751z" fill="#f1f5f8"/><path data-name="Union 6" d="M-2631.1 1081.8v-1.6h-5599.8V.022h5599.8V0h759.7s-187.845 197.448-91.626 488.844c49.167 148.9 96.309 256.289 104.683 362.118 7.979 100.852-57.98 201.711-168.644 254.286-65.858 31.29-144.552 42.382-223.028 42.383-191.185.001-381.085-65.831-381.085-65.831z" transform="translate(2840.191 -.323)" fill="url(#b)"/></g></g></svg>
|
After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 141 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 211 KiB |
Before Width: | Height: | Size: 240 KiB |
Before Width: | Height: | Size: 407 KiB |
Before Width: | Height: | Size: 267 KiB |
Before Width: | Height: | Size: 359 KiB After Width: | Height: | Size: 359 KiB |
@ -1,109 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0">
|
|
||||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
|
||||||
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
|
||||||
<meta name="format-detection" content="telephone=no">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="chrome=1"/>
|
|
||||||
<link rel="stylesheet" href="<%= BASE_URL %>cdn/element-ui/2.15.6/theme-chalk/index.css">
|
|
||||||
<link rel="stylesheet" href="<%= BASE_URL %>cdn/animate/3.5.2/animate.css">
|
|
||||||
<link rel="stylesheet" href="<%= BASE_URL %>cdn/iconfont/1.0.0/index.css">
|
|
||||||
<link rel="stylesheet" href="<%= BASE_URL %>cdn/avue/2.10.16/index.css">
|
|
||||||
<link rel="icon" href="<%= BASE_URL %>favicon.png">
|
|
||||||
<title>Saber企业级开发平台</title>
|
|
||||||
<style>
|
|
||||||
html,
|
|
||||||
body,
|
|
||||||
#app {
|
|
||||||
height: 100%;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.avue-home {
|
|
||||||
background-color: #303133;
|
|
||||||
height: 100%;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.avue-home__main {
|
|
||||||
user-select: none;
|
|
||||||
width: 100%;
|
|
||||||
flex-grow: 1;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.avue-home__footer {
|
|
||||||
width: 100%;
|
|
||||||
flex-grow: 0;
|
|
||||||
text-align: center;
|
|
||||||
padding: 1em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.avue-home__footer > a {
|
|
||||||
font-size: 12px;
|
|
||||||
color: #ABABAB;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.avue-home__loading {
|
|
||||||
height: 32px;
|
|
||||||
width: 32px;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.avue-home__title {
|
|
||||||
color: #FFF;
|
|
||||||
font-size: 14px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.avue-home__sub-title {
|
|
||||||
color: #ABABAB;
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<noscript>
|
|
||||||
<strong>
|
|
||||||
很抱歉,如果没有 JavaScript 支持,Saber 将不能正常工作。请启用浏览器的 JavaScript 然后继续。
|
|
||||||
</strong>
|
|
||||||
</noscript>
|
|
||||||
<div id="app">
|
|
||||||
<div class="avue-home">
|
|
||||||
<div class="avue-home__main">
|
|
||||||
<img class="avue-home__loading" src="<%= BASE_URL %>svg/loading-spin.svg" alt="loading">
|
|
||||||
<div class="avue-home__title">
|
|
||||||
正在加载资源
|
|
||||||
</div>
|
|
||||||
<div class="avue-home__sub-title d">
|
|
||||||
初次加载资源可能需要较多时间 请耐心等待
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="avue-home__footer">
|
|
||||||
<a href="https://bladex.cn" target="_blank">
|
|
||||||
https://bladex.cn </a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- built files will be auto injected -->
|
|
||||||
<script src="<%= BASE_URL %>util/aes.js" charset="utf-8"></script>
|
|
||||||
<script src="<%= BASE_URL %>cdn/vue/2.6.10/vue.min.js" charset="utf-8"></script>
|
|
||||||
<script src="<%= BASE_URL %>cdn/vuex/3.1.1/vuex.min.js" charset="utf-8"></script>
|
|
||||||
<script src="<%= BASE_URL %>cdn/vue-router/3.0.1/vue-router.min.js" charset="utf-8"></script>
|
|
||||||
<script src="<%= BASE_URL %>cdn/axios/1.0.0/axios.min.js" charset="utf-8"></script>
|
|
||||||
<script src="<%= BASE_URL %>cdn/element-ui/2.15.6/index.js" charset="utf-8"></script>
|
|
||||||
<script src="<%= BASE_URL %>cdn/avue/2.10.16/avue.min.js" charset="utf-8"></script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
@ -1,6 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" fill="white">
|
|
||||||
<path opacity=".25" d="M16 0 A16 16 0 0 0 16 32 A16 16 0 0 0 16 0 M16 4 A12 12 0 0 1 16 28 A12 12 0 0 1 16 4"/>
|
|
||||||
<path d="M16 0 A16 16 0 0 1 32 16 L28 16 A12 12 0 0 0 16 4z">
|
|
||||||
<animateTransform attributeName="transform" type="rotate" from="0 16 16" to="360 16 16" dur="0.8s" repeatCount="indefinite" />
|
|
||||||
</path>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 422 B |
@ -1,105 +0,0 @@
|
|||||||
/*
|
|
||||||
CryptoJS v3.1.2
|
|
||||||
code.google.com/p/crypto-js
|
|
||||||
(c) 2009-2013 by Jeff Mott. All rights reserved.
|
|
||||||
code.google.com/p/crypto-js/wiki/License
|
|
||||||
*/
|
|
||||||
var CryptoJS = CryptoJS || function (u, p) {
|
|
||||||
var d = {}, l = d.lib = {}, s = function () { }, t = l.Base = { extend: function (a) { s.prototype = this; var c = new s; a && c.mixIn(a); c.hasOwnProperty("init") || (c.init = function () { c.$super.init.apply(this, arguments) }); c.init.prototype = c; c.$super = this; return c }, create: function () { var a = this.extend(); a.init.apply(a, arguments); return a }, init: function () { }, mixIn: function (a) { for (var c in a) a.hasOwnProperty(c) && (this[c] = a[c]); a.hasOwnProperty("toString") && (this.toString = a.toString) }, clone: function () { return this.init.prototype.extend(this) } },
|
|
||||||
r = l.WordArray = t.extend({
|
|
||||||
init: function (a, c) { a = this.words = a || []; this.sigBytes = c != p ? c : 4 * a.length }, toString: function (a) { return (a || v).stringify(this) }, concat: function (a) { var c = this.words, e = a.words, j = this.sigBytes; a = a.sigBytes; this.clamp(); if (j % 4) for (var k = 0; k < a; k++)c[j + k >>> 2] |= (e[k >>> 2] >>> 24 - 8 * (k % 4) & 255) << 24 - 8 * ((j + k) % 4); else if (65535 < e.length) for (k = 0; k < a; k += 4)c[j + k >>> 2] = e[k >>> 2]; else c.push.apply(c, e); this.sigBytes += a; return this }, clamp: function () {
|
|
||||||
var a = this.words, c = this.sigBytes; a[c >>> 2] &= 4294967295 <<
|
|
||||||
32 - 8 * (c % 4); a.length = u.ceil(c / 4)
|
|
||||||
}, clone: function () { var a = t.clone.call(this); a.words = this.words.slice(0); return a }, random: function (a) { for (var c = [], e = 0; e < a; e += 4)c.push(4294967296 * u.random() | 0); return new r.init(c, a) }
|
|
||||||
}), w = d.enc = {}, v = w.Hex = {
|
|
||||||
stringify: function (a) { var c = a.words; a = a.sigBytes; for (var e = [], j = 0; j < a; j++) { var k = c[j >>> 2] >>> 24 - 8 * (j % 4) & 255; e.push((k >>> 4).toString(16)); e.push((k & 15).toString(16)) } return e.join("") }, parse: function (a) {
|
|
||||||
for (var c = a.length, e = [], j = 0; j < c; j += 2)e[j >>> 3] |= parseInt(a.substr(j,
|
|
||||||
2), 16) << 24 - 4 * (j % 8); return new r.init(e, c / 2)
|
|
||||||
}
|
|
||||||
}, b = w.Latin1 = { stringify: function (a) { var c = a.words; a = a.sigBytes; for (var e = [], j = 0; j < a; j++)e.push(String.fromCharCode(c[j >>> 2] >>> 24 - 8 * (j % 4) & 255)); return e.join("") }, parse: function (a) { for (var c = a.length, e = [], j = 0; j < c; j++)e[j >>> 2] |= (a.charCodeAt(j) & 255) << 24 - 8 * (j % 4); return new r.init(e, c) } }, x = w.Utf8 = { stringify: function (a) { try { return decodeURIComponent(escape(b.stringify(a))) } catch (c) { throw Error("Malformed UTF-8 data"); } }, parse: function (a) { return b.parse(unescape(encodeURIComponent(a))) } },
|
|
||||||
q = l.BufferedBlockAlgorithm = t.extend({
|
|
||||||
reset: function () { this._data = new r.init; this._nDataBytes = 0 }, _append: function (a) { "string" == typeof a && (a = x.parse(a)); this._data.concat(a); this._nDataBytes += a.sigBytes }, _process: function (a) { var c = this._data, e = c.words, j = c.sigBytes, k = this.blockSize, b = j / (4 * k), b = a ? u.ceil(b) : u.max((b | 0) - this._minBufferSize, 0); a = b * k; j = u.min(4 * a, j); if (a) { for (var q = 0; q < a; q += k)this._doProcessBlock(e, q); q = e.splice(0, a); c.sigBytes -= j } return new r.init(q, j) }, clone: function () {
|
|
||||||
var a = t.clone.call(this);
|
|
||||||
a._data = this._data.clone(); return a
|
|
||||||
}, _minBufferSize: 0
|
|
||||||
}); l.Hasher = q.extend({
|
|
||||||
cfg: t.extend(), init: function (a) { this.cfg = this.cfg.extend(a); this.reset() }, reset: function () { q.reset.call(this); this._doReset() }, update: function (a) { this._append(a); this._process(); return this }, finalize: function (a) { a && this._append(a); return this._doFinalize() }, blockSize: 16, _createHelper: function (a) { return function (b, e) { return (new a.init(e)).finalize(b) } }, _createHmacHelper: function (a) {
|
|
||||||
return function (b, e) {
|
|
||||||
return (new n.HMAC.init(a,
|
|
||||||
e)).finalize(b)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}); var n = d.algo = {}; return d
|
|
||||||
}(Math);
|
|
||||||
(function () {
|
|
||||||
var u = CryptoJS, p = u.lib.WordArray; u.enc.Base64 = {
|
|
||||||
stringify: function (d) { var l = d.words, p = d.sigBytes, t = this._map; d.clamp(); d = []; for (var r = 0; r < p; r += 3)for (var w = (l[r >>> 2] >>> 24 - 8 * (r % 4) & 255) << 16 | (l[r + 1 >>> 2] >>> 24 - 8 * ((r + 1) % 4) & 255) << 8 | l[r + 2 >>> 2] >>> 24 - 8 * ((r + 2) % 4) & 255, v = 0; 4 > v && r + 0.75 * v < p; v++)d.push(t.charAt(w >>> 6 * (3 - v) & 63)); if (l = t.charAt(64)) for (; d.length % 4;)d.push(l); return d.join("") }, parse: function (d) {
|
|
||||||
var l = d.length, s = this._map, t = s.charAt(64); t && (t = d.indexOf(t), -1 != t && (l = t)); for (var t = [], r = 0, w = 0; w <
|
|
||||||
l; w++)if (w % 4) { var v = s.indexOf(d.charAt(w - 1)) << 2 * (w % 4), b = s.indexOf(d.charAt(w)) >>> 6 - 2 * (w % 4); t[r >>> 2] |= (v | b) << 24 - 8 * (r % 4); r++ } return p.create(t, r)
|
|
||||||
}, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
(function (u) {
|
|
||||||
function p(b, n, a, c, e, j, k) { b = b + (n & a | ~n & c) + e + k; return (b << j | b >>> 32 - j) + n } function d(b, n, a, c, e, j, k) { b = b + (n & c | a & ~c) + e + k; return (b << j | b >>> 32 - j) + n } function l(b, n, a, c, e, j, k) { b = b + (n ^ a ^ c) + e + k; return (b << j | b >>> 32 - j) + n } function s(b, n, a, c, e, j, k) { b = b + (a ^ (n | ~c)) + e + k; return (b << j | b >>> 32 - j) + n } for (var t = CryptoJS, r = t.lib, w = r.WordArray, v = r.Hasher, r = t.algo, b = [], x = 0; 64 > x; x++)b[x] = 4294967296 * u.abs(u.sin(x + 1)) | 0; r = r.MD5 = v.extend({
|
|
||||||
_doReset: function () { this._hash = new w.init([1732584193, 4023233417, 2562383102, 271733878]) },
|
|
||||||
_doProcessBlock: function (q, n) {
|
|
||||||
for (var a = 0; 16 > a; a++) { var c = n + a, e = q[c]; q[c] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360 } var a = this._hash.words, c = q[n + 0], e = q[n + 1], j = q[n + 2], k = q[n + 3], z = q[n + 4], r = q[n + 5], t = q[n + 6], w = q[n + 7], v = q[n + 8], A = q[n + 9], B = q[n + 10], C = q[n + 11], u = q[n + 12], D = q[n + 13], E = q[n + 14], x = q[n + 15], f = a[0], m = a[1], g = a[2], h = a[3], f = p(f, m, g, h, c, 7, b[0]), h = p(h, f, m, g, e, 12, b[1]), g = p(g, h, f, m, j, 17, b[2]), m = p(m, g, h, f, k, 22, b[3]), f = p(f, m, g, h, z, 7, b[4]), h = p(h, f, m, g, r, 12, b[5]), g = p(g, h, f, m, t, 17, b[6]), m = p(m, g, h, f, w, 22, b[7]),
|
|
||||||
f = p(f, m, g, h, v, 7, b[8]), h = p(h, f, m, g, A, 12, b[9]), g = p(g, h, f, m, B, 17, b[10]), m = p(m, g, h, f, C, 22, b[11]), f = p(f, m, g, h, u, 7, b[12]), h = p(h, f, m, g, D, 12, b[13]), g = p(g, h, f, m, E, 17, b[14]), m = p(m, g, h, f, x, 22, b[15]), f = d(f, m, g, h, e, 5, b[16]), h = d(h, f, m, g, t, 9, b[17]), g = d(g, h, f, m, C, 14, b[18]), m = d(m, g, h, f, c, 20, b[19]), f = d(f, m, g, h, r, 5, b[20]), h = d(h, f, m, g, B, 9, b[21]), g = d(g, h, f, m, x, 14, b[22]), m = d(m, g, h, f, z, 20, b[23]), f = d(f, m, g, h, A, 5, b[24]), h = d(h, f, m, g, E, 9, b[25]), g = d(g, h, f, m, k, 14, b[26]), m = d(m, g, h, f, v, 20, b[27]), f = d(f, m, g, h, D, 5, b[28]), h = d(h, f,
|
|
||||||
m, g, j, 9, b[29]), g = d(g, h, f, m, w, 14, b[30]), m = d(m, g, h, f, u, 20, b[31]), f = l(f, m, g, h, r, 4, b[32]), h = l(h, f, m, g, v, 11, b[33]), g = l(g, h, f, m, C, 16, b[34]), m = l(m, g, h, f, E, 23, b[35]), f = l(f, m, g, h, e, 4, b[36]), h = l(h, f, m, g, z, 11, b[37]), g = l(g, h, f, m, w, 16, b[38]), m = l(m, g, h, f, B, 23, b[39]), f = l(f, m, g, h, D, 4, b[40]), h = l(h, f, m, g, c, 11, b[41]), g = l(g, h, f, m, k, 16, b[42]), m = l(m, g, h, f, t, 23, b[43]), f = l(f, m, g, h, A, 4, b[44]), h = l(h, f, m, g, u, 11, b[45]), g = l(g, h, f, m, x, 16, b[46]), m = l(m, g, h, f, j, 23, b[47]), f = s(f, m, g, h, c, 6, b[48]), h = s(h, f, m, g, w, 10, b[49]), g = s(g, h, f, m,
|
|
||||||
E, 15, b[50]), m = s(m, g, h, f, r, 21, b[51]), f = s(f, m, g, h, u, 6, b[52]), h = s(h, f, m, g, k, 10, b[53]), g = s(g, h, f, m, B, 15, b[54]), m = s(m, g, h, f, e, 21, b[55]), f = s(f, m, g, h, v, 6, b[56]), h = s(h, f, m, g, x, 10, b[57]), g = s(g, h, f, m, t, 15, b[58]), m = s(m, g, h, f, D, 21, b[59]), f = s(f, m, g, h, z, 6, b[60]), h = s(h, f, m, g, C, 10, b[61]), g = s(g, h, f, m, j, 15, b[62]), m = s(m, g, h, f, A, 21, b[63]); a[0] = a[0] + f | 0; a[1] = a[1] + m | 0; a[2] = a[2] + g | 0; a[3] = a[3] + h | 0
|
|
||||||
}, _doFinalize: function () {
|
|
||||||
var b = this._data, n = b.words, a = 8 * this._nDataBytes, c = 8 * b.sigBytes; n[c >>> 5] |= 128 << 24 - c % 32; var e = u.floor(a /
|
|
||||||
4294967296); n[(c + 64 >>> 9 << 4) + 15] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360; n[(c + 64 >>> 9 << 4) + 14] = (a << 8 | a >>> 24) & 16711935 | (a << 24 | a >>> 8) & 4278255360; b.sigBytes = 4 * (n.length + 1); this._process(); b = this._hash; n = b.words; for (a = 0; 4 > a; a++)c = n[a], n[a] = (c << 8 | c >>> 24) & 16711935 | (c << 24 | c >>> 8) & 4278255360; return b
|
|
||||||
}, clone: function () { var b = v.clone.call(this); b._hash = this._hash.clone(); return b }
|
|
||||||
}); t.MD5 = v._createHelper(r); t.HmacMD5 = v._createHmacHelper(r)
|
|
||||||
})(Math);
|
|
||||||
(function () {
|
|
||||||
var u = CryptoJS, p = u.lib, d = p.Base, l = p.WordArray, p = u.algo, s = p.EvpKDF = d.extend({ cfg: d.extend({ keySize: 4, hasher: p.MD5, iterations: 1 }), init: function (d) { this.cfg = this.cfg.extend(d) }, compute: function (d, r) { for (var p = this.cfg, s = p.hasher.create(), b = l.create(), u = b.words, q = p.keySize, p = p.iterations; u.length < q;) { n && s.update(n); var n = s.update(d).finalize(r); s.reset(); for (var a = 1; a < p; a++)n = s.finalize(n), s.reset(); b.concat(n) } b.sigBytes = 4 * q; return b } }); u.EvpKDF = function (d, l, p) {
|
|
||||||
return s.create(p).compute(d,
|
|
||||||
l)
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
CryptoJS.lib.Cipher || function (u) {
|
|
||||||
var p = CryptoJS, d = p.lib, l = d.Base, s = d.WordArray, t = d.BufferedBlockAlgorithm, r = p.enc.Base64, w = p.algo.EvpKDF, v = d.Cipher = t.extend({
|
|
||||||
cfg: l.extend(), createEncryptor: function (e, a) { return this.create(this._ENC_XFORM_MODE, e, a) }, createDecryptor: function (e, a) { return this.create(this._DEC_XFORM_MODE, e, a) }, init: function (e, a, b) { this.cfg = this.cfg.extend(b); this._xformMode = e; this._key = a; this.reset() }, reset: function () { t.reset.call(this); this._doReset() }, process: function (e) { this._append(e); return this._process() },
|
|
||||||
finalize: function (e) { e && this._append(e); return this._doFinalize() }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function (e) { return { encrypt: function (b, k, d) { return ("string" == typeof k ? c : a).encrypt(e, b, k, d) }, decrypt: function (b, k, d) { return ("string" == typeof k ? c : a).decrypt(e, b, k, d) } } }
|
|
||||||
}); d.StreamCipher = v.extend({ _doFinalize: function () { return this._process(!0) }, blockSize: 1 }); var b = p.mode = {}, x = function (e, a, b) {
|
|
||||||
var c = this._iv; c ? this._iv = u : c = this._prevBlock; for (var d = 0; d < b; d++)e[a + d] ^=
|
|
||||||
c[d]
|
|
||||||
}, q = (d.BlockCipherMode = l.extend({ createEncryptor: function (e, a) { return this.Encryptor.create(e, a) }, createDecryptor: function (e, a) { return this.Decryptor.create(e, a) }, init: function (e, a) { this._cipher = e; this._iv = a } })).extend(); q.Encryptor = q.extend({ processBlock: function (e, a) { var b = this._cipher, c = b.blockSize; x.call(this, e, a, c); b.encryptBlock(e, a); this._prevBlock = e.slice(a, a + c) } }); q.Decryptor = q.extend({
|
|
||||||
processBlock: function (e, a) {
|
|
||||||
var b = this._cipher, c = b.blockSize, d = e.slice(a, a + c); b.decryptBlock(e, a); x.call(this,
|
|
||||||
e, a, c); this._prevBlock = d
|
|
||||||
}
|
|
||||||
}); b = b.CBC = q; q = (p.pad = {}).Pkcs7 = { pad: function (a, b) { for (var c = 4 * b, c = c - a.sigBytes % c, d = c << 24 | c << 16 | c << 8 | c, l = [], n = 0; n < c; n += 4)l.push(d); c = s.create(l, c); a.concat(c) }, unpad: function (a) { a.sigBytes -= a.words[a.sigBytes - 1 >>> 2] & 255 } }; d.BlockCipher = v.extend({
|
|
||||||
cfg: v.cfg.extend({ mode: b, padding: q }), reset: function () {
|
|
||||||
v.reset.call(this); var a = this.cfg, b = a.iv, a = a.mode; if (this._xformMode == this._ENC_XFORM_MODE) var c = a.createEncryptor; else c = a.createDecryptor, this._minBufferSize = 1; this._mode = c.call(a,
|
|
||||||
this, b && b.words)
|
|
||||||
}, _doProcessBlock: function (a, b) { this._mode.processBlock(a, b) }, _doFinalize: function () { var a = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { a.pad(this._data, this.blockSize); var b = this._process(!0) } else b = this._process(!0), a.unpad(b); return b }, blockSize: 4
|
|
||||||
}); var n = d.CipherParams = l.extend({ init: function (a) { this.mixIn(a) }, toString: function (a) { return (a || this.formatter).stringify(this) } }), b = (p.format = {}).OpenSSL = {
|
|
||||||
stringify: function (a) {
|
|
||||||
var b = a.ciphertext; a = a.salt; return (a ? s.create([1398893684,
|
|
||||||
1701076831]).concat(a).concat(b) : b).toString(r)
|
|
||||||
}, parse: function (a) { a = r.parse(a); var b = a.words; if (1398893684 == b[0] && 1701076831 == b[1]) { var c = s.create(b.slice(2, 4)); b.splice(0, 4); a.sigBytes -= 16 } return n.create({ ciphertext: a, salt: c }) }
|
|
||||||
}, a = d.SerializableCipher = l.extend({
|
|
||||||
cfg: l.extend({ format: b }), encrypt: function (a, b, c, d) { d = this.cfg.extend(d); var l = a.createEncryptor(c, d); b = l.finalize(b); l = l.cfg; return n.create({ ciphertext: b, key: c, iv: l.iv, algorithm: a, mode: l.mode, padding: l.padding, blockSize: a.blockSize, formatter: d.format }) },
|
|
||||||
decrypt: function (a, b, c, d) { d = this.cfg.extend(d); b = this._parse(b, d.format); return a.createDecryptor(c, d).finalize(b.ciphertext) }, _parse: function (a, b) { return "string" == typeof a ? b.parse(a, this) : a }
|
|
||||||
}), p = (p.kdf = {}).OpenSSL = { execute: function (a, b, c, d) { d || (d = s.random(8)); a = w.create({ keySize: b + c }).compute(a, d); c = s.create(a.words.slice(b), 4 * c); a.sigBytes = 4 * b; return n.create({ key: a, iv: c, salt: d }) } }, c = d.PasswordBasedCipher = a.extend({
|
|
||||||
cfg: a.cfg.extend({ kdf: p }), encrypt: function (b, c, d, l) {
|
|
||||||
l = this.cfg.extend(l); d = l.kdf.execute(d,
|
|
||||||
b.keySize, b.ivSize); l.iv = d.iv; b = a.encrypt.call(this, b, c, d.key, l); b.mixIn(d); return b
|
|
||||||
}, decrypt: function (b, c, d, l) { l = this.cfg.extend(l); c = this._parse(c, l.format); d = l.kdf.execute(d, b.keySize, b.ivSize, c.salt); l.iv = d.iv; return a.decrypt.call(this, b, c, d.key, l) }
|
|
||||||
})
|
|
||||||
}();
|
|
||||||
(function () {
|
|
||||||
for (var u = CryptoJS, p = u.lib.BlockCipher, d = u.algo, l = [], s = [], t = [], r = [], w = [], v = [], b = [], x = [], q = [], n = [], a = [], c = 0; 256 > c; c++)a[c] = 128 > c ? c << 1 : c << 1 ^ 283; for (var e = 0, j = 0, c = 0; 256 > c; c++) { var k = j ^ j << 1 ^ j << 2 ^ j << 3 ^ j << 4, k = k >>> 8 ^ k & 255 ^ 99; l[e] = k; s[k] = e; var z = a[e], F = a[z], G = a[F], y = 257 * a[k] ^ 16843008 * k; t[e] = y << 24 | y >>> 8; r[e] = y << 16 | y >>> 16; w[e] = y << 8 | y >>> 24; v[e] = y; y = 16843009 * G ^ 65537 * F ^ 257 * z ^ 16843008 * e; b[k] = y << 24 | y >>> 8; x[k] = y << 16 | y >>> 16; q[k] = y << 8 | y >>> 24; n[k] = y; e ? (e = z ^ a[a[a[G ^ z]]], j ^= a[a[j]]) : e = j = 1 } var H = [0, 1, 2, 4, 8,
|
|
||||||
16, 32, 64, 128, 27, 54], d = d.AES = p.extend({
|
|
||||||
_doReset: function () {
|
|
||||||
for (var a = this._key, c = a.words, d = a.sigBytes / 4, a = 4 * ((this._nRounds = d + 6) + 1), e = this._keySchedule = [], j = 0; j < a; j++)if (j < d) e[j] = c[j]; else { var k = e[j - 1]; j % d ? 6 < d && 4 == j % d && (k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255]) : (k = k << 8 | k >>> 24, k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255], k ^= H[j / d | 0] << 24); e[j] = e[j - d] ^ k } c = this._invKeySchedule = []; for (d = 0; d < a; d++)j = a - d, k = d % 4 ? e[j] : e[j - 4], c[d] = 4 > d || 4 >= j ? k : b[l[k >>> 24]] ^ x[l[k >>> 16 & 255]] ^ q[l[k >>>
|
|
||||||
8 & 255]] ^ n[l[k & 255]]
|
|
||||||
}, encryptBlock: function (a, b) { this._doCryptBlock(a, b, this._keySchedule, t, r, w, v, l) }, decryptBlock: function (a, c) { var d = a[c + 1]; a[c + 1] = a[c + 3]; a[c + 3] = d; this._doCryptBlock(a, c, this._invKeySchedule, b, x, q, n, s); d = a[c + 1]; a[c + 1] = a[c + 3]; a[c + 3] = d }, _doCryptBlock: function (a, b, c, d, e, j, l, f) {
|
|
||||||
for (var m = this._nRounds, g = a[b] ^ c[0], h = a[b + 1] ^ c[1], k = a[b + 2] ^ c[2], n = a[b + 3] ^ c[3], p = 4, r = 1; r < m; r++)var q = d[g >>> 24] ^ e[h >>> 16 & 255] ^ j[k >>> 8 & 255] ^ l[n & 255] ^ c[p++], s = d[h >>> 24] ^ e[k >>> 16 & 255] ^ j[n >>> 8 & 255] ^ l[g & 255] ^ c[p++], t =
|
|
||||||
d[k >>> 24] ^ e[n >>> 16 & 255] ^ j[g >>> 8 & 255] ^ l[h & 255] ^ c[p++], n = d[n >>> 24] ^ e[g >>> 16 & 255] ^ j[h >>> 8 & 255] ^ l[k & 255] ^ c[p++], g = q, h = s, k = t; q = (f[g >>> 24] << 24 | f[h >>> 16 & 255] << 16 | f[k >>> 8 & 255] << 8 | f[n & 255]) ^ c[p++]; s = (f[h >>> 24] << 24 | f[k >>> 16 & 255] << 16 | f[n >>> 8 & 255] << 8 | f[g & 255]) ^ c[p++]; t = (f[k >>> 24] << 24 | f[n >>> 16 & 255] << 16 | f[g >>> 8 & 255] << 8 | f[h & 255]) ^ c[p++]; n = (f[n >>> 24] << 24 | f[g >>> 16 & 255] << 16 | f[h >>> 8 & 255] << 8 | f[k & 255]) ^ c[p++]; a[b] = q; a[b + 1] = s; a[b + 2] = t; a[b + 3] = n
|
|
||||||
}, keySize: 8
|
|
||||||
}); u.AES = p._createHelper(d)
|
|
||||||
})();
|
|
Before Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 421 KiB |
@ -1,32 +0,0 @@
|
|||||||
.el-tip {
|
|
||||||
position: fixed;
|
|
||||||
left: 50%;
|
|
||||||
top: 50%;
|
|
||||||
width: 500px;
|
|
||||||
padding: 8px 16px;
|
|
||||||
margin: 0;
|
|
||||||
margin-left: -250px;
|
|
||||||
margin-top: -60px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
border-radius: 4px;
|
|
||||||
position: relative;
|
|
||||||
background-color: #fff;
|
|
||||||
overflow: hidden;
|
|
||||||
opacity: 1;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
transition: opacity .2s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-tip--warning {
|
|
||||||
background-color: #fdf6ec;
|
|
||||||
color: #e6a23c;
|
|
||||||
}
|
|
||||||
|
|
||||||
.el-tip__title {
|
|
||||||
line-height: 18px;
|
|
||||||
}
|
|
||||||
.el-tip_img img{
|
|
||||||
width: 80px;
|
|
||||||
height: 80px;
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
function util() {
|
|
||||||
this.flag = true;
|
|
||||||
var body = document.body;
|
|
||||||
var safe = this;
|
|
||||||
var validVersion = function() {
|
|
||||||
var browser = navigator.appName
|
|
||||||
var b_version = navigator.appVersion
|
|
||||||
var version = b_version.split(";");
|
|
||||||
var trim_Version = version[1].replace(/[ ]/g, "");
|
|
||||||
if (trim_Version == 'WOW64') {
|
|
||||||
safe.flag = false
|
|
||||||
} else if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE6.0") {
|
|
||||||
safe.flag = false
|
|
||||||
} else if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE7.0") {
|
|
||||||
safe.flag = false
|
|
||||||
} else if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE8.0") {
|
|
||||||
safe.flag = false
|
|
||||||
} else if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE9.0") {
|
|
||||||
safe.flag = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.setBody = function() {
|
|
||||||
var str = '<div class="el-tip el-tip--warning" id="tip">' +
|
|
||||||
'<div class="el-tip_content">' +
|
|
||||||
'<span class="el-tip__title">' +
|
|
||||||
'您乘坐的浏览器版本太低了,你可以把浏览器从兼容模式调到极速模式' +
|
|
||||||
'<br /> 实在不行就换浏览器吧;' +
|
|
||||||
'</span>' +
|
|
||||||
'<div class="el-tip_img">' +
|
|
||||||
'<img src="/util/screen/huohu.png" alt="">' +
|
|
||||||
'<img src="/util/screen/guge.png" alt="">' +
|
|
||||||
'</div>' +
|
|
||||||
'</div>' +
|
|
||||||
'</div>';
|
|
||||||
body.innerHTML = str + body.innerHTML
|
|
||||||
}
|
|
||||||
this.init = function() {
|
|
||||||
validVersion(); //检测浏览器的版本
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var creen = new util().init();
|
|
||||||
var flag = creen.flag;
|
|
||||||
if (!flag) {
|
|
||||||
creen.setBody();
|
|
||||||
}
|
|
23
src/App.vue
Normal file → Executable file
@ -1,29 +1,18 @@
|
|||||||
<template>
|
<template>
|
||||||
<div id="app">
|
|
||||||
<router-view />
|
<router-view />
|
||||||
</div>
|
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: "app",
|
}
|
||||||
data() {
|
|
||||||
return {};
|
|
||||||
},
|
|
||||||
watch: {},
|
|
||||||
created() {
|
|
||||||
},
|
|
||||||
methods: {},
|
|
||||||
computed: {}
|
|
||||||
};
|
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss">
|
|
||||||
|
<style>
|
||||||
|
html,
|
||||||
|
body,
|
||||||
#app {
|
#app {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
.avue--detail .el-col{
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getList = (current, size, params) => {
|
export const getList = (current, size, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/region/list',
|
url: '/blade-system/region/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -14,7 +14,7 @@ export const getList = (current, size, params) => {
|
|||||||
|
|
||||||
export const getLazyTree = (parentCode, params) => {
|
export const getLazyTree = (parentCode, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/region/lazy-tree',
|
url: '/blade-system/region/lazy-tree',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -25,7 +25,7 @@ export const getLazyTree = (parentCode, params) => {
|
|||||||
|
|
||||||
export const getDetail = (code) => {
|
export const getDetail = (code) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/region/detail',
|
url: '/blade-system/region/detail',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
code
|
code
|
||||||
@ -35,7 +35,7 @@ export const getDetail = (code) => {
|
|||||||
|
|
||||||
export const remove = (id) => {
|
export const remove = (id) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/region/remove',
|
url: '/blade-system/region/remove',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
id,
|
id,
|
||||||
@ -45,7 +45,7 @@ export const remove = (id) => {
|
|||||||
|
|
||||||
export const submit = (row) => {
|
export const submit = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/region/submit',
|
url: '/blade-system/region/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getList = (current, size, params) => {
|
export const getList = (current, size, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-desk/notice/list',
|
url: '/blade-desk/notice/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -15,7 +15,7 @@ export const getList = (current, size, params) => {
|
|||||||
|
|
||||||
export const remove = (ids) => {
|
export const remove = (ids) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-desk/notice/remove',
|
url: '/blade-desk/notice/remove',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids,
|
||||||
@ -26,7 +26,7 @@ export const remove = (ids) => {
|
|||||||
|
|
||||||
export const add = (row) => {
|
export const add = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-desk/notice/submit',
|
url: '/blade-desk/notice/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row,
|
data: row,
|
||||||
cryptoToken: false,
|
cryptoToken: false,
|
||||||
@ -35,7 +35,7 @@ export const add = (row) => {
|
|||||||
|
|
||||||
export const update = (row) => {
|
export const update = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-desk/notice/submit',
|
url: '/blade-desk/notice/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row,
|
data: row,
|
||||||
cryptoToken: false,
|
cryptoToken: false,
|
||||||
@ -44,7 +44,7 @@ export const update = (row) => {
|
|||||||
|
|
||||||
export const getNotice = (id) => {
|
export const getNotice = (id) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-desk/notice/detail',
|
url: '/blade-desk/notice/detail',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
id
|
id
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getUsualList = (current, size) => {
|
export const getUsualList = (current, size) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-log/usual/list',
|
url: '/blade-log/usual/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
current,
|
current,
|
||||||
@ -13,7 +13,7 @@ export const getUsualList = (current, size) => {
|
|||||||
|
|
||||||
export const getApiList = (current, size) => {
|
export const getApiList = (current, size) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-log/api/list',
|
url: '/blade-log/api/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
current,
|
current,
|
||||||
@ -24,7 +24,7 @@ export const getApiList = (current, size) => {
|
|||||||
|
|
||||||
export const getErrorList = (current, size) => {
|
export const getErrorList = (current, size) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-log/error/list',
|
url: '/blade-log/error/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
current,
|
current,
|
||||||
@ -36,7 +36,7 @@ export const getErrorList = (current, size) => {
|
|||||||
|
|
||||||
export const getUsualLogs = (id) => {
|
export const getUsualLogs = (id) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-log/usual/detail',
|
url: '/blade-log/usual/detail',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
id,
|
id,
|
||||||
@ -45,7 +45,7 @@ export const getUsualLogs = (id) => {
|
|||||||
}
|
}
|
||||||
export const getApiLogs = (id) => {
|
export const getApiLogs = (id) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-log/api/detail',
|
url: '/blade-log/api/detail',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
id,
|
id,
|
||||||
@ -54,7 +54,7 @@ export const getApiLogs = (id) => {
|
|||||||
}
|
}
|
||||||
export const getErrorLogs = (id) => {
|
export const getErrorLogs = (id) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-log/error/detail',
|
url: '/blade-log/error/detail',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
id,
|
id,
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getList = (current, size, params) => {
|
export const getList = (current, size, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-report/report/rest/list',
|
url: '/blade-report/report/rest/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -13,7 +13,7 @@ export const getList = (current, size, params) => {
|
|||||||
}
|
}
|
||||||
export const remove = (ids) => {
|
export const remove = (ids) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-report/report/rest/remove',
|
url: '/blade-report/report/rest/remove',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids,
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getList = (current, size, params) => {
|
export const getList = (current, size, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/client/list',
|
url: '/blade-system/client/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -14,7 +14,7 @@ export const getList = (current, size, params) => {
|
|||||||
|
|
||||||
export const getDetail = (id) => {
|
export const getDetail = (id) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/client/detail',
|
url: '/blade-system/client/detail',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
id
|
id
|
||||||
@ -24,7 +24,7 @@ export const getDetail = (id) => {
|
|||||||
|
|
||||||
export const remove = (ids) => {
|
export const remove = (ids) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/client/remove',
|
url: '/blade-system/client/remove',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids,
|
||||||
@ -34,7 +34,7 @@ export const remove = (ids) => {
|
|||||||
|
|
||||||
export const add = (row) => {
|
export const add = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/client/submit',
|
url: '/blade-system/client/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -42,7 +42,7 @@ export const add = (row) => {
|
|||||||
|
|
||||||
export const update = (row) => {
|
export const update = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/client/submit',
|
url: '/blade-system/client/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getList = (current, size, params) => {
|
export const getList = (current, size, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/dept/list',
|
url: '/blade-system/dept/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -13,7 +13,7 @@ export const getList = (current, size, params) => {
|
|||||||
}
|
}
|
||||||
export const remove = (ids) => {
|
export const remove = (ids) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/dept/remove',
|
url: '/blade-system/dept/remove',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids,
|
||||||
@ -23,7 +23,7 @@ export const remove = (ids) => {
|
|||||||
|
|
||||||
export const add = (row) => {
|
export const add = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/dept/submit',
|
url: '/blade-system/dept/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -31,7 +31,7 @@ export const add = (row) => {
|
|||||||
|
|
||||||
export const update = (row) => {
|
export const update = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/dept/submit',
|
url: '/blade-system/dept/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -39,7 +39,7 @@ export const update = (row) => {
|
|||||||
|
|
||||||
export const getDept = (id) => {
|
export const getDept = (id) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/dept/detail',
|
url: '/blade-system/dept/detail',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
id,
|
id,
|
||||||
@ -48,7 +48,7 @@ export const getDept = (id) => {
|
|||||||
}
|
}
|
||||||
export const getDeptTree = (tenantId) => {
|
export const getDeptTree = (tenantId) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/dept/tree',
|
url: '/blade-system/dept/tree',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
tenantId,
|
tenantId,
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getList = (current, size, params) => {
|
export const getList = (current, size, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/dict/list',
|
url: '/blade-system/dict/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -13,7 +13,7 @@ export const getList = (current, size, params) => {
|
|||||||
}
|
}
|
||||||
export const remove = (ids) => {
|
export const remove = (ids) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/dict/remove',
|
url: '/blade-system/dict/remove',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids,
|
||||||
@ -23,7 +23,7 @@ export const remove = (ids) => {
|
|||||||
|
|
||||||
export const add = (row) => {
|
export const add = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/dict/submit',
|
url: '/blade-system/dict/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -31,7 +31,7 @@ export const add = (row) => {
|
|||||||
|
|
||||||
export const update = (row) => {
|
export const update = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/dict/submit',
|
url: '/blade-system/dict/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -40,7 +40,7 @@ export const update = (row) => {
|
|||||||
|
|
||||||
export const getDict = (id) => {
|
export const getDict = (id) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/dict/detail',
|
url: '/blade-system/dict/detail',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
id,
|
id,
|
||||||
@ -49,7 +49,7 @@ export const getDict = (id) => {
|
|||||||
}
|
}
|
||||||
export const getDictTree = () => {
|
export const getDictTree = () => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/dict/tree?code=DICT',
|
url: '/blade-system/dict/tree?code=DICT',
|
||||||
method: 'get'
|
method: 'get'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getList = (current, size, params) => {
|
export const getList = (current, size, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/menu/list',
|
url: '/blade-system/menu/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -13,7 +13,7 @@ export const getList = (current, size, params) => {
|
|||||||
}
|
}
|
||||||
export const remove = (ids) => {
|
export const remove = (ids) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/menu/remove',
|
url: '/blade-system/menu/remove',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids,
|
||||||
@ -23,7 +23,7 @@ export const remove = (ids) => {
|
|||||||
|
|
||||||
export const add = (row) => {
|
export const add = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/menu/submit',
|
url: '/blade-system/menu/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -31,7 +31,7 @@ export const add = (row) => {
|
|||||||
|
|
||||||
export const update = (row) => {
|
export const update = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/menu/submit',
|
url: '/blade-system/menu/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -39,7 +39,7 @@ export const update = (row) => {
|
|||||||
|
|
||||||
export const getMenu = (id) => {
|
export const getMenu = (id) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/menu/detail',
|
url: '/blade-system/menu/detail',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
id,
|
id,
|
||||||
@ -49,7 +49,7 @@ export const getMenu = (id) => {
|
|||||||
|
|
||||||
export const getLazyMenuList = (parentId, params) => {
|
export const getLazyMenuList = (parentId, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/menu/lazy-menu-list',
|
url: '/blade-system/menu/lazy-menu-list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getList = (current, size, params) => {
|
export const getList = (current, size, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/param/list',
|
url: '/blade-system/param/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -13,7 +13,7 @@ export const getList = (current, size, params) => {
|
|||||||
}
|
}
|
||||||
export const remove = (ids) => {
|
export const remove = (ids) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/param/remove',
|
url: '/blade-system/param/remove',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids,
|
||||||
@ -23,7 +23,7 @@ export const remove = (ids) => {
|
|||||||
|
|
||||||
export const add = (row) => {
|
export const add = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/param/submit',
|
url: '/blade-system/param/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -31,7 +31,7 @@ export const add = (row) => {
|
|||||||
|
|
||||||
export const update = (row) => {
|
export const update = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/param/submit',
|
url: '/blade-system/param/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getList = (current, size, params) => {
|
export const getList = (current, size, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/post/list',
|
url: '/blade-system/post/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -14,7 +14,7 @@ export const getList = (current, size, params) => {
|
|||||||
|
|
||||||
export const getPostList = (tenantId) => {
|
export const getPostList = (tenantId) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/post/select',
|
url: '/blade-system/post/select',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
tenantId
|
tenantId
|
||||||
@ -24,7 +24,7 @@ export const getPostList = (tenantId) => {
|
|||||||
|
|
||||||
export const getDetail = (id) => {
|
export const getDetail = (id) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/post/detail',
|
url: '/blade-system/post/detail',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
id
|
id
|
||||||
@ -34,7 +34,7 @@ export const getDetail = (id) => {
|
|||||||
|
|
||||||
export const remove = (ids) => {
|
export const remove = (ids) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/post/remove',
|
url: '/blade-system/post/remove',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids,
|
||||||
@ -44,7 +44,7 @@ export const remove = (ids) => {
|
|||||||
|
|
||||||
export const add = (row) => {
|
export const add = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/post/submit',
|
url: '/blade-system/post/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -52,7 +52,7 @@ export const add = (row) => {
|
|||||||
|
|
||||||
export const update = (row) => {
|
export const update = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/post/submit',
|
url: '/blade-system/post/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getList = (current, size, params) => {
|
export const getList = (current, size, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/role/list',
|
url: '/blade-system/role/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -13,14 +13,14 @@ export const getList = (current, size, params) => {
|
|||||||
}
|
}
|
||||||
export const grantTree = () => {
|
export const grantTree = () => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/menu/grant-tree',
|
url: '/blade-system/menu/grant-tree',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export const grant = (roleIds, menuIds, dataScopeIds) => {
|
export const grant = (roleIds, menuIds, dataScopeIds) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/role/grant',
|
url: '/blade-system/role/grant',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: {
|
data: {
|
||||||
roleIds,
|
roleIds,
|
||||||
@ -32,7 +32,7 @@ export const grant = (roleIds, menuIds, dataScopeIds) => {
|
|||||||
|
|
||||||
export const remove = (ids) => {
|
export const remove = (ids) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/role/remove',
|
url: '/blade-system/role/remove',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids,
|
||||||
@ -42,7 +42,7 @@ export const remove = (ids) => {
|
|||||||
|
|
||||||
export const add = (row) => {
|
export const add = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/role/submit',
|
url: '/blade-system/role/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -50,7 +50,7 @@ export const add = (row) => {
|
|||||||
|
|
||||||
export const update = (row) => {
|
export const update = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/role/submit',
|
url: '/blade-system/role/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -59,7 +59,7 @@ export const update = (row) => {
|
|||||||
|
|
||||||
export const getRole = (roleIds) => {
|
export const getRole = (roleIds) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/menu/role-tree-keys',
|
url: '/blade-system/menu/role-tree-keys',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
roleIds,
|
roleIds,
|
||||||
@ -69,7 +69,7 @@ export const getRole = (roleIds) => {
|
|||||||
|
|
||||||
export const getRoleTree = (tenantId) => {
|
export const getRoleTree = (tenantId) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/role/tree',
|
url: '/blade-system/role/tree',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
tenantId,
|
tenantId,
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getListDataScope = (current, size, params) => {
|
export const getListDataScope = (current, size, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/data-scope/list',
|
url: '/blade-system/data-scope/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -14,7 +14,7 @@ export const getListDataScope = (current, size, params) => {
|
|||||||
|
|
||||||
export const removeDataScope = (ids) => {
|
export const removeDataScope = (ids) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/data-scope/remove',
|
url: '/blade-system/data-scope/remove',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids,
|
||||||
@ -24,7 +24,7 @@ export const removeDataScope = (ids) => {
|
|||||||
|
|
||||||
export const addDataScope = (row) => {
|
export const addDataScope = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/data-scope/submit',
|
url: '/blade-system/data-scope/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -32,7 +32,7 @@ export const addDataScope = (row) => {
|
|||||||
|
|
||||||
export const updateDataScope = (row) => {
|
export const updateDataScope = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/data-scope/submit',
|
url: '/blade-system/data-scope/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -40,7 +40,7 @@ export const updateDataScope = (row) => {
|
|||||||
|
|
||||||
export const getMenuDataScope = (id) => {
|
export const getMenuDataScope = (id) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/data-scope/detail',
|
url: '/blade-system/data-scope/detail',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
id,
|
id,
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getList = (current, size, params) => {
|
export const getList = (current, size, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/tenant/list',
|
url: '/blade-system/tenant/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -13,7 +13,7 @@ export const getList = (current, size, params) => {
|
|||||||
}
|
}
|
||||||
export const remove = (ids) => {
|
export const remove = (ids) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/tenant/remove',
|
url: '/blade-system/tenant/remove',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids,
|
||||||
@ -23,7 +23,7 @@ export const remove = (ids) => {
|
|||||||
|
|
||||||
export const add = (row) => {
|
export const add = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/tenant/submit',
|
url: '/blade-system/tenant/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -31,7 +31,7 @@ export const add = (row) => {
|
|||||||
|
|
||||||
export const update = (row) => {
|
export const update = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/tenant/submit',
|
url: '/blade-system/tenant/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -39,7 +39,7 @@ export const update = (row) => {
|
|||||||
|
|
||||||
export const info = (domain) => {
|
export const info = (domain) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-system/tenant/info',
|
url: '/blade-system/tenant/info',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
domain
|
domain
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getList = (current, size, params) => {
|
export const getList = (current, size, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-user/list',
|
url: '/blade-user/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -13,7 +13,7 @@ export const getList = (current, size, params) => {
|
|||||||
}
|
}
|
||||||
export const remove = (ids) => {
|
export const remove = (ids) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-user/remove',
|
url: '/blade-user/remove',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids,
|
||||||
@ -23,7 +23,7 @@ export const remove = (ids) => {
|
|||||||
|
|
||||||
export const add = (row) => {
|
export const add = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-user/submit',
|
url: '/blade-user/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -31,7 +31,7 @@ export const add = (row) => {
|
|||||||
|
|
||||||
export const update = (row) => {
|
export const update = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-user/update',
|
url: '/blade-user/update',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -39,7 +39,7 @@ export const update = (row) => {
|
|||||||
|
|
||||||
export const grant = (userIds, roleIds) => {
|
export const grant = (userIds, roleIds) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-user/grant',
|
url: '/blade-user/grant',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
userIds,
|
userIds,
|
||||||
@ -50,7 +50,7 @@ export const grant = (userIds, roleIds) => {
|
|||||||
|
|
||||||
export const getUser = (id) => {
|
export const getUser = (id) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-user/detail',
|
url: '/blade-user/detail',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
id,
|
id,
|
||||||
@ -60,14 +60,14 @@ export const getUser = (id) => {
|
|||||||
|
|
||||||
export const getUserInfo = () => {
|
export const getUserInfo = () => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-user/info',
|
url: '/blade-user/info',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export const resetPassword = (userIds) => {
|
export const resetPassword = (userIds) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-user/reset-password',
|
url: '/blade-user/reset-password',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
userIds,
|
userIds,
|
||||||
@ -77,7 +77,7 @@ export const resetPassword = (userIds) => {
|
|||||||
|
|
||||||
export const updatePassword = (oldPassword, newPassword, newPassword1) => {
|
export const updatePassword = (oldPassword, newPassword, newPassword1) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-user/update-password',
|
url: '/blade-user/update-password',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
oldPassword,
|
oldPassword,
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getList = (current, size, params) => {
|
export const getList = (current, size, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-develop/code/list',
|
url: '/blade-develop/code/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -14,7 +14,7 @@ export const getList = (current, size, params) => {
|
|||||||
|
|
||||||
export const build = (ids) => {
|
export const build = (ids) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-develop/code/gen-code',
|
url: '/blade-develop/code/gen-code',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids,
|
||||||
@ -24,7 +24,7 @@ export const build = (ids) => {
|
|||||||
}
|
}
|
||||||
export const remove = (ids) => {
|
export const remove = (ids) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-develop/code/remove',
|
url: '/blade-develop/code/remove',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids,
|
||||||
@ -34,7 +34,7 @@ export const remove = (ids) => {
|
|||||||
|
|
||||||
export const add = (row) => {
|
export const add = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-develop/code/submit',
|
url: '/blade-develop/code/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -42,7 +42,7 @@ export const add = (row) => {
|
|||||||
|
|
||||||
export const update = (row) => {
|
export const update = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-develop/code/submit',
|
url: '/blade-develop/code/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -50,7 +50,7 @@ export const update = (row) => {
|
|||||||
|
|
||||||
export const copy = (id) => {
|
export const copy = (id) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-develop/code/copy',
|
url: '/blade-develop/code/copy',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
id,
|
id,
|
||||||
@ -60,7 +60,7 @@ export const copy = (id) => {
|
|||||||
|
|
||||||
export const getCode = (id) => {
|
export const getCode = (id) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-develop/code/detail',
|
url: '/blade-develop/code/detail',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
id,
|
id,
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
|
|
||||||
export const getList = (current, size, params) => {
|
export const getList = (current, size, params) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-develop/datasource/list',
|
url: '/blade-develop/datasource/list',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
...params,
|
...params,
|
||||||
@ -14,7 +14,7 @@ export const getList = (current, size, params) => {
|
|||||||
|
|
||||||
export const getDetail = (id) => {
|
export const getDetail = (id) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-develop/datasource/detail',
|
url: '/blade-develop/datasource/detail',
|
||||||
method: 'get',
|
method: 'get',
|
||||||
params: {
|
params: {
|
||||||
id
|
id
|
||||||
@ -24,7 +24,7 @@ export const getDetail = (id) => {
|
|||||||
|
|
||||||
export const remove = (ids) => {
|
export const remove = (ids) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-develop/datasource/remove',
|
url: '/blade-develop/datasource/remove',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
ids,
|
ids,
|
||||||
@ -34,7 +34,7 @@ export const remove = (ids) => {
|
|||||||
|
|
||||||
export const add = (row) => {
|
export const add = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-develop/datasource/submit',
|
url: '/blade-develop/datasource/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
@ -42,7 +42,7 @@ export const add = (row) => {
|
|||||||
|
|
||||||
export const update = (row) => {
|
export const update = (row) => {
|
||||||
return request({
|
return request({
|
||||||
url: '/api/blade-develop/datasource/submit',
|
url: '/blade-develop/datasource/submit',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: row
|
data: row
|
||||||
})
|
})
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
import request from '@/router/axios';
|
import request from '@/axios';
|
||||||
import website from "@/config/website";
|
import website from "@/config/website";
|
||||||
|
|
||||||
export const loginByUsername = (tenantId, account, password, type, key, code) => request({
|
export const loginByUsername = (tenantId, account, password, type, key, code) => request({
|
||||||
url: '/api/blade-auth/token',
|
url: '/blade-auth/token',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
headers: {
|
headers: {
|
||||||
'Captcha-Key': key,
|
'Captcha-Key': key,
|
||||||
@ -18,7 +18,7 @@ export const loginByUsername = (tenantId, account, password, type, key, code) =>
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const loginBySocial = (tenantId, source, code, state) => request({
|
export const loginBySocial = (tenantId, source, code, state) => request({
|
||||||
url: '/api/blade-auth/token',
|
url: '/blade-auth/token',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
headers: {
|
headers: {
|
||||||
'Tenant-Id': tenantId
|
'Tenant-Id': tenantId
|
||||||
@ -34,7 +34,7 @@ export const loginBySocial = (tenantId, source, code, state) => request({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const getButtons = () => request({
|
export const getButtons = () => request({
|
||||||
url: '/api/blade-system/menu/buttons',
|
url: '/blade-system/menu/buttons',
|
||||||
method: 'get'
|
method: 'get'
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ export const getUserInfo = () => request({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const refreshToken = (refreshToken) => request({
|
export const refreshToken = (refreshToken) => request({
|
||||||
url: '/api/blade-auth/token',
|
url: '/blade-auth/token',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
refreshToken,
|
refreshToken,
|
||||||
@ -54,7 +54,7 @@ export const refreshToken = (refreshToken) => request({
|
|||||||
})
|
})
|
||||||
|
|
||||||
export const registerGuest = (form, oauthId) => request({
|
export const registerGuest = (form, oauthId) => request({
|
||||||
url: '/api/blade-user/register-guest',
|
url: '/blade-user/register-guest',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
params: {
|
params: {
|
||||||
tenantId: form.tenantId,
|
tenantId: form.tenantId,
|
||||||
@ -66,12 +66,12 @@ export const registerGuest = (form, oauthId) => request({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export const getMenu = () => request({
|
export const getMenu = () => request({
|
||||||
url: '/api/blade-system/menu/routes',
|
url: '/blade-system/menu/routes',
|
||||||
method: 'get'
|
method: 'get'
|
||||||
});
|
});
|
||||||
|
|
||||||
export const getCaptcha = () => request({
|
export const getCaptcha = () => request({
|
||||||
url: '/api/blade-auth/captcha',
|
url: '/blade-auth/captcha',
|
||||||
method: 'get'
|
method: 'get'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
22
src/router/axios.js → src/axios.js
Normal file → Executable file
@ -7,15 +7,17 @@
|
|||||||
*/
|
*/
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import store from '@/store/';
|
import store from '@/store/';
|
||||||
import router from '@/router/router'
|
import router from '@/router/'
|
||||||
import {serialize} from '@/util/util'
|
import { serialize } from 'utils/util'
|
||||||
import {getToken} from '@/util/auth'
|
import { getToken } from 'utils/auth'
|
||||||
import {Message} from 'element-ui'
|
import { ElMessage } from 'element-plus'
|
||||||
import website from '@/config/website';
|
import website from '@/config/website';
|
||||||
import NProgress from 'nprogress' // progress bar
|
import NProgress from 'nprogress' // progress bar
|
||||||
import 'nprogress/nprogress.css' // progress bar style
|
import 'nprogress/nprogress.css' // progress bar style
|
||||||
import { Base64 } from 'js-base64';
|
import { Base64 } from 'js-base64';
|
||||||
import crypto from "@/util/crypto";
|
import { isURL } from 'utils/validate';
|
||||||
|
import { baseUrl } from '@/config/env';
|
||||||
|
import crypto from '@/utils/crypto';
|
||||||
|
|
||||||
axios.defaults.timeout = 10000;
|
axios.defaults.timeout = 10000;
|
||||||
//返回其他状态吗
|
//返回其他状态吗
|
||||||
@ -31,14 +33,18 @@ NProgress.configure({
|
|||||||
//HTTPrequest拦截
|
//HTTPrequest拦截
|
||||||
axios.interceptors.request.use(config => {
|
axios.interceptors.request.use(config => {
|
||||||
NProgress.start() // start progress bar
|
NProgress.start() // start progress bar
|
||||||
|
//地址为已经配置状态则不添加前缀
|
||||||
|
if (!isURL(config.url) && !config.url.startsWith(baseUrl)) {
|
||||||
|
config.url = baseUrl + config.url;
|
||||||
|
}
|
||||||
const meta = (config.meta || {});
|
const meta = (config.meta || {});
|
||||||
const isToken = meta.isToken === false;
|
|
||||||
config.headers['Authorization'] = `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`;
|
config.headers['Authorization'] = `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`;
|
||||||
//headers传递token是否加密
|
//headers传递token是否加密
|
||||||
|
const isToken = meta.isToken === false;
|
||||||
const cryptoToken = config.cryptoToken === true;
|
const cryptoToken = config.cryptoToken === true;
|
||||||
const token = getToken();
|
const token = getToken();
|
||||||
if (token && !isToken) {
|
if (token && !isToken) {
|
||||||
config.headers['Blade-Auth'] = cryptoToken
|
config.headers[website.Authorization] = cryptoToken
|
||||||
? 'crypto ' + crypto.encrypt(token)
|
? 'crypto ' + crypto.encrypt(token)
|
||||||
: 'bearer ' + token;
|
: 'bearer ' + token;
|
||||||
}
|
}
|
||||||
@ -62,7 +68,7 @@ axios.interceptors.response.use(res => {
|
|||||||
if (status === 401) store.dispatch('FedLogOut').then(() => router.push({ path: '/login' }));
|
if (status === 401) store.dispatch('FedLogOut').then(() => router.push({ path: '/login' }));
|
||||||
// 如果请求为非200否者默认统一处理
|
// 如果请求为非200否者默认统一处理
|
||||||
if (status !== 200) {
|
if (status !== 200) {
|
||||||
Message({
|
ElMessage({
|
||||||
message: message,
|
message: message,
|
||||||
type: 'error'
|
type: 'error'
|
||||||
})
|
})
|
126
src/components/basic-block/main.vue
Executable file
@ -0,0 +1,126 @@
|
|||||||
|
<template>
|
||||||
|
<div class="basic-block"
|
||||||
|
:style="styleName">
|
||||||
|
<div class="box"
|
||||||
|
:style="boxStyleName">
|
||||||
|
<router-link :to="to">
|
||||||
|
<span v-text="text"></span>
|
||||||
|
<p v-text="dept"></p>
|
||||||
|
<i :class="icon"></i>
|
||||||
|
</router-link>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'basicBlock',
|
||||||
|
props: {
|
||||||
|
icon: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
background: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
to: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
dept: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
time: {
|
||||||
|
type: [Number, String]
|
||||||
|
},
|
||||||
|
gutter: {
|
||||||
|
type: [Number, String],
|
||||||
|
default: 5,
|
||||||
|
},
|
||||||
|
color: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
width: {
|
||||||
|
type: [Number, String]
|
||||||
|
},
|
||||||
|
height: {
|
||||||
|
type: [Number, String]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
styleName () {
|
||||||
|
return {
|
||||||
|
animationDelay: `${this.time / 25}s`,
|
||||||
|
width: `${this.width}px`,
|
||||||
|
height: `${this.height}px`,
|
||||||
|
margin: `${this.gutter}px`,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
boxStyleName () {
|
||||||
|
return {
|
||||||
|
backgroundColor: this.color,
|
||||||
|
backgroundImage: `url('${this.background}')`,
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.basic-block {
|
||||||
|
opacity: 0;
|
||||||
|
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: #fff;
|
||||||
|
animation: mymove 1s;
|
||||||
|
animation-fill-mode: forwards;
|
||||||
|
.box {
|
||||||
|
position: relative;
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 15px;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
transition: all 1s;
|
||||||
|
background-size: cover;
|
||||||
|
&:hover {
|
||||||
|
transform: rotateY(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #fff;
|
||||||
|
}
|
||||||
|
span {
|
||||||
|
display: block;
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
width: 80%;
|
||||||
|
font-size: 10px;
|
||||||
|
color: #eee;
|
||||||
|
line-height: 22px;
|
||||||
|
}
|
||||||
|
i {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 15px;
|
||||||
|
right: 15px;
|
||||||
|
font-size: 50px !important ;
|
||||||
|
}
|
||||||
|
@keyframes mymove {
|
||||||
|
from {
|
||||||
|
opacity: 0;
|
||||||
|
transform: scale(0);
|
||||||
|
}
|
||||||
|
to {
|
||||||
|
opacity: 1;
|
||||||
|
transform: scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
38
src/components/basic-container/main.vue
Normal file → Executable file
@ -1,6 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="basic-container">
|
<div class="basic-container"
|
||||||
<el-card>
|
:style="styleName"
|
||||||
|
:class="{'basic-container--block':block}">
|
||||||
|
<el-card class="basic-container__card">
|
||||||
<slot></slot>
|
<slot></slot>
|
||||||
</el-card>
|
</el-card>
|
||||||
</div>
|
</div>
|
||||||
@ -8,16 +10,42 @@
|
|||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
name: "basicContainer"
|
name: "basicContainer",
|
||||||
|
props: {
|
||||||
|
radius: {
|
||||||
|
type: [String, Number],
|
||||||
|
default: 10
|
||||||
|
},
|
||||||
|
background: {
|
||||||
|
type: String
|
||||||
|
},
|
||||||
|
block: {
|
||||||
|
type: Boolean,
|
||||||
|
default: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
styleName () {
|
||||||
|
return {
|
||||||
|
borderRadius: `${this.radius}px`,
|
||||||
|
background: this.background,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.basic-container {
|
.basic-container {
|
||||||
padding: 10px 6px;
|
padding: 10px 6px;
|
||||||
border-radius: 10px;
|
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
.el-card {
|
&--block {
|
||||||
|
height: 100%;
|
||||||
|
.basic-container__card {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__card {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
&:first-child {
|
&:first-child {
|
||||||
|
139
src/components/basic-video/main.vue
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
<template>
|
||||||
|
<div :style="styleName"
|
||||||
|
class="basic-video">
|
||||||
|
<div class="basic-video__border">
|
||||||
|
<span :style="borderStyleName"></span>
|
||||||
|
<span :style="borderStyleName"></span>
|
||||||
|
<span :style="borderStyleName"></span>
|
||||||
|
<span :style="borderStyleName"></span>
|
||||||
|
</div>
|
||||||
|
<img :style="imgStyleName"
|
||||||
|
class="basic-video__img"
|
||||||
|
:src="background" />
|
||||||
|
<video class="basic-video__main"
|
||||||
|
ref="main"
|
||||||
|
autoplay
|
||||||
|
muted></video>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import RecordVideo from './plugin'
|
||||||
|
export default {
|
||||||
|
name: 'basic-video',
|
||||||
|
props: {
|
||||||
|
background: {
|
||||||
|
type: String
|
||||||
|
},
|
||||||
|
width: {
|
||||||
|
type: [String, Number],
|
||||||
|
default: 500
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
styleName () {
|
||||||
|
return {
|
||||||
|
width: `${this.width}px`
|
||||||
|
}
|
||||||
|
},
|
||||||
|
imgStyleName () {
|
||||||
|
return {
|
||||||
|
width: `${this.width / 2}px`
|
||||||
|
}
|
||||||
|
},
|
||||||
|
borderStyleName () {
|
||||||
|
return {
|
||||||
|
width: `${this.width / 15}px`,
|
||||||
|
height: `${this.width / 15}px`,
|
||||||
|
borderWidth: `${5}px`
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
videoObj: null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
mounted () {
|
||||||
|
this.init();
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
init () {
|
||||||
|
this.videoObj = new RecordVideo(this.$refs.main);
|
||||||
|
const videoPromise = this.videoObj.init();
|
||||||
|
videoPromise
|
||||||
|
.then(() => {
|
||||||
|
this.videoObj.mediaRecorder.addEventListener('stop', this.getData, false);
|
||||||
|
})
|
||||||
|
},
|
||||||
|
startRecord () {
|
||||||
|
this.videoObj.startRecord()
|
||||||
|
},
|
||||||
|
stopRecord () {
|
||||||
|
this.videoObj.stopRecord();
|
||||||
|
},
|
||||||
|
getData () {
|
||||||
|
const blob = new Blob(this.videoObj.chunks, {
|
||||||
|
type: 'video/mp4'
|
||||||
|
});
|
||||||
|
const reader = new FileReader();
|
||||||
|
reader.readAsDataURL(blob);
|
||||||
|
reader.addEventListener('loadend', () => {
|
||||||
|
var video_base64 = reader.result;
|
||||||
|
this.$emit('data-change', video_base64)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.basic-video {
|
||||||
|
margin: 0 auto;
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
&__border {
|
||||||
|
span {
|
||||||
|
position: absolute;
|
||||||
|
width: 30px;
|
||||||
|
height: 30px;
|
||||||
|
border-width: 4px;
|
||||||
|
color: #0073eb;
|
||||||
|
border-style: solid;
|
||||||
|
&:nth-child(1) {
|
||||||
|
left: 15px;
|
||||||
|
top: 15px;
|
||||||
|
border-right: 0;
|
||||||
|
border-bottom: 0;
|
||||||
|
}
|
||||||
|
&:nth-child(2) {
|
||||||
|
right: 15px;
|
||||||
|
top: 15px;
|
||||||
|
border-left: 0;
|
||||||
|
border-bottom: 0;
|
||||||
|
}
|
||||||
|
&:nth-child(3) {
|
||||||
|
bottom: 15px;
|
||||||
|
left: 15px;
|
||||||
|
border-right: 0;
|
||||||
|
border-top: 0;
|
||||||
|
}
|
||||||
|
&:nth-child(4) {
|
||||||
|
bottom: 15px;
|
||||||
|
right: 15px;
|
||||||
|
border-left: 0;
|
||||||
|
border-top: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&__img {
|
||||||
|
width: 100px;
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
top: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
&__main {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
90
src/components/basic-video/plugin.js
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
export default class RecordVideo {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构造函数
|
||||||
|
*
|
||||||
|
* @param {Object} videoObj 视频对象
|
||||||
|
*/
|
||||||
|
constructor(videoObj) {
|
||||||
|
this.video = videoObj;
|
||||||
|
this.mediaRecorder = null;
|
||||||
|
this.chunks = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化
|
||||||
|
*
|
||||||
|
* @return {Object} promise
|
||||||
|
*/
|
||||||
|
init () {
|
||||||
|
// 返回Promise对象
|
||||||
|
// resolve 正常处理
|
||||||
|
// reject 处理异常情况
|
||||||
|
return new Promise((resovle, reject) => {
|
||||||
|
navigator
|
||||||
|
.mediaDevices
|
||||||
|
.getUserMedia({
|
||||||
|
audio: true,
|
||||||
|
video: true
|
||||||
|
// video: {
|
||||||
|
// width: this.videoWidth,
|
||||||
|
// height: this.videoHeight
|
||||||
|
// }
|
||||||
|
})
|
||||||
|
// 返回一个媒体内容的流
|
||||||
|
.then(stream => {
|
||||||
|
// 检测是否支持 srcObject,该属性在新的浏览器支持
|
||||||
|
if ('srcObject' in this.video) {
|
||||||
|
this.video.srcObject = stream;
|
||||||
|
} else {
|
||||||
|
// 兼容旧的浏览器
|
||||||
|
this.video.src = window.URL.createObjectURL(stream);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 当视频的元数据已经加载时触发
|
||||||
|
this.video.addEventListener('loadmetadata', () => {
|
||||||
|
this.video.play();
|
||||||
|
});
|
||||||
|
this.mediaRecorder = new MediaRecorder(stream);
|
||||||
|
this.mediaRecorder.addEventListener('dataavailable', e => {
|
||||||
|
this.chunks.push(e.data);
|
||||||
|
});
|
||||||
|
resovle();
|
||||||
|
})
|
||||||
|
// 异常抓取,包括用于禁用麦克风、摄像头
|
||||||
|
.catch(error => {
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 视频开始录制
|
||||||
|
*/
|
||||||
|
startRecord () {
|
||||||
|
if (this.mediaRecorder.state === 'inactive') {
|
||||||
|
this.mediaRecorder.start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 视频结束录制
|
||||||
|
*/
|
||||||
|
stopRecord () {
|
||||||
|
if (this.mediaRecorder.state === 'recording') {
|
||||||
|
this.mediaRecorder.stop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 检测当前浏览器对否支持
|
||||||
|
*
|
||||||
|
* @return {boolean} 当前浏览器是否支持
|
||||||
|
*/
|
||||||
|
isSupport () {
|
||||||
|
const flag = navigator.mediaDevices && navigator.mediaDevices.getUserMedia;
|
||||||
|
if (flag) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
2
src/components/error-page/403.vue
Normal file → Executable file
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="error-page">
|
<div class="error-page">
|
||||||
<div class="img"
|
<div class="img"
|
||||||
style=" background-image: url('/img/bg/403.svg');"></div>
|
style=" background-image: url('/img/403.svg');"></div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<h1>403</h1>
|
<h1>403</h1>
|
||||||
<div class="desc">抱歉,你无权访问该页面</div>
|
<div class="desc">抱歉,你无权访问该页面</div>
|
||||||
|
2
src/components/error-page/404.vue
Normal file → Executable file
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="error-page">
|
<div class="error-page">
|
||||||
<div class="img"
|
<div class="img"
|
||||||
style=" background-image: url('/img/bg/404.svg');"></div>
|
style=" background-image: url('/img/404.svg');"></div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<h1>404</h1>
|
<h1>404</h1>
|
||||||
<div class="desc">抱歉,你访问的页面不存在</div>
|
<div class="desc">抱歉,你访问的页面不存在</div>
|
||||||
|
2
src/components/error-page/500.vue
Normal file → Executable file
@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="error-page">
|
<div class="error-page">
|
||||||
<div class="img"
|
<div class="img"
|
||||||
style=" background-image: url('/img/bg/500.svg');"></div>
|
style=" background-image: url('/img/500.svg');"></div>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<h1>500</h1>
|
<h1>500</h1>
|
||||||
<div class="desc">抱歉,服务器出错了</div>
|
<div class="desc">抱歉,服务器出错了</div>
|
||||||
|
0
src/components/error-page/style.scss
Normal file → Executable file
53
src/components/iframe/main.vue
Normal file → Executable file
@ -2,44 +2,32 @@
|
|||||||
<basic-container>
|
<basic-container>
|
||||||
<iframe :src="src"
|
<iframe :src="src"
|
||||||
class="iframe"
|
class="iframe"
|
||||||
ref="iframe"></iframe>
|
ref="iframe" />
|
||||||
</basic-container>
|
</basic-container>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapGetters } from "vuex";
|
|
||||||
import NProgress from "nprogress"; // progress bar
|
import NProgress from "nprogress"; // progress bar
|
||||||
import "nprogress/nprogress.css"; // progress bar style
|
import "nprogress/nprogress.css"; // progress bar style
|
||||||
export default {
|
export default {
|
||||||
name: "AvueIframe",
|
name: "AvueIframe",
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {};
|
||||||
urlPath: this.getUrlPath() //iframe src 路径
|
|
||||||
};
|
|
||||||
},
|
},
|
||||||
created () {
|
created () {
|
||||||
NProgress.configure({ showSpinner: false });
|
NProgress.configure({ showSpinner: false });
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
this.load();
|
this.load();
|
||||||
this.resize();
|
|
||||||
},
|
},
|
||||||
props: ["routerPath"],
|
|
||||||
watch: {
|
watch: {
|
||||||
$route: function () {
|
$route: function () {
|
||||||
this.load();
|
this.load();
|
||||||
},
|
|
||||||
routerPath: function() {
|
|
||||||
// 监听routerPath变化,改变src路径
|
|
||||||
this.urlPath = this.getUrlPath();
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters(["screen"]),
|
|
||||||
src () {
|
src () {
|
||||||
return this.$route.query.src
|
return this.$route.query.url.replace(/#/g, "&")
|
||||||
? this.$route.query.src.replace("$", "#")
|
|
||||||
: this.urlPath;
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@ -51,35 +39,9 @@ export default {
|
|||||||
hide () {
|
hide () {
|
||||||
NProgress.done();
|
NProgress.done();
|
||||||
},
|
},
|
||||||
// 加载浏览器窗口变化自适应
|
|
||||||
resize() {
|
|
||||||
window.onresize = () => {
|
|
||||||
this.iframeInit();
|
|
||||||
};
|
|
||||||
},
|
|
||||||
// 加载组件
|
// 加载组件
|
||||||
load () {
|
load () {
|
||||||
this.show();
|
this.show();
|
||||||
var flag = true; //URL是否包含问号
|
|
||||||
if (this.$route.query.src.indexOf("?") == -1) {
|
|
||||||
flag = false;
|
|
||||||
}
|
|
||||||
var list = [];
|
|
||||||
for (var key in this.$route.query) {
|
|
||||||
if (key != "src" && key != "name" && key != "i18n") {
|
|
||||||
list.push(`${key}= this.$route.query[key]`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
list = list.join("&").toString();
|
|
||||||
if (flag) {
|
|
||||||
this.$route.query.src = `${this.$route.query.src}${
|
|
||||||
list.length > 0 ? `&list` : ""
|
|
||||||
}`;
|
|
||||||
} else {
|
|
||||||
this.$route.query.src = `${this.$route.query.src}${
|
|
||||||
list.length > 0 ? `?list` : ""
|
|
||||||
}`;
|
|
||||||
}
|
|
||||||
//超时3s自动隐藏等待狂,加强用户体验
|
//超时3s自动隐藏等待狂,加强用户体验
|
||||||
let time = 3;
|
let time = 3;
|
||||||
const timeFunc = setInterval(() => {
|
const timeFunc = setInterval(() => {
|
||||||
@ -94,8 +56,7 @@ export default {
|
|||||||
//iframe窗口初始化
|
//iframe窗口初始化
|
||||||
iframeInit () {
|
iframeInit () {
|
||||||
const iframe = this.$refs.iframe;
|
const iframe = this.$refs.iframe;
|
||||||
const clientHeight =
|
const clientHeight = document.documentElement.clientHeight - 150;
|
||||||
document.documentElement.clientHeight - (screen > 1 ? 200 : 130);
|
|
||||||
if (!iframe) return;
|
if (!iframe) return;
|
||||||
iframe.style.height = `${clientHeight}px`;
|
iframe.style.height = `${clientHeight}px`;
|
||||||
if (iframe.attachEvent) {
|
if (iframe.attachEvent) {
|
||||||
@ -107,12 +68,6 @@ export default {
|
|||||||
this.hide();
|
this.hide();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
},
|
|
||||||
getUrlPath: function() {
|
|
||||||
//获取 iframe src 路径
|
|
||||||
let url = window.location.href;
|
|
||||||
url = url.replace("/myiframe", "");
|
|
||||||
return url;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -1,37 +1,48 @@
|
|||||||
<template>
|
<template>
|
||||||
<el-dialog title="账号注册"
|
<el-dialog title="账号注册"
|
||||||
append-to-body
|
append-to-body
|
||||||
:visible.sync="accountBox"
|
v-model="accountBox"
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
:close-on-press-escape="false"
|
:close-on-press-escape="false"
|
||||||
:show-close="false"
|
:show-close="false"
|
||||||
width="20%">
|
width="20%">
|
||||||
<el-form :model="form" ref="form" label-width="80px">
|
<el-form :model="form"
|
||||||
|
ref="form"
|
||||||
|
label-width="80px">
|
||||||
<el-form-item label="租户编号">
|
<el-form-item label="租户编号">
|
||||||
<el-input v-model="form.tenantId" placeholder="请输入租户编号"></el-input>
|
<el-input v-model="form.tenantId"
|
||||||
|
placeholder="请输入租户编号"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="用户姓名">
|
<el-form-item label="用户姓名">
|
||||||
<el-input v-model="form.name" placeholder="请输入用户姓名"></el-input>
|
<el-input v-model="form.name"
|
||||||
|
placeholder="请输入用户姓名"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="账号名称">
|
<el-form-item label="账号名称">
|
||||||
<el-input v-model="form.account" placeholder="请输入账号名称"></el-input>
|
<el-input v-model="form.account"
|
||||||
|
placeholder="请输入账号名称"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="账号密码">
|
<el-form-item label="账号密码">
|
||||||
<el-input v-model="form.password" placeholder="请输入账号密码"></el-input>
|
<el-input v-model="form.password"
|
||||||
|
placeholder="请输入账号密码"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="确认密码">
|
<el-form-item label="确认密码">
|
||||||
<el-input v-model="form.password2" placeholder="请输入确认密码"></el-input>
|
<el-input v-model="form.password2"
|
||||||
|
placeholder="请输入确认密码"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<span slot="footer" class="dialog-footer">
|
<template #footer>
|
||||||
<el-button type="primary" :loading="loading" @click="handleRegister">确 定</el-button>
|
<span class="dialog-footer">
|
||||||
|
<el-button type="primary"
|
||||||
|
:loading="loading"
|
||||||
|
@click="handleRegister">确 定</el-button>
|
||||||
</span>
|
</span>
|
||||||
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { mapGetters } from "vuex";
|
import { mapGetters } from "vuex";
|
||||||
import {validatenull} from "@/util/validate";
|
import { validatenull } from "@/utils/validate";
|
||||||
import { registerGuest } from "@/api/user";
|
import { registerGuest } from "@/api/user";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
23
src/config/env.js
Normal file → Executable file
@ -1,21 +1,2 @@
|
|||||||
// 配置编译环境和线上环境之间的切换
|
let baseUrl = import.meta.env.VITE_APP_API
|
||||||
|
export { baseUrl }
|
||||||
let baseUrl = '';
|
|
||||||
let iconfontVersion = ['567566_pwc3oottzol', '1066523_6bvkeuqao36'];
|
|
||||||
let iconfontUrl = `//at.alicdn.com/t/font_$key.css`;
|
|
||||||
let codeUrl = `${baseUrl}/code`
|
|
||||||
const env = process.env
|
|
||||||
if (env.NODE_ENV == 'development') {
|
|
||||||
baseUrl = ``; // 开发环境地址
|
|
||||||
} else if (env.NODE_ENV == 'production') {
|
|
||||||
baseUrl = ``; //生产环境地址
|
|
||||||
} else if (env.NODE_ENV == 'test') {
|
|
||||||
baseUrl = ``; //测试环境地址
|
|
||||||
}
|
|
||||||
export {
|
|
||||||
baseUrl,
|
|
||||||
iconfontUrl,
|
|
||||||
iconfontVersion,
|
|
||||||
codeUrl,
|
|
||||||
env
|
|
||||||
}
|
|
41
src/config/website.js
Normal file → Executable file
@ -3,39 +3,44 @@
|
|||||||
*/
|
*/
|
||||||
export default {
|
export default {
|
||||||
title: "saber",
|
title: "saber",
|
||||||
|
logo: "A",
|
||||||
|
key: 'saber',//配置主键,目前用于存储
|
||||||
indexTitle: 'Saber Admin',
|
indexTitle: 'Saber Admin',
|
||||||
clientId: 'saber', // 客户端id
|
clientId: 'saber', // 客户端id
|
||||||
clientSecret: 'saber_secret', // 客户端密钥
|
clientSecret: 'saber_secret', // 客户端密钥
|
||||||
tenantMode: true, // 是否开启租户模式
|
tenantMode: true, // 是否开启租户模式
|
||||||
captchaMode: true, // 是否开启验证码模式
|
captchaMode: true, // 是否开启验证码模式
|
||||||
logo: "S",
|
tokenTime: 3000,//token过期时间
|
||||||
key: 'saber',//配置主键,目前用于存储
|
Authorization: 'Blade-Auth',
|
||||||
lockPage: '/lock',
|
|
||||||
tokenTime: 100,
|
|
||||||
//http的status默认放行不才用统一处理的,
|
//http的status默认放行不才用统一处理的,
|
||||||
statusWhiteList: [],
|
statusWhiteList: [],
|
||||||
//配置首页不可关闭
|
//配置首页不可关闭
|
||||||
isFirstPage: false,
|
setting: {
|
||||||
fistPage: {
|
sidebar: 'vertical',
|
||||||
label: "首页",
|
tag: true,
|
||||||
value: "/wel/index",
|
debug: true,
|
||||||
params: {},
|
collapse: true,
|
||||||
query: {},
|
search: true,
|
||||||
meta: {
|
lock: true,
|
||||||
i18n: 'dashboard'
|
screenshot: true,
|
||||||
|
fullscren: true,
|
||||||
|
theme: true,
|
||||||
|
menu: true
|
||||||
},
|
},
|
||||||
group: [],
|
fistPage: {
|
||||||
close: false
|
name: "首页",
|
||||||
|
path: "/wel/index"
|
||||||
},
|
},
|
||||||
//配置菜单的属性
|
//配置菜单的属性
|
||||||
menu: {
|
menu: {
|
||||||
iconDefault: 'iconfont icon-caidan',
|
iconDefault: 'icon-caidan',
|
||||||
props: {
|
|
||||||
label: 'name',
|
label: 'name',
|
||||||
path: 'path',
|
path: 'path',
|
||||||
icon: 'source',
|
icon: 'source',
|
||||||
children: 'children'
|
children: 'children',
|
||||||
}
|
query: 'query',
|
||||||
|
href: 'path',
|
||||||
|
meta: 'meta'
|
||||||
},
|
},
|
||||||
//auth配置
|
//auth配置
|
||||||
auth: {
|
auth: {
|
||||||
|
0
src/docker/Dockerfile
Normal file → Executable file
10
src/error.js
Normal file → Executable file
@ -1,8 +1,7 @@
|
|||||||
import Vue from 'vue';
|
|
||||||
import store from './store'
|
import store from './store'
|
||||||
Vue.config.errorHandler = function(err, vm, info) {
|
export default {
|
||||||
|
install: (app) => {
|
||||||
Vue.nextTick(() => {
|
app.config.errorHandler = (err, vm, info) => {
|
||||||
store.commit('ADD_LOGS', {
|
store.commit('ADD_LOGS', {
|
||||||
type: 'error',
|
type: 'error',
|
||||||
message: err.message,
|
message: err.message,
|
||||||
@ -20,5 +19,6 @@ Vue.config.errorHandler = function(err, vm, info) {
|
|||||||
console.log(err)
|
console.log(err)
|
||||||
console.groupEnd();
|
console.groupEnd();
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
}
|
||||||
}
|
}
|
142
src/lang/en.js
Normal file → Executable file
@ -1,106 +1,101 @@
|
|||||||
export default {
|
export default {
|
||||||
title: 'Saber Admin',
|
title: 'Avue is a framework',
|
||||||
|
tip: 'tip',
|
||||||
logoutTip: 'Exit the system, do you want to continue?',
|
logoutTip: 'Exit the system, do you want to continue?',
|
||||||
submitText: 'submit',
|
submitText: 'submit',
|
||||||
cancelText: 'cancel',
|
cancelText: 'cancel',
|
||||||
search: 'Please input search content',
|
search: 'Please input search content',
|
||||||
menuTip: 'none menu list',
|
menuTip: 'none menu list',
|
||||||
common: {
|
feedback: 'feedback',
|
||||||
condition: 'condition',
|
submit: 'submit',
|
||||||
display: 'display',
|
wel: {
|
||||||
hide: 'hide'
|
info: 'Good morning, Smallwei, Avue is a framework',
|
||||||
|
dept: 'a certain technology department',
|
||||||
|
team: 'Team ranking',
|
||||||
|
project: 'Project access',
|
||||||
|
count: 'Item number',
|
||||||
|
data: {
|
||||||
|
subtitle: 'real time',
|
||||||
|
column1: 'Classified statistics',
|
||||||
|
column2: 'Annex statistics',
|
||||||
|
column3: 'Article statistics',
|
||||||
|
key1: 'C',
|
||||||
|
key2: 'A',
|
||||||
|
key3: 'A',
|
||||||
|
text1: 'Total Record Number of Classifications',
|
||||||
|
text2: 'Number of attachments Uploaded',
|
||||||
|
text3: 'Comment frequency'
|
||||||
},
|
},
|
||||||
tip: {
|
data2: {
|
||||||
select: 'Please select',
|
column1: 'Registration today',
|
||||||
input: 'Please input'
|
column2: 'Login today',
|
||||||
|
column3: 'Subscription today',
|
||||||
|
column4: 'Todays review'
|
||||||
},
|
},
|
||||||
upload: {
|
data3: {
|
||||||
upload: 'upload',
|
column1: 'Conversion rate(Day 28%)',
|
||||||
tip: 'Drag files here,/'
|
column2: 'Attendance rate(Day 11%)',
|
||||||
|
column3: 'Attendance rate(Day 33%)'
|
||||||
},
|
},
|
||||||
date: {
|
data4: {
|
||||||
start: 'Start date',
|
column1: 'Error log',
|
||||||
end: 'End date',
|
column2: 'Data display',
|
||||||
t: 'today',
|
column3: 'Privilege management',
|
||||||
y: 'yesterday',
|
column4: 'user management'
|
||||||
n: 'nearly 7',
|
|
||||||
a: 'whole'
|
|
||||||
},
|
},
|
||||||
form: {
|
table: {
|
||||||
printBtn: 'print',
|
rw: 'Work Tasks',
|
||||||
mockBtn: 'mock',
|
nr: 'Work content',
|
||||||
submitBtn: 'submit',
|
sj: 'Working hours',
|
||||||
emptyBtn: 'empty'
|
}
|
||||||
},
|
},
|
||||||
crud: {
|
route: {
|
||||||
filter: {
|
setting: 'setting',
|
||||||
addBtn: 'add',
|
detail: 'detail',
|
||||||
clearBtn: 'clear',
|
info: 'info',
|
||||||
resetBtn: 'reset',
|
website: 'website',
|
||||||
cancelBtn: 'cancel',
|
dashboard: 'dashboard',
|
||||||
submitBtn: 'submit'
|
more: 'more',
|
||||||
},
|
tags: 'tags',
|
||||||
column: {
|
store: 'store',
|
||||||
name: 'name',
|
permission: 'permission',
|
||||||
hide: 'hide',
|
api: 'api',
|
||||||
fixed: 'fixed',
|
logs: 'logs',
|
||||||
filters: 'filters',
|
table: 'table',
|
||||||
sortable: 'sortable',
|
crud: 'crud',
|
||||||
index: 'index',
|
params: 'params',
|
||||||
width: 'width'
|
form: 'form',
|
||||||
},
|
top: 'backtop',
|
||||||
tipStartTitle: 'Currently selected',
|
affix: 'affix',
|
||||||
tipEndTitle: 'items',
|
data: 'data',
|
||||||
editTitle: 'edit',
|
cache: 'cache',
|
||||||
copyTitle: 'copy',
|
error: 'error',
|
||||||
addTitle: 'add',
|
test: 'test',
|
||||||
viewTitle: 'view',
|
out: 'out',
|
||||||
filterTitle: 'filter',
|
about: 'about'
|
||||||
showTitle: 'showTitle',
|
|
||||||
menu: 'menu',
|
|
||||||
addBtn: 'add',
|
|
||||||
show: 'show',
|
|
||||||
hide: 'hide',
|
|
||||||
open: 'open',
|
|
||||||
shrink: 'shrink',
|
|
||||||
printBtn: 'print',
|
|
||||||
excelBtn: 'excel',
|
|
||||||
updateBtn: 'update',
|
|
||||||
cancelBtn: 'cancel',
|
|
||||||
searchBtn: 'search',
|
|
||||||
emptyBtn: 'empty',
|
|
||||||
menuBtn: 'menu',
|
|
||||||
saveBtn: 'save',
|
|
||||||
viewBtn: 'view',
|
|
||||||
editBtn: 'edit',
|
|
||||||
copyBtn: 'copy',
|
|
||||||
delBtn: 'delete'
|
|
||||||
},
|
},
|
||||||
login: {
|
login: {
|
||||||
title: 'Login ',
|
title: 'Login ',
|
||||||
info: 'BladeX Development Platform',
|
info: 'Rapid Development Framework of General Management System',
|
||||||
tenantId: 'Please input tenantId',
|
|
||||||
username: 'Please input username',
|
username: 'Please input username',
|
||||||
password: 'Please input a password',
|
password: 'Please input a password',
|
||||||
wechat: 'Wechat',
|
wechat: 'Wechat',
|
||||||
qq: 'QQ',
|
qq: 'QQ',
|
||||||
github: 'github',
|
|
||||||
gitee: 'gitee',
|
|
||||||
phone: 'Please input a phone',
|
phone: 'Please input a phone',
|
||||||
code: 'Please input a code',
|
code: 'Please input a code',
|
||||||
submit: 'Login',
|
submit: 'Login',
|
||||||
userLogin: 'userLogin',
|
userLogin: 'userLogin',
|
||||||
phoneLogin: 'phoneLogin',
|
phoneLogin: 'phoneLogin',
|
||||||
thirdLogin: 'thirdLogin',
|
thirdLogin: 'thirdLogin',
|
||||||
ssoLogin: 'ssoLogin',
|
faceLogin: 'faceLogin',
|
||||||
msgText: 'send code',
|
msgText: 'send code',
|
||||||
msgSuccess: 'reissued code',
|
msgSuccess: 'reissued code',
|
||||||
},
|
},
|
||||||
navbar: {
|
navbar: {
|
||||||
|
setting: 'setting',
|
||||||
info: 'info',
|
info: 'info',
|
||||||
logOut: 'logout',
|
logOut: 'logout',
|
||||||
userinfo: 'userinfo',
|
userinfo: 'userinfo',
|
||||||
switchDept : 'switch dept',
|
|
||||||
dashboard: 'dashboard',
|
dashboard: 'dashboard',
|
||||||
lock: 'lock',
|
lock: 'lock',
|
||||||
bug: 'none bug',
|
bug: 'none bug',
|
||||||
@ -115,8 +110,7 @@ export default {
|
|||||||
tagsView: {
|
tagsView: {
|
||||||
search: 'Search',
|
search: 'Search',
|
||||||
menu: 'menu',
|
menu: 'menu',
|
||||||
clearCache: 'Clear Cache',
|
|
||||||
closeOthers: 'Close Others',
|
closeOthers: 'Close Others',
|
||||||
closeAll: 'Close All'
|
closeAll: 'Close All'
|
||||||
}
|
}
|
||||||
};
|
}
|
41
src/lang/index.js
Normal file → Executable file
@ -1,28 +1,31 @@
|
|||||||
import Vue from 'vue'
|
import { createI18n } from 'vue-i18n'
|
||||||
import VueI18n from 'vue-i18n'
|
import Store from '@/store'
|
||||||
import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang
|
import elementEnLocale from 'element-plus/es/locale/lang/en'
|
||||||
import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang
|
import elementZhLocale from 'element-plus/es/locale/lang/zh-cn'
|
||||||
|
import elementJaLocale from 'element-plus/es/locale/lang/ja'
|
||||||
import enLocale from './en'
|
import enLocale from './en'
|
||||||
import zhLocale from './zh'
|
import zhLocale from './zh'
|
||||||
import { getStore } from '@/util/store'
|
import jaLocale from './ja'
|
||||||
Vue.use(VueI18n)
|
import AvueEnLocale from '@smallwei/avue/lib/locale/lang/en'
|
||||||
const Avue = window.AVUE;
|
import AvueZhLocale from '@smallwei/avue/lib/locale/lang/zh'
|
||||||
const messages = {
|
export const messages = {
|
||||||
en: {
|
en: {
|
||||||
...enLocale,
|
...enLocale,
|
||||||
...elementEnLocale,
|
...AvueEnLocale,
|
||||||
...Avue.locale.en,
|
...elementEnLocale
|
||||||
},
|
},
|
||||||
zh: {
|
'zh-cn': {
|
||||||
...zhLocale,
|
...zhLocale,
|
||||||
|
...AvueZhLocale,
|
||||||
...elementZhLocale,
|
...elementZhLocale,
|
||||||
...Avue.locale.zh,
|
},
|
||||||
|
ja: {
|
||||||
|
...jaLocale,
|
||||||
|
...elementJaLocale
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
export const language = Store.getters.language
|
||||||
const i18n = new VueI18n({
|
export default createI18n({
|
||||||
locale: getStore({ name: 'language' }) || 'zh',
|
locale: language,
|
||||||
messages
|
messages,
|
||||||
})
|
});
|
||||||
|
|
||||||
export default i18n
|
|
113
src/lang/ja.js
Executable file
@ -0,0 +1,113 @@
|
|||||||
|
export default {
|
||||||
|
tip: 'ヒント',
|
||||||
|
title: 'Avue汎用管理システムの快速開発フレームワーク',
|
||||||
|
logoutTip: 'システムを終了します。続けますか?',
|
||||||
|
submitText: 'を選択します',
|
||||||
|
cancelText: 'キャンセル',
|
||||||
|
search: '検索内容を入力してください。',
|
||||||
|
menuTip: 'メニューが見つかりませんでした',
|
||||||
|
feedback: '意見のフィードバック',
|
||||||
|
submit: '送信',
|
||||||
|
wel: {
|
||||||
|
info: 'おはようございます。Smallweiさん、Avueさんの想像を超えるフレームワークです。',
|
||||||
|
dept: '私はavueチームの下の部門です。ハーピ部門です。',
|
||||||
|
team: 'チーム内ランキング',
|
||||||
|
project: 'プロジェクトアクセス',
|
||||||
|
count: '項目数',
|
||||||
|
data: {
|
||||||
|
subtitle: 'リアルタイム',
|
||||||
|
column1: '分類統計',
|
||||||
|
column2: '添付統計',
|
||||||
|
column3: '文章統計',
|
||||||
|
key1: '分',
|
||||||
|
key2: '附',
|
||||||
|
key3: 'コメントは、',
|
||||||
|
text1: '現在分類総記録数',
|
||||||
|
text2: '現在アップロードされている添付ファイルの数',
|
||||||
|
text3: 'コメント回数'
|
||||||
|
},
|
||||||
|
data2: {
|
||||||
|
column1: '今日登録します。',
|
||||||
|
column2: '今日ログイン',
|
||||||
|
column3: '今日は購読します。',
|
||||||
|
column4: '今日のコメント'
|
||||||
|
},
|
||||||
|
data3: {
|
||||||
|
column1: '転化率(日同28%)',
|
||||||
|
column2: '署名率(日同11%)',
|
||||||
|
column3: 'ビザ率(日同11%)'
|
||||||
|
},
|
||||||
|
data4: {
|
||||||
|
column1: 'エラーログ',
|
||||||
|
column2: 'データ展示',
|
||||||
|
column3: '権限管理',
|
||||||
|
column4: 'ユーザー管理'
|
||||||
|
},
|
||||||
|
table: {
|
||||||
|
rw: '作業任務',
|
||||||
|
nr: '仕事内容',
|
||||||
|
sj: '勤務時間'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
route: {
|
||||||
|
setting: '個人設定',
|
||||||
|
detail: '詳細ページ',
|
||||||
|
info: '個人情報',
|
||||||
|
website: '公式サイト',
|
||||||
|
dashboard: 'トップページ',
|
||||||
|
メモリ: 'より多く',
|
||||||
|
tags: 'ラベル',
|
||||||
|
store: 'ローカルストア',
|
||||||
|
api: 'グローバル関数',
|
||||||
|
logs: 'ログ',
|
||||||
|
table: 'テーブル',
|
||||||
|
crud: 'テンプレート',
|
||||||
|
params: 'パラメータ',
|
||||||
|
more: '詳細',
|
||||||
|
data: 'データ展示',
|
||||||
|
permission: '権限',
|
||||||
|
top: 'はトップに戻る',
|
||||||
|
affix: '画鋲',
|
||||||
|
cache: 'ページバッファ',
|
||||||
|
error: '異常ページ',
|
||||||
|
test: 'テストページ'
|
||||||
|
},
|
||||||
|
login: {
|
||||||
|
title: 'ログイン ',
|
||||||
|
info: '汎用管理システムの高速開発フレーム',
|
||||||
|
username: 'アカウントを入力してください',
|
||||||
|
password: 'アウンを入れてくださいませんか?',
|
||||||
|
wechat: 'WeChat',
|
||||||
|
qq: 'QQ',
|
||||||
|
phone: '携帯の番号を入力してください',
|
||||||
|
code: '認証コードを入力してください',
|
||||||
|
submit: 'ログイン',
|
||||||
|
faceLogin: 'ログーン',
|
||||||
|
userLogin: 'アカウントのパスワード',
|
||||||
|
phoneLogin: '携帯番号の登録',
|
||||||
|
thirdLogin: '第三者登録',
|
||||||
|
msgText: '認証コードを送信',
|
||||||
|
msgSuccess: '秒後に再送信',
|
||||||
|
},
|
||||||
|
navbar: {
|
||||||
|
setting: '個人設定',
|
||||||
|
logOut: 'ログアウト',
|
||||||
|
userinfo: '個人情報',
|
||||||
|
dashboard: '最初のページ',
|
||||||
|
lock: 'スクリーンをロックする',
|
||||||
|
bug: 'エラーログがありません',
|
||||||
|
bugs: 'バーのエラーログ',
|
||||||
|
screenfullF: 'フルスクリーンを終了',
|
||||||
|
screenfull: 'フルスクリーン',
|
||||||
|
language: '英語で話します',
|
||||||
|
notice: 'メッセージ',
|
||||||
|
theme: 'メッセージング',
|
||||||
|
color: '色を変える'
|
||||||
|
},
|
||||||
|
tagsView: {
|
||||||
|
search: '検索',
|
||||||
|
menu: 'より多く',
|
||||||
|
closeOthers: 'は他の',
|
||||||
|
closeAll: 'すべてを閉じる。'
|
||||||
|
}
|
||||||
|
}
|
131
src/lang/zh.js
Normal file → Executable file
@ -1,84 +1,70 @@
|
|||||||
export default {
|
export default {
|
||||||
title: 'Saber企业管理平台',
|
tip: '提示',
|
||||||
|
title: 'Saber企业级开发平台',
|
||||||
logoutTip: '退出系统, 是否继续?',
|
logoutTip: '退出系统, 是否继续?',
|
||||||
submitText: '确定',
|
submitText: '确定',
|
||||||
cancelText: '取消',
|
cancelText: '取消',
|
||||||
search: '请输入搜索内容',
|
search: '请输入搜索内容',
|
||||||
menuTip: '没有发现菜单',
|
menuTip: '没有发现菜单',
|
||||||
common: {
|
wel: {
|
||||||
condition: '条件',
|
info: '早安,Smallwei,Avuex一款超乎你想象的框架!',
|
||||||
display: '显示',
|
dept: '我是avue团队下的一个部门-哈皮部门-哈皮职位',
|
||||||
hide: '隐藏'
|
team: '团队内排名',
|
||||||
|
project: '项目访问',
|
||||||
|
count: '项目数',
|
||||||
|
data: {
|
||||||
|
subtitle: '实时',
|
||||||
|
column1: '分类统计',
|
||||||
|
column2: '附件统计',
|
||||||
|
column3: '文章统计',
|
||||||
|
key1: '分',
|
||||||
|
key2: '附',
|
||||||
|
key3: '评',
|
||||||
|
text1: '当前分类总记录数',
|
||||||
|
text2: '当前上传的附件数',
|
||||||
|
text3: '评论次数'
|
||||||
},
|
},
|
||||||
tip: {
|
data2: {
|
||||||
select: '请选择',
|
column1: '今日注册',
|
||||||
input: '请输入'
|
column2: '今日登录',
|
||||||
|
column3: '今日订阅',
|
||||||
|
column4: '今日评论'
|
||||||
},
|
},
|
||||||
upload: {
|
data3: {
|
||||||
upload: '点击上传',
|
column1: '转化率(日同比 28%)',
|
||||||
tip: '将文件拖到此处,或'
|
column2: '签到率(日同比 11%)',
|
||||||
|
column3: '签到率(日同比 11%)'
|
||||||
},
|
},
|
||||||
date: {
|
data4: {
|
||||||
start: '开始日期',
|
column1: '错误日志',
|
||||||
end: '结束日期',
|
column2: '数据展示',
|
||||||
t: '今日',
|
column3: '权限管理',
|
||||||
y: '昨日',
|
column4: '用户管理'
|
||||||
n: '近7天',
|
|
||||||
a: '全部'
|
|
||||||
},
|
},
|
||||||
form: {
|
table: {
|
||||||
printBtn: '打 印',
|
rw: '工作任务',
|
||||||
mockBtn: '模 拟',
|
nr: '工作内容',
|
||||||
submitBtn: '提 交',
|
sj: '工作时间'
|
||||||
emptyBtn: '清 空'
|
}
|
||||||
},
|
},
|
||||||
crud: {
|
route: {
|
||||||
filter: {
|
info: '个人信息',
|
||||||
addBtn: '新增条件',
|
website: 'bladex官网',
|
||||||
clearBtn: '清空数据',
|
dashboard: '首页',
|
||||||
resetBtn: '清空条件',
|
tags: '标签',
|
||||||
cancelBtn: '取 消',
|
store: '本地存储',
|
||||||
submitBtn: '确 定'
|
api: '全局函数',
|
||||||
},
|
logs: '日志监控',
|
||||||
column: {
|
table: '表格',
|
||||||
name: '列名',
|
form: '表单',
|
||||||
hide: '隐藏',
|
data: '数据展示',
|
||||||
fixed: '冻结',
|
permission: '权限',
|
||||||
filters: '过滤',
|
error: '异常页面',
|
||||||
sortable: '排序',
|
test: '测试页面'
|
||||||
index: '顺序',
|
|
||||||
width: '宽度'
|
|
||||||
},
|
|
||||||
tipStartTitle: '当前表格已选择',
|
|
||||||
tipEndTitle: '项',
|
|
||||||
editTitle: '编 辑',
|
|
||||||
copyTitle: '复 制',
|
|
||||||
addTitle: '新 增',
|
|
||||||
viewTitle: '查 看',
|
|
||||||
filterTitle: '过滤条件',
|
|
||||||
showTitle: '列显隐',
|
|
||||||
menu: '操作',
|
|
||||||
addBtn: '新 增',
|
|
||||||
show: '显 示',
|
|
||||||
hide: '隐 藏',
|
|
||||||
open: '展 开',
|
|
||||||
shrink: '收 缩',
|
|
||||||
printBtn: '打 印',
|
|
||||||
excelBtn: '导 出',
|
|
||||||
updateBtn: '修 改',
|
|
||||||
cancelBtn: '取 消',
|
|
||||||
searchBtn: '搜 索',
|
|
||||||
emptyBtn: '清 空',
|
|
||||||
menuBtn: '功 能',
|
|
||||||
saveBtn: '保 存',
|
|
||||||
viewBtn: '查 看',
|
|
||||||
editBtn: '编 辑',
|
|
||||||
copyBtn: '复 制',
|
|
||||||
delBtn: '删 除'
|
|
||||||
},
|
},
|
||||||
login: {
|
login: {
|
||||||
title: '登录 ',
|
title: '登录 ',
|
||||||
info: 'BladeX 企业级开发平台',
|
info: '企业级开发平台',
|
||||||
tenantId: '请输入租户ID',
|
tenantId: '请输入租户ID',
|
||||||
username: '请输入账号',
|
username: '请输入账号',
|
||||||
password: '请输入密码',
|
password: '请输入密码',
|
||||||
@ -89,17 +75,16 @@ export default {
|
|||||||
phone: '请输入手机号',
|
phone: '请输入手机号',
|
||||||
code: '请输入验证码',
|
code: '请输入验证码',
|
||||||
submit: '登录',
|
submit: '登录',
|
||||||
userLogin: '账号密码登录',
|
userLogin: '账号密码',
|
||||||
phoneLogin: '手机号登录',
|
phoneLogin: '手机号登录',
|
||||||
thirdLogin: '第三方系统登录',
|
thirdLogin: '第三方登录',
|
||||||
ssoLogin: '单点系统登录',
|
faceLogin: '刷脸登录',
|
||||||
msgText: '发送验证码',
|
msgText: '发送验证码',
|
||||||
msgSuccess: '秒后重发',
|
msgSuccess: '秒后重发',
|
||||||
},
|
},
|
||||||
navbar: {
|
navbar: {
|
||||||
logOut: '退出登录',
|
logOut: '退出登录',
|
||||||
userinfo: '个人信息',
|
userinfo: '个人信息',
|
||||||
switchDept : '部门切换',
|
|
||||||
dashboard: '首页',
|
dashboard: '首页',
|
||||||
lock: '锁屏',
|
lock: '锁屏',
|
||||||
bug: '没有错误日志',
|
bug: '没有错误日志',
|
||||||
@ -107,15 +92,13 @@ export default {
|
|||||||
screenfullF: '退出全屏',
|
screenfullF: '退出全屏',
|
||||||
screenfull: '全屏',
|
screenfull: '全屏',
|
||||||
language: '中英文',
|
language: '中英文',
|
||||||
notice: '消息通知',
|
|
||||||
theme: '主题',
|
theme: '主题',
|
||||||
color: '换色'
|
color: '换色'
|
||||||
},
|
},
|
||||||
tagsView: {
|
tagsView: {
|
||||||
search: '搜索',
|
search: '搜索',
|
||||||
menu: '更多',
|
menu: '更多',
|
||||||
clearCache: '清除缓存',
|
|
||||||
closeOthers: '关闭其它',
|
closeOthers: '关闭其它',
|
||||||
closeAll: '关闭所有'
|
closeAll: '关闭所有'
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
|