Commit 57adf282 by 邓恒通

Initial commit

parents
> 1%
last 2 versions
not ie <= 8
\ No newline at end of file
# 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
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'
}
}
\ No newline at end of file
.DS_Store
node_modules
/dist
/tests/e2e/videos/
/tests/e2e/screenshots/
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw*
*.lock
module.exports = {
plugins: {
autoprefixer: {}
}
}
\ No newline at end of file
BladeX商业授权许可协议
一、 知识产权:
BladeX系列产品知识产权归上海布雷德网络科技独立所有
二、 许可:
1. 在您完全接受并遵守本协议的基础上,本协议授予您使用BladeX的某些权利和非独占性许可。
2. 本协议中,将本产品使用用途分为“专业版用途”和“企业版用途”。
3. “专业版用途”定义:指个人在非团体机构中出于任何目的使用本产品(任何目的包括商业目的或非盈利目的)。
4. “企业版用途”定义:指团体机构(例如公司企业、政府、学校、军队、医院、社会团体等各类组织)(不包含集团,若集团使用则需为各个子公司分别购买企业授权)出于任何目的使用本产品(任何目的包括商业目的或非盈利目的)。
三、 约束和限制:
1. 本产品只能由您为本协议许可的目的而使用,您不得透露给任何第三方;
2. 从本产品取得的任何信息、软件、产品或服务,您不得对其进行修改、改编或基于以上内容创建同种类别的衍生产品并售卖。
3. 您不得对本产品以及与之关联的商业授权进行发布、出租、销售、分销、抵押、转让、许可或发放子许可证。
4. 本产品商业授权版可能包含一些独立功能或特性,这些功能只有在您购买商业授权后才可以使用。在未取得商业授权的情况下,您不得使用、尝试使用或复制这些授权版独立功能。
5. 若您的客户要求以源码方式交付软件,需缴纳企业版授权费用,否则本产品部分不得提供源码。
四、 不得用于非法或禁止的用途:
您在使用本产品或服务时,不得将本产品产品或服务用于任何非法用途或本协议条款、条件和声明禁止的用途。
五、 免责说明:
1. 本产品按“现状”授予许可,您须自行承担使用本产品的风险。BladeX团队不对此提供任何明示、暗示或任何其它形式的担保和表示。在任何情况下,对于因使用或无法使用本软件而导致的任何损失(包括但不仅限于商业利润损失、业务中断或业务信息丢失),BladeX团队无需向您或任何第三方负责,即使BladeX团队已被告知可能会造成此类损失。在任何情况下, BladeX团队均不就任何直接的、间接的、附带的、后果性的、特别的、惩戒性的和处罚性的损害赔偿承担任何责任,无论该主张是基于保证、合同、侵权(包括疏忽)或是基于其他原因作出。
2. 本产品可能内置有第三方服务,您应自行评估使用这些第三方服务的风险,由使用此类第三方服务而产生的纠纷,全部责任由您自行承担。
3. BladeX团队不对使用本产品构建的网站中任何信息内容以及导致的任何版权纠纷、法律争议和后果承担任何责任,全部责任由您自行承担。
4. BladeX团队可能会经常提供产品更新或升级,但BladeX团队没有为根据本协议许可的产品提供维护或更新的责任。
5. BladeX团队可能会按照官方制定的答疑规则为您进行答疑,但BladeX团队没有为根据本协议许可的产品提供技术支持的义务或责任。
六、 权利和所有权的保留:
BladeX团队保留所有未在本协议中明确授予您的所有权利。BladeX团队保留随时更新本协议的权利,并只需公示于对应产品项目的LICENSE文件,无需征得您的事先同意且无需另行通知,更新后的内容应于公示即时生效。您可以随时访问产品地址并查阅最新版许可条款,在更新生效后您继续使用本产品则被视作您已接受了新的条款。
七、 协议终止
1. 您一旦开始复制、下载、安装或者使用本产品,即被视为完全理解并接受本协议的各项条款,在享有上述条款授予的许可权力同时,也受到相关的约束和限制,本协议许可范围以外的行为,将直接违反本协议并构成侵权。
2. 一旦您违反本协议的条款,BladeX团队随时可能终止本协议、收回许可和授权,并要求您承担相应法律和经济责任。
## 版权声明
* BladeX是一个商业化软件,系列产品知识产权归**上海布雷德网络科技**独立所有
* 您一旦开始复制、下载、安装或者使用本产品,即被视为完全理解并接受本协议的各项条款
* 更多详情请看:[BladeX商业授权许可协议](/LICENSE)
## 答疑流程
>1. 遇到问题或Bug
>2. 业务型问题打断点调试尝试找出问题所在
>3. 系统型问题通过百度、谷歌、社区查找解决方案
>4. 未解决问题则进入技术社区进行发帖提问:[https://sns.bladex.vip/](https://sns.bladex.vip/)
>5. 将帖子地址发至商业群,特别简单三言两语就能描述清楚的也可在答疑时间内发至商业群提问
>6. 发帖的时候一定要描述清楚,详细描述遇到问题的**重现步骤**、**报错详细信息**、**相关代码与逻辑**、**使用软件版本**以及**操作系统版本**,否则随意发帖提问将会提高我们的答疑难度。
## 答疑时间
* 工作日:9:00 ~ 17:00 提供答疑,周末、节假日休息,暂停答疑
* 请勿**私聊提问**,以免被其他用户的消息覆盖从而无法获得答疑
* 答疑时间外遇到问题可以将问题发帖至[技术社区](https://sns.bladex.vip/),我们后续会逐个回复
## 授权范围
* 专业版:只可用于**个人学习****个人私活**项目,不可用于公司或团队,不可泄露给任何第三方
* 企业版:可用于**企业名下**的任何项目,企业版员工在**未购买**专业版授权前,只授权开发**所在授权企业名下**的项目,**不得将BladeX用于个人私活**
* 共同遵守:若甲方需要您提供项目源码,则需代为甲方购买BladeX企业授权,甲方购买后续的所有项目都无需再次购买授权
## 商用权益
* ✔️ 遵守[商业协议](/LICENSE)的前提下,将BladeX系列产品用于授权范围内的商用项目,并上线运营
* ✔️ 遵守[商业协议](/LICENSE)的前提下,不限制项目数,不限制服务器数
* ✔️ 遵守[商业协议](/LICENSE)的前提下,将自行编写的业务代码申请软件著作权
## 何为侵权
* ❌ 不遵守商业协议,私自销售商业源码
* ❌ 以任何理由将BladeX源码用于申请软件著作权
* ❌ 将商业源码以任何途径任何理由泄露给未授权的单位或个人
* ❌ 开发完毕项目,没有为甲方购买企业授权,向甲方提供了BladeX代码
* ❌ 基于BladeX拓展研发与BladeX有竞争关系的衍生框架,并将其开源或销售
## 侵权后果
* 情节较轻:第一次发现警告处理
* 情节较重:封禁账号,踢出商业群,并保留追究法律责任的权利
* 情节严重:与本地律师事务所合作,以公司名义起诉侵犯计算机软件著作权
## 举报有奖
* 向官方提供有用线索并成功捣毁盗版个人或窝点,将会看成果给予 500~10000 不等的现金奖励
* 官方唯一指定QQ:1272154962
module.exports = {
presets: [
'@vue/app'
]
}
\ No newline at end of file
#!/bin/bash
echo "打包文件"
yarn build
echo "传输文件"
scp -r ./dist/** pig@139.224.200.249:/data/avue/sword
echo "部署成功"
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"name": "saber-admin",
"version": "2.6.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"analyz": "npm_config_report=true npm run build",
"test:unit": "vue-cli-service test:unit",
"test:e2e": "vue-cli-service test:e2e"
},
"dependencies": {
"avue-plugin-ueditor": "^0.1.4",
"axios": "^0.18.0",
"babel-polyfill": "^6.26.0",
"classlist-polyfill": "^1.2.0",
"crypto-js": "^4.0.0",
"element-ui": "^2.13.2",
"js-base64": "^2.5.1",
"js-cookie": "^2.2.0",
"js-md5": "^0.7.3",
"mockjs": "^1.0.1-beta3",
"node-gyp": "^5.0.6",
"nprogress": "^0.2.0",
"portfinder": "^1.0.23",
"script-loader": "^0.7.2",
"vue": "^2.6.10",
"vue-axios": "^2.1.2",
"vue-i18n": "^8.7.0",
"vue-router": "^3.0.1",
"vuex": "^3.1.1"
},
"devDependencies": {
"@vue/cli-plugin-babel": "^3.1.1",
"@vue/cli-plugin-eslint": "^3.1.5",
"@vue/cli-service": "^3.1.4",
"chai": "^4.1.2",
"node-sass": "^4.12.0",
"sass-loader": "^7.0.1",
"vue-template-compiler": "^2.5.17",
"webpack-bundle-analyzer": "^3.0.3"
},
"lint-staged": {
"*.js": [
"vue-cli-service lint",
"git add"
],
"*.vue": [
"vue-cli-service lint",
"git add"
]
}
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
[class^="icon-"]{
font-family: "iconfont" !important;
/* 以下内容参照第三方图标库本身的规则 */
font-size: 18px !important;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.el-menu-item [class^=icon-] {
margin-right: 5px;
width: 24px;
text-align: center;
font-size: 18px;
vertical-align: middle;
}
.el-submenu [class^=icon-] {
vertical-align: middle;
margin-right: 5px;
width: 24px;
text-align: center;
font-size: 18px;
}
/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
var saveAs=saveAs||"undefined"!==typeof navigator&&navigator.msSaveOrOpenBlob&&navigator.msSaveOrOpenBlob.bind(navigator)||function(a){"use strict";if("undefined"===typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var k=a.document,n=k.createElementNS("http://www.w3.org/1999/xhtml","a"),w="download"in n,x=function(c){var e=k.createEvent("MouseEvents");e.initMouseEvent("click",!0,!1,a,0,0,0,0,0,!1,!1,!1,!1,0,null);c.dispatchEvent(e)},q=a.webkitRequestFileSystem,u=a.requestFileSystem||q||a.mozRequestFileSystem,
y=function(c){(a.setImmediate||a.setTimeout)(function(){throw c;},0)},r=0,s=function(c){var e=function(){"string"===typeof c?(a.URL||a.webkitURL||a).revokeObjectURL(c):c.remove()};a.chrome?e():setTimeout(e,500)},t=function(c,a,d){a=[].concat(a);for(var b=a.length;b--;){var l=c["on"+a[b]];if("function"===typeof l)try{l.call(c,d||c)}catch(f){y(f)}}},m=function(c,e){var d=this,b=c.type,l=!1,f,p,k=function(){t(d,["writestart","progress","write","writeend"])},g=function(){if(l||!f)f=(a.URL||a.webkitURL||
a).createObjectURL(c);p?p.location.href=f:void 0==a.open(f,"_blank")&&"undefined"!==typeof safari&&(a.location.href=f);d.readyState=d.DONE;k();s(f)},h=function(a){return function(){if(d.readyState!==d.DONE)return a.apply(this,arguments)}},m={create:!0,exclusive:!1},v;d.readyState=d.INIT;e||(e="download");if(w)f=(a.URL||a.webkitURL||a).createObjectURL(c),n.href=f,n.download=e,x(n),d.readyState=d.DONE,k(),s(f);else{a.chrome&&b&&"application/octet-stream"!==b&&(v=c.slice||c.webkitSlice,c=v.call(c,0,
c.size,"application/octet-stream"),l=!0);q&&"download"!==e&&(e+=".download");if("application/octet-stream"===b||q)p=a;u?(r+=c.size,u(a.TEMPORARY,r,h(function(a){a.root.getDirectory("saved",m,h(function(a){var b=function(){a.getFile(e,m,h(function(a){a.createWriter(h(function(b){b.onwriteend=function(b){p.location.href=a.toURL();d.readyState=d.DONE;t(d,"writeend",b);s(a)};b.onerror=function(){var a=b.error;a.code!==a.ABORT_ERR&&g()};["writestart","progress","write","abort"].forEach(function(a){b["on"+
a]=d["on"+a]});b.write(c);d.abort=function(){b.abort();d.readyState=d.DONE};d.readyState=d.WRITING}),g)}),g)};a.getFile(e,{create:!1},h(function(a){a.remove();b()}),h(function(a){a.code===a.NOT_FOUND_ERR?b():g()}))}),g)}),g)):g()}},b=m.prototype;b.abort=function(){this.readyState=this.DONE;t(this,"abort")};b.readyState=b.INIT=0;b.WRITING=1;b.DONE=2;b.error=b.onwritestart=b.onprogress=b.onwrite=b.onabort=b.onerror=b.onwriteend=null;return function(a,b){return new m(a,b)}}}("undefined"!==typeof self&&
self||"undefined"!==typeof window&&window||this.content);"undefined"!==typeof module&&null!==module?module.exports=saveAs:"undefined"!==typeof define&&null!==define&&null!=define.amd&&define([],function(){return saveAs});
This source diff could not be displayed because it is too large. You can view the blob instead.
<!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.13.2/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.6.15/index.css">
<script src="<%= BASE_URL %>cdn/xlsx/FileSaver.min.js"></script>
<script src="<%= BASE_URL %>cdn/xlsx/xlsx.full.min.js"></script>
<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.vip" target="_blank">
https://bladex.vip </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.13.2/index.js" charset="utf-8"></script>
<script src="<%= BASE_URL %>cdn/avue/2.6.15/avue.min.js" charset="utf-8"></script>
</body>
</html>
<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>
\ No newline at end of file
.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;
}
\ No newline at end of file
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();
}
\ No newline at end of file
<template>
<div id="app">
<router-view />
</div>
</template>
<script>
export default {
name: "app",
data() {
return {};
},
watch: {},
created() {
},
methods: {},
computed: {}
};
</script>
<style lang="scss">
#app {
width: 100%;
height: 100%;
overflow: hidden;
}
</style>
import request from '@/router/axios';
export const uploadFile = (file) => {
return request({
url: 'api/excel/read',
method: "post",
params: {
file
}
})
}
import request from '@/router/axios';
export const getList = (current, size, params, deptId) => {
return request({
url: 'api/excel/getName',
method: "post",
params: {
...params,
current,
size,
deptId
}
})
}
export const getInfo = (current, size, name, updateTime ) => {
return request({
url: 'api/excel/queryPersonal',
method: "post",
params: {
name,
updateTime,
current,
size,
}
})
}
export const getDeptLazyTree = (parentId) => {
return request({
url: 'api/dept/getDeptTree',
method: "post",
params: {
parentId
}
})
}
import request from '@/router/axios';
export const getList = (result) => {
return request({
url: 'api/excel/filterQuery',
method: "post",
params: {
result,
}
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: "api/excel/queryUnit",
method: "post",
params: {
...params,
current,
size,
}
})
}
export const getInfo = (current, size, contractCode) => {
return request({
url: "api/excel/getInfo",
method: "post",
params: {
contractCode,
current,
size,
}
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-system/region/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getLazyTree = (parentCode, params) => {
return request({
url: '/api/blade-system/region/lazy-tree',
method: 'get',
params: {
...params,
parentCode
}
})
}
export const getDetail = (code) => {
return request({
url: '/api/blade-system/region/detail',
method: 'get',
params: {
code
}
})
}
export const remove = (id) => {
return request({
url: '/api/blade-system/region/remove',
method: 'post',
params: {
id,
}
})
}
export const submit = (row) => {
return request({
url: '/api/blade-system/region/submit',
method: 'post',
data: row
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-desk/notice/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-desk/notice/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-desk/notice/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-desk/notice/submit',
method: 'post',
data: row
})
}
export const getNotice = (id) => {
return request({
url: '/api/blade-desk/notice/detail',
method: 'get',
params: {
id
}
})
}
import request from '@/router/axios';
export const modelList = (current, size, params) => {
return request({
url: '/api/blade-flow/model/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const managerList = (current, size, params) => {
return request({
url: '/api/blade-flow/manager/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const followList = (current, size, params) => {
return request({
url: '/api/blade-flow/follow/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const removeModel = (ids) => {
return request({
url: '/api/blade-flow/model/remove',
method: 'post',
params: {
ids,
}
})
}
export const deployModel = (params) => {
return request({
url: '/api/blade-flow/model/deploy',
method: 'post',
params
})
}
export const changeState = (params) => {
return request({
url: '/api/blade-flow/manager/change-state',
method: 'post',
params
})
}
export const deployUpload = (category, tenantIds, files) => {
const formData = new FormData();
formData.append('category', category);
formData.append('tenantIds', tenantIds);
files.forEach(file => {
formData.append('files', file);
});
return request({
headers: {
"Content-Type": "multipart/form-data"
},
url: '/api/blade-flow/manager/deploy-upload',
method: 'post',
data: formData
})
}
export const deleteDeployment = (deploymentIds) => {
return request({
url: '/api/blade-flow/manager/delete-deployment',
method: 'post',
params: {
deploymentIds,
}
})
}
export const deleteProcessInstance = (params) => {
return request({
url: '/api/blade-flow/follow/delete-process-instance',
method: 'post',
params
})
}
import request from '@/router/axios';
export const getUsualList = (current, size) => {
return request({
url: '/api/blade-log/usual/list',
method: 'get',
params: {
current,
size
}
})
}
export const getApiList = (current, size) => {
return request({
url: '/api/blade-log/api/list',
method: 'get',
params: {
current,
size
}
})
}
export const getErrorList = (current, size) => {
return request({
url: '/api/blade-log/error/list',
method: 'get',
params: {
current,
size
}
})
}
export const getUsualLogs = (id) => {
return request({
url: '/api/blade-log/usual/detail',
method: 'get',
params: {
id,
}
})
}
export const getApiLogs = (id) => {
return request({
url: '/api/blade-log/api/detail',
method: 'get',
params: {
id,
}
})
}
export const getErrorLogs = (id) => {
return request({
url: '/api/blade-log/error/detail',
method: 'get',
params: {
id,
}
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-report/report/rest/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-report/report/rest/remove',
method: 'post',
params: {
ids,
}
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-resource/attach/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getDetail = (id) => {
return request({
url: '/api/blade-resource/attach/detail',
method: 'get',
params: {
id
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-resource/attach/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-resource/attach/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-resource/attach/submit',
method: 'post',
data: row
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-resource/oss/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getDetail = (id) => {
return request({
url: '/api/blade-resource/oss/detail',
method: 'get',
params: {
id
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-resource/oss/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-resource/oss/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-resource/oss/submit',
method: 'post',
data: row
})
}
export const enable = (id) => {
return request({
url: '/api/blade-resource/oss/enable',
method: 'post',
params: {
id
}
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-resource/sms/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getDetail = (id) => {
return request({
url: '/api/blade-resource/sms/detail',
method: 'get',
params: {
id
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-resource/sms/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-resource/sms/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-resource/sms/submit',
method: 'post',
data: row
})
}
export const enable = (id) => {
return request({
url: '/api/blade-resource/sms/enable',
method: 'post',
params: {
id
}
})
}
export const send = (code, phones, params) => {
return request({
url: '/api/blade-resource/sms/endpoint/send-message',
method: 'post',
params: {
code,
phones,
params,
}
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-system/client/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getDetail = (id) => {
return request({
url: '/api/blade-system/client/detail',
method: 'get',
params: {
id
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-system/client/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-system/client/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-system/client/submit',
method: 'post',
data: row
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-system/dept/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getLazyList = (parentId, params) => {
return request({
url: '/api/blade-system/dept/lazy-list',
method: 'get',
params: {
...params,
parentId
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-system/dept/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-system/dept/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-system/dept/submit',
method: 'post',
data: row
})
}
export const getDept = (id) => {
return request({
url: '/api/blade-system/dept/detail',
method: 'get',
params: {
id,
}
})
}
export const getDeptTree = (tenantId) => {
return request({
url: '/api/blade-system/dept/tree',
method: 'get',
params: {
tenantId,
}
})
}
export const getDeptLazyTree = (parentId) => {
return request({
url: '/api/blade-system/dept/lazy-tree',
method: 'get',
params: {
parentId
}
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-system/dict/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getParentList = (current, size, params) => {
return request({
url: '/api/blade-system/dict/parent-list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getChildList = (current, size, parentId, params) => {
return request({
url: '/api/blade-system/dict/child-list',
method: 'get',
params: {
...params,
current,
size,
parentId: parentId,
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-system/dict/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-system/dict/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-system/dict/submit',
method: 'post',
data: row
})
}
export const getDict = (id) => {
return request({
url: '/api/blade-system/dict/detail',
method: 'get',
params: {
id,
}
})
}
export const getDictTree = () => {
return request({
url: '/api/blade-system/dict/tree?code=DICT',
method: 'get'
})
}
export const getDictionary = (params) => {
return request({
url: '/api/blade-system/dict/dictionary',
method: 'get',
params,
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-system/dict-biz/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getParentList = (current, size, params) => {
return request({
url: '/api/blade-system/dict-biz/parent-list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getChildList = (current, size, parentId, params) => {
return request({
url: '/api/blade-system/dict-biz/child-list',
method: 'get',
params: {
...params,
current,
size,
parentId: parentId,
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-system/dict-biz/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-system/dict-biz/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-system/dict-biz/submit',
method: 'post',
data: row
})
}
export const getDict = (id) => {
return request({
url: '/api/blade-system/dict-biz/detail',
method: 'get',
params: {
id,
}
})
}
export const getDictTree = () => {
return request({
url: '/api/blade-system/dict-biz/tree?code=DICT',
method: 'get'
})
}
export const getDictionary = (params) => {
return request({
url: '/api/blade-system/dict-biz/dictionary',
method: 'get',
params,
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-system/menu/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getLazyList = (parentId, params) => {
return request({
url: '/api/blade-system/menu/lazy-list',
method: 'get',
params: {
...params,
parentId
}
})
}
export const getLazyMenuList = (parentId, params) => {
return request({
url: '/api/blade-system/menu/lazy-menu-list',
method: 'get',
params: {
...params,
parentId
}
})
}
export const getMenuList = (current, size, params) => {
return request({
url: '/api/blade-system/menu/menu-list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getMenuTree = (tenantId) => {
return request({
url: '/api/blade-system/menu/tree',
method: 'get',
params: {
tenantId,
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-system/menu/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-system/menu/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-system/menu/submit',
method: 'post',
data: row
})
}
export const getMenu = (id) => {
return request({
url: '/api/blade-system/menu/detail',
method: 'get',
params: {
id,
}
})
}
export const getTopMenu = () => request({
url: '/api/blade-system/menu/top-menu',
method: 'get'
});
export const getRoutes = (topMenuId) => request({
url: '/api/blade-system/menu/routes',
method: 'get',
params: {
topMenuId,
}
});
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-system/param/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-system/param/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-system/param/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-system/param/submit',
method: 'post',
data: row
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-system/post/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getPostList = (tenantId) => {
return request({
url: '/api/blade-system/post/select',
method: 'get',
params: {
tenantId
}
})
}
export const getDetail = (id) => {
return request({
url: '/api/blade-system/post/detail',
method: 'get',
params: {
id
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-system/post/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-system/post/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-system/post/submit',
method: 'post',
data: row
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-system/role/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const grantTree = () => {
return request({
url: '/api/blade-system/menu/grant-tree',
method: 'get',
})
}
export const grant = (roleIds, menuIds, dataScopeIds, apiScopeIds) => {
return request({
url: '/api/blade-system/role/grant',
method: 'post',
data: {
roleIds,
menuIds,
dataScopeIds,
apiScopeIds
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-system/role/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-system/role/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-system/role/submit',
method: 'post',
data: row
})
}
export const getRole = (roleIds) => {
return request({
url: '/api/blade-system/menu/role-tree-keys',
method: 'get',
params: {
roleIds,
}
})
}
export const getRoleTree = (tenantId) => {
return request({
url: '/api/blade-system/role/tree',
method: 'get',
params: {
tenantId,
}
})
}
import request from '@/router/axios';
export const getListDataScope = (current, size, params) => {
return request({
url: '/api/blade-system/data-scope/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const removeDataScope = (ids) => {
return request({
url: '/api/blade-system/data-scope/remove',
method: 'post',
params: {
ids,
}
})
}
export const addDataScope = (row) => {
return request({
url: '/api/blade-system/data-scope/submit',
method: 'post',
data: row
})
}
export const updateDataScope = (row) => {
return request({
url: '/api/blade-system/data-scope/submit',
method: 'post',
data: row
})
}
export const getMenuDataScope = (id) => {
return request({
url: '/api/blade-system/data-scope/detail',
method: 'get',
params: {
id,
}
})
}
export const getListApiScope = (current, size, params) => {
return request({
url: '/api/blade-system/api-scope/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const removeApiScope = (ids) => {
return request({
url: '/api/blade-system/api-scope/remove',
method: 'post',
params: {
ids,
}
})
}
export const addApiScope = (row) => {
return request({
url: '/api/blade-system/api-scope/submit',
method: 'post',
data: row
})
}
export const updateApiScope = (row) => {
return request({
url: '/api/blade-system/api-scope/submit',
method: 'post',
data: row
})
}
export const getMenuApiScope = (id) => {
return request({
url: '/api/blade-system/api-scope/detail',
method: 'get',
params: {
id,
}
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-system/tenant/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getDetail = (id) => {
return request({
url: '/api/blade-system/tenant/detail',
method: 'get',
params: {
id
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-system/tenant/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-system/tenant/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-system/tenant/submit',
method: 'post',
data: row
})
}
export const setting = (ids, form) => {
return request({
url: '/api/blade-system/tenant/setting',
method: 'post',
params: {
...form,
ids
}
})
}
export const datasource = (tenantId, datasourceId) => {
return request({
url: '/api/blade-system/tenant/datasource',
method: 'post',
params: {
tenantId,
datasourceId
}
})
}
export const info = (domain) => {
return request({
url: '/api/blade-system/tenant/info',
method: 'get',
params: {
domain
}
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-system/topmenu/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getDetail = (id) => {
return request({
url: '/api/blade-system/topmenu/detail',
method: 'get',
params: {
id
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-system/topmenu/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-system/topmenu/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-system/topmenu/submit',
method: 'post',
data: row
})
}
export const grantTree = () => {
return request({
url: '/api/blade-system/menu/grant-top-tree',
method: 'get',
})
}
export const getTopTree = (topMenuIds) => {
return request({
url: '/api/blade-system/menu/top-tree-keys',
method: 'get',
params: {
topMenuIds,
}
})
}
export const grant = (topMenuIds, menuIds) => {
return request({
url: '/api/blade-system/topmenu/grant',
method: 'post',
data: {
topMenuIds,
menuIds,
}
})
}
import request from '@/router/axios';
export const getList = (current, size, params, deptId) => {
return request({
url: '/api/blade-user/page',
method: 'get',
params: {
...params,
current,
size,
deptId,
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-user/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-user/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-user/update',
method: 'post',
data: row
})
}
export const getUser = (id) => {
return request({
url: '/api/blade-user/detail',
method: 'get',
params: {
id,
}
})
}
export const getUserInfo = () => {
return request({
url: '/api/blade-user/info',
method: 'get',
})
}
export const resetPassword = (userIds) => {
return request({
url: '/api/blade-user/reset-password',
method: 'post',
params: {
userIds,
}
})
}
export const updatePassword = (oldPassword, newPassword, newPassword1) => {
return request({
url: '/api/blade-user/update-password',
method: 'post',
params: {
oldPassword,
newPassword,
newPassword1,
}
})
}
export const updateInfo = (row) => {
return request({
url: '/api/blade-user/update-info',
method: 'post',
data: row
})
}
export const grant = (userIds, roleIds) => {
return request({
url: '/api/blade-user/grant',
method: 'post',
params: {
userIds,
roleIds,
}
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-develop/code/list',
method: 'get',
params: {
...params,
current,
size
}
})
}
export const build = (ids) => {
return request({
url: '/api/blade-develop/code/gen-code',
method: 'post',
params: {
ids,
system: 'saber'
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-develop/code/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-develop/code/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-develop/code/submit',
method: 'post',
data: row
})
}
export const copy = (id) => {
return request({
url: '/api/blade-develop/code/copy',
method: 'post',
params: {
id,
}
})
}
export const getCode = (id) => {
return request({
url: '/api/blade-develop/code/detail',
method: 'get',
params: {
id,
}
})
}
import request from '@/router/axios';
export const getList = (current, size, params) => {
return request({
url: '/api/blade-develop/datasource/list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const getDetail = (id) => {
return request({
url: '/api/blade-develop/datasource/detail',
method: 'get',
params: {
id
}
})
}
export const remove = (ids) => {
return request({
url: '/api/blade-develop/datasource/remove',
method: 'post',
params: {
ids,
}
})
}
export const add = (row) => {
return request({
url: '/api/blade-develop/datasource/submit',
method: 'post',
data: row
})
}
export const update = (row) => {
return request({
url: '/api/blade-develop/datasource/submit',
method: 'post',
data: row
})
}
import request from '@/router/axios';
import website from "@/config/website";
export const loginByUsername = (tenantId, username, password, type, key, code) => request({
url: '/api/blade-auth/oauth/token',
method: 'post',
headers: {
'Tenant-Id': tenantId,
'Captcha-Key': key,
'Captcha-Code': code,
},
params: {
tenantId,
username,
password,
grant_type: (website.captchaMode ? "captcha" : "password"),
scope: "all",
type
}
});
export const loginBySocial = (tenantId, source, code, state) => request({
url: '/api/blade-auth/oauth/token',
method: 'post',
headers: {
'Tenant-Id': tenantId
},
params: {
tenantId,
source,
code,
state,
grant_type: "social",
scope: "all",
}
})
export const refreshToken = (refresh_token, tenantId) => request({
url: '/api/blade-auth/oauth/token',
method: 'post',
headers: {
'Tenant-Id': tenantId
},
params: {
tenantId,
refresh_token,
grant_type: "refresh_token",
scope: "all",
}
});
export const registerGuest = (form, oauthId) => request({
url: '/api/blade-user/register-guest',
method: 'post',
params: {
tenantId: form.tenantId,
name: form.name,
account: form.account,
password: form.password,
oauthId
}
});
export const getButtons = () => request({
url: '/api/blade-system/menu/buttons',
method: 'get'
});
export const getCaptcha = () => request({
url: '/api/blade-auth/oauth/captcha',
method: 'get'
});
export const logout = () => request({
url: '/api/blade-auth/oauth/logout',
method: 'get'
});
export const getUserInfo = () => request({
url: '/api/blade-auth/oauth/user-info',
method: 'get'
});
export const sendLogs = (list) => request({
url: '/api/blade-auth/oauth/logout',
method: 'post',
data: list
});
export const clearCache = () => request({
url: '/api/blade-auth/oauth/clear-cache',
method: 'get'
});
import request from '@/router/axios';
// =====================参数===========================
export const historyFlowList = (processInstanceId) => {
return request({
url: '/api/blade-flow/process/history-flow-list',
method: 'get',
params: {
processInstanceId
}
})
}
// =====================请假流程===========================
export const leaveProcess = (data) => {
return request({
url: '/api/blade-desk/process/leave/start-process',
method: 'post',
data
})
}
export const leaveDetail = (businessId) => {
return request({
url: '/api/blade-desk/process/leave/detail',
method: 'get',
params: {
businessId
}
})
}
import request from '@/router/axios';
export const startList = (current, size, params) => {
return request({
url: '/api/blade-flow/work/start-list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const claimList = (current, size, params) => {
return request({
url: '/api/blade-flow/work/claim-list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const todoList = (current, size, params) => {
return request({
url: '/api/blade-flow/work/todo-list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const sendList = (current, size, params) => {
return request({
url: '/api/blade-flow/work/send-list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const doneList = (current, size, params) => {
return request({
url: '/api/blade-flow/work/done-list',
method: 'get',
params: {
...params,
current,
size,
}
})
}
export const claimTask = (taskId) => {
return request({
url: '/api/blade-flow/work/claim-task',
method: 'post',
params: {
taskId
}
})
}
export const completeTask = (data) => {
return request({
url: '/api/blade-flow/work/complete-task',
method: 'post',
data
})
}
import Vue from 'vue'
import store from './store';
Vue.mixin({
beforeRouteLeave: function (to, from, next) {
if (this.$route.meta.keepAlive === true) {
const result = this.$route.meta.keepAlive === true && store.state.tags.tagList.some(ele => {
return ele.value === this.$route.fullPath;
});
if (this.$vnode && !result) {
if (this.$vnode.parent && this.$vnode.parent.componentInstance && this.$vnode.parent.componentInstance.cache) {
if (this.$vnode.componentOptions) {
let key = this.$vnode.key == null
? this.$vnode.componentOptions.Ctor.cid + (this.$vnode.componentOptions.tag ? `::${this.$vnode.componentOptions.tag}` : '')
: this.$vnode.key;
let cache = this.$vnode.parent.componentInstance.cache;
let keys = this.$vnode.parent.componentInstance.keys;
if (cache[key]) {
if (keys.length) {
let index = keys.indexOf(key);
if (index > -1) {
keys.splice(index, 1);
}
}
delete cache[key];
}
}
}
}
}
next();
},
});
<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.setPx(this.width),
height: this.setPx(this.height),
margin: this.setPx(this.gutter)
}
},
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>
<template>
<div class="basic-container"
:class="{'basic-container--block':block}">
<el-card>
<slot></slot>
</el-card>
</div>
</template>
<script>
export default {
name: "basicContainer",
props: {
radius: {
type: [String, Number],
default: 10
},
background: {
type: String
},
block: {
type: Boolean,
default: false
}
},
computed: {
styleName () {
return {
borderRadius: this.setPx(this.radius),
background: this.background,
}
}
}
};
</script>
<style lang="scss">
.basic-container {
padding: 10px 6px;
box-sizing: border-box;
&--block {
height: 100%;
.el-card {
height: 100%;
}
}
.el-card {
width: 100%;
}
&:first-child {
padding-top: 0;
}
}
</style>
<template>
<div class="error-page">
<div class="img"
style=" background-image: url('/img/bg/403.svg');"></div>
<div class="content">
<h1>403</h1>
<div class="desc">抱歉,你无权访问该页面</div>
<div class="actions">
<router-link :to="{path:'/'}">
<el-button type="primary">返回首页</el-button>
</router-link>
</div>
</div>
</div>
</template>
<script>
export default {
name: "error-403"
};
</script>
<style lang="scss" scoped>
@import "./style.scss";
</style>
<template>
<div class="error-page">
<div class="img"
style=" background-image: url('/img/bg/404.svg');"></div>
<div class="content">
<h1>404</h1>
<div class="desc">抱歉,你访问的页面不存在</div>
<div class="actions">
<router-link :to="{path:'/'}">
<el-button type="primary">返回首页</el-button>
</router-link>
</div>
</div>
</div>
</template>
<script>
export default {
name: "error-404"
};
</script>
<style lang="scss" scoped>
@import "./style.scss";
</style>
<template>
<div class="error-page">
<div class="img"
style=" background-image: url('/img/bg/500.svg');"></div>
<div class="content">
<h1>500</h1>
<div class="desc">抱歉,服务器出错了</div>
<div class="actions">
<router-link :to="{path:'/'}">
<el-button type="primary">返回首页</el-button>
</router-link>
</div>
</div>
</div>
</template>
<script>
export default {
name: "error-500"
};
</script>
<style lang="scss" scoped>
@import "./style.scss";
</style>
.error-page {
background: #f0f2f5;
margin-top: -30px;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
.img {
margin-right: 80px;
height: 360px;
width: 100%;
max-width: 430px;
background-repeat: no-repeat;
background-position: 50% 50%;
background-size: contain;
}
.content {
h1 {
color: #434e59;
font-size: 72px;
font-weight: 600;
line-height: 72px;
margin-bottom: 24px;
}
.desc {
color: rgba(0, 0, 0, 0.45);
font-size: 20px;
line-height: 28px;
margin-bottom: 16px;
}
}
}
\ No newline at end of file
<template>
<basic-container>
<iframe :src="src"
class="iframe"
ref="iframe"></iframe>
</basic-container>
</template>
<script>
import {mapGetters} from "vuex";
import NProgress from "nprogress"; // progress bar
import "nprogress/nprogress.css"; // progress bar style
export default {
name: "AvueIframe",
data() {
return {
urlPath: this.getUrlPath() //iframe src 路径
};
},
created() {
NProgress.configure({showSpinner: false});
},
mounted() {
this.load();
this.resize();
},
props: ["routerPath"],
watch: {
$route: function () {
this.load();
},
routerPath: function () {
// 监听routerPath变化,改变src路径
this.urlPath = this.getUrlPath();
}
},
computed: {
...mapGetters(["screen"]),
src() {
return this.$route.query.src
? this.$route.query.src.replace("$", "#")
: this.urlPath;
}
},
methods: {
// 显示等待框
show() {
NProgress.start();
},
// 隐藏等待狂
hide() {
NProgress.done();
},
// 加载浏览器窗口变化自适应
resize() {
window.onresize = () => {
this.iframeInit();
};
},
// 加载组件
load() {
this.show();
var flag = true; //URL是否包含问号
if (this.$route.query.src !== undefined && 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自动隐藏等待狂,加强用户体验
let time = 3;
const timeFunc = setInterval(() => {
time--;
if (time === 0) {
this.hide();
clearInterval(timeFunc);
}
}, 1000);
this.iframeInit();
},
//iframe窗口初始化
iframeInit() {
const iframe = this.$refs.iframe;
const clientHeight =
document.documentElement.clientHeight - (screen > 1 ? 200 : 130);
if (!iframe) return;
iframe.style.height = `${clientHeight}px`;
if (iframe.attachEvent) {
iframe.attachEvent("onload", () => {
this.hide();
});
} else {
iframe.onload = () => {
this.hide();
};
}
},
getUrlPath: function () {
//获取 iframe src 路径
let url = window.location.href;
url = url.replace("/myiframe", "");
return url;
}
}
};
</script>
<style lang="scss">
.iframe {
width: 100%;
height: 100%;
border: 0;
overflow: hidden;
box-sizing: border-box;
}
</style>
<template>
<el-dialog title="账号注册"
append-to-body
:visible.sync="accountBox"
:close-on-click-modal="false"
:close-on-press-escape="false"
:show-close="false"
width="20%">
<el-form :model="form" ref="form" label-width="80px">
<el-form-item v-if="tenantMode" label="租户编号">
<el-input v-model="form.tenantId" placeholder="请输入租户编号"></el-input>
</el-form-item>
<el-form-item label="用户姓名">
<el-input v-model="form.name" placeholder="请输入用户姓名"></el-input>
</el-form-item>
<el-form-item label="账号名称">
<el-input v-model="form.account" placeholder="请输入账号名称"></el-input>
</el-form-item>
<el-form-item label="账号密码">
<el-input v-model="form.password" placeholder="请输入账号密码"></el-input>
</el-form-item>
<el-form-item label="确认密码">
<el-input v-model="form.password2" placeholder="请输入确认密码"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button type="primary" :loading="loading" @click="handleRegister">确 定</el-button>
</span>
</el-dialog>
</template>
<script>
import {mapGetters} from "vuex";
import {validatenull} from "@/util/validate";
import {registerGuest} from "@/api/user";
import {getTopUrl} from "@/util/util";
import {info} from "@/api/system/tenant";
import {resetRouter} from "@/router/router";
export default {
name: "thirdRegister",
data() {
return {
form: {
tenantId: '',
name: '',
account: '',
password: '',
password2: '',
},
loading: false,
tenantMode: true,
accountBox: false,
};
},
computed: {
...mapGetters(["userInfo"]),
},
created() {
this.getTenant();
},
mounted() {
// 若未登录则弹出框进行绑定
if (validatenull(this.userInfo.user_id) || this.userInfo.user_id < 0) {
this.form.name = this.userInfo.user_name;
this.form.account = this.userInfo.user_name;
this.accountBox = true;
}
},
methods: {
handleRegister() {
if (this.form.tenantId === '') {
this.$message.warning("请先输入租户编号");
return;
}
if (this.form.account === '') {
this.$message.warning("请先输入账号名称");
return;
}
if (this.form.password === '' || this.form.password2 === '') {
this.$message.warning("请先输入密码");
return;
}
if (this.form.password !== this.form.password2) {
this.$message.warning("两次密码输入不一致");
return;
}
this.loading = true;
registerGuest(this.form, this.userInfo.oauth_id).then(res => {
this.loading = false;
const data = res.data;
if (data.success) {
this.accountBox = false;
this.$alert("注册申请已提交,请耐心等待管理员通过!", '注册提示').then(() => {
this.$store.dispatch("LogOut").then(() => {
resetRouter();
this.$router.push({path: "/login"});
});
})
} else {
this.$message.error(data.msg || '提交失败');
}
}, error => {
window.console.log(error);
this.loading = false;
});
},
getTenant() {
let domain = getTopUrl();
// 临时指定域名,方便测试
//domain = "https://bladex.vip";
info(domain).then(res => {
const data = res.data;
if (data.success && data.data.tenantId) {
this.form.tenantId = data.data.tenantId;
this.tenantMode = false;
}
})
},
},
};
</script>
// 配置编译环境和线上环境之间的切换
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
}
export default [
{
label: "通用图标",
list: [
"iconfont iconicon_roundadd",
"iconfont iconicon_compile",
"iconfont iconicon_glass",
"iconfont iconicon_roundclose",
"iconfont iconicon_roundreduce",
"iconfont iconicon_delete",
"iconfont iconicon_shakehands",
"iconfont iconicon_task_done",
"iconfont iconicon_voipphone",
"iconfont iconicon_safety",
"iconfont iconicon_work",
"iconfont iconicon_study",
"iconfont iconicon_task",
"iconfont iconicon_subordinate",
"iconfont iconicon_star",
"iconfont iconicon_setting",
"iconfont iconicon_sms",
"iconfont iconicon_share",
"iconfont iconicon_secret",
"iconfont iconicon_scan_namecard",
"iconfont iconicon_principal",
"iconfont iconicon_group",
"iconfont iconicon_send",
"iconfont iconicon_scan",
"iconfont iconicon_search",
"iconfont iconicon_refresh",
"iconfont iconicon_savememo",
"iconfont iconicon_QRcode",
"iconfont iconicon_im_keyboard",
"iconfont iconicon_redpacket",
"iconfont iconicon_photo",
"iconfont iconicon_qq",
"iconfont iconicon_wechat",
"iconfont iconicon_phone",
"iconfont iconicon_namecard",
"iconfont iconicon_notice",
"iconfont iconicon_next_arrow",
"iconfont iconicon_left",
"iconfont iconicon_more",
"iconfont iconicon_details",
"iconfont iconicon_message",
"iconfont iconicon_mobilephone",
"iconfont iconicon_im_voice",
"iconfont iconicon_GPS",
"iconfont iconicon_ding",
"iconfont iconicon_exchange",
"iconfont iconicon_cspace",
"iconfont iconicon_doc",
"iconfont iconicon_dispose",
"iconfont iconicon_discovery",
"iconfont iconicon_community_line",
"iconfont iconicon_cloud_history",
"iconfont iconicon_coinpurse_line",
"iconfont iconicon_airplay",
"iconfont iconicon_at",
"iconfont iconicon_addressbook",
"iconfont iconicon_boss",
"iconfont iconicon_addperson",
"iconfont iconicon_affiliations_li",
"iconfont iconicon_addmessage",
"iconfont iconicon_addresslist",
"iconfont iconicon_add",
"iconfont icongithub",
"iconfont icongitee2",
]
},
{
label: "系统图标",
list: [
"iconfont icon-zhongyingwen",
"iconfont icon-caidan",
"iconfont icon-rizhi1",
"iconfont icon-zhuti",
"iconfont icon-suoping",
"iconfont icon-bug",
"iconfont icon-qq1",
"iconfont icon-weixin1",
"iconfont icon-shouji",
"iconfont icon-mima",
"iconfont icon-yonghu",
"iconfont icon-yanzhengma",
"iconfont icon-canshu",
"iconfont icon-dongtai",
"iconfont icon-iconset0265",
"iconfont icon-shujuzhanshi2",
"iconfont icon-tuichuquanping",
"iconfont icon-rizhi",
"iconfont icon-cuowutishitubiao",
"iconfont icon-debug",
"iconfont icon-iconset0216",
"iconfont icon-quanxian",
"iconfont icon-quanxian",
"iconfont icon-shuaxin",
"iconfont icon-bofangqi-suoping",
"iconfont icon-quanping",
"iconfont icon-navicon",
"iconfont icon-biaodan",
"iconfont icon-liuliangyunpingtaitubiao08",
"iconfont icon-caidanguanli",
"iconfont icon-cuowu",
"iconfont icon-wxbgongju",
"iconfont icon-tuichu",
"iconfont icon-daohanglanmoshi02",
"iconfont icon-changyonglogo27",
"iconfont icon-biaoge",
"iconfont icon-baidu1",
"iconfont icon-tubiao",
"iconfont icon-souhu",
"iconfont icon-msnui-360",
"iconfont icon-iframe",
"iconfont icon-huanyingye",
]
}
]
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment