从 shccd159 合并 backend-adminend 子项目到 main
Made-with: Cursor
This commit is contained in:
44
backend-adminend/src/plugins/auth.js
Normal file
44
backend-adminend/src/plugins/auth.js
Normal file
@@ -0,0 +1,44 @@
|
||||
import store from '@/store';
|
||||
|
||||
function authPermission(permission) {
|
||||
const all_permission = '*:*:*';
|
||||
const permissions = store.getters && store.getters.permissions;
|
||||
if (permission && permission.length > 0) {
|
||||
return permissions.some((v) => {
|
||||
return all_permission === v || v === permission;
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function authRole(role) {
|
||||
const super_admin = 'admin';
|
||||
const roles = store.getters && store.getters.roles;
|
||||
if (role && role.length > 0) {
|
||||
return roles.some((v) => {
|
||||
return super_admin === v || v === role;
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
export default {
|
||||
// 验证用户是否具备某权限
|
||||
hasPermi(permission) {
|
||||
return authPermission(permission);
|
||||
},
|
||||
// 验证用户是否含有指定权限,只需包含其中一个
|
||||
hasPermiOr(permissions) {
|
||||
return permissions.some((item) => {
|
||||
return authPermission(item);
|
||||
});
|
||||
},
|
||||
// 验证用户是否含有指定权限,必须全部拥有
|
||||
hasPermiAnd(permissions) {
|
||||
return permissions.every((item) => {
|
||||
return authPermission(item);
|
||||
});
|
||||
},
|
||||
};
|
||||
108
backend-adminend/src/plugins/cache.js
Normal file
108
backend-adminend/src/plugins/cache.js
Normal file
@@ -0,0 +1,108 @@
|
||||
const sessionCache = {
|
||||
set(key, value) {
|
||||
if (!sessionStorage) {
|
||||
return;
|
||||
}
|
||||
if (key != null && value != null) {
|
||||
sessionStorage.setItem(key, value);
|
||||
}
|
||||
},
|
||||
get(key) {
|
||||
if (!sessionStorage) {
|
||||
return null;
|
||||
}
|
||||
if (key == null) {
|
||||
return null;
|
||||
}
|
||||
return sessionStorage.getItem(key);
|
||||
},
|
||||
setJSON(key, jsonValue) {
|
||||
if (jsonValue != null) {
|
||||
this.set(key, JSON.stringify(jsonValue));
|
||||
}
|
||||
},
|
||||
getJSON(key) {
|
||||
const value = this.get(key);
|
||||
if (value != null) {
|
||||
return JSON.parse(value);
|
||||
}
|
||||
},
|
||||
remove(key) {
|
||||
sessionStorage.removeItem(key);
|
||||
},
|
||||
};
|
||||
const localCache = {
|
||||
set(key, value) {
|
||||
if (!localStorage) {
|
||||
return;
|
||||
}
|
||||
if (key != null && value != null) {
|
||||
localStorage.setItem(key, value);
|
||||
}
|
||||
},
|
||||
get(key) {
|
||||
if (!localStorage) {
|
||||
return null;
|
||||
}
|
||||
if (key == null) {
|
||||
return null;
|
||||
}
|
||||
return localStorage.getItem(key);
|
||||
},
|
||||
setJSON(key, jsonValue) {
|
||||
if (jsonValue != null) {
|
||||
this.set(key, JSON.stringify(jsonValue));
|
||||
}
|
||||
},
|
||||
getJSON(key) {
|
||||
const value = this.get(key);
|
||||
if (value != null) {
|
||||
return JSON.parse(value);
|
||||
}
|
||||
},
|
||||
remove(key) {
|
||||
localStorage.removeItem(key);
|
||||
},
|
||||
// 检测缓存是否存在
|
||||
has(key) {
|
||||
return localStorage.getItem(key) ? true : false;
|
||||
},
|
||||
setItem(params) {
|
||||
let obj = {
|
||||
name: '',
|
||||
value: '',
|
||||
expires: '',
|
||||
startTime: new Date().getTime(),
|
||||
};
|
||||
let options = {};
|
||||
//将obj和传进来的params合并
|
||||
Object.assign(options, obj, params);
|
||||
if (options.expires) {
|
||||
//如果options.expires设置了的话
|
||||
//以options.name为key,options为值放进去
|
||||
localStorage.setItem(options.name, JSON.stringify(options));
|
||||
} else {
|
||||
//如果options.expires没有设置,就判断一下value的类型
|
||||
let type = Object.prototype.toString.call(options.value);
|
||||
//如果value是对象或者数组对象的类型,就先用JSON.stringify转一下,再存进去
|
||||
if (Object.prototype.toString.call(options.value) == '[object Object]') {
|
||||
options.value = JSON.stringify(options.value);
|
||||
}
|
||||
if (Object.prototype.toString.call(options.value) == '[object Array]') {
|
||||
options.value = JSON.stringify(options.value);
|
||||
}
|
||||
localStorage.setItem(options.name, options.value);
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
export default {
|
||||
/**
|
||||
* 会话级缓存
|
||||
*/
|
||||
session: sessionCache,
|
||||
/**
|
||||
* 本地缓存
|
||||
*/
|
||||
local: localCache,
|
||||
};
|
||||
72
backend-adminend/src/plugins/download.js
Normal file
72
backend-adminend/src/plugins/download.js
Normal file
@@ -0,0 +1,72 @@
|
||||
import { saveAs } from 'file-saver';
|
||||
import axios from 'axios';
|
||||
import { getToken } from '@/utils/auth';
|
||||
import { Message } from 'element-ui';
|
||||
|
||||
const baseURL = process.env.VUE_APP_BASE_API;
|
||||
|
||||
export default {
|
||||
name(name, isDelete = true) {
|
||||
var url = baseURL + '/common/download?fileName=' + encodeURI(name) + '&delete=' + isDelete;
|
||||
axios({
|
||||
method: 'get',
|
||||
url: url,
|
||||
responseType: 'blob',
|
||||
headers: { Authorization: 'Bearer ' + getToken() },
|
||||
}).then(async (res) => {
|
||||
const isLogin = await this.blobValidate(res.data);
|
||||
if (isLogin) {
|
||||
const blob = new Blob([res.data]);
|
||||
this.saveAs(blob, decodeURI(res.headers['download-filename']));
|
||||
} else {
|
||||
Message.error('无效的会话,或者会话已过期,请重新登录。');
|
||||
}
|
||||
});
|
||||
},
|
||||
resource(resource) {
|
||||
var url = baseURL + '/common/download/resource?resource=' + encodeURI(resource);
|
||||
axios({
|
||||
method: 'get',
|
||||
url: url,
|
||||
responseType: 'blob',
|
||||
headers: { Authorization: 'Bearer ' + getToken() },
|
||||
}).then(async (res) => {
|
||||
const isLogin = await this.blobValidate(res.data);
|
||||
if (isLogin) {
|
||||
const blob = new Blob([res.data]);
|
||||
this.saveAs(blob, decodeURI(res.headers['download-filename']));
|
||||
} else {
|
||||
Message.error('无效的会话,或者会话已过期,请重新登录。');
|
||||
}
|
||||
});
|
||||
},
|
||||
zip(url, name) {
|
||||
var url = baseURL + url;
|
||||
axios({
|
||||
method: 'get',
|
||||
url: url,
|
||||
responseType: 'blob',
|
||||
headers: { Authorization: 'Bearer ' + getToken() },
|
||||
}).then(async (res) => {
|
||||
const isLogin = await this.blobValidate(res.data);
|
||||
if (isLogin) {
|
||||
const blob = new Blob([res.data], { type: 'application/zip' });
|
||||
this.saveAs(blob, name);
|
||||
} else {
|
||||
Message.error('无效的会话,或者会话已过期,请重新登录。');
|
||||
}
|
||||
});
|
||||
},
|
||||
saveAs(text, name, opts) {
|
||||
saveAs(text, name, opts);
|
||||
},
|
||||
async blobValidate(data) {
|
||||
try {
|
||||
const text = await data.text();
|
||||
JSON.parse(text);
|
||||
return false;
|
||||
} catch (error) {
|
||||
return true;
|
||||
}
|
||||
},
|
||||
};
|
||||
17
backend-adminend/src/plugins/index.js
Normal file
17
backend-adminend/src/plugins/index.js
Normal file
@@ -0,0 +1,17 @@
|
||||
import auth from './auth';
|
||||
import cache from './cache';
|
||||
import modal from './modal';
|
||||
import download from './download';
|
||||
|
||||
export default {
|
||||
install(Vue) {
|
||||
// 认证对象
|
||||
Vue.prototype.$auth = auth;
|
||||
// 缓存对象
|
||||
Vue.prototype.$cache = cache;
|
||||
// 模态框对象
|
||||
Vue.prototype.$modal = modal;
|
||||
// 下载文件
|
||||
Vue.prototype.$download = download;
|
||||
},
|
||||
};
|
||||
75
backend-adminend/src/plugins/modal.js
Normal file
75
backend-adminend/src/plugins/modal.js
Normal file
@@ -0,0 +1,75 @@
|
||||
import { Message, MessageBox, Notification, Loading } from 'element-ui';
|
||||
|
||||
let loadingInstance;
|
||||
|
||||
export default {
|
||||
// 消息提示
|
||||
msg(content) {
|
||||
Message.info(content);
|
||||
},
|
||||
// 错误消息
|
||||
msgError(content) {
|
||||
Message.error(content);
|
||||
},
|
||||
// 成功消息
|
||||
msgSuccess(content) {
|
||||
Message.success(content);
|
||||
},
|
||||
// 警告消息
|
||||
msgWarning(content) {
|
||||
Message.warning(content);
|
||||
},
|
||||
// 弹出提示
|
||||
alert(content) {
|
||||
MessageBox.alert(content, '系统提示');
|
||||
},
|
||||
// 错误提示
|
||||
alertError(content) {
|
||||
MessageBox.alert(content, '系统提示', { type: 'error' });
|
||||
},
|
||||
// 成功提示
|
||||
alertSuccess(content) {
|
||||
MessageBox.alert(content, '系统提示', { type: 'success' });
|
||||
},
|
||||
// 警告提示
|
||||
alertWarning(content) {
|
||||
MessageBox.alert(content, '系统提示', { type: 'warning' });
|
||||
},
|
||||
// 通知提示
|
||||
notify(content) {
|
||||
Notification.info(content);
|
||||
},
|
||||
// 错误通知
|
||||
notifyError(content) {
|
||||
Notification.error(content);
|
||||
},
|
||||
// 成功通知
|
||||
notifySuccess(content) {
|
||||
Notification.success(content);
|
||||
},
|
||||
// 警告通知
|
||||
notifyWarning(content) {
|
||||
Notification.warning(content);
|
||||
},
|
||||
// 确认窗体
|
||||
confirm(content) {
|
||||
return MessageBox.confirm(content, '系统提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning',
|
||||
});
|
||||
},
|
||||
// 打开遮罩层
|
||||
loading(content) {
|
||||
loadingInstance = Loading.service({
|
||||
lock: true,
|
||||
text: content,
|
||||
spinner: 'el-icon-loading',
|
||||
background: 'rgba(0, 0, 0, 0.7)',
|
||||
});
|
||||
},
|
||||
// 关闭遮罩层
|
||||
closeLoading() {
|
||||
loadingInstance.close();
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user