Files
orange-admin/orange-demo-activiti/orange-demo-activiti-web/src/staticDict/index.js
2021-10-20 17:43:53 +08:00

202 lines
3.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 常量字典数据
*/
import Vue from 'vue';
class DictionaryBase extends Map {
constructor (name, dataList, keyId = 'id', symbolId = 'symbol') {
super();
this.showName = name;
this.setList(dataList, keyId, symbolId);
}
setList (dataList, keyId = 'id', symbolId = 'symbol') {
this.clear();
if (Array.isArray(dataList)) {
dataList.forEach((item) => {
this.set(item[keyId], item);
if (item[symbolId] != null) {
Object.defineProperty(this, item[symbolId], {
get: function () {
return item[keyId];
}
});
}
});
}
}
getList (valueId = 'name', parentIdKey = 'parentId', filter) {
let temp = [];
this.forEach((value, key) => {
let obj = {
id: key,
name: (typeof value === 'string') ? value : value[valueId],
parentId: value[parentIdKey]
};
if (typeof filter !== 'function' || filter(obj)) {
temp.push(obj);
}
});
return temp;
}
getValue (id, valueId = 'name') {
// 如果id为boolean类型则自动转换为0和1
if (typeof id === 'boolean') {
id = id ? 1 : 0;
}
return (this.get(id) || {})[valueId];
}
}
const SysUserStatus = new DictionaryBase('用户状态', [
{
id: 0,
name: '正常状态',
symbol: 'NORMAL'
},
{
id: 1,
name: '锁定状态',
symbol: 'LOCKED'
}
]);
Vue.prototype.SysUserStatus = SysUserStatus;
const SysUserType = new DictionaryBase('用户类型', [
{
id: 0,
name: '管理员',
symbol: 'ADMIN'
},
{
id: 1,
name: '系统操作员',
symbol: 'SYSTEM'
},
{
id: 2,
name: '普通操作员',
symbol: 'OPERATOR'
}
]);
Vue.prototype.SysUserType = SysUserType;
const SysPermModuleType = new DictionaryBase('权限分组类型', [
{
id: 0,
name: '分组模块',
symbol: 'GROUP'
}, {
id: 1,
name: '接口模块',
symbol: 'CONTROLLER'
}
]);
Vue.prototype.SysPermModuleType = SysPermModuleType;
const SysPermCodeType = new DictionaryBase('权限字类型', [{
id: 0,
name: '表单',
symbol: 'FORM'
}, {
id: 1,
name: '片段',
symbol: 'FRAGMENT'
}, {
id: 2,
name: '操作',
symbol: 'OPERATION'
}]);
Vue.prototype.SysPermCodeType = SysPermCodeType;
const SysMenuType = new DictionaryBase('菜单类型', [
{
id: 0,
name: '目录',
symbol: 'DIRECTORY'
},
{
id: 1,
name: '表单',
symbol: 'MENU'
},
{
id: 2,
name: '片段',
symbol: 'FRAGMENT'
},
{
id: 3,
name: '按钮',
symbol: 'BUTTON'
}
]);
Vue.prototype.SysMenuType = SysMenuType;
const SysMenuBindType = new DictionaryBase('菜单绑定类型', [
{
id: 0,
name: '路由菜单',
symbol: 'ROUTER'
},
{
id: 1,
name: '在线表单',
symbol: 'ONLINE_FORM'
},
{
id: 2,
name: '工单列表',
symbol: 'WORK_ORDER'
}
]);
Vue.prototype.SysMenuBindType = SysMenuBindType;
const SysDataPermType = new DictionaryBase('数据权限类型', [
{
id: 0,
name: '查看全部',
symbol: 'ALL'
},
{
id: 1,
name: '仅看自己',
symbol: 'ONLY_USER'
},
{
id: 2,
name: '仅看所在部门',
symbol: 'ONLY_DEPT'
},
{
id: 3,
name: '仅看所在部门及子部门',
symbol: 'ONLY_DEPT_AND_CHILD'
},
{
id: 4,
name: '自选部门及子部门',
symbol: 'CUSTOM_DEPT_AND_CHILD'
},
{
id: 5,
name: '仅自选部门',
symbol: 'CUSTOM_DEPT'
}
]);
Vue.prototype.SysDataPermType = SysDataPermType;
export {
DictionaryBase,
SysUserStatus,
SysUserType,
SysDataPermType,
SysPermModuleType,
SysPermCodeType,
SysMenuBindType,
SysMenuType
}