@tachybase/plugin-department 0.23.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +1 -0
- package/client.d.ts +2 -0
- package/client.js +1 -0
- package/dist/client/common/DepartmentTable.schema.d.ts +50 -0
- package/dist/client/common/DepartmentTable.view.d.ts +4 -0
- package/dist/client/common/FilterKeys.context.d.ts +10 -0
- package/dist/client/common/InternalDepartmentTable.d.ts +5 -0
- package/dist/client/common/Request.povider.d.ts +1 -0
- package/dist/client/common/UserDepartmentsFieldNotSupport.d.ts +2 -0
- package/dist/client/common/scopes/useDepartmentFilterActionProps.d.ts +5 -0
- package/dist/client/common/scopes/useFilterActionProps.d.ts +5 -0
- package/dist/client/index.d.ts +6 -0
- package/dist/client/index.js +12 -0
- package/dist/client/locale.d.ts +9 -0
- package/dist/client/main-tab/DepartmentIndex.d.ts +5 -0
- package/dist/client/main-tab/DepartmentIndex.provider.d.ts +3 -0
- package/dist/client/main-tab/DepartmentManagement.component.d.ts +1 -0
- package/dist/client/main-tab/DepartmentManagement.schema.d.ts +10 -0
- package/dist/client/main-tab/DepartmentManagement.view.d.ts +1 -0
- package/dist/client/main-tab/collections/departments.collection.d.ts +128 -0
- package/dist/client/main-tab/collections/users.collection.d.ts +189 -0
- package/dist/client/main-tab/components/DepartmentSelect.d.ts +1 -0
- package/dist/client/main-tab/components/InternalSuperiorDepartmentSelect.d.ts +1 -0
- package/dist/client/main-tab/components/SuperiorDepartmentSelect.d.ts +1 -0
- package/dist/client/main-tab/context/Department.context.d.ts +23 -0
- package/dist/client/main-tab/context/DepartmentsExpanded.context.d.ts +17 -0
- package/dist/client/main-tab/departments-block/AddNewDepartment.schema.d.ts +67 -0
- package/dist/client/main-tab/departments-block/AddNewDepartment.view.d.ts +1 -0
- package/dist/client/main-tab/departments-block/DepartmentOwnersField.component.d.ts +5 -0
- package/dist/client/main-tab/departments-block/DepartmentsBlock.d.ts +1 -0
- package/dist/client/main-tab/departments-block/DepartmentsSearch.component.d.ts +1 -0
- package/dist/client/main-tab/departments-block/DepartmentsTree.component.d.ts +8 -0
- package/dist/client/main-tab/departments-block/Request.provider.d.ts +1 -0
- package/dist/client/main-tab/departments-block/UnknownOwerns.schema.d.ts +136 -0
- package/dist/client/main-tab/departments-block/UnknownOwerns.view.d.ts +1 -0
- package/dist/client/main-tab/departments-block/schemas/schemaDepartmentEdit.d.ts +62 -0
- package/dist/client/main-tab/departments-block/schemas/schemaDepartmentNewSub.d.ts +57 -0
- package/dist/client/main-tab/departments-block/scopes/useCreateDepartment.d.ts +3 -0
- package/dist/client/main-tab/departments-block/scopes/useUpdateDepartment.d.ts +3 -0
- package/dist/client/main-tab/departments-users-block/AddMembers.schema.d.ts +148 -0
- package/dist/client/main-tab/departments-users-block/AddMembers.view.d.ts +1 -0
- package/dist/client/main-tab/departments-users-block/DepartmentField.component.d.ts +1 -0
- package/dist/client/main-tab/departments-users-block/DepartmentsUsersBlock.d.ts +1 -0
- package/dist/client/main-tab/departments-users-block/DepartmentsUsersBlock.schema.d.ts +676 -0
- package/dist/client/main-tab/departments-users-block/IsOwnerField.component.d.ts +1 -0
- package/dist/client/main-tab/departments-users-block/MemberActions.schema.d.ts +49 -0
- package/dist/client/main-tab/departments-users-block/MemberActions.view.d.ts +1 -0
- package/dist/client/main-tab/departments-users-block/RowRemoveAction.schema.d.ts +16 -0
- package/dist/client/main-tab/departments-users-block/RowRemoveAction.view.d.ts +1 -0
- package/dist/client/main-tab/departments-users-block/UserDepartmentsField.component.d.ts +1 -0
- package/dist/client/main-tab/departments-users-block/UserSelectDepartment.schema.d.ts +42 -0
- package/dist/client/main-tab/departments-users-block/UserSelectDepartment.view.d.ts +1 -0
- package/dist/client/main-tab/departments-users-block/scopes/useBulkRemoveMembersAction.d.ts +3 -0
- package/dist/client/main-tab/departments-users-block/scopes/useDataSource.d.ts +40 -0
- package/dist/client/main-tab/departments-users-block/scopes/useMembersDataSource.d.ts +6 -0
- package/dist/client/main-tab/departments-users-block/scopes/usePropsAddMember.d.ts +1 -0
- package/dist/client/main-tab/departments-users-block/scopes/useRefreshActionProps.d.ts +3 -0
- package/dist/client/main-tab/departments-users-block/scopes/useRemoveMemberAction.d.ts +3 -0
- package/dist/client/main-tab/departments-users-block/scopes/useShowTotal.d.ts +1 -0
- package/dist/client/main-tab/hooks/useDeepTree.d.ts +14 -0
- package/dist/client/main-tab/hooks/useGetDepTree.d.ts +18 -0
- package/dist/client/main-tab/kit.d.ts +4 -0
- package/dist/client/main-tab/providers/DepartmentsResource.provider.d.ts +3 -0
- package/dist/client/main-tab/providers/UserResource.provider.d.ts +3 -0
- package/dist/client/role-auth/DepartmentTitle.component.d.ts +1 -0
- package/dist/client/role-auth/Departments.d.ts +1 -0
- package/dist/client/role-auth/Departments.schema.d.ts +227 -0
- package/dist/client/role-auth/kit.d.ts +4 -0
- package/dist/client/role-auth/scopes/useAddDepartments.d.ts +3 -0
- package/dist/client/role-auth/scopes/useBulkRemoveDepartments.d.ts +3 -0
- package/dist/client/role-auth/scopes/useDataSource.d.ts +40 -0
- package/dist/client/role-auth/scopes/useDisabled.d.ts +3 -0
- package/dist/client/role-auth/scopes/useRemoveDepartment.d.ts +3 -0
- package/dist/client/settings/DepartmentOwnersFieldSetting.d.ts +2 -0
- package/dist/client/settings/UserDepartmentsFieldSetting.d.ts +2 -0
- package/dist/client/settings/UserMainDepartmentFieldSetting.d.ts +2 -0
- package/dist/client/settings/items/enableLinkItem.d.ts +2 -0
- package/dist/client/settings/items/modeSelectItem.d.ts +2 -0
- package/dist/client/settings/items/titleFieldItem.d.ts +2 -0
- package/dist/client/utils/getDepartmentStr.d.ts +1 -0
- package/dist/client/utils/getUserListByDepartment.d.ts +1 -0
- package/dist/externalVersion.js +14 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +39 -0
- package/dist/locale/en-US.json +51 -0
- package/dist/locale/zh-CN.json +51 -0
- package/dist/server/actions/departments.d.ts +5 -0
- package/dist/server/actions/departments.js +105 -0
- package/dist/server/actions/index.d.ts +2 -0
- package/dist/server/actions/index.js +23 -0
- package/dist/server/actions/users.d.ts +4 -0
- package/dist/server/actions/users.js +142 -0
- package/dist/server/collections/departmentRoles.d.ts +2 -0
- package/dist/server/collections/departmentRoles.js +27 -0
- package/dist/server/collections/departments.d.ts +29 -0
- package/dist/server/collections/departments.js +162 -0
- package/dist/server/collections/departmentsUsers.d.ts +2 -0
- package/dist/server/collections/departmentsUsers.js +43 -0
- package/dist/server/collections/roles.d.ts +2 -0
- package/dist/server/collections/roles.js +39 -0
- package/dist/server/collections/users.d.ts +55 -0
- package/dist/server/collections/users.js +87 -0
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.js +33 -0
- package/dist/server/middlewares/destroy-department-check.d.ts +2 -0
- package/dist/server/middlewares/destroy-department-check.js +53 -0
- package/dist/server/middlewares/index.d.ts +6 -0
- package/dist/server/middlewares/index.js +31 -0
- package/dist/server/middlewares/list-users-include-child-department.d.ts +2 -0
- package/dist/server/middlewares/list-users-include-child-department.js +77 -0
- package/dist/server/middlewares/reset-user-departments-cache.d.ts +2 -0
- package/dist/server/middlewares/reset-user-departments-cache.js +39 -0
- package/dist/server/middlewares/set-department-owners.d.ts +2 -0
- package/dist/server/middlewares/set-department-owners.js +74 -0
- package/dist/server/middlewares/set-departments-roles.d.ts +2 -0
- package/dist/server/middlewares/set-departments-roles.js +64 -0
- package/dist/server/middlewares/set-main-department.d.ts +2 -0
- package/dist/server/middlewares/set-main-department.js +105 -0
- package/dist/server/middlewares/update-department-isleaf.d.ts +2 -0
- package/dist/server/middlewares/update-department-isleaf.js +84 -0
- package/dist/server/models/department.d.ts +4 -0
- package/dist/server/models/department.js +38 -0
- package/dist/server/plugin.d.ts +8 -0
- package/dist/server/plugin.js +134 -0
- package/package.json +27 -0
- package/server.d.ts +2 -0
- package/server.js +1 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Add custom component": "Add custom component",
|
|
3
|
+
"Add department": "Add department",
|
|
4
|
+
"Add departments": "Add departments",
|
|
5
|
+
"Add members": "Add members",
|
|
6
|
+
"All members": "All members",
|
|
7
|
+
"All users": "All users",
|
|
8
|
+
"Are you sure you want to delete it?": "Are you sure you want to delete it?",
|
|
9
|
+
"Are you sure you want to remove it?": "Are you sure you want to remove it?",
|
|
10
|
+
"Are you sure you want to remove these departments?": "Are you sure you want to remove these departments?",
|
|
11
|
+
"Are you sure you want to remove these members?": "Are you sure you want to remove these members?",
|
|
12
|
+
"Configure": "Configure",
|
|
13
|
+
"Delete department": "Delete department",
|
|
14
|
+
"Delete record action": "Delete record action",
|
|
15
|
+
"Department": "Department",
|
|
16
|
+
"Department name": "Department name",
|
|
17
|
+
"Departments": "Departments",
|
|
18
|
+
"Departments management": "Departments management",
|
|
19
|
+
"Edit department": "Edit department",
|
|
20
|
+
"Exclude members of sub-departments": "Exclude members of sub-departments",
|
|
21
|
+
"Main": "Main",
|
|
22
|
+
"Main department": "Main department",
|
|
23
|
+
"New department": "New department",
|
|
24
|
+
"New sub department": "New sub department",
|
|
25
|
+
"Only display direct members of the department": "Only display direct members of the department",
|
|
26
|
+
"Owner": "Owner",
|
|
27
|
+
"Owners": "Owners",
|
|
28
|
+
"Page style": "Page Style",
|
|
29
|
+
"Please select": "Please select",
|
|
30
|
+
"Please select departments": "Please select departments",
|
|
31
|
+
"Please select members": "Please select members",
|
|
32
|
+
"Remove department": "Remove department",
|
|
33
|
+
"Remove departments": "Remove departments",
|
|
34
|
+
"Remove member": "Remove member",
|
|
35
|
+
"Remove members": "Remove members",
|
|
36
|
+
"Roles management": "Roles management",
|
|
37
|
+
"Search for departments, users": "Search for departments, users",
|
|
38
|
+
"Search results": "Search results",
|
|
39
|
+
"Select Departments": "Select Departments",
|
|
40
|
+
"Select actions": "Select actions",
|
|
41
|
+
"Set as main department": "Set as main department",
|
|
42
|
+
"Show all members": "Show All members",
|
|
43
|
+
"Superior department": "Superior department",
|
|
44
|
+
"The department has members, please remove them first": "The department has members, please remove them first",
|
|
45
|
+
"The department has sub-departments, please delete them first": "The department has sub-departments, please delete them first",
|
|
46
|
+
"This field is currently not supported for use in form blocks.": "This field is currently not supported for use in form blocks.",
|
|
47
|
+
"component": "component",
|
|
48
|
+
"default": "default",
|
|
49
|
+
"error": "error",
|
|
50
|
+
"loading...": "loading..."
|
|
51
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"Add custom component": "添加自定义组件",
|
|
3
|
+
"Add department": "添加部门",
|
|
4
|
+
"Add departments": "添加部门",
|
|
5
|
+
"Add members": "添加成员",
|
|
6
|
+
"All members": "展示全部成员",
|
|
7
|
+
"All users": "所有用户",
|
|
8
|
+
"Are you sure you want to delete it?": "你确定要删除吗?",
|
|
9
|
+
"Are you sure you want to remove it?": "你确定要移除吗?",
|
|
10
|
+
"Are you sure you want to remove these departments?": "你确定要移除这些部门吗?",
|
|
11
|
+
"Are you sure you want to remove these members?": "你确定要移除这些成员吗?",
|
|
12
|
+
"Configure": "配置",
|
|
13
|
+
"Delete department": "删除部门",
|
|
14
|
+
"Delete record action": "删除记录操作",
|
|
15
|
+
"Department": "部门",
|
|
16
|
+
"Department name": "部门名称",
|
|
17
|
+
"Departments": "部门",
|
|
18
|
+
"Departments management": "部门管理",
|
|
19
|
+
"Edit department": "编辑部门",
|
|
20
|
+
"Exclude members of sub-departments": "仅展示部门的直属成员",
|
|
21
|
+
"Main": "主属部门",
|
|
22
|
+
"Main department": "主属部门",
|
|
23
|
+
"New department": "新建部门",
|
|
24
|
+
"New sub department": "新建子部门",
|
|
25
|
+
"Only display direct members of the department": "仅展示部门的直属成员",
|
|
26
|
+
"Owner": "负责人",
|
|
27
|
+
"Owners": "负责人",
|
|
28
|
+
"Page style": "页面版本",
|
|
29
|
+
"Please select": "请选择",
|
|
30
|
+
"Please select departments": "请选择部门",
|
|
31
|
+
"Please select members": "请选择成员",
|
|
32
|
+
"Remove department": "移除部门",
|
|
33
|
+
"Remove departments": "移除部门",
|
|
34
|
+
"Remove member": "移除成员",
|
|
35
|
+
"Remove members": "移除成员",
|
|
36
|
+
"Roles management": "角色管理",
|
|
37
|
+
"Search for departments, users": "搜索部门、用户",
|
|
38
|
+
"Search results": "搜索结果",
|
|
39
|
+
"Select Departments": "选择部门",
|
|
40
|
+
"Select actions": "选择操作",
|
|
41
|
+
"Set as main department": "设置为主属部门",
|
|
42
|
+
"Show all members": "展示全部成员",
|
|
43
|
+
"Superior department": "上级部门",
|
|
44
|
+
"The department has members, please remove them first": "部门下有成员,请先移除",
|
|
45
|
+
"The department has sub-departments, please delete them first": "部门下有子部门,请先删除子部门",
|
|
46
|
+
"This field is currently not supported for use in form blocks.": "该字段目前不支持在表单卡片中使用。",
|
|
47
|
+
"component": "组件",
|
|
48
|
+
"default": "默认",
|
|
49
|
+
"error": "出错了",
|
|
50
|
+
"loading...": "加载中..."
|
|
51
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Context, Next } from '@tachybase/actions';
|
|
2
|
+
export declare const getAppendsOwners: (ctx: Context, next: Next) => Promise<void>;
|
|
3
|
+
export declare const aggregateSearch: (ctx: Context, next: Next) => Promise<void>;
|
|
4
|
+
export declare const setOwner: (ctx: Context, next: Next) => Promise<void>;
|
|
5
|
+
export declare const removeOwner: (ctx: Context, next: Next) => Promise<void>;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var departments_exports = {};
|
|
19
|
+
__export(departments_exports, {
|
|
20
|
+
aggregateSearch: () => aggregateSearch,
|
|
21
|
+
getAppendsOwners: () => getAppendsOwners,
|
|
22
|
+
removeOwner: () => removeOwner,
|
|
23
|
+
setOwner: () => setOwner
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(departments_exports);
|
|
26
|
+
const getAppendsOwners = async (ctx, next) => {
|
|
27
|
+
const { filterByTk, appends } = ctx.action.params;
|
|
28
|
+
const repo = ctx.db.getRepository("departments");
|
|
29
|
+
const department = await repo.findOne({
|
|
30
|
+
filterByTk,
|
|
31
|
+
appends
|
|
32
|
+
});
|
|
33
|
+
const owners = await department.getOwners();
|
|
34
|
+
department.setDataValue("owners", owners);
|
|
35
|
+
ctx.body = department;
|
|
36
|
+
await next();
|
|
37
|
+
};
|
|
38
|
+
const aggregateSearch = async (ctx, next) => {
|
|
39
|
+
const { keyword, type, last = 0, limit = 10 } = ctx.action.params.values || {};
|
|
40
|
+
let users = [];
|
|
41
|
+
let departments = [];
|
|
42
|
+
if (!type || type === "user") {
|
|
43
|
+
const repo = ctx.db.getRepository("users");
|
|
44
|
+
users = await repo.find({
|
|
45
|
+
filter: {
|
|
46
|
+
id: { $gt: last },
|
|
47
|
+
$or: [
|
|
48
|
+
{ username: { $includes: keyword } },
|
|
49
|
+
{ nickname: { $includes: keyword } },
|
|
50
|
+
{ phone: { $includes: keyword } },
|
|
51
|
+
{ email: { $includes: keyword } }
|
|
52
|
+
]
|
|
53
|
+
},
|
|
54
|
+
limit
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
if (!type || type === "department") {
|
|
58
|
+
const repo = ctx.db.getRepository("departments");
|
|
59
|
+
departments = await repo.find({
|
|
60
|
+
filter: {
|
|
61
|
+
id: { $gt: last },
|
|
62
|
+
title: { $includes: keyword }
|
|
63
|
+
},
|
|
64
|
+
appends: ["parent(recursively=true)"],
|
|
65
|
+
limit
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
ctx.body = { users, departments };
|
|
69
|
+
await next();
|
|
70
|
+
};
|
|
71
|
+
const setOwner = async (ctx, next) => {
|
|
72
|
+
const { userId, departmentId } = ctx.action.params.values || {};
|
|
73
|
+
const throughRepo = ctx.db.getRepository("departmentsUsers");
|
|
74
|
+
await throughRepo.update({
|
|
75
|
+
filter: {
|
|
76
|
+
userId,
|
|
77
|
+
departmentId
|
|
78
|
+
},
|
|
79
|
+
values: {
|
|
80
|
+
isOwner: true
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
await next();
|
|
84
|
+
};
|
|
85
|
+
const removeOwner = async (ctx, next) => {
|
|
86
|
+
const { userId, departmentId } = ctx.action.params.values || {};
|
|
87
|
+
const throughRepo = ctx.db.getRepository("departmentsUsers");
|
|
88
|
+
await throughRepo.update({
|
|
89
|
+
filter: {
|
|
90
|
+
userId,
|
|
91
|
+
departmentId
|
|
92
|
+
},
|
|
93
|
+
values: {
|
|
94
|
+
isOwner: false
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
await next();
|
|
98
|
+
};
|
|
99
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
100
|
+
0 && (module.exports = {
|
|
101
|
+
aggregateSearch,
|
|
102
|
+
getAppendsOwners,
|
|
103
|
+
removeOwner,
|
|
104
|
+
setOwner
|
|
105
|
+
});
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __copyProps = (to, from, except, desc) => {
|
|
6
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
7
|
+
for (let key of __getOwnPropNames(from))
|
|
8
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
9
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
10
|
+
}
|
|
11
|
+
return to;
|
|
12
|
+
};
|
|
13
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var actions_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(actions_exports);
|
|
17
|
+
__reExport(actions_exports, require("./departments"), module.exports);
|
|
18
|
+
__reExport(actions_exports, require("./users"), module.exports);
|
|
19
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
20
|
+
0 && (module.exports = {
|
|
21
|
+
...require("./departments"),
|
|
22
|
+
...require("./users")
|
|
23
|
+
});
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type Context, type Next } from '@tachybase/actions';
|
|
2
|
+
export declare const listExcludeDept: (ctx: Context, next: Next) => Promise<void>;
|
|
3
|
+
export declare const setDepartments: (ctx: Context, next: Next) => Promise<void>;
|
|
4
|
+
export declare const setMainDepartment: (ctx: Context, next: Next) => Promise<void>;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var users_exports = {};
|
|
19
|
+
__export(users_exports, {
|
|
20
|
+
listExcludeDept: () => listExcludeDept,
|
|
21
|
+
setDepartments: () => setDepartments,
|
|
22
|
+
setMainDepartment: () => setMainDepartment
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(users_exports);
|
|
25
|
+
var import_actions = require("@tachybase/actions");
|
|
26
|
+
const listExcludeDept = async (ctx, next) => {
|
|
27
|
+
const { departmentId, page = import_actions.DEFAULT_PAGE, pageSize = import_actions.DEFAULT_PER_PAGE } = ctx.action.params;
|
|
28
|
+
const repo = ctx.db.getRepository("users");
|
|
29
|
+
const members = await repo.find({
|
|
30
|
+
fields: ["id"],
|
|
31
|
+
filter: {
|
|
32
|
+
"departments.id": departmentId
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
const memberIds = members.map((member) => member.id);
|
|
36
|
+
if (memberIds.length) {
|
|
37
|
+
ctx.action.mergeParams({
|
|
38
|
+
filter: {
|
|
39
|
+
id: {
|
|
40
|
+
$notIn: memberIds
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
const { filter } = ctx.action.params;
|
|
46
|
+
const [rows, count] = await repo.findAndCount({
|
|
47
|
+
context: ctx,
|
|
48
|
+
offset: (page - 1) * pageSize,
|
|
49
|
+
limit: pageSize,
|
|
50
|
+
filter
|
|
51
|
+
});
|
|
52
|
+
ctx.body = {
|
|
53
|
+
count,
|
|
54
|
+
rows,
|
|
55
|
+
page: Number(page),
|
|
56
|
+
pageSize: Number(pageSize),
|
|
57
|
+
totalPage: Math.ceil(count / pageSize)
|
|
58
|
+
};
|
|
59
|
+
await next();
|
|
60
|
+
};
|
|
61
|
+
const setDepartments = async (ctx, next) => {
|
|
62
|
+
const { values = {} } = ctx.action.params;
|
|
63
|
+
const { userId, departments = [] } = values;
|
|
64
|
+
const repo = ctx.db.getRepository("users");
|
|
65
|
+
const throughRepo = ctx.db.getRepository("departmentsUsers");
|
|
66
|
+
const user = await repo.findOne({ filterByTk: userId });
|
|
67
|
+
if (!user) {
|
|
68
|
+
ctx.throw(400, ctx.t("User does not exist"));
|
|
69
|
+
}
|
|
70
|
+
const departmentIds = departments.map((department) => department.id);
|
|
71
|
+
const main = departments.find((department) => department.isMain);
|
|
72
|
+
const owners = departments.filter((department) => department.isOwner);
|
|
73
|
+
await ctx.db.sequelize.transaction(async (t) => {
|
|
74
|
+
await user.setDepartments(departmentIds, {
|
|
75
|
+
through: {
|
|
76
|
+
isMain: false,
|
|
77
|
+
isOwner: false
|
|
78
|
+
},
|
|
79
|
+
transaction: t
|
|
80
|
+
});
|
|
81
|
+
if (main) {
|
|
82
|
+
await throughRepo.update({
|
|
83
|
+
filter: {
|
|
84
|
+
userId,
|
|
85
|
+
departmentId: main.id
|
|
86
|
+
},
|
|
87
|
+
values: {
|
|
88
|
+
isMain: true
|
|
89
|
+
},
|
|
90
|
+
transaction: t
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
if (owners.length) {
|
|
94
|
+
await throughRepo.update({
|
|
95
|
+
filter: {
|
|
96
|
+
userId,
|
|
97
|
+
departmentId: {
|
|
98
|
+
$in: owners.map((owner) => owner.id)
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
values: {
|
|
102
|
+
isOwner: true
|
|
103
|
+
},
|
|
104
|
+
transaction: t
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
await next();
|
|
109
|
+
};
|
|
110
|
+
const setMainDepartment = async (ctx, next) => {
|
|
111
|
+
const { userId, departmentId } = ctx.action.params.values || {};
|
|
112
|
+
const throughRepo = ctx.db.getRepository("departmentsUsers");
|
|
113
|
+
await ctx.db.sequelize.transaction(async (t) => {
|
|
114
|
+
await throughRepo.update({
|
|
115
|
+
filter: {
|
|
116
|
+
userId,
|
|
117
|
+
isMain: true
|
|
118
|
+
},
|
|
119
|
+
values: {
|
|
120
|
+
isMain: false
|
|
121
|
+
},
|
|
122
|
+
transaction: t
|
|
123
|
+
});
|
|
124
|
+
await throughRepo.update({
|
|
125
|
+
filter: {
|
|
126
|
+
userId,
|
|
127
|
+
departmentId
|
|
128
|
+
},
|
|
129
|
+
values: {
|
|
130
|
+
isMain: true
|
|
131
|
+
},
|
|
132
|
+
transaction: t
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
await next();
|
|
136
|
+
};
|
|
137
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
138
|
+
0 && (module.exports = {
|
|
139
|
+
listExcludeDept,
|
|
140
|
+
setDepartments,
|
|
141
|
+
setMainDepartment
|
|
142
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var departmentRoles_exports = {};
|
|
19
|
+
__export(departmentRoles_exports, {
|
|
20
|
+
default: () => departmentRoles_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(departmentRoles_exports);
|
|
23
|
+
var import_database = require("@tachybase/database");
|
|
24
|
+
var departmentRoles_default = (0, import_database.defineCollection)({
|
|
25
|
+
name: "departmentsRoles",
|
|
26
|
+
dumpRules: "required"
|
|
27
|
+
});
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare const ownersField: {
|
|
2
|
+
interface: string;
|
|
3
|
+
type: string;
|
|
4
|
+
name: string;
|
|
5
|
+
collectionName: string;
|
|
6
|
+
target: string;
|
|
7
|
+
through: string;
|
|
8
|
+
foreignKey: string;
|
|
9
|
+
otherKey: string;
|
|
10
|
+
targetKey: string;
|
|
11
|
+
sourceKey: string;
|
|
12
|
+
throughScope: {
|
|
13
|
+
isOwner: boolean;
|
|
14
|
+
};
|
|
15
|
+
uiSchema: {
|
|
16
|
+
type: string;
|
|
17
|
+
title: string;
|
|
18
|
+
'x-component': string;
|
|
19
|
+
'x-component-props': {
|
|
20
|
+
multiple: boolean;
|
|
21
|
+
fieldNames: {
|
|
22
|
+
label: string;
|
|
23
|
+
value: string;
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
declare const _default: import("@tachybase/database").CollectionOptions;
|
|
29
|
+
export default _default;
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var departments_exports = {};
|
|
19
|
+
__export(departments_exports, {
|
|
20
|
+
default: () => departments_default,
|
|
21
|
+
ownersField: () => ownersField
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(departments_exports);
|
|
24
|
+
var import_database = require("@tachybase/database");
|
|
25
|
+
const ownersField = {
|
|
26
|
+
interface: "m2m",
|
|
27
|
+
type: "belongsToMany",
|
|
28
|
+
name: "owners",
|
|
29
|
+
collectionName: "departments",
|
|
30
|
+
target: "users",
|
|
31
|
+
through: "departmentsUsers",
|
|
32
|
+
foreignKey: "departmentId",
|
|
33
|
+
otherKey: "userId",
|
|
34
|
+
targetKey: "id",
|
|
35
|
+
sourceKey: "id",
|
|
36
|
+
throughScope: {
|
|
37
|
+
isOwner: true
|
|
38
|
+
},
|
|
39
|
+
uiSchema: {
|
|
40
|
+
type: "m2m",
|
|
41
|
+
title: '{{t("Owners")}}',
|
|
42
|
+
"x-component": "DepartmentOwnersField",
|
|
43
|
+
"x-component-props": {
|
|
44
|
+
multiple: true,
|
|
45
|
+
fieldNames: {
|
|
46
|
+
label: "nickname",
|
|
47
|
+
value: "id"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
var departments_default = (0, import_database.defineCollection)({
|
|
53
|
+
name: "departments",
|
|
54
|
+
title: '{{t("Departments")}}',
|
|
55
|
+
dumpRules: "required",
|
|
56
|
+
tree: "adjacency-list",
|
|
57
|
+
template: "tree",
|
|
58
|
+
shared: true,
|
|
59
|
+
sortable: true,
|
|
60
|
+
model: "DepartmentModel",
|
|
61
|
+
createdBy: true,
|
|
62
|
+
updatedBy: true,
|
|
63
|
+
logging: true,
|
|
64
|
+
fields: [
|
|
65
|
+
{
|
|
66
|
+
type: "bigInt",
|
|
67
|
+
name: "id",
|
|
68
|
+
primaryKey: true,
|
|
69
|
+
autoIncrement: true,
|
|
70
|
+
interface: "id",
|
|
71
|
+
uiSchema: {
|
|
72
|
+
type: "number",
|
|
73
|
+
title: '{{t("ID")}}',
|
|
74
|
+
"x-component": "InputNumber",
|
|
75
|
+
"x-read-pretty": true
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
type: "string",
|
|
80
|
+
name: "title",
|
|
81
|
+
interface: "input",
|
|
82
|
+
uiSchema: {
|
|
83
|
+
type: "string",
|
|
84
|
+
title: '{{t("Department name")}}',
|
|
85
|
+
"x-component": "Input"
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
type: "boolean",
|
|
90
|
+
name: "isLeaf"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
type: "belongsTo",
|
|
94
|
+
name: "parent",
|
|
95
|
+
target: "departments",
|
|
96
|
+
foreignKey: "parentId",
|
|
97
|
+
treeParent: true,
|
|
98
|
+
onDelete: "CASCADE",
|
|
99
|
+
interface: "m2o",
|
|
100
|
+
uiSchema: {
|
|
101
|
+
type: "m2o",
|
|
102
|
+
title: '{{t("Superior department")}}',
|
|
103
|
+
"x-component": "AssociationField",
|
|
104
|
+
"x-component-props": {
|
|
105
|
+
multiple: false,
|
|
106
|
+
fieldNames: {
|
|
107
|
+
label: "title",
|
|
108
|
+
value: "id"
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
type: "hasMany",
|
|
115
|
+
name: "children",
|
|
116
|
+
target: "departments",
|
|
117
|
+
foreignKey: "parentId",
|
|
118
|
+
treeChildren: true,
|
|
119
|
+
onDelete: "CASCADE"
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
type: "belongsToMany",
|
|
123
|
+
name: "members",
|
|
124
|
+
target: "users",
|
|
125
|
+
through: "departmentsUsers",
|
|
126
|
+
foreignKey: "departmentId",
|
|
127
|
+
otherKey: "userId",
|
|
128
|
+
targetKey: "id",
|
|
129
|
+
sourceKey: "id",
|
|
130
|
+
onDelete: "CASCADE"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
interface: "m2m",
|
|
134
|
+
type: "belongsToMany",
|
|
135
|
+
name: "roles",
|
|
136
|
+
target: "roles",
|
|
137
|
+
through: "departmentsRoles",
|
|
138
|
+
foreignKey: "departmentId",
|
|
139
|
+
otherKey: "roleName",
|
|
140
|
+
targetKey: "name",
|
|
141
|
+
sourceKey: "id",
|
|
142
|
+
onDelete: "CASCADE",
|
|
143
|
+
uiSchema: {
|
|
144
|
+
type: "m2m",
|
|
145
|
+
title: '{{t("Roles")}}',
|
|
146
|
+
"x-component": "AssociationField",
|
|
147
|
+
"x-component-props": {
|
|
148
|
+
multiple: true,
|
|
149
|
+
fieldNames: {
|
|
150
|
+
label: "title",
|
|
151
|
+
value: "name"
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
ownersField
|
|
157
|
+
]
|
|
158
|
+
});
|
|
159
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
160
|
+
0 && (module.exports = {
|
|
161
|
+
ownersField
|
|
162
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
var departmentsUsers_exports = {};
|
|
19
|
+
__export(departmentsUsers_exports, {
|
|
20
|
+
default: () => departmentsUsers_default
|
|
21
|
+
});
|
|
22
|
+
module.exports = __toCommonJS(departmentsUsers_exports);
|
|
23
|
+
var import_database = require("@tachybase/database");
|
|
24
|
+
var departmentsUsers_default = (0, import_database.defineCollection)({
|
|
25
|
+
name: "departmentsUsers",
|
|
26
|
+
dumpRules: "required",
|
|
27
|
+
fields: [
|
|
28
|
+
{
|
|
29
|
+
type: "boolean",
|
|
30
|
+
name: "isOwner",
|
|
31
|
+
// Weather the user is the owner of the department
|
|
32
|
+
allowNull: false,
|
|
33
|
+
defaultValue: false
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
type: "boolean",
|
|
37
|
+
name: "isMain",
|
|
38
|
+
// Weather this is the main department of the user
|
|
39
|
+
allowNull: false,
|
|
40
|
+
defaultValue: false
|
|
41
|
+
}
|
|
42
|
+
]
|
|
43
|
+
});
|