Commit eb78295e authored by 萌萌哒SAKURA酱's avatar 萌萌哒SAKURA酱

🎨 Improving structure / format of the code.

parent ab75b4d4
......@@ -2,4 +2,4 @@ module.exports = {
presets: [
'@vue/app'
]
}
\ No newline at end of file
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -4,4 +4,4 @@ code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
CryptoJS.mode.ECB=function(){var a=CryptoJS.lib.BlockCipherMode.extend();a.Encryptor=a.extend({processBlock:function(a,b){this._cipher.encryptBlock(a,b)}});a.Decryptor=a.extend({processBlock:function(a,b){this._cipher.decryptBlock(a,b)}});return a}();
CryptoJS.mode.ECB = (function () { var a = CryptoJS.lib.BlockCipherMode.extend(); a.Encryptor = a.extend({ processBlock: function (a, b) { this._cipher.encryptBlock(a, b) } }); a.Decryptor = a.extend({ processBlock: function (a, b) { this._cipher.decryptBlock(a, b) } }); return a }())
......@@ -2,24 +2,24 @@
* Zero padding strategy.
*/
CryptoJS.pad.ZeroPadding = {
pad: function (data, blockSize) {
// Shortcut
var blockSizeBytes = blockSize * 4;
pad: function (data, blockSize) {
// Shortcut
var blockSizeBytes = blockSize * 4
// Pad
data.clamp();
data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes);
},
// Pad
data.clamp()
data.sigBytes += blockSizeBytes - ((data.sigBytes % blockSizeBytes) || blockSizeBytes)
},
unpad: function (data) {
// Shortcut
var dataWords = data.words;
unpad: function (data) {
// Shortcut
var dataWords = data.words
// Unpad
var i = data.sigBytes - 1;
while (!((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {
i--;
}
data.sigBytes = i + 1;
// Unpad
var i = data.sigBytes - 1
while (!((dataWords[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff)) {
i--
}
};
data.sigBytes = i + 1
}
}
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function fetchList(query) {
export function fetchList (query) {
return request({
url: '/act/model',
method: 'get',
......@@ -25,22 +25,21 @@ export function fetchList(query) {
})
}
export function delObj(id) {
export function delObj (id) {
return request({
url: '/act/model/' + id,
method: 'delete'
})
}
export function deploy(id) {
export function deploy (id) {
return request({
url: '/act/model/deploy/' + id,
method: 'post'
})
}
export function addObj(obj) {
export function addObj (obj) {
return request({
url: '/act/model/insert',
method: 'post',
......@@ -48,14 +47,14 @@ export function addObj(obj) {
})
}
export function getObj(id) {
export function getObj (id) {
return request({
url: '/admin/log/' + id,
method: 'get'
})
}
export function putObj(obj) {
export function putObj (obj) {
return request({
url: '/admin/log/',
method: 'put',
......
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function fetchList(query) {
export function fetchList (query) {
return request({
url: '/act/leave-bill/page',
method: 'get',
......@@ -25,7 +25,7 @@ export function fetchList(query) {
})
}
export function addObj(obj) {
export function addObj (obj) {
return request({
url: '/act/leave-bill',
method: 'post',
......@@ -33,28 +33,28 @@ export function addObj(obj) {
})
}
export function getObj(id) {
export function getObj (id) {
return request({
url: '/act/leave-bill/' + id,
method: 'get'
})
}
export function submit(id) {
export function submit (id) {
return request({
url: '/act/leave-bill/submit/' + id,
method: 'get'
})
}
export function delObj(id) {
export function delObj (id) {
return request({
url: '/act/leave-bill/' + id,
method: 'delete'
})
}
export function putObj(obj) {
export function putObj (obj) {
return request({
url: '/act/leave-bill/',
method: 'put',
......
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function fetchList(query) {
export function fetchList (query) {
return request({
url: '/act/process',
method: 'get',
......@@ -25,16 +25,16 @@ export function fetchList(query) {
})
}
export function delObj(id) {
export function delObj (id) {
return request({
url: '/act/process/' + id,
method: 'delete'
})
}
export function status(id, type) {
export function status (id, type) {
return request({
url: '/act/process/status/' + id + "/" + type,
url: '/act/process/status/' + id + '/' + type,
method: 'put'
})
}
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function fetchList(query) {
export function fetchList (query) {
return request({
url: '/act/task/todo',
method: 'get',
......@@ -25,21 +25,21 @@ export function fetchList(query) {
})
}
export function fetchDetail(id) {
export function fetchDetail (id) {
return request({
url: '/act/task/' + id,
method: 'get'
})
}
export function fetchComment(id) {
export function fetchComment (id) {
return request({
url: '/act/task/comment/' + id,
method: 'get'
})
}
export function doTask(obj) {
export function doTask (obj) {
return request({
url: '/act/task',
method: 'post',
......
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function fetchList(query) {
export function fetchList (query) {
return request({
url: '/admin/client/page',
method: 'get',
......@@ -25,7 +25,7 @@ export function fetchList(query) {
})
}
export function addObj(obj) {
export function addObj (obj) {
return request({
url: '/admin/client/',
method: 'post',
......@@ -33,21 +33,21 @@ export function addObj(obj) {
})
}
export function getObj(id) {
export function getObj (id) {
return request({
url: '/admin/client/' + id,
method: 'get'
})
}
export function delObj(id) {
export function delObj (id) {
return request({
url: '/admin/client/' + id,
method: 'delete'
})
}
export function putObj(obj) {
export function putObj (obj) {
return request({
url: '/admin/client',
method: 'put',
......
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function fetchDeptTree(query) {
export function fetchDeptTree (query) {
return request({
url: '/admin/dept/user-tree',
method: 'get',
......@@ -25,7 +25,7 @@ export function fetchDeptTree(query) {
})
}
export function fetchTree(query) {
export function fetchTree (query) {
return request({
url: '/admin/dept/tree',
method: 'get',
......@@ -33,7 +33,7 @@ export function fetchTree(query) {
})
}
export function addObj(obj) {
export function addObj (obj) {
return request({
url: '/admin/dept/',
method: 'post',
......@@ -41,21 +41,21 @@ export function addObj(obj) {
})
}
export function getObj(id) {
export function getObj (id) {
return request({
url: '/admin/dept/' + id,
method: 'get'
})
}
export function delObj(id) {
export function delObj (id) {
return request({
url: '/admin/dept/' + id,
method: 'delete'
})
}
export function putObj(obj) {
export function putObj (obj) {
return request({
url: '/admin/dept/',
method: 'put',
......
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function fetchList(query) {
export function fetchList (query) {
return request({
url: '/admin/dict/page',
method: 'get',
......@@ -25,7 +25,7 @@ export function fetchList(query) {
})
}
export function addObj(obj) {
export function addObj (obj) {
return request({
url: '/admin/dict/',
method: 'post',
......@@ -33,21 +33,21 @@ export function addObj(obj) {
})
}
export function getObj(id) {
export function getObj (id) {
return request({
url: '/admin/dict/' + id,
method: 'get'
})
}
export function delObj(row) {
export function delObj (row) {
return request({
url: '/admin/dict/' + row.id + '/' + row.type,
method: 'delete'
})
}
export function putObj(obj) {
export function putObj (obj) {
return request({
url: '/admin/dict/',
method: 'put',
......@@ -55,7 +55,7 @@ export function putObj(obj) {
})
}
export function remote(type) {
export function remote (type) {
return request({
url: '/admin/dict/type/' + type,
method: 'get'
......
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function fetchList(query) {
export function fetchList (query) {
return request({
url: '/admin/log/page',
method: 'get',
......@@ -25,14 +25,14 @@ export function fetchList(query) {
})
}
export function delObj(id) {
export function delObj (id) {
return request({
url: '/admin/log/' + id,
method: 'delete'
})
}
export function addObj(obj) {
export function addObj (obj) {
return request({
url: '/admin/log/',
method: 'post',
......@@ -40,14 +40,14 @@ export function addObj(obj) {
})
}
export function getObj(id) {
export function getObj (id) {
return request({
url: '/admin/log/' + id,
method: 'get'
})
}
export function putObj(obj) {
export function putObj (obj) {
return request({
url: '/admin/log/',
method: 'put',
......@@ -55,7 +55,7 @@ export function putObj(obj) {
})
}
export function sendLogs(logsList) {
export function sendLogs (logsList) {
return request({
url: '/admin/log/logs',
method: 'post',
......
......@@ -17,14 +17,14 @@
import request from '@/router/axios'
export function GetMenu() {
export function GetMenu () {
return request({
url: '/admin/menu',
method: 'get'
})
}
export function fetchTree(query) {
export function fetchTree (query) {
return request({
url: '/admin/menu/tree',
method: 'get',
......@@ -32,7 +32,7 @@ export function fetchTree(query) {
})
}
export function addObj(obj) {
export function addObj (obj) {
return request({
url: '/admin/menu',
method: 'post',
......@@ -40,21 +40,21 @@ export function addObj(obj) {
})
}
export function getObj(id) {
export function getObj (id) {
return request({
url: '/admin/menu/' + id,
method: 'get'
})
}
export function delObj(id) {
export function delObj (id) {
return request({
url: '/admin/menu/' + id,
method: 'delete'
})
}
export function putObj(obj) {
export function putObj (obj) {
return request({
url: '/admin/menu',
method: 'put',
......
......@@ -17,14 +17,14 @@
import request from '@/router/axios'
export function roleList() {
export function roleList () {
return request({
url: '/admin/role/roleList',
method: 'get'
})
}
export function fetchList(query) {
export function fetchList (query) {
return request({
url: '/admin/role/page',
method: 'get',
......@@ -32,21 +32,21 @@ export function fetchList(query) {
})
}
export function deptRoleList() {
export function deptRoleList () {
return request({
url: '/admin/role/list',
method: 'get'
})
}
export function getObj(id) {
export function getObj (id) {
return request({
url: '/admin/role/' + id,
method: 'get'
})
}
export function addObj(obj) {
export function addObj (obj) {
return request({
url: '/admin/role',
method: 'post',
......@@ -54,7 +54,7 @@ export function addObj(obj) {
})
}
export function putObj(obj) {
export function putObj (obj) {
return request({
url: '/admin/role',
method: 'put',
......@@ -62,14 +62,14 @@ export function putObj(obj) {
})
}
export function delObj(id) {
export function delObj (id) {
return request({
url: '/admin/role/' + id,
method: 'delete'
})
}
export function permissionUpd(roleId, menuIds) {
export function permissionUpd (roleId, menuIds) {
return request({
url: '/admin/role/menu',
method: 'put',
......@@ -80,7 +80,7 @@ export function permissionUpd(roleId, menuIds) {
})
}
export function fetchRoleTree(roleName) {
export function fetchRoleTree (roleName) {
return request({
url: '/admin/menu/tree/' + roleName,
method: 'get'
......
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function fetchList(query) {
export function fetchList (query) {
return request({
url: '/admin/route',
method: 'get',
......@@ -25,7 +25,7 @@ export function fetchList(query) {
})
}
export function putObj(obj) {
export function putObj (obj) {
return request({
url: '/admin/route',
method: 'put',
......
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function fetchList(query) {
export function fetchList (query) {
return request({
url: '/admin/social/page',
method: 'get',
......@@ -25,7 +25,7 @@ export function fetchList(query) {
})
}
export function addObj(obj) {
export function addObj (obj) {
return request({
url: '/admin/social/',
method: 'post',
......@@ -33,21 +33,21 @@ export function addObj(obj) {
})
}
export function getObj(id) {
export function getObj (id) {
return request({
url: '/admin/social/' + id,
method: 'get'
})
}
export function delObj(id) {
export function delObj (id) {
return request({
url: '/admin/social/' + id,
method: 'delete'
})
}
export function putObj(obj) {
export function putObj (obj) {
return request({
url: '/admin/social/',
method: 'put',
......
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function fetchList(query) {
export function fetchList (query) {
return request({
url: '/admin/token/page',
method: 'get',
......@@ -25,7 +25,7 @@ export function fetchList(query) {
})
}
export function delObj(token) {
export function delObj (token) {
return request({
url: '/admin/token/' + token,
method: 'delete'
......
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function fetchList(query) {
export function fetchList (query) {
return request({
url: '/admin/user/page',
method: 'get',
......@@ -25,7 +25,7 @@ export function fetchList(query) {
})
}
export function addObj(obj) {
export function addObj (obj) {
return request({
url: '/admin/user',
method: 'post',
......@@ -33,21 +33,21 @@ export function addObj(obj) {
})
}
export function getObj(id) {
export function getObj (id) {
return request({
url: '/admin/user/' + id,
method: 'get'
})
}
export function delObj(id) {
export function delObj (id) {
return request({
url: '/admin/user/' + id,
method: 'delete'
})
}
export function putObj(obj) {
export function putObj (obj) {
return request({
url: '/admin/user',
method: 'put',
......@@ -55,7 +55,7 @@ export function putObj(obj) {
})
}
export function getDetails(obj) {
export function getDetails (obj) {
return request({
url: '/admin/user/details/' + obj,
method: 'get'
......
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function fetchList(query) {
export function fetchList (query) {
return request({
url: '/daemon/execution-log/page',
method: 'get',
......@@ -25,7 +25,7 @@ export function fetchList(query) {
})
}
export function addObj(obj) {
export function addObj (obj) {
return request({
url: '/daemon/execution-log',
method: 'post',
......@@ -33,21 +33,21 @@ export function addObj(obj) {
})
}
export function getObj(id) {
export function getObj (id) {
return request({
url: '/daemon/execution-log/' + id,
method: 'get'
})
}
export function delObj(id) {
export function delObj (id) {
return request({
url: '/daemon/execution-log/' + id,
method: 'delete'
})
}
export function putObj(obj) {
export function putObj (obj) {
return request({
url: '/daemon/execution-log',
method: 'put',
......
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function fetchList(query) {
export function fetchList (query) {
return request({
url: '/daemon/status-trace-log/page',
method: 'get',
......@@ -25,7 +25,7 @@ export function fetchList(query) {
})
}
export function addObj(obj) {
export function addObj (obj) {
return request({
url: '/daemon/status-trace-log',
method: 'post',
......@@ -33,21 +33,21 @@ export function addObj(obj) {
})
}
export function getObj(id) {
export function getObj (id) {
return request({
url: '/daemon/status-trace-log/' + id,
method: 'get'
})
}
export function delObj(id) {
export function delObj (id) {
return request({
url: '/daemon/statustracelog/' + id,
method: 'delete'
})
}
export function putObj(obj) {
export function putObj (obj) {
return request({
url: '/daemon/status-trace-log',
method: 'put',
......
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function fetchList(query) {
export function fetchList (query) {
return request({
url: '/gen/generator/page',
method: 'get',
......@@ -25,23 +25,23 @@ export function fetchList(query) {
})
}
export function handleDown(table) {
export function handleDown (table) {
return request({
url: '/gen/generator/code',
method: 'post',
data: table,
responseType: 'arraybuffer'
}).then((response) => { // 处理返回的文件流
let blob = new Blob([response.data], {type: 'application/zip'})
let blob = new Blob([response.data], { type: 'application/zip' })
let filename = table.tableName + '.zip'
let link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = filename;
document.body.appendChild(link);
link.click();
let link = document.createElement('a')
link.href = URL.createObjectURL(blob)
link.download = filename
document.body.appendChild(link)
link.click()
window.setTimeout(function () {
URL.revokeObjectURL(blob);
document.body.removeChild(link);
}, 0);
URL.revokeObjectURL(blob)
document.body.removeChild(link)
}, 0)
})
}
......@@ -26,7 +26,7 @@ export const loginByUsername = (username, password, code, randomStr) => {
'Authorization': 'Basic cGlnOnBpZw=='
},
method: 'post',
params: {username, password, randomStr, code, grant_type, scope}
params: { username, password, randomStr, code, grant_type, scope }
})
}
......@@ -39,7 +39,7 @@ export const loginByMobile = (mobile, code) => {
'Authorization': 'Basic cGlnOnBpZw=='
},
method: 'post',
params: {mobile: 'SMS@' + mobile, code: code, grant_type}
params: { mobile: 'SMS@' + mobile, code: code, grant_type }
})
}
......@@ -52,7 +52,7 @@ export const loginBySocial = (state, code) => {
'Authorization': 'Basic cGlnOnBpZw=='
},
method: 'post',
params: {mobile: state + '@' + code, grant_type}
params: { mobile: state + '@' + code, grant_type }
})
}
......
......@@ -17,7 +17,7 @@
import request from '@/router/axios'
export function getToken() {
export function getToken () {
return request({
url: '/zuul/admin/user/upload', // 假地址,自行替换
method: 'post'
......
// 配置编译环境和线上环境之间的切换
const env = process.env
let baseUrl = '';
let baseUrl = ''
// 图表库为avue和pig2套地址
let iconfontVersion = ['667895_4y8d30c1og', '567566_qo5lxgtishg']
let iconfontUrl = `//at.alicdn.com/t/font_$key.css`;
let iconfontUrl = `//at.alicdn.com/t/font_$key.css`
let codeUrl = `/code`
let actUrl = `${window.origin}/act/modeler.html?modelId=`;
let actUrl = `${window.origin}/act/modeler.html?modelId=`
if (env.NODE_ENV == 'development') {
} else if (env.NODE_ENV == 'production') {
......
......@@ -47,34 +47,34 @@ export const tableOption = {
label: '模型名称',
prop: 'name'
},
{
label: '描述',
prop: 'desc',
hide: true,
editDisabled: false,
addVisdiplay: true
}, {
label: '版本号',
prop: 'version',
editDisabled: true,
addVisdiplay: false
}, {
width: 150,
label: '创建时间',
prop: 'createTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
valueFormat: 'timestamp',
editDisabled: true,
addVisdiplay: false
}, {
width: 150,
label: '最后更新时间',
prop: 'lastUpdateTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
valueFormat: 'timestamp',
editDisabled: true,
addVisdiplay: false
}]
{
label: '描述',
prop: 'desc',
hide: true,
editDisabled: false,
addVisdiplay: true
}, {
label: '版本号',
prop: 'version',
editDisabled: true,
addVisdiplay: false
}, {
width: 150,
label: '创建时间',
prop: 'createTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
valueFormat: 'timestamp',
editDisabled: true,
addVisdiplay: false
}, {
width: 150,
label: '最后更新时间',
prop: 'lastUpdateTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
valueFormat: 'timestamp',
editDisabled: true,
addVisdiplay: false
}]
}
......@@ -51,7 +51,7 @@ export const tableOption = {
type: 'datetime',
overHidden: true,
format: 'yyyy-MM-dd HH:mm',
valueFormat: "yyyy-MM-dd hh:mm:ss"
valueFormat: 'yyyy-MM-dd hh:mm:ss'
},
{
label: '提交时间',
......
......@@ -54,28 +54,28 @@ export const formOption = {
span: 12,
column: [
{
label: "任务编号",
prop: "taskId",
label: '任务编号',
prop: 'taskId',
disabled: true
},
{
label: "任务名称",
prop: "taskName",
label: '任务名称',
prop: 'taskName',
disabled: true
},
{
label: "申请人",
prop: "username",
label: '申请人',
prop: 'username',
disabled: true
},
{
label: "请假时长",
prop: "days",
label: '请假时长',
prop: 'days',
disabled: true
},
{
label: "请假时间",
prop: "createTime",
label: '请假时间',
prop: 'createTime',
type: 'datetime',
format: 'yyyy-MM-dd HH:mm',
disabled: true
......@@ -105,8 +105,8 @@ export const formOption = {
span: 24,
rules: [{
required: true,
message: "请输入备注",
trigger: "blur"
message: '请输入备注',
trigger: 'blur'
}]
}
]
......@@ -132,11 +132,11 @@ export const taskOption = {
label: '批注',
prop: 'fullMessage'
}, {
label: "操作时间",
prop: "time",
type: "datetime",
format: "yyyy-MM-dd hh:mm:ss",
valueFormat: "yyyy-MM-dd hh:mm:ss",
label: '操作时间',
prop: 'time',
type: 'datetime',
format: 'yyyy-MM-dd hh:mm:ss',
valueFormat: 'yyyy-MM-dd hh:mm:ss'
}
]
}
......@@ -30,7 +30,7 @@ export const tableOption = {
prop: 'roleId',
span: 24,
editDisabled: true,
addVisdiplay: false,
addVisdiplay: false
}, {
fixed: true,
label: '角色名称',
......@@ -41,12 +41,12 @@ export const tableOption = {
message: '角色名称不能为空',
trigger: 'blur'
},
{
min: 3,
max: 20,
message: '长度在 3 到 20 个字符',
trigger: 'blur'
}
{
min: 3,
max: 20,
message: '长度在 3 到 20 个字符',
trigger: 'blur'
}
]
}, {
width: 150,
......@@ -59,12 +59,12 @@ export const tableOption = {
message: '角色标识不能为空',
trigger: 'blur'
},
{
min: 3,
max: 20,
message: '长度在 3 到 20 个字符',
trigger: 'blur'
}
{
min: 3,
max: 20,
message: '长度在 3 到 20 个字符',
trigger: 'blur'
}
]
}, {
width: 180,
......@@ -73,7 +73,7 @@ export const tableOption = {
overHidden: true,
type: 'textarea',
minRows: 6,
span: 24,
span: 24
}, {
width: 180,
label: '创建时间',
......@@ -83,6 +83,6 @@ export const tableOption = {
valueFormat: 'yyyy-MM-dd HH:mm:ss',
editDisabled: true,
addVisdiplay: false,
span: 24,
span: 24
}]
}
......@@ -33,60 +33,60 @@ export const tableOption = {
addVisdiplay: false,
editDisabled: true
},
{
label: '类型',
prop: 'type',
type: 'select',
dicData: 'social_type',
search: true,
rules: [{
required: true,
message: '请选择类型',
trigger: 'blur'
}]
},
{
label: '描述',
prop: 'remark'
},
{
label: 'appId',
prop: 'appId',
overHidden: true,
rules: [{
required: true,
message: '请输入appId',
trigger: 'blur'
}]
},
{
label: 'appSecret',
prop: 'appSecret',
overHidden: true,
rules: [{
required: true,
message: '请输入appSecret',
trigger: 'blur'
}]
},
{
label: '回调地址',
prop: 'redirectUrl',
hide: true,
rules: [{
required: true,
message: '请输入回调地址',
trigger: 'blur'
}]
},
{
valueFormat: 'timestamp',
format: 'yyyy-MM-dd hh:mm:ss',
label: '创建时间',
prop: 'createTime',
align: 'center',
addVisdiplay: false,
editDisabled: true
}
{
label: '类型',
prop: 'type',
type: 'select',
dicData: 'social_type',
search: true,
rules: [{
required: true,
message: '请选择类型',
trigger: 'blur'
}]
},
{
label: '描述',
prop: 'remark'
},
{
label: 'appId',
prop: 'appId',
overHidden: true,
rules: [{
required: true,
message: '请输入appId',
trigger: 'blur'
}]
},
{
label: 'appSecret',
prop: 'appSecret',
overHidden: true,
rules: [{
required: true,
message: '请输入appSecret',
trigger: 'blur'
}]
},
{
label: '回调地址',
prop: 'redirectUrl',
hide: true,
rules: [{
required: true,
message: '请输入回调地址',
trigger: 'blur'
}]
},
{
valueFormat: 'timestamp',
format: 'yyyy-MM-dd hh:mm:ss',
label: '创建时间',
prop: 'createTime',
align: 'center',
addVisdiplay: false,
editDisabled: true
}
]
}
......@@ -14,7 +14,7 @@
* this software without specific prior written permission.
* Author: lengleng (wangiegie@gmail.com)
*/
import {getDetails} from "@/api/admin/user";
import { getDetails } from '@/api/admin/user'
var validateUsername = (rule, value, callback) => {
getDetails(value).then(response => {
......@@ -25,8 +25,8 @@ var validateUsername = (rule, value, callback) => {
} else {
callback()
}
});
};
})
}
export const tableOption = {
border: true,
index: true,
......@@ -44,7 +44,7 @@ export const tableOption = {
span: 24,
hide: true,
editDisabled: true,
addVisdiplay: false,
addVisdiplay: false
}, {
fixed: true,
label: '用户名',
......@@ -55,15 +55,15 @@ export const tableOption = {
span: 24,
rules: [{
required: true,
message: "请输入用户名",
message: '请输入用户名'
},
{
min: 3,
max: 20,
message: '长度在 3 到 20 个字符',
trigger: 'blur'
},
{
min: 3,
max: 20,
message: "长度在 3 到 20 个字符",
trigger: "blur"
},
{validator: validateUsername, trigger: 'blur'}
{ validator: validateUsername, trigger: 'blur' }
]
}, {
label: '密码',
......@@ -75,8 +75,8 @@ export const tableOption = {
rules: [{
min: 6,
max: 20,
message: "长度在 6 到 20 个字符",
trigger: "blur"
message: '长度在 6 到 20 个字符',
trigger: 'blur'
}]
}, {
label: '所属部门',
......@@ -87,8 +87,8 @@ export const tableOption = {
hide: true,
rules: [{
required: true,
message: "请选择部门",
trigger: "blur"
message: '请选择部门',
trigger: 'blur'
}]
}, {
label: '手机号',
......@@ -99,8 +99,8 @@ export const tableOption = {
rules: [{
min: 6,
max: 20,
message: "长度在 11 个字符",
trigger: "blur"
message: '长度在 11 个字符',
trigger: 'blur'
}]
}, {
label: '角色',
......@@ -111,26 +111,26 @@ export const tableOption = {
span: 24,
rules: [{
required: true,
message: "请选择角色",
trigger: "blur"
}],
message: '请选择角色',
trigger: 'blur'
}]
}, {
label: '状态',
prop: "lockFlag",
type: "select",
prop: 'lockFlag',
type: 'select',
solt: true,
span: 24,
rules: [{
required: true,
message: "请选择状态",
trigger: "blur"
message: '请选择状态',
trigger: 'blur'
}],
dicData: [{
label: '有效',
value: "0"
value: '0'
}, {
label: '锁定',
value: "9"
value: '9'
}]
}, {
width: 180,
......
......@@ -19,10 +19,10 @@ const DIC = {
label: '成功',
value: 1
},
{
label: '失败',
value: 0
}
{
label: '失败',
value: 0
}
]
}
......@@ -83,7 +83,7 @@ export const tableOption = {
label: '执行结果',
prop: 'isSuccess',
type: 'select',
dicData: DIC.isSuccess,
dicData: DIC.isSuccess
},
{
label: '开始时间',
......@@ -93,6 +93,6 @@ export const tableOption = {
{
label: '完成时间',
prop: 'completeTime'
},
}
]
}
......@@ -20,13 +20,13 @@ const DIC = {
label: '准备中',
value: 'TASK_STAGING'
},
{
label: '执行中',
value: 'TASK_RUNNING'
}, {
label: '已经完成',
value: 'TASK_FINISHED'
}
{
label: '执行中',
value: 'TASK_RUNNING'
}, {
label: '已经完成',
value: 'TASK_FINISHED'
}
]
}
......@@ -46,59 +46,59 @@ export const tableOption = {
prop: 'id',
hide: true
},
{
label: '作业名称',
prop: 'jobName',
search: true
},
{
label: '原任务',
prop: 'originalTaskId',
hide: true,
width: 100
},
{
label: '任务ID',
prop: 'taskId',
hide: true
},
{
label: '服务器IP',
prop: 'slaveId'
},
{
label: '资源',
prop: 'source',
hide: true
},
{
label: '执行类型',
prop: 'executionType',
hide: true
},
{
width: 100,
label: '分片项',
prop: 'shardingItem'
},
{
width: 100,
label: '状态',
prop: 'state',
type: 'select',
dicData: DIC.state,
search: true
},
{
label: '消息',
prop: 'message',
width: 100,
overHidden: true,
hide: true
},
{
label: '创建时间',
prop: 'creationTime'
}
{
label: '作业名称',
prop: 'jobName',
search: true
},
{
label: '原任务',
prop: 'originalTaskId',
hide: true,
width: 100
},
{
label: '任务ID',
prop: 'taskId',
hide: true
},
{
label: '服务器IP',
prop: 'slaveId'
},
{
label: '资源',
prop: 'source',
hide: true
},
{
label: '执行类型',
prop: 'executionType',
hide: true
},
{
width: 100,
label: '分片项',
prop: 'shardingItem'
},
{
width: 100,
label: '状态',
prop: 'state',
type: 'select',
dicData: DIC.state,
search: true
},
{
label: '消息',
prop: 'message',
width: 100,
overHidden: true,
hide: true
},
{
label: '创建时间',
prop: 'creationTime'
}
]
}
......@@ -20,11 +20,11 @@ export default {
label: '地址',
width: 200,
prop: 'url',
overHidden: true,
overHidden: true
}, {
label: '内容',
prop: 'message',
overHidden: true,
overHidden: true
}, {
label: '错误堆栈',
prop: 'stack',
......@@ -33,6 +33,6 @@ export default {
label: '时间',
align: 'center',
prop: 'time',
width: 200,
width: 200
}]
}
......@@ -34,7 +34,7 @@ export const list = [{
commit: 'SET_SHOWMENU'
}]
export const option = (safe) => {
const _safe = safe;
const _safe = safe
return {
submitBtn: false,
column: [{
......@@ -43,8 +43,8 @@ export const option = (safe) => {
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
click: ({ column }) => {
_safe.set(column.prop)
}
}, {
label: '日志',
......@@ -52,8 +52,8 @@ export const option = (safe) => {
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
click: ({ column }) => {
_safe.set(column.prop)
}
}, {
label: '主题',
......@@ -61,8 +61,8 @@ export const option = (safe) => {
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
click: ({ column }) => {
_safe.set(column.prop)
}
}, {
label: '主题色',
......@@ -70,8 +70,8 @@ export const option = (safe) => {
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
click: ({ column }) => {
_safe.set(column.prop)
}
}, {
label: '全屏',
......@@ -79,8 +79,8 @@ export const option = (safe) => {
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
click: ({ column }) => {
_safe.set(column.prop)
}
}, {
label: '锁屏',
......@@ -88,8 +88,8 @@ export const option = (safe) => {
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
click: ({ column }) => {
_safe.set(column.prop)
}
}, {
label: '搜索',
......@@ -97,8 +97,8 @@ export const option = (safe) => {
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
click: ({ column }) => {
_safe.set(column.prop)
}
}, {
label: '缩放',
......@@ -106,8 +106,8 @@ export const option = (safe) => {
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
click: ({ column }) => {
_safe.set(column.prop)
}
}, {
label: '顶部菜单',
......@@ -115,8 +115,8 @@ export const option = (safe) => {
type: 'switch',
span: 24,
dicData: dicData,
click: ({column}) => {
_safe.set(column.prop);
click: ({ column }) => {
_safe.set(column.prop)
}
}]
}
......
export default {
title: "PigX",
logo: "PigX",
title: 'PigX',
logo: 'PigX',
indexTitle: 'PigX Pro 快速开发框架',
whiteList: ["/login", "/404", "/401", "/lock"], //配置无权限可以访问的页面
whiteTagList: ["/login", "/404", "/401", "/lock",], //配置不添加tags页面 ('/advanced-router/mutative-detail/*'——*为通配符)
whiteList: ['/login', '/404', '/401', '/lock'], // 配置无权限可以访问的页面
whiteTagList: ['/login', '/404', '/401', '/lock' ], // 配置不添加tags页面 ('/advanced-router/mutative-detail/*'——*为通配符)
lockPage: '/lock',
tokenTime: 6000,
info: {
title: "PigX Pro 快速开发框架",
title: 'PigX Pro 快速开发框架',
list: [
'一个基于Spring Cloud、OAuth2.0开发基于Vue前后分离的开发平台。',
'一个基于Avue2 开发无需前端知识,即可快速上手的开发平台。',
'最大程度上帮助企业节省时间成本和费用开支。',
'QQ群:23754102',
'当前版本:v2.0.0',
'当前版本:v2.0.0'
]
},
//http的status默认放行不才用统一处理的,
// http的status默认放行不才用统一处理的,
statusWhiteList: [400, 500, 401],
//配置首页不可关闭
// 配置首页不可关闭
isFirstPage: false,
fistPage: {
label: "首页",
value: "/wel/index",
label: '首页',
value: '/wel/index',
params: {},
query: {},
group: [],
close: false
},
//配置菜单的属性
// 配置菜单的属性
menu: {
props: {
label: 'label',
......
import Vue from 'vue';
import Vue from 'vue'
import store from './store'
Vue.config.errorHandler = function (err, vm, info) {
Vue.nextTick(() => {
store.commit('ADD_LOGS', {
type: 'error',
......@@ -13,13 +12,13 @@ Vue.config.errorHandler = function (err, vm, info) {
if (process.env.NODE_ENV === 'development') {
console.group('>>>>>> 错误信息 >>>>>>')
console.log(info)
console.groupEnd();
console.groupEnd()
console.group('>>>>>> Vue 实例 >>>>>>')
console.log(vm)
console.groupEnd();
console.groupEnd()
console.group('>>>>>> Error >>>>>>')
console.log(err)
console.groupEnd();
console.groupEnd()
}
})
}
function pluralize(time, label) {
function pluralize (time, label) {
if (time === 1) {
return time + label
}
......@@ -8,32 +8,35 @@ function pluralize(time, label) {
/**
* 日期格式化
*/
export function dateFormat(date) {
let format = 'yyyy-MM-dd hh:mm:ss';
export function dateFormat (date) {
let format = 'yyyy-MM-dd hh:mm:ss'
if (date != 'Invalid Date') {
var o = {
"M+": date.getMonth() + 1, //month
"d+": date.getDate(), //day
"h+": date.getHours(), //hour
"m+": date.getMinutes(), //minute
"s+": date.getSeconds(), //second
"q+": Math.floor((date.getMonth() + 3) / 3), //quarter
"S": date.getMilliseconds() //millisecond
'M+': date.getMonth() + 1, // month
'd+': date.getDate(), // day
'h+': date.getHours(), // hour
'm+': date.getMinutes(), // minute
's+': date.getSeconds(), // second
'q+': Math.floor((date.getMonth() + 3) / 3), // quarter
'S': date.getMilliseconds() // millisecond
}
if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
(date.getFullYear() + "").substr(4 - RegExp.$1.length));
for (var k in o)
if (new RegExp("(" + k + ")").test(format))
if (/(y+)/.test(format)) {
format = format.replace(RegExp.$1,
(date.getFullYear() + '').substr(4 - RegExp.$1.length))
}
for (var k in o) {
if (new RegExp('(' + k + ')').test(format)) {
format = format.replace(RegExp.$1,
RegExp.$1.length == 1 ? o[k] :
("00" + o[k]).substr(("" + o[k]).length));
return format;
RegExp.$1.length == 1 ? o[k]
: ('00' + o[k]).substr(('' + o[k]).length))
}
}
return format
}
return '';
return ''
}
export function timeAgo(time) {
export function timeAgo (time) {
const between = Date.now() / 1000 - Number(time)
if (between < 3600) {
return pluralize(~~(between / 60), ' minute')
......@@ -44,7 +47,7 @@ export function timeAgo(time) {
}
}
export function parseTime(time, cFormat) {
export function parseTime (time, cFormat) {
if (arguments.length === 0) {
return null
}
......@@ -80,7 +83,7 @@ export function parseTime(time, cFormat) {
return time_str
}
export function formatTime(time, option) {
export function formatTime (time, option) {
time = +time * 1000
const d = new Date(time)
const now = Date.now()
......@@ -103,15 +106,15 @@ export function formatTime(time, option) {
}
}
/* 数字 格式化*/
export function nFormatter(num, digits) {
/* 数字 格式化 */
export function nFormatter (num, digits) {
const si = [
{value: 1E18, symbol: 'E'},
{value: 1E15, symbol: 'P'},
{value: 1E12, symbol: 'T'},
{value: 1E9, symbol: 'G'},
{value: 1E6, symbol: 'M'},
{value: 1E3, symbol: 'k'}
{ value: 1E18, symbol: 'E' },
{ value: 1E15, symbol: 'P' },
{ value: 1E12, symbol: 'T' },
{ value: 1E9, symbol: 'G' },
{ value: 1E6, symbol: 'M' },
{ value: 1E3, symbol: 'k' }
]
for (let i = 0; i < si.length; i++) {
if (num >= si[i].value) {
......@@ -121,12 +124,12 @@ export function nFormatter(num, digits) {
return num.toString()
}
export function html2Text(val) {
export function html2Text (val) {
const div = document.createElement('div')
div.innerHTML = val
return div.textContent || div.innerText
}
export function toThousandslsFilter(num) {
export function toThousandslsFilter (num) {
return (+num || 0).toString().replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
}
import 'babel-polyfill';
import 'classlist-polyfill';
import Vue from 'vue';
import axios from './router/axios';
import VueAxios from 'vue-axios';
import App from './App';
import './permission'; // 权限
import './error'; // 日志
import router from './router/router';
import 'avue-plugin-transfer/packages' //引入avue-plugin-transfer插件
import 'babel-polyfill'
import 'classlist-polyfill'
import Vue from 'vue'
import axios from './router/axios'
import VueAxios from 'vue-axios'
import App from './App'
import './permission' // 权限
import './error' // 日志
import router from './router/router'
import 'avue-plugin-transfer/packages' // 引入avue-plugin-transfer插件
// import 'avue-plugin-ueditor/packages' //引入avue-plugin-ueditor插件(如果要兼容ie自行换掉富文本编辑器,此款插件不兼容ie)
import store from './store';
import {loadStyle} from './util/util'
import * as urls from '@/config/env';
import {iconfontUrl, iconfontVersion} from '@/config/env';
import store from './store'
import { loadStyle } from './util/util'
import * as urls from '@/config/env'
import { iconfontUrl, iconfontVersion } from '@/config/env'
import * as filters from './filters' // 全局filter
import './styles/common.scss';
import './styles/common.scss'
// // 引入avue的包
import Avue from '@smallwei/avue/lib/index.js';
import Avue from '@smallwei/avue/lib/index.js'
// // 引入avue的样式文件
import '@smallwei/avue/lib/theme-chalk/index.css';
import '@smallwei/avue/lib/theme-chalk/index.css'
import basicContainer from './components/basic-container/main'
import VueClipboard from 'vue-clipboard2'
// 插件 json 展示
......@@ -28,8 +28,7 @@ import vueJsonTreeView from 'vue-json-tree-view'
// import '../packages/index.js';
// import '../packages/theme-chalk/src/index.scss';
Vue.use(Avue, {menuType: 'text'});
Vue.use(Avue, { menuType: 'text' })
Vue.use(router)
......@@ -42,7 +41,7 @@ Vue.use(VueAxios, axios)
Vue.component('basicContainer', basicContainer)
Object.keys(urls).forEach(key => {
Vue.prototype[key] = urls[key];
Vue.prototype[key] = urls[key]
})
Object.keys(filters).forEach(key => {
......@@ -50,10 +49,10 @@ Object.keys(filters).forEach(key => {
})
iconfontVersion.forEach(ele => {
loadStyle(iconfontUrl.replace('$key', ele));
loadStyle(iconfontUrl.replace('$key', ele))
})
Vue.config.productionTip = false;
Vue.config.productionTip = false
new Vue({
router,
......
This diff is collapsed.
export default {
propsDefault: {
label: 'label',
path: 'path',
icon: 'icon',
children: 'children'
}
}
\ No newline at end of file
propsDefault: {
label: 'label',
path: 'path',
icon: 'icon',
children: 'children'
}
}
......@@ -4,44 +4,44 @@
*/
import router from './router/router'
import store from './store'
import {validatenull} from '@/util/validate'
import {getToken} from '@/util/auth'
import { validatenull } from '@/util/validate'
import { getToken } from '@/util/auth'
import NProgress from 'nprogress' // progress bar
import 'nprogress/nprogress.css' // progress bar style
NProgress.configure({showSpinner: false});
const lockPage = store.getters.website.lockPage; //锁屏页
NProgress.configure({ showSpinner: false })
const lockPage = store.getters.website.lockPage // 锁屏页
router.beforeEach((to, from, next) => {
//缓冲设置
// 缓冲设置
if (to.meta.keepAlive === true && store.state.tags.tagList.some(ele => {
return ele.value === to.fullPath;
return ele.value === to.fullPath
})) {
to.meta.$keepAlive = true;
to.meta.$keepAlive = true
} else {
NProgress.start()
if (to.meta.keepAlive === true && validatenull(to.meta.$keepAlive)) {
to.meta.$keepAlive = true;
to.meta.$keepAlive = true
} else {
to.meta.$keepAlive = false;
to.meta.$keepAlive = false
}
}
const meta = to.meta || {};
const meta = to.meta || {}
if (getToken()) {
if (store.getters.isLock && to.path != lockPage) {
next({path: lockPage})
next({ path: lockPage })
} else if (to.path === '/login') {
next({path: '/'})
next({ path: '/' })
} else {
if (store.getters.roles.length === 0) {
store.dispatch('GetUserInfo').then(() => {
next({...to, replace: true})
next({ ...to, replace: true })
}).catch(() => {
store.dispatch('FedLogOut').then(() => {
next({path: '/login'})
next({ path: '/login' })
})
})
} else {
const value = to.query.src || to.fullPath;
const label = to.query.name || to.name;
const value = to.query.src || to.fullPath
const label = to.query.name || to.name
if (meta.isTab !== false && !validatenull(value) && !validatenull(label)) {
store.commit('ADD_TAG', {
label: label,
......@@ -49,7 +49,7 @@ router.beforeEach((to, from, next) => {
params: to.params,
query: to.query,
group: router.$avueRouter.group || []
});
})
}
next()
}
......@@ -64,7 +64,7 @@ router.beforeEach((to, from, next) => {
})
router.afterEach(() => {
NProgress.done();
const title = store.getters.tag.label;
router.$avueRouter.setTitle(title);
});
NProgress.done()
const title = store.getters.tag.label
router.$avueRouter.setTitle(title)
})
let RouterPlugin = function() {
this.$router = null;
this.$store = null;
let RouterPlugin = function () {
this.$router = null
this.$store = null
}
RouterPlugin.install = function (router, store) {
this.$router = router
this.$store = store
};
RouterPlugin.install = function(router, store) {
this.$router = router;
this.$store = store;
function objToform (obj) {
let result = []
Object.keys(obj).forEach(ele => {
result.push(`${ele}=${obj[ele]}`)
})
return result.join('&')
}
this.$router.$avueRouter = {
// 全局配置
$website: this.$store.getters.website,
routerList: [],
group: '',
safe: this,
// 设置标题
setTitle: function (title) {
title = title ? `${title}——PigX微服务快速开发框架` : 'PigX微服务快速开发框架'
document.title = title
},
closeTag: (value) => {
const tag = value || this.$store.getters.tag
this.$store.commit('DEL_TAG', tag)
},
// 处理路由
getPath: function (params) {
let { src } = params
let result = src || '/'
if (src.includes('http') || src.includes('https')) {
result = `/myiframe/urlPath?${objToform(params)}`
}
return result
},
// 正则处理路由
vaildPath: function (list, path) {
let result = false
list.forEach(ele => {
if (new RegExp('^' + ele + '.*', 'g').test(path)) {
result = true
}
})
return result
},
// 设置路由值
getValue: function (route) {
let value = ''
if (route.query.src) {
value = route.query.src
} else {
value = route.path
}
return value
},
// 动态路由
formatRoutes: function (aMenu = [], first) {
const aRouter = []
const propsConfig = this.$website.menu.props
const propsDefault = {
label: propsConfig.label || 'label',
path: propsConfig.path || 'path',
icon: propsConfig.icon || 'icon',
children: propsConfig.children || 'children',
meta: propsConfig.meta || 'meta'
}
if (aMenu.length === 0) return
for (let i = 0; i < aMenu.length; i++) {
const oMenu = aMenu[i]
if (this.routerList.includes(oMenu[propsDefault.path])) return
const path = (() => {
if (first) {
return oMenu[propsDefault.path].replace('/index', '')
} else {
return oMenu[propsDefault.path]
}
})()
function objToform(obj) {
let result = [];
Object.keys(obj).forEach(ele => {
result.push(`${ele}=${obj[ele]}`);
})
return result.join('&');
}
this.$router.$avueRouter = {
//全局配置
$website: this.$store.getters.website,
routerList: [],
group: '',
safe: this,
// 设置标题
setTitle: function(title) {
title = title ? `${title}——PigX微服务快速开发框架` : 'PigX微服务快速开发框架';
document.title = title;
},
closeTag: (value) => {
const tag = value || this.$store.getters.tag;
this.$store.commit('DEL_TAG', tag)
},
//处理路由
getPath: function(params) {
let { src } = params;
let result = src || '/';
if (src.includes("http") || src.includes("https")) {
result = `/myiframe/urlPath?${objToform(params)}`;
}
return result;
},
//正则处理路由
vaildPath: function(list, path) {
let result = false;
list.forEach(ele => {
if (new RegExp("^" + ele + ".*", "g").test(path)) {
result = true
}
const component = oMenu.component
const name = oMenu[propsDefault.label]
const icon = oMenu[propsDefault.icon]
const children = oMenu[propsDefault.children]
const meta = {
keepAlive: Number(oMenu['keepAlive']) === 0
}
const isChild = children.length !== 0
const oRouter = {
path: path,
component (resolve) {
// 判断是否为首路由
if (first) {
require(['../page/index'], resolve)
})
return result;
},
//设置路由值
getValue: function(route) {
let value = "";
if (route.query.src) {
value = route.query.src;
// 判断是否为多层路由
} else if (isChild && !first) {
require(['../page/index/layout'], resolve)
// 判断是否为最终的页面视图
} else {
value = route.path;
}
return value;
},
//动态路由
formatRoutes: function(aMenu = [], first) {
const aRouter = []
const propsConfig = this.$website.menu.props;
const propsDefault = {
label: propsConfig.label || 'label',
path: propsConfig.path || 'path',
icon: propsConfig.icon || 'icon',
children: propsConfig.children || 'children',
meta: propsConfig.meta || 'meta',
}
if (aMenu.length === 0) return;
for (let i = 0; i < aMenu.length; i++) {
const oMenu = aMenu[i];
if (this.routerList.includes(oMenu[propsDefault.path])) return;
const path = (() => {
if (first) {
return oMenu[propsDefault.path].replace('/index', '')
} else {
return oMenu[propsDefault.path]
}
})(),
component = oMenu.component,
name = oMenu[propsDefault.label],
icon = oMenu[propsDefault.icon],
children = oMenu[propsDefault.children],
meta = {
keepAlive: Number(oMenu['keepAlive']) === 0
}
const isChild = children.length !== 0;
const oRouter = {
path: path,
component(resolve) {
// 判断是否为首路由
if (first) {
require(['../page/index'], resolve)
return
// 判断是否为多层路由
} else if (isChild && !first) {
require(['../page/index/layout'], resolve)
return
// 判断是否为最终的页面视图
} else {
require([`../${component}.vue`], resolve)
}
},
name: name,
icon: icon,
meta: meta,
redirect: (() => {
if (!isChild && first) return `${path}/index`
else return '';
})(),
// 处理是否为一级路由
children: !isChild ? (() => {
if (first) {
oMenu[propsDefault.path] = `${path}/index`;
return [{
component(resolve) { require([`../${component}.vue`], resolve) },
icon: icon,
name: name,
meta: meta,
path: 'index'
}]
}
return [];
})() : (() => {
return this.formatRoutes(children, false)
})()
}
aRouter.push(oRouter)
require([`../${component}.vue`], resolve)
}
},
name: name,
icon: icon,
meta: meta,
redirect: (() => {
if (!isChild && first) return `${path}/index`
else return ''
})(),
// 处理是否为一级路由
children: !isChild ? (() => {
if (first) {
if (!this.routerList.includes(aRouter[0][propsDefault.path])) {
this.safe.$router.addRoutes(aRouter)
this.routerList.push(aRouter[0][propsDefault.path])
}
} else {
return aRouter
oMenu[propsDefault.path] = `${path}/index`
return [{
component (resolve) { require([`../${component}.vue`], resolve) },
icon: icon,
name: name,
meta: meta,
path: 'index'
}]
}
return []
})() : (() => {
return this.formatRoutes(children, false)
})()
}
aRouter.push(oRouter)
}
if (first) {
if (!this.routerList.includes(aRouter[0][propsDefault.path])) {
this.safe.$router.addRoutes(aRouter)
this.routerList.push(aRouter[0][propsDefault.path])
}
} else {
return aRouter
}
}
}
}
export default RouterPlugin;
export default RouterPlugin
......@@ -15,55 +15,55 @@ import NProgress from 'nprogress' // progress bar
import errorCode from '@/const/errorCode'
import { Message } from 'element-ui'
import 'nprogress/nprogress.css' // progress bar style
axios.defaults.timeout = 30000;
//返回其他状态吗
axios.defaults.validateStatus = function(status) {
return status >= 200 && status <= 500; // 默认的
};
//跨域请求,允许保存cookie
axios.defaults.withCredentials = true;
axios.defaults.timeout = 30000
// 返回其他状态吗
axios.defaults.validateStatus = function (status) {
return status >= 200 && status <= 500 // 默认的
}
// 跨域请求,允许保存cookie
axios.defaults.withCredentials = true
// NProgress Configuration
NProgress.configure({
showSpinner: false
});
//HTTPrequest拦截
showSpinner: false
})
// HTTPrequest拦截
axios.interceptors.request.use(config => {
NProgress.start() // start progress bar
const isToken = (config.data || {}).isToken === false
if (store.getters.access_token && !isToken) {
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带token--['X-Token']为自定义key 请根据实际情况自行修改
}
const TENANT_ID = getStore({ name: 'tenantId' });
if (TENANT_ID) {
config.headers['TENANT_ID'] = TENANT_ID // 租户ID
}
//headers中配置serialize为true开启序列化
if (config.methods === 'post' && config.headers.serialize) {
config.data = serialize(config.data);
delete config.data.serialize;
}
return config
NProgress.start() // start progress bar
const isToken = (config.data || {}).isToken === false
if (store.getters.access_token && !isToken) {
config.headers['Authorization'] = 'Bearer ' + getToken() // 让每个请求携带token--['X-Token']为自定义key 请根据实际情况自行修改
}
const TENANT_ID = getStore({ name: 'tenantId' })
if (TENANT_ID) {
config.headers['TENANT_ID'] = TENANT_ID // 租户ID
}
// headers中配置serialize为true开启序列化
if (config.methods === 'post' && config.headers.serialize) {
config.data = serialize(config.data)
delete config.data.serialize
}
return config
}, error => {
return Promise.reject(error)
});
//HTTPresponse拦截
return Promise.reject(error)
})
// HTTPresponse拦截
axios.interceptors.response.use(res => {
NProgress.done();
const status = Number(res.status) || 200;
const statusWhiteList = website.statusWhiteList || [];
const message = res.data.message || errorCode[status] || errorCode['default'];
if (status !== 200 & !statusWhiteList.includes(status)) {
Message({
message: message,
type: 'error'
})
return Promise.reject(new Error(message))
}
if (status !== 200) return Promise.reject(res);
return res;
NProgress.done()
const status = Number(res.status) || 200
const statusWhiteList = website.statusWhiteList || []
const message = res.data.message || errorCode[status] || errorCode['default']
if (status !== 200 & !statusWhiteList.includes(status)) {
Message({
message: message,
type: 'error'
})
return Promise.reject(new Error(message))
}
if (status !== 200) return Promise.reject(res)
return res
}, error => {
NProgress.done()
return Promise.reject(new Error(error))
NProgress.done()
return Promise.reject(new Error(error))
})
export default axios
\ No newline at end of file
export default axios
import VueRouter from 'vue-router';
import VueRouter from 'vue-router'
import PageRouter from './page/'
import ViewsRouter from './views/'
import AvueRouter from './avue-router';
import Store from '../store/';
import AvueRouter from './avue-router'
import Store from '../store/'
let Router = new VueRouter({
scrollBehavior(to, from, savedPosition) {
if (savedPosition) {
return savedPosition
} else {
if (from.meta.keepAlive) {
from.meta.savedPosition = document.body.scrollTop;
}
return {
x: 0,
y: to.meta.savedPosition || 0
}
}
},
routes: [].concat([])
});
AvueRouter.install(Router, Store);
Router.$avueRouter.formatRoutes(Store.state.user.menu, true);
Router.addRoutes([...PageRouter, ...ViewsRouter]);
export default Router;
\ No newline at end of file
scrollBehavior (to, from, savedPosition) {
if (savedPosition) {
return savedPosition
} else {
if (from.meta.keepAlive) {
from.meta.savedPosition = document.body.scrollTop
}
return {
x: 0,
y: to.meta.savedPosition || 0
}
}
},
routes: [].concat([])
})
AvueRouter.install(Router, Store)
Router.$avueRouter.formatRoutes(Store.state.user.menu, true)
Router.addRoutes([...PageRouter, ...ViewsRouter])
export default Router
......@@ -14,7 +14,7 @@ const store = new Vuex.Store({
logs,
tags
},
getters,
getters
})
export default store
import {getStore, removeStore, setStore} from '@/util/store'
import { getStore, removeStore, setStore } from '@/util/store'
import website from '@/const/website'
const common = {
......@@ -8,97 +8,97 @@ const common = {
isFullScren: false,
isShade: false,
screen: -1,
isLock: getStore({name: 'isLock'}) || false,
showTag: getStore({name: 'showTag'}),
showDebug: getStore({name: 'showDebug'}),
showCollapse: getStore({name: 'showCollapse'}),
showSearch: getStore({name: 'showSearch'}),
showLock: getStore({name: 'showLock'}),
showFullScren: getStore({name: 'showFullScren'}),
showTheme: getStore({name: 'showTheme'}),
showColor: getStore({name: 'showColor'}),
showMenu: getStore({name: 'showMenu'}),
theme: getStore({name: 'theme'}) || '#409EFF',
themeName: getStore({name: 'themeName'}) || '',
lockPasswd: getStore({name: 'lockPasswd'}) || '',
website: website,
isLock: getStore({ name: 'isLock' }) || false,
showTag: getStore({ name: 'showTag' }),
showDebug: getStore({ name: 'showDebug' }),
showCollapse: getStore({ name: 'showCollapse' }),
showSearch: getStore({ name: 'showSearch' }),
showLock: getStore({ name: 'showLock' }),
showFullScren: getStore({ name: 'showFullScren' }),
showTheme: getStore({ name: 'showTheme' }),
showColor: getStore({ name: 'showColor' }),
showMenu: getStore({ name: 'showMenu' }),
theme: getStore({ name: 'theme' }) || '#409EFF',
themeName: getStore({ name: 'themeName' }) || '',
lockPasswd: getStore({ name: 'lockPasswd' }) || '',
website: website
},
actions: {},
mutations: {
SET_SHADE: (state, active) => {
state.isShade = active;
state.isShade = active
},
SET_COLLAPSE: (state) => {
state.isCollapse = !state.isCollapse;
state.isCollapse = !state.isCollapse
},
SET_FULLSCREN: (state) => {
state.isFullScren = !state.isFullScren;
state.isFullScren = !state.isFullScren
},
SET_SHOWCOLLAPSE: (state, active) => {
state.showCollapse = active;
state.showCollapse = active
setStore({
name: 'showCollapse',
content: state.showCollapse
})
},
SET_SHOWTAG: (state, active) => {
state.showTag = active;
state.showTag = active
setStore({
name: 'showTag',
content: state.showTag
})
},
SET_SHOWMENU: (state, active) => {
state.showMenu = active;
state.showMenu = active
setStore({
name: 'showMenu',
content: state.showMenu
})
},
SET_SHOWLOCK: (state, active) => {
state.showLock = active;
state.showLock = active
setStore({
name: 'showLock',
content: state.showLock
})
},
SET_SHOWSEARCH: (state, active) => {
state.showSearch = active;
state.showSearch = active
setStore({
name: 'showSearch',
content: state.showSearch
})
},
SET_SHOWFULLSCREN: (state, active) => {
state.showFullScren = active;
state.showFullScren = active
setStore({
name: 'showFullScren',
content: state.showFullScren
})
},
SET_SHOWDEBUG: (state, active) => {
state.showDebug = active;
state.showDebug = active
setStore({
name: 'showDebug',
content: state.showDebug
})
},
SET_SHOWTHEME: (state, active) => {
state.showTheme = active;
state.showTheme = active
setStore({
name: 'showTheme',
content: state.showTheme
})
},
SET_SHOWCOLOR: (state, active) => {
state.showColor = active;
state.showColor = active
setStore({
name: 'showColor',
content: state.showColor
})
},
SET_LOCK: (state) => {
state.isLock = true;
state.isLock = true
setStore({
name: 'isLock',
content: state.isLock,
......@@ -106,24 +106,24 @@ const common = {
})
},
SET_SCREEN: (state, screen) => {
state.screen = screen;
state.screen = screen
},
SET_THEME: (state, color) => {
state.theme = color;
state.theme = color
setStore({
name: 'theme',
content: state.theme,
content: state.theme
})
},
SET_THEME_NAME: (state, themeName) => {
state.themeName = themeName;
state.themeName = themeName
setStore({
name: 'themeName',
content: state.themeName,
content: state.themeName
})
},
SET_LOCK_PASSWD: (state, lockPasswd) => {
state.lockPasswd = lockPasswd;
state.lockPasswd = lockPasswd
setStore({
name: 'lockPasswd',
content: state.lockPasswd,
......@@ -131,15 +131,15 @@ const common = {
})
},
CLEAR_LOCK: (state) => {
state.isLock = false;
state.lockPasswd = '';
state.isLock = false
state.lockPasswd = ''
removeStore({
name: 'lockPasswd'
});
})
removeStore({
name: 'isLock'
});
},
})
}
}
}
export default common
import {getStore, setStore} from '@/util/store'
import {dateFormat} from '@/filters/'
import {sendLogs} from '@/api/admin/log'
import { getStore, setStore } from '@/util/store'
import { dateFormat } from '@/filters/'
import { sendLogs } from '@/api/admin/log'
const logs = {
state: {
logsList: getStore({name: 'logsList'}) || [],
logsList: getStore({ name: 'logsList' }) || []
},
actions: {
//发送错误日志
SendLogs({state, commit}) {
// 发送错误日志
SendLogs ({ state, commit }) {
return new Promise((resolve, reject) => {
sendLogs(state.logsList).then(() => {
commit('CLEAR_LOGS');
resolve();
commit('CLEAR_LOGS')
resolve()
}).catch(error => {
reject(error)
})
})
},
}
},
mutations: {
ADD_LOGS: (state, {type, message, stack, info}) => {
ADD_LOGS: (state, { type, message, stack, info }) => {
state.logsList.push(Object.assign({
url: window.location.href,
time: dateFormat(new Date())
......@@ -30,14 +30,14 @@ const logs = {
stack,
info: info.toString()
}))
setStore({name: 'logsList', content: state.logsList})
setStore({ name: 'logsList', content: state.logsList })
},
CLEAR_LOGS: (state) => {
state.logsList = [];
setStore({name: 'logsList', content: state.logsList})
state.logsList = []
setStore({ name: 'logsList', content: state.logsList })
}
}
};
}
export default logs;
export default logs
import {getStore, setStore} from '@/util/store'
import {diff} from '@/util/util'
import { getStore, setStore } from '@/util/store'
import { diff } from '@/util/util'
import website from '@/const/website'
const isFirstPage = website.isFirstPage;
const tagWel = website.fistPage;
const isFirstPage = website.isFirstPage
const tagWel = website.fistPage
const tagObj = {
label: '', //标题名称
value: '', //标题的路径
params: '', //标题的路径参数
query: '', //标题的参数
group: [], //分组
label: '', // 标题名称
value: '', // 标题的路径
params: '', // 标题的路径参数
query: '', // 标题的参数
group: [] // 分组
}
//处理首个标签
function setFistTag(list) {
// 处理首个标签
function setFistTag (list) {
if (list.length == 1) {
list[0].close = false;
list[0].close = false
} else {
list.forEach(ele => {
if (ele.value === tagWel.value && isFirstPage === false) {
......@@ -27,39 +27,38 @@ function setFistTag(list) {
}
}
const navs = {
state: {
tagList: getStore({name: 'tagList'}) || [],
tag: getStore({name: 'tag'}) || tagObj,
tagList: getStore({ name: 'tagList' }) || [],
tag: getStore({ name: 'tag' }) || tagObj,
tagWel: tagWel
},
actions: {},
mutations: {
ADD_TAG: (state, action) => {
state.tag = action;
setStore({name: 'tag', content: state.tag, type: 'session'})
state.tag = action
setStore({ name: 'tag', content: state.tag, type: 'session' })
if (state.tagList.some(ele => diff(ele, action))) return
state.tagList.push(action)
setFistTag(state.tagList);
setStore({name: 'tagList', content: state.tagList, type: 'session'})
setFistTag(state.tagList)
setStore({ name: 'tagList', content: state.tagList, type: 'session' })
},
DEL_TAG: (state, action) => {
state.tagList = state.tagList.filter(item => {
return !diff(item, action);
return !diff(item, action)
})
setFistTag(state.tagList);
setStore({name: 'tagList', content: state.tagList, type: 'session'})
setFistTag(state.tagList)
setStore({ name: 'tagList', content: state.tagList, type: 'session' })
},
DEL_ALL_TAG: (state) => {
state.tagList = [state.tagWel];
setStore({name: 'tagList', content: state.tagList, type: 'session'})
state.tagList = [state.tagWel]
setStore({ name: 'tagList', content: state.tagList, type: 'session' })
},
DEL_TAG_OTHER: (state) => {
state.tagList = state.tagList.filter(item => item.value === state.tag.value)
setFistTag(state.tagList);
setStore({name: 'tagList', content: state.tagList, type: 'session'})
},
setFistTag(state.tagList)
setStore({ name: 'tagList', content: state.tagList, type: 'session' })
}
}
}
export default navs
import {removeToken, setToken} from '@/util/auth'
import {getStore, setStore} from '@/util/store'
import {isURL} from '@/util/validate'
import {getUserInfo, loginByMobile, loginBySocial, loginByUsername, logout} from '@/api/login'
import {deepClone, encryption} from '@/util/util'
import webiste from '@/const/website';
import {GetMenu} from '@/api/admin/menu'
import { removeToken, setToken } from '@/util/auth'
import { getStore, setStore } from '@/util/store'
import { isURL } from '@/util/validate'
import { getUserInfo, loginByMobile, loginBySocial, loginByUsername, logout } from '@/api/login'
import { deepClone, encryption } from '@/util/util'
import webiste from '@/const/website'
import { GetMenu } from '@/api/admin/menu'
function addPath(ele, first) {
const propsConfig = webiste.menu.props;
function addPath (ele, first) {
const propsConfig = webiste.menu.props
const propsDefault = {
label: propsConfig.label || 'label',
path: propsConfig.path || 'path',
icon: propsConfig.icon || 'icon',
children: propsConfig.children || 'children'
}
const isChild = ele[propsDefault.children] && ele[propsDefault.children].length !== 0;
const isChild = ele[propsDefault.children] && ele[propsDefault.children].length !== 0
if (!isChild && first) {
ele[propsDefault.path] = ele[propsDefault.path] + '/index'
return
......@@ -23,7 +23,7 @@ function addPath(ele, first) {
if (!isURL(child[propsDefault.path])) {
child[propsDefault.path] = `${ele[propsDefault.path]}/${child[propsDefault.path] ? child[propsDefault.path] : 'index'}`
}
addPath(child);
addPath(child)
})
}
......@@ -44,8 +44,8 @@ const user = {
}) || ''
},
actions: {
//根据用户名登录
LoginByUsername({commit}, userInfo) {
// 根据用户名登录
LoginByUsername ({ commit }, userInfo) {
const user = encryption({
data: userInfo,
key: 'pigxpigxpigxpigx',
......@@ -64,8 +64,8 @@ const user = {
})
})
},
//根据手机号登录
LoginByPhone({commit}, userInfo) {
// 根据手机号登录
LoginByPhone ({ commit }, userInfo) {
return new Promise((resolve, reject) => {
loginByMobile(userInfo.mobile, userInfo.code).then(response => {
const data = response.data
......@@ -80,7 +80,7 @@ const user = {
})
},
// 根据OpenId登录
LoginBySocial({commit}, param) {
LoginBySocial ({ commit }, param) {
return new Promise((resolve, reject) => {
loginBySocial(param.state, param.code).then(response => {
const data = response.data
......@@ -94,33 +94,33 @@ const user = {
})
})
},
GetUserInfo({commit}) {
GetUserInfo ({ commit }) {
return new Promise((resolve, reject) => {
getUserInfo().then((res) => {
const data = res.data.data || {};
commit('SET_USERIFNO', data.sysUser);
commit('SET_ROLES', data.roles || []);
const data = res.data.data || {}
commit('SET_USERIFNO', data.sysUser)
commit('SET_ROLES', data.roles || [])
commit('SET_PERMISSIONS', data.permissions || [])
resolve(data);
resolve(data)
}).catch((err) => {
reject();
reject()
})
})
},
//刷新token
RefeshToken({commit}) {
// 刷新token
RefeshToken ({ commit }) {
return new Promise((resolve, reject) => {
logout().then(() => {
commit('SET_TOKEN', new Date().getTime());
setToken();
resolve();
commit('SET_TOKEN', new Date().getTime())
setToken()
resolve()
}).catch(error => {
reject(error)
})
})
},
// 登出
LogOut({commit}) {
LogOut ({ commit }) {
return new Promise((resolve, reject) => {
logout().then(() => {
commit('SET_MENU', [])
......@@ -130,7 +130,7 @@ const user = {
commit('SET_REFRESH_TOKEN', '')
commit('SET_ROLES', [])
commit('DEL_ALL_TAG')
commit('CLEAR_LOCK');
commit('CLEAR_LOCK')
removeToken()
resolve()
}).catch(error => {
......@@ -138,8 +138,8 @@ const user = {
})
})
},
//注销session
FedLogOut({commit}) {
// 注销session
FedLogOut ({ commit }) {
return new Promise(resolve => {
commit('SET_MENU', [])
commit('SET_PERMISSIONS', [])
......@@ -148,21 +148,21 @@ const user = {
commit('SET_REFRESH_TOKEN', '')
commit('SET_ROLES', [])
commit('DEL_ALL_TAG')
commit('CLEAR_LOCK');
commit('CLEAR_LOCK')
removeToken()
resolve()
})
},
//获取系统菜单
GetMenu({
commit
}) {
// 获取系统菜单
GetMenu ({
commit
}) {
return new Promise(resolve => {
GetMenu().then((res) => {
const data = res.data.data
let menu = deepClone(data);
let menu = deepClone(data)
menu.forEach(ele => {
addPath(ele);
addPath(ele)
})
commit('SET_MENU', menu)
resolve(menu)
......@@ -189,7 +189,7 @@ const user = {
})
},
SET_USERIFNO: (state, userInfo) => {
state.userInfo = userInfo;
state.userInfo = userInfo
},
SET_MENU: (state, menu) => {
state.menu = menu
......@@ -198,13 +198,12 @@ const user = {
content: state.menu,
type: 'session'
})
},
SET_MENU_ALL: (state, menuAll) => {
state.menuAll = menuAll;
state.menuAll = menuAll
},
SET_ROLES: (state, roles) => {
state.roles = roles;
state.roles = roles
},
SET_PERMISSIONS: (state, permissions) => {
const list = {}
......
export default {
getScreen: function () {
var width = document.body.clientWidth;
var width = document.body.clientWidth
if (width >= 1200) {
return 3; //大屏幕
return 3 // 大屏幕
} else if (width >= 992) {
return 2; //中屏幕
return 2 // 中屏幕
} else if (width >= 768) {
return 1; //小屏幕
return 1 // 小屏幕
} else {
return 0; //超小屏幕
return 0 // 超小屏幕
}
}
}
......@@ -2,14 +2,14 @@ import Cookies from 'js-cookie'
const TokenKey = 'x-access-token'
export function getToken() {
export function getToken () {
return Cookies.get(TokenKey)
}
export function setToken(token) {
export function setToken (token) {
return Cookies.set(TokenKey, token)
}
export function removeToken() {
export function removeToken () {
return Cookies.remove(TokenKey)
}
export const calcDate = (date1, date2) => {
var date3 = date2 - date1;
var date3 = date2 - date1
var days = Math.floor(date3 / (24 * 3600 * 1000))
var leave1 = date3 % (24 * 3600 * 1000) //计算天数后剩余的毫秒数
var leave1 = date3 % (24 * 3600 * 1000) // 计算天数后剩余的毫秒数
var hours = Math.floor(leave1 / (3600 * 1000))
var leave2 = leave1 % (3600 * 1000) //计算小时数后剩余的毫秒数
var leave2 = leave1 % (3600 * 1000) // 计算小时数后剩余的毫秒数
var minutes = Math.floor(leave2 / (60 * 1000))
var leave3 = leave2 % (60 * 1000) //计算分钟数后剩余的毫秒数
var leave3 = leave2 % (60 * 1000) // 计算分钟数后剩余的毫秒数
var seconds = Math.round(date3 / 1000)
return {
leave1,
......@@ -18,6 +18,6 @@ export const calcDate = (date1, date2) => {
days: days,
hours: hours,
minutes: minutes,
seconds: seconds,
seconds: seconds
}
}
import {validatenull} from '@/util/validate';
import { validatenull } from '@/util/validate'
/**
* 存储localStorage
......@@ -7,16 +7,16 @@ export const setStore = (params) => {
let {
name,
content,
type,
} = params;
type
} = params
let obj = {
dataType: typeof (content),
content: content,
type: type,
datetime: new Date().getTime()
}
if (type) window.sessionStorage.setItem(name, JSON.stringify(obj));
else window.localStorage.setItem(name, JSON.stringify(obj));
if (type) window.sessionStorage.setItem(name, JSON.stringify(obj))
else window.localStorage.setItem(name, JSON.stringify(obj))
}
/**
* 获取localStorage
......@@ -26,26 +26,27 @@ export const getStore = (params) => {
let {
name,
debug
} = params;
let obj = {},
content;
obj = window.sessionStorage.getItem(name);
if (validatenull(obj)) obj = window.localStorage.getItem(name);
if (validatenull(obj)) return;
obj = JSON.parse(obj);
} = params
let obj = {}
let content
obj = window.sessionStorage.getItem(name)
if (validatenull(obj)) obj = window.localStorage.getItem(name)
if (validatenull(obj)) return
obj = JSON.parse(obj)
if (debug) {
return obj;
return obj
}
if (obj.dataType == 'string') {
content = obj.content;
content = obj.content
} else if (obj.dataType == 'number') {
content = Number(obj.content);
content = Number(obj.content)
} else if (obj.dataType == 'boolean') {
content = eval(obj.content);
content = eval(obj.content)
} else if (obj.dataType == 'object') {
content = obj.content;
content = obj.content
}
return content;
return content
}
/**
* 删除localStorage
......@@ -53,19 +54,19 @@ export const getStore = (params) => {
export const removeStore = params => {
let {
name
} = params;
window.localStorage.removeItem(name);
window.sessionStorage.removeItem(name);
} = params
window.localStorage.removeItem(name)
window.sessionStorage.removeItem(name)
}
/**
* 获取全部localStorage
*/
export const getAllStore = (params) => {
let list = [];
let list = []
let {
type
} = params;
} = params
for (let i = 1; i <= window.sessionStorage.length; i++) {
if (type) {
list.push({
......@@ -79,14 +80,13 @@ export const getAllStore = (params) => {
list.push(getStore({
name: window.localStorage.key(i),
content: getStore({
name: window.localStorage.key(i),
name: window.localStorage.key(i)
})
}))
}
}
return list;
return list
}
/**
......@@ -95,9 +95,9 @@ export const getAllStore = (params) => {
export const clearStore = (params) => {
let {
type
} = params;
} = params
if (type) {
window.sessionStorage.clear();
window.sessionStorage.clear()
return
}
window.localStorage.clear()
......
import {validatenull} from './validate'
//表单序列化
import { validatenull } from './validate'
// 表单序列化
export const serialize = data => {
let list = [];
let list = []
Object.keys(data).forEach(ele => {
list.push(`${ele}=${data[ele]}`)
})
return list.join('&');
};
return list.join('&')
}
export const getObjType = obj => {
var toString = Object.prototype.toString;
var toString = Object.prototype.toString
var map = {
'[object Boolean]': 'boolean',
'[object Number]': 'number',
......@@ -20,79 +20,79 @@ export const getObjType = obj => {
'[object Undefined]': 'undefined',
'[object Null]': 'null',
'[object Object]': 'object'
};
}
if (obj instanceof Element) {
return 'element';
return 'element'
}
return map[toString.call(obj)];
};
return map[toString.call(obj)]
}
/**
* 对象深拷贝
*/
export const deepClone = data => {
var type = getObjType(data);
var obj;
var type = getObjType(data)
var obj
if (type === 'array') {
obj = [];
obj = []
} else if (type === 'object') {
obj = {};
obj = {}
} else {
//不再具有下一层次
return data;
// 不再具有下一层次
return data
}
if (type === 'array') {
for (var i = 0, len = data.length; i < len; i++) {
obj.push(deepClone(data[i]));
obj.push(deepClone(data[i]))
}
} else if (type === 'object') {
for (var key in data) {
obj[key] = deepClone(data[key]);
obj[key] = deepClone(data[key])
}
}
return obj;
};
return obj
}
/**
* 判断路由是否相等
*/
export const diff = (obj1, obj2) => {
delete obj1.close;
var o1 = obj1 instanceof Object;
var o2 = obj2 instanceof Object;
delete obj1.close
var o1 = obj1 instanceof Object
var o2 = obj2 instanceof Object
if (!o1 || !o2) { /* 判断不是对象 */
return obj1 === obj2;
return obj1 === obj2
}
if (Object.keys(obj1).length !== Object.keys(obj2).length) {
return false;
//Object.keys() 返回一个由对象的自身可枚举属性(key值)组成的数组,例如:数组返回下表:let arr = ["a", "b", "c"];console.log(Object.keys(arr))->0,1,2;
return false
// Object.keys() 返回一个由对象的自身可枚举属性(key值)组成的数组,例如:数组返回下表:let arr = ["a", "b", "c"];console.log(Object.keys(arr))->0,1,2;
}
for (var attr in obj1) {
var t1 = obj1[attr] instanceof Object;
var t2 = obj2[attr] instanceof Object;
var t1 = obj1[attr] instanceof Object
var t2 = obj2[attr] instanceof Object
if (t1 && t2) {
return diff(obj1[attr], obj2[attr]);
return diff(obj1[attr], obj2[attr])
} else if (obj1[attr] !== obj2[attr]) {
return false;
return false
}
}
return true;
return true
}
/**
* 设置灰度模式
*/
export const toggleGrayMode = (status) => {
if (status) {
document.body.className = document.body.className + ' grayMode';
document.body.className = document.body.className + ' grayMode'
} else {
document.body.className = document.body.className.replace(' grayMode', '');
document.body.className = document.body.className.replace(' grayMode', '')
}
};
}
/**
* 设置主题
*/
export const setTheme = (name) => {
document.body.className = name;
document.body.className = name
}
/**
......@@ -129,38 +129,37 @@ export const encryption = (params) => {
return result
}
/**
* 浏览器判断是否全屏
*/
export const fullscreenToggel = () => {
if (fullscreenEnable()) {
exitFullScreen();
exitFullScreen()
} else {
reqFullScreen();
reqFullScreen()
}
};
}
/**
* esc监听全屏
*/
export const listenfullscreen = (callback) => {
function listen() {
function listen () {
callback()
}
document.addEventListener("fullscreenchange", function () {
listen();
});
document.addEventListener("mozfullscreenchange", function () {
listen();
});
document.addEventListener("webkitfullscreenchange", function () {
listen();
});
document.addEventListener("msfullscreenchange", function () {
listen();
});
};
document.addEventListener('fullscreenchange', function () {
listen()
})
document.addEventListener('mozfullscreenchange', function () {
listen()
})
document.addEventListener('webkitfullscreenchange', function () {
listen()
})
document.addEventListener('msfullscreenchange', function () {
listen()
})
}
/**
* 浏览器判断是否全屏
*/
......@@ -168,8 +167,8 @@ export const fullscreenEnable = () => {
var isFullscreen = document.fullscreenEnabled ||
window.fullScreen ||
document.mozFullscreenEnabled ||
document.webkitIsFullScreen;
return isFullscreen;
document.webkitIsFullScreen
return isFullscreen
}
/**
......@@ -177,25 +176,25 @@ export const fullscreenEnable = () => {
*/
export const reqFullScreen = () => {
if (document.documentElement.requestFullScreen) {
document.documentElement.requestFullScreen();
document.documentElement.requestFullScreen()
} else if (document.documentElement.webkitRequestFullScreen) {
document.documentElement.webkitRequestFullScreen();
document.documentElement.webkitRequestFullScreen()
} else if (document.documentElement.mozRequestFullScreen) {
document.documentElement.mozRequestFullScreen();
document.documentElement.mozRequestFullScreen()
}
};
}
/**
* 浏览器退出全屏
*/
export const exitFullScreen = () => {
if (document.documentElement.requestFullScreen) {
document.exitFullScreen();
document.exitFullScreen()
} else if (document.documentElement.webkitRequestFullScreen) {
document.webkitCancelFullScreen();
document.webkitCancelFullScreen()
} else if (document.documentElement.mozRequestFullScreen) {
document.mozCancelFullScreen();
document.mozCancelFullScreen()
}
};
}
/**
* 递归寻找子类的父类
*/
......@@ -205,16 +204,16 @@ export const findParent = (menu, id) => {
if (menu[i].children.length != 0) {
for (let j = 0; j < menu[i].children.length; j++) {
if (menu[i].children[j].id == id) {
return menu[i];
return menu[i]
} else {
if (menu[i].children[j].children.length != 0) {
return findParent(menu[i].children[j].children, id);
return findParent(menu[i].children[j].children, id)
}
}
}
}
}
};
}
/**
* 判断2个对象属性和值是否相等
*/
......@@ -224,74 +223,74 @@ export const findParent = (menu, id) => {
*/
export const loadStyle = url => {
const link = document.createElement('link');
link.type = 'text/css';
link.rel = 'stylesheet';
link.href = url;
const head = document.getElementsByTagName('head')[0];
head.appendChild(link);
};
const link = document.createElement('link')
link.type = 'text/css'
link.rel = 'stylesheet'
link.href = url
const head = document.getElementsByTagName('head')[0]
head.appendChild(link)
}
/**
* 判断路由是否相等
*/
export const isObjectValueEqual = (a, b) => {
let result = true;
let result = true
Object.keys(a).forEach(ele => {
const type = typeof (a[ele]);
if (type === 'string' && a[ele] !== b[ele]) result = false;
else if (type === 'object' && JSON.stringify(a[ele]) !== JSON.stringify(b[ele])) result = false;
const type = typeof (a[ele])
if (type === 'string' && a[ele] !== b[ele]) result = false
else if (type === 'object' && JSON.stringify(a[ele]) !== JSON.stringify(b[ele])) result = false
})
return result;
return result
}
/**
* 根据字典的value显示label
*/
export const findByvalue = (dic, value) => {
let result = '';
if (validatenull(dic)) return value;
if (typeof (value) == 'string' || typeof (value) == 'number' || typeof (value) == 'boolean') {
let index = 0;
index = findArray(dic, value);
let result = ''
if (validatenull(dic)) return value
if (typeof (value) === 'string' || typeof (value) === 'number' || typeof (value) === 'boolean') {
let index = 0
index = findArray(dic, value)
if (index != -1) {
result = dic[index].label;
result = dic[index].label
} else {
result = value;
result = value
}
} else if (value instanceof Array) {
result = [];
let index = 0;
result = []
let index = 0
value.forEach(ele => {
index = findArray(dic, ele);
index = findArray(dic, ele)
if (index != -1) {
result.push(dic[index].label);
result.push(dic[index].label)
} else {
result.push(value);
result.push(value)
}
});
result = result.toString();
})
result = result.toString()
}
return result;
};
return result
}
/**
* 根据字典的value查找对应的index
*/
export const findArray = (dic, value) => {
for (let i = 0; i < dic.length; i++) {
if (dic[i].value == value) {
return i;
return i
}
}
return -1;
};
return -1
}
/**
* 生成随机len位数字
*/
export const randomLenNum = (len, date) => {
let random = '';
random = Math.ceil(Math.random() * 100000000000000).toString().substr(0, len ? len : 4);
if (date) random = random + Date.now();
return random;
};
let random = ''
random = Math.ceil(Math.random() * 100000000000000).toString().substr(0, len || 4)
if (date) random = random + Date.now()
return random
}
/**
* 打开小窗口
*/
......
......@@ -2,7 +2,7 @@
* 邮箱
* @param {*} s
*/
export function isEmail(s) {
export function isEmail (s) {
return /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((.[a-zA-Z0-9_-]{2,3}){1,2})$/.test(s)
}
......@@ -10,7 +10,7 @@ export function isEmail(s) {
* 手机号码
* @param {*} s
*/
export function isMobile(s) {
export function isMobile (s) {
return /^1[0-9]{10}$/.test(s)
}
......@@ -18,7 +18,7 @@ export function isMobile(s) {
* 电话号码
* @param {*} s
*/
export function isPhone(s) {
export function isPhone (s) {
return /^([0-9]{3,4}-)?[0-9]{7,8}$/.test(s)
}
......@@ -26,54 +26,54 @@ export function isPhone(s) {
* URL地址
* @param {*} s
*/
export function isURL(s) {
export function isURL (s) {
return /^http[s]?:\/\/.*/.test(s)
}
export function isvalidUsername(str) {
export function isvalidUsername (str) {
const valid_map = ['admin', 'editor']
return valid_map.indexOf(str.trim()) >= 0
}
/* 合法uri*/
export function validateURL(textval) {
/* 合法uri */
export function validateURL (textval) {
const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
return urlregex.test(textval)
}
/* 小写字母*/
export function validateLowerCase(str) {
/* 小写字母 */
export function validateLowerCase (str) {
const reg = /^[a-z]+$/
return reg.test(str)
}
/* 大写字母*/
export function validateUpperCase(str) {
/* 大写字母 */
export function validateUpperCase (str) {
const reg = /^[A-Z]+$/
return reg.test(str)
}
/* 大小写字母*/
export function validatAlphabets(str) {
/* 大小写字母 */
export function validatAlphabets (str) {
const reg = /^[A-Za-z]+$/
return reg.test(str)
}
/*验证pad还是pc*/
/* 验证pad还是pc */
export const vaildatePc = function () {
const userAgentInfo = navigator.userAgent;
const Agents = ["Android", "iPhone",
"SymbianOS", "Windows Phone",
"iPad", "iPod"
];
let flag = true;
const userAgentInfo = navigator.userAgent
const Agents = ['Android', 'iPhone',
'SymbianOS', 'Windows Phone',
'iPad', 'iPod'
]
let flag = true
for (var v = 0; v < Agents.length; v++) {
if (userAgentInfo.indexOf(Agents[v]) > 0) {
flag = false;
break;
flag = false
break
}
}
return flag;
return flag
}
/**
......@@ -81,7 +81,7 @@ export const vaildatePc = function () {
* @param email
* @returns {boolean}
*/
export function validateEmail(email) {
export function validateEmail (email) {
const re = /^(([^<>()\\[\]\\.,;:\s@"]+(\.[^<>()\\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
return re.test(email)
}
......@@ -89,169 +89,167 @@ export function validateEmail(email) {
/**
* 判断身份证号码
*/
export function cardid(code) {
let list = [];
let result = true;
let msg = '';
export function cardid (code) {
let list = []
let result = true
let msg = ''
var city = {
11: "北京",
12: "天津",
13: "河北",
14: "山西",
15: "内蒙古",
21: "辽宁",
22: "吉林",
23: "黑龙江 ",
31: "上海",
32: "江苏",
33: "浙江",
34: "安徽",
35: "福建",
36: "江西",
37: "山东",
41: "河南",
42: "湖北 ",
43: "湖南",
44: "广东",
45: "广西",
46: "海南",
50: "重庆",
51: "四川",
52: "贵州",
53: "云南",
54: "西藏 ",
61: "陕西",
62: "甘肃",
63: "青海",
64: "宁夏",
65: "新疆",
71: "台湾",
81: "香港",
82: "澳门",
91: "国外 "
};
11: '北京',
12: '天津',
13: '河北',
14: '山西',
15: '内蒙古',
21: '辽宁',
22: '吉林',
23: '黑龙江 ',
31: '上海',
32: '江苏',
33: '浙江',
34: '安徽',
35: '福建',
36: '江西',
37: '山东',
41: '河南',
42: '湖北 ',
43: '湖南',
44: '广东',
45: '广西',
46: '海南',
50: '重庆',
51: '四川',
52: '贵州',
53: '云南',
54: '西藏 ',
61: '陕西',
62: '甘肃',
63: '青海',
64: '宁夏',
65: '新疆',
71: '台湾',
81: '香港',
82: '澳门',
91: '国外 '
}
if (!validatenull(code)) {
if (code.length == 18) {
if (!code || !/(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(code)) {
msg = "证件号码格式错误";
msg = '证件号码格式错误'
} else if (!city[code.substr(0, 2)]) {
msg = "地址编码错误";
msg = '地址编码错误'
} else {
//18位身份证需要验证最后一位校验位
code = code.split('');
//∑(ai×Wi)(mod 11)
//加权因子
var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
//校验位
var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2, 'x'];
var sum = 0;
var ai = 0;
var wi = 0;
// 18位身份证需要验证最后一位校验位
code = code.split('')
// ∑(ai×Wi)(mod 11)
// 加权因子
var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
// 校验位
var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2, 'x']
var sum = 0
var ai = 0
var wi = 0
for (var i = 0; i < 17; i++) {
ai = code[i];
wi = factor[i];
sum += ai * wi;
ai = code[i]
wi = factor[i]
sum += ai * wi
}
if (parity[sum % 11] != code[17]) {
msg = "证件号码校验位错误";
msg = '证件号码校验位错误'
} else {
result = false;
result = false
}
}
} else {
msg = "证件号码长度不为18位";
msg = '证件号码长度不为18位'
}
} else {
msg = "证件号码不能为空";
msg = '证件号码不能为空'
}
list.push(result);
list.push(msg);
return list;
list.push(result)
list.push(msg)
return list
}
/**
* 判断手机号码是否正确
*/
export function isvalidatemobile(phone) {
let list = [];
let result = true;
let msg = '';
var isPhone = /^0\d{2,3}-?\d{7,8}$/;
//增加134 减少|1349[0-9]{7},增加181,增加145,增加17[678]
export function isvalidatemobile (phone) {
let list = []
let result = true
let msg = ''
var isPhone = /^0\d{2,3}-?\d{7,8}$/
// 增加134 减少|1349[0-9]{7},增加181,增加145,增加17[678]
if (!validatenull(phone)) {
if (phone.length == 11) {
if (isPhone.test(phone)) {
msg = '手机号码格式不正确';
msg = '手机号码格式不正确'
} else {
result = false;
result = false
}
} else {
msg = '手机号码长度不为11位';
msg = '手机号码长度不为11位'
}
} else {
msg = '手机号码不能为空';
msg = '手机号码不能为空'
}
list.push(result);
list.push(msg);
return list;
list.push(result)
list.push(msg)
return list
}
/**
* 判断姓名是否正确
*/
export function validatename(name) {
var regName = /^[\u4e00-\u9fa5]{2,4}$/;
if (!regName.test(name)) return false;
return true;
export function validatename (name) {
var regName = /^[\u4e00-\u9fa5]{2,4}$/
if (!regName.test(name)) return false
return true
}
/**
* 判断是否为整数
*/
export function validatenum(num, type) {
let regName = /[^\d.]/g;
export function validatenum (num, type) {
let regName = /[^\d.]/g
if (type == 1) {
if (!regName.test(num)) return false;
if (!regName.test(num)) return false
} else if (type == 2) {
regName = /[^\d]/g;
if (!regName.test(num)) return false;
regName = /[^\d]/g
if (!regName.test(num)) return false
}
return true;
return true
}
/**
* 判断是否为小数
*/
export function validatenumord(num, type) {
let regName = /[^\d.]/g;
export function validatenumord (num, type) {
let regName = /[^\d.]/g
if (type == 1) {
if (!regName.test(num)) return false;
if (!regName.test(num)) return false
} else if (type == 2) {
regName = /[^\d.]/g;
if (!regName.test(num)) return false;
regName = /[^\d.]/g
if (!regName.test(num)) return false
}
return true;
return true
}
/**
* 判断是否为空
*/
export function validatenull(val) {
if (typeof val == 'boolean') {
return false;
export function validatenull (val) {
if (typeof val === 'boolean') {
return false
}
if (typeof val == 'number') {
return false;
if (typeof val === 'number') {
return false
}
if (val instanceof Array) {
if (val.length == 0) return true;
if (val.length == 0) return true
} else if (val instanceof Object) {
if (JSON.stringify(val) === '{}') return true;
if (JSON.stringify(val) === '{}') return true
} else {
if (val == 'null' || val == null || val == 'undefined' || val == undefined || val == '') return true;
return false;
if (val == 'null' || val == null || val == 'undefined' || val == undefined || val == '') return true
return false
}
return false;
return false
}
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