@steedos/service-core-objects 3.0.0-beta.13 → 3.0.0-beta.131
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/main/default/applications/.gitkeep +0 -0
- package/main/default/applications/admin.app.yml +179 -0
- package/main/default/client/{topic.client.js → css.client.js} +2 -1
- package/main/default/client/socket.client.js +118 -0
- package/main/default/objectTranslations/announcements.en/announcements.en.objectTranslation.yml +37 -0
- package/main/default/objectTranslations/announcements.zh-CN/announcements.zh-CN.objectTranslation.yml +37 -0
- package/main/default/objectTranslations/audit_records.en/audit_records.en.objectTranslation.yml +1 -1
- package/main/default/objectTranslations/base.en/base.en.objectTranslation.yml +6 -0
- package/main/default/objectTranslations/base.zh-CN/base.zh-CN.objectTranslation.yml +6 -0
- package/main/default/objectTranslations/cms_files.en/cms_files.en.objectTranslation.yml +7 -1
- package/main/default/objectTranslations/cms_files.zh-CN/cms_files.zh-CN.objectTranslation.yml +7 -1
- package/main/default/objectTranslations/company.en/company.en.objectTranslation.yml +6 -1
- package/main/default/objectTranslations/company.zh-CN/company.zh-CN.objectTranslation.yml +5 -0
- package/main/default/objectTranslations/datasources.zh-CN/datasources.zh-CN.objectTranslation.yml +1 -1
- package/main/default/objectTranslations/license.en/license.en.objectTranslation.yml +1 -1
- package/main/default/objectTranslations/logs.en/logs.en.objectTranslation.yml +1 -1
- package/main/default/objectTranslations/object_actions.en/object_actions.en.objectTranslation.yml +5 -0
- package/main/default/objectTranslations/object_actions.zh-CN/object_actions.zh-CN.objectTranslation.yml +6 -1
- package/main/default/objectTranslations/object_fields.en/object_fields.en.objectTranslation.yml +4 -8
- package/main/default/objectTranslations/object_fields.zh-CN/object_fields.zh-CN.objectTranslation.yml +4 -4
- package/main/default/objectTranslations/object_functions.en/object_functions.en.objectTranslation.yml +1 -5
- package/main/default/objectTranslations/object_functions.zh-CN/object_functions.zh-CN.objectTranslation.yml +2 -6
- package/main/default/objectTranslations/object_layouts.zh-CN/object_layouts.zh-CN.objectTranslation.yml +1 -1
- package/main/default/objectTranslations/object_listviews.en/object_listviews.en.objectTranslation.yml +3 -1
- package/main/default/objectTranslations/object_listviews.zh-CN/object_listviews.zh-CN.objectTranslation.yml +5 -3
- package/main/default/objectTranslations/object_triggers.en/object_triggers.en.objectTranslation.yml +9 -0
- package/main/default/objectTranslations/object_triggers.zh-CN/object_triggers.zh-CN.objectTranslation.yml +9 -0
- package/main/default/objectTranslations/object_validation_rules.en/object_validation_rules.en.objectTranslation.yml +3 -3
- package/main/default/objectTranslations/object_webhooks.en/object_webhooks.en.objectTranslation.yml +12 -6
- package/main/default/objectTranslations/object_webhooks.zh-CN/object_webhooks.zh-CN.objectTranslation.yml +12 -6
- package/main/default/objectTranslations/objects.en/objects.en.objectTranslation.yml +44 -19
- package/main/default/objectTranslations/objects.zh-CN/objects.zh-CN.objectTranslation.yml +59 -25
- package/main/default/objectTranslations/operation_logs.en/operation_logs.en.objectTranslation.yml +66 -0
- package/main/default/objectTranslations/operation_logs.zh-CN/operation_logs.zh-CN.objectTranslation.yml +66 -0
- package/main/default/objectTranslations/organizations.en/organizations.en.objectTranslation.yml +1 -1
- package/main/default/objectTranslations/process_delegation_rules.en/process_delegation_rules.en.objectTranslation.yml +1 -1
- package/main/default/objectTranslations/sessions.en/sessions.en.objectTranslation.yml +1 -1
- package/main/default/objectTranslations/settings.en/settings.en.objectTranslation.yml +10 -1
- package/main/default/objectTranslations/settings.zh-CN/settings.zh-CN.objectTranslation.yml +9 -0
- package/main/default/objectTranslations/space_users.en/space_users.en.objectTranslation.yml +18 -1
- package/main/default/objectTranslations/space_users.zh-CN/space_users.zh-CN.objectTranslation.yml +17 -1
- package/main/default/objects/_base/base.client.js +124 -124
- package/main/default/objects/_base/base.object.js +502 -320
- package/main/default/objects/_base/base.object.yml +8 -0
- package/main/default/objects/_base/base.recordFieldAudit.trigger.js +3 -0
- package/main/default/objects/announcements.object.yml +68 -0
- package/main/default/objects/api_keys/buttons/copy.button.yml +1 -1
- package/main/default/objects/apps/apps.object.yml +25 -69
- package/main/default/objects/apps/buttons/disable.button.js +9 -7
- package/main/default/objects/apps/buttons/enable.button.js +9 -7
- package/main/default/objects/audit_records.object.yml +2 -2
- package/main/default/objects/cms_files/buttons/download.button.yml +1 -1
- package/main/default/objects/cms_files/cms_files.object.yml +7 -6
- package/main/default/objects/company/buttons/updateOrgs.button.yml +3 -6
- package/main/default/objects/company/company.object.yml +1 -1
- package/main/default/objects/favorites.object.yml +65 -0
- package/main/default/objects/keyvalue/keyvalue.object.yml +1 -0
- package/main/default/objects/logs/logs.object.yml +2 -1
- package/main/default/objects/object_actions/buttons/showDesign.button.js +5 -1
- package/main/default/objects/object_actions/fields/is_system.field.yml +1 -1
- package/main/default/objects/object_fields/buttons/recomputeFormulaValues.button.js +6 -2
- package/main/default/objects/object_fields/buttons/recomputeSummaryValues.button.js +6 -2
- package/main/default/objects/object_fields/buttons/standard_new.button.js +1 -1
- package/main/default/objects/object_fields/fields/_name.field.yml +1 -0
- package/main/default/objects/object_fields/fields/auto_fill_mapping.$.to.field.yml +28 -13
- package/main/default/objects/object_fields/fields/description.field.yml +11 -2
- package/main/default/objects/object_fields/fields/name.field.yml +1 -0
- package/main/default/objects/object_fields/fields/options.field.yml +1 -0
- package/main/default/objects/object_fields/fields/required.field.yml +1 -1
- package/main/default/objects/object_fields/fields/summary_filters.$.field.field.yml +16 -9
- package/main/default/objects/object_fields/fields/summary_filters.$.operation.field.yml +26 -29
- package/main/default/objects/object_fields/listviews/all.listview.yml +3 -1
- package/main/default/objects/object_fields/listviews/customize.listview.yml +3 -1
- package/main/default/objects/object_functions/buttons/open_api.button.yml +1 -3
- package/main/default/objects/object_functions/fields/script.field.yml +3 -2
- package/main/default/objects/object_functions/listviews/all.listview.yml +0 -1
- package/main/default/objects/object_functions/listviews/customize.listview.yml +0 -1
- package/main/default/objects/object_functions/object_functions.object.yml +1 -1
- package/main/default/objects/object_listviews/buttons/customize.button.js +36 -30
- package/main/default/objects/object_listviews/buttons/showDesign.button.js +6 -6
- package/main/default/objects/object_listviews/fields/adaptor.field.yml +2 -2
- package/main/default/objects/object_listviews/fields/crudDataFilter.field.yml +10 -0
- package/main/default/objects/object_listviews/fields/enable_amis_schema.field.yml +1 -0
- package/main/default/objects/object_listviews/fields/extra_columns.field.yml +18 -0
- package/main/default/objects/object_listviews/fields/requestAdaptor.field.yml +2 -2
- package/main/default/objects/object_listviews/object_listviews.object.yml +1 -1
- package/main/default/objects/object_triggers/fields/handler.field.yml +3 -2
- package/main/default/objects/object_webhooks/fields/fields.field.yml +1 -1
- package/main/default/objects/object_webhooks/object_webhooks.object.yml +2 -1
- package/main/default/objects/objects/buttons/custom.button.js +6 -35
- package/main/default/objects/objects/buttons/custom.button.yml +81 -1
- package/main/default/objects/objects/buttons/delete_object.button.yml +5 -4
- package/main/default/objects/objects/buttons/design_fields_layout.button.js +5 -2
- package/main/default/objects/objects/buttons/design_fields_layout.button.yml +1 -1
- package/main/default/objects/objects/buttons/reset.button.yml +6 -5
- package/main/default/objects/objects/buttons/show_object.button.js +2 -29
- package/main/default/objects/objects/fields/compactLayouts.field.yml +2 -2
- package/main/default/objects/objects/fields/enable_audit.field.yml +5 -0
- package/main/default/objects/objects/fields/enable_chatter.field.yml +5 -4
- package/main/default/objects/objects/fields/enable_dataloader.field.yml +0 -1
- package/main/default/objects/objects/fields/enable_enhanced_lookup.field.yml +0 -4
- package/main/default/objects/objects/fields/enable_events.field.yml +2 -2
- package/main/default/objects/objects/fields/enable_files.field.yml +1 -1
- package/main/default/objects/objects/fields/enable_form_tabs.field.yml +1 -2
- package/main/default/objects/objects/fields/enable_inline_edit.field.yml +1 -1
- package/main/default/objects/objects/fields/enable_instances.field.yml +2 -2
- package/main/default/objects/objects/fields/enable_lock_detail.field.yml +0 -1
- package/main/default/objects/objects/fields/enable_notes.field.yml +2 -2
- package/main/default/objects/objects/fields/enable_tasks.field.yml +1 -1
- package/main/default/objects/objects/fields/enable_tree.field.yml +0 -1
- package/main/default/objects/objects/fields/field_groups.field.yml +1 -1
- package/main/default/objects/objects/fields/in_development.field.yml +0 -1
- package/main/default/objects/objects/fields/is_deleted.field.yml +1 -0
- package/main/default/objects/objects/fields/name.field.yml +1 -4
- package/main/default/objects/objects/fields/table_name.field.yml +0 -1
- package/main/default/objects/objects/listviews/all.listview.yml +4 -1
- package/main/default/objects/objects/listviews/customize.listview.yml +3 -1
- package/main/default/objects/objects/listviews/deleted.listview.yml +3 -1
- package/main/default/objects/objects/listviews/metadata.listview.yml +3 -1
- package/main/default/objects/objects/listviews/system.listview.yml +3 -1
- package/main/default/objects/objects/objects.object.yml +1 -1
- package/main/default/objects/permission_set/buttons/copy.button.yml +114 -0
- package/main/default/objects/permission_set/buttons/set_permission_tabs.button.yml +166 -0
- package/main/default/objects/{permission_set.object.yml → permission_set/permission_set.object.yml} +1 -5
- package/main/default/objects/queue_import.object.yml +16 -1
- package/main/default/objects/roles.object.yml +1 -5
- package/main/default/objects/sessions.object.yml +1 -1
- package/main/default/objects/space_users/buttons/clear_login_tokens.button.yml +4 -7
- package/main/default/objects/space_users/buttons/disable.button.yml +3 -7
- package/main/default/objects/space_users/buttons/enable.button.yml +3 -7
- package/main/default/objects/space_users/buttons/lockout.button.yml +3 -7
- package/main/default/objects/space_users/buttons/standard_edit.button.js +0 -1
- package/main/default/objects/space_users/buttons/unlock.button.yml +3 -7
- package/main/default/objects/space_users/fields/locale.field.yml +2 -1
- package/main/default/objects/space_users/fields/password_expired.field.yml +1 -1
- package/main/default/pages/about.page.amis.json +21 -4
- package/main/default/pages/ai_chatbots_detail.page.amis.json +393 -0
- package/main/default/pages/ai_chatbots_detail.page.yml +13 -0
- package/main/default/pages/apps_form.page.amis.json +334 -0
- package/main/default/pages/apps_form.page.yml +12 -0
- package/main/default/pages/cfs_files_record_preview.page.amis.json +4 -4
- package/main/default/pages/cms_files_preview.page.amis.json +25 -6
- package/main/default/pages/object_detail.page.amis.json +17 -11
- package/main/default/pages/object_fields_form.page.amis.json +1 -12
- package/main/default/pages/object_form.page.amis.json +1 -1
- package/main/default/pages/object_validation_rules_form.page.amis.json +38 -0
- package/main/default/pages/object_validation_rules_form.page.yml +13 -0
- package/main/default/pages/object_webhooks_form.page.amis.json +1 -1
- package/main/default/pages/organizations.page.amis.json +0 -4
- package/main/default/pages/space_users_list.page.amis.json +134 -19
- package/main/default/routes/amis_button_design.ejs +4 -1
- package/main/default/routes/amis_button_design.router.js +4 -3
- package/main/default/routes/importRecords.router.js +87 -0
- package/main/default/routes/notifications.router.js +113 -0
- package/main/default/routes/object_fields_design.ejs +23 -9
- package/main/default/routes/object_fields_design.router.js +5 -4
- package/main/default/services/app-design.service.js +2 -1
- package/main/default/services/notifications.service.js +190 -0
- package/main/default/services/spaces.service.js +1 -1
- package/main/default/services/users.service.js +6 -3
- package/main/default/tabs/admin_bull_dashboard.tab.yml +22 -0
- package/main/default/tabs/{admin_process_delegation_rules.tab.yml → admin_object_functions.tab.yml} +5 -8
- package/main/default/tabs/admin_swagger.tab.yml +22 -0
- package/main/default/translations/en.translation.yml +5 -4
- package/main/default/translations/zh-CN.translation.yml +3 -2
- package/main/default/triggers/objects_set_default_object_properties_trigger.trigger.yml +9 -6
- package/main/default/triggers/queue_import.trigger.js +16 -0
- package/main/default/triggers/space_users.trigger.js +3 -3
- package/package.json +4 -4
- package/package.service.js +3 -2
- package/public/platform.css +67 -0
- package/public/topic.css +17 -37
- package/main/default/objectTranslations/flow_positions.en/flow_positions.en.objectTranslation.yml +0 -19
- package/main/default/objectTranslations/flow_positions.zh-CN/flow_positions.zh-CN.objectTranslation.yml +0 -19
- package/main/default/objectTranslations/flow_roles.en/flow_roles.en.objectTranslation.yml +0 -11
- package/main/default/objectTranslations/flow_roles.zh-CN/flow_roles.zh-CN.objectTranslation.yml +0 -14
- package/main/default/objectTranslations/flows.en/flows.en.objectTranslation.yml +0 -317
- package/main/default/objectTranslations/flows.zh-CN/flows.zh-CN.objectTranslation.yml +0 -314
- package/main/default/objectTranslations/forms.en/forms.en.objectTranslation.yml +0 -191
- package/main/default/objectTranslations/forms.zh-CN/forms.zh-CN.objectTranslation.yml +0 -194
- package/main/default/objectTranslations/instances.en/instances.en.objectTranslation.yml +0 -155
- package/main/default/objectTranslations/instances.zh-CN/instances.zh-CN.objectTranslation.yml +0 -155
- package/main/default/objects/apps/buttons/amis_edit.button.yml +0 -39
- package/main/default/objects/apps/buttons/amis_new.button.yml +0 -43
- package/main/default/objects/flows/flows.object.yml +0 -1089
- package/main/default/objects/object_actions/buttons/customize.button.js +0 -33
- package/main/default/objects/object_actions/buttons/customize.button.yml +0 -3
- package/main/default/objects/object_functions/fields/is_rest.field.yml +0 -5
- package/main/default/objects/object_listviews/buttons/copy.button.js +0 -58
- package/main/default/objects/object_listviews/buttons/copy.button.yml +0 -3
- package/main/default/objects/object_listviews/buttons/customize.button.yml +0 -3
- package/main/default/objects/objects/buttons/design_field_layout.button.js +0 -28
- package/main/default/objects/objects/buttons/design_field_layout.button.yml +0 -5
- package/main/default/objects/process_definition.object.yml +0 -323
- package/main/default/objects/space_users/fields/zoom.field.yml +0 -16
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
2
|
+
const _ = require("lodash");
|
|
3
|
+
const objectql = require('@steedos/objectql');
|
|
4
|
+
|
|
5
|
+
module.exports = {
|
|
6
|
+
name: 'notifications',
|
|
7
|
+
namespace: "steedos",
|
|
8
|
+
mixins: [],
|
|
9
|
+
/**
|
|
10
|
+
* Settings
|
|
11
|
+
*/
|
|
12
|
+
settings: {
|
|
13
|
+
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Dependencies
|
|
18
|
+
*/
|
|
19
|
+
dependencies: [],
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Actions
|
|
23
|
+
*/
|
|
24
|
+
actions: {
|
|
25
|
+
/**
|
|
26
|
+
* @api {post} add 发送通知
|
|
27
|
+
* @apiName add
|
|
28
|
+
* @apiGroup notifications.service.js
|
|
29
|
+
* @apiParam {Object} message 消息主体
|
|
30
|
+
* @apiParam {String} message[name] 消息标题
|
|
31
|
+
* @apiParam {String} message[body] 消息内容
|
|
32
|
+
* @apiParam {String} message[related_to] 关联记录
|
|
33
|
+
* @apiParam {String} message[related_name] 关联名称
|
|
34
|
+
* @apiParam {String} message[from] 发送者ID,选填
|
|
35
|
+
* @apiParam {String} message[space] 工作区ID
|
|
36
|
+
* @apiParam {String} from 发送者ID
|
|
37
|
+
* @apiParam {String[]} to 接受者ID
|
|
38
|
+
*/
|
|
39
|
+
add: {
|
|
40
|
+
params: {
|
|
41
|
+
message: {
|
|
42
|
+
type: "object",
|
|
43
|
+
props: {
|
|
44
|
+
name: { type: "string" },
|
|
45
|
+
body: { type: "string" },
|
|
46
|
+
related_to: {
|
|
47
|
+
type: "object",
|
|
48
|
+
props: {
|
|
49
|
+
o: { type: "string" },
|
|
50
|
+
ids: { type: "array", items: "string" },
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
related_name: { type: "string", optional: true },
|
|
54
|
+
from: { type: "string", optional: true },
|
|
55
|
+
space: { type: "string" },
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
from: { type: "string" },
|
|
59
|
+
to: {
|
|
60
|
+
type: "multi",
|
|
61
|
+
rules: [
|
|
62
|
+
{ type: "string" },
|
|
63
|
+
{ type: "array", items: "string" }
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
async handler(ctx) {
|
|
68
|
+
let { from, to, message } = ctx.params;
|
|
69
|
+
this.broker.emit('notifications.add', {from, to, message})
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
let notifications_ids = [];
|
|
73
|
+
if(!_.isArray(to) && _.isString(to)){
|
|
74
|
+
to = [to]
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
if (_.isEmpty(to)) {
|
|
78
|
+
return
|
|
79
|
+
}
|
|
80
|
+
let now = new Date();
|
|
81
|
+
const datasource = objectql.getDataSource('default');
|
|
82
|
+
const adapter = datasource.adapter
|
|
83
|
+
await adapter.connect()
|
|
84
|
+
const collection = adapter.collection('notifications');
|
|
85
|
+
let bulk = collection.initializeUnorderedBulkOp();
|
|
86
|
+
|
|
87
|
+
let doc = Object.assign({
|
|
88
|
+
created: now,
|
|
89
|
+
modified: now,
|
|
90
|
+
created_by: from,
|
|
91
|
+
modified_by: from
|
|
92
|
+
}, message)
|
|
93
|
+
|
|
94
|
+
for (const userId of to) {
|
|
95
|
+
let notifications_id = await objectql.getObject('notifications')._makeNewID();
|
|
96
|
+
bulk.insert(Object.assign({}, doc, {_id: notifications_id, owner: userId}));
|
|
97
|
+
notifications_ids.push(notifications_id)
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
bulk.execute().catch(function (error) {
|
|
101
|
+
console.error("通知数据插入失败,错误信息:", error);
|
|
102
|
+
});
|
|
103
|
+
|
|
104
|
+
try {
|
|
105
|
+
this.broker.emit(`notifications.hasBeenSent`, {
|
|
106
|
+
ids: notifications_ids
|
|
107
|
+
});
|
|
108
|
+
await ctx.broker.call('b6-microservice.broadcast', {name: '$notification.users', data: {tenantId: message.space, users: to, message: {name: message.name, body: message.body}}})
|
|
109
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
110
|
+
} catch (e) { console.log(e) }
|
|
111
|
+
}
|
|
112
|
+
},
|
|
113
|
+
/**
|
|
114
|
+
* @api {post} remove 删除通知
|
|
115
|
+
* @apiName remove
|
|
116
|
+
* @apiGroup notifications.service.js
|
|
117
|
+
* @apiParam {Object} doc 消息主体
|
|
118
|
+
* @apiParam {String} doc[_id] 消息ID
|
|
119
|
+
* @apiParam {String[]} assignees 接受者ID
|
|
120
|
+
* @apiParam {String} objectName 关联对象名称
|
|
121
|
+
*/
|
|
122
|
+
remove: {
|
|
123
|
+
params: {
|
|
124
|
+
doc: {
|
|
125
|
+
type: "object",
|
|
126
|
+
props: {
|
|
127
|
+
_id: { type: "string" },
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
assignees: {
|
|
131
|
+
type: "array", items: "string"
|
|
132
|
+
},
|
|
133
|
+
objectName: { type: "string" },
|
|
134
|
+
},
|
|
135
|
+
async handler(ctx) {
|
|
136
|
+
const { doc, assignees, objectName } = ctx.params;
|
|
137
|
+
const datasource = objectql.getDataSource('default');
|
|
138
|
+
const adapter = datasource.adapter
|
|
139
|
+
await adapter.connect()
|
|
140
|
+
const collection = adapter.collection('notifications');
|
|
141
|
+
let bulk = collection.initializeUnorderedBulkOp();
|
|
142
|
+
assignees.forEach(function (assignee) {
|
|
143
|
+
bulk.find({
|
|
144
|
+
"related_to.o": objectName,
|
|
145
|
+
"related_to.ids": doc._id,
|
|
146
|
+
owner: assignee
|
|
147
|
+
}).remove();
|
|
148
|
+
});
|
|
149
|
+
return bulk.execute().catch(function (error) {
|
|
150
|
+
console.error("通知数据删除失败,错误信息:", error);
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Events
|
|
158
|
+
*/
|
|
159
|
+
events: {
|
|
160
|
+
|
|
161
|
+
},
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Methods
|
|
165
|
+
*/
|
|
166
|
+
methods: {
|
|
167
|
+
|
|
168
|
+
},
|
|
169
|
+
|
|
170
|
+
/**
|
|
171
|
+
* Service created lifecycle event handler
|
|
172
|
+
*/
|
|
173
|
+
created() {
|
|
174
|
+
|
|
175
|
+
},
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Service started lifecycle event handler
|
|
179
|
+
*/
|
|
180
|
+
async started() {
|
|
181
|
+
this.broker.logger.info('[service][notifications]===>', 'started')
|
|
182
|
+
},
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Service stopped lifecycle event handler
|
|
186
|
+
*/
|
|
187
|
+
async stopped() {
|
|
188
|
+
|
|
189
|
+
}
|
|
190
|
+
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* @Author: sunhaolin@hotoa.com
|
|
3
3
|
* @Date: 2022-12-02 16:53:23
|
|
4
|
-
* @LastEditors:
|
|
5
|
-
* @LastEditTime:
|
|
4
|
+
* @LastEditors: 殷亮辉 yinlianghui@hotoa.com
|
|
5
|
+
* @LastEditTime: 2025-10-22 09:32:01
|
|
6
6
|
* @Description:
|
|
7
7
|
*/
|
|
8
8
|
"use strict";
|
|
@@ -98,6 +98,9 @@ module.exports = {
|
|
|
98
98
|
}
|
|
99
99
|
})
|
|
100
100
|
}
|
|
101
|
+
return {
|
|
102
|
+
success: true
|
|
103
|
+
};
|
|
101
104
|
}
|
|
102
105
|
},
|
|
103
106
|
invite_user: {
|
|
@@ -156,7 +159,7 @@ module.exports = {
|
|
|
156
159
|
}
|
|
157
160
|
const steedosConfig = getSteedosConfig();
|
|
158
161
|
const accountsConfig = steedosConfig.public.accounts || {};
|
|
159
|
-
const usernameMinLength = accountsConfig.username_min_length ? Number(accountsConfig.username_min_length) :
|
|
162
|
+
const usernameMinLength = accountsConfig.username_min_length ? Number(accountsConfig.username_min_length) : 2
|
|
160
163
|
if (username.length < usernameMinLength) {
|
|
161
164
|
throw new Error(`用户名最小长度不能小于 ${usernameMinLength} 位字符`);
|
|
162
165
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: admin_bull_dashboard
|
|
2
|
+
desktop: true
|
|
3
|
+
icon: dashboard
|
|
4
|
+
is_new_window: false
|
|
5
|
+
is_use_iframe: true
|
|
6
|
+
label: Bull Dashboard
|
|
7
|
+
mobile: true
|
|
8
|
+
permissions:
|
|
9
|
+
- permission: 'off'
|
|
10
|
+
permission_set: user
|
|
11
|
+
- permission: 'off'
|
|
12
|
+
permission_set: customer
|
|
13
|
+
- permission: 'off'
|
|
14
|
+
permission_set: supplier
|
|
15
|
+
- permission: 'on'
|
|
16
|
+
permission_set: admin
|
|
17
|
+
- permission: 'off'
|
|
18
|
+
permission_set: organization_admin
|
|
19
|
+
- permission: 'off'
|
|
20
|
+
permission_set: workflow_admin
|
|
21
|
+
type: url
|
|
22
|
+
url: /bull-jobs/dashboard/
|
package/main/default/tabs/{admin_process_delegation_rules.tab.yml → admin_object_functions.tab.yml}
RENAMED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
name:
|
|
1
|
+
name: admin_object_functions
|
|
2
2
|
desktop: true
|
|
3
|
-
icon:
|
|
3
|
+
icon: formula
|
|
4
4
|
is_new_window: false
|
|
5
|
-
label:
|
|
5
|
+
label: Object Functions
|
|
6
6
|
mobile: true
|
|
7
7
|
permissions:
|
|
8
8
|
- permission: 'on'
|
|
9
9
|
permission_set: admin
|
|
10
|
-
- permission: '
|
|
10
|
+
- permission: 'off'
|
|
11
11
|
permission_set: user
|
|
12
12
|
- permission: 'off'
|
|
13
13
|
permission_set: customer
|
|
@@ -18,7 +18,4 @@ permissions:
|
|
|
18
18
|
- permission: 'off'
|
|
19
19
|
permission_set: workflow_admin
|
|
20
20
|
type: object
|
|
21
|
-
object:
|
|
22
|
-
license:
|
|
23
|
-
- platform-professional
|
|
24
|
-
- platform-enterprise
|
|
21
|
+
object: object_functions
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: admin_swagger
|
|
2
|
+
desktop: true
|
|
3
|
+
icon: data_model
|
|
4
|
+
is_new_window: false
|
|
5
|
+
is_use_iframe: true
|
|
6
|
+
label: OpenAPI
|
|
7
|
+
mobile: true
|
|
8
|
+
permissions:
|
|
9
|
+
- permission: 'off'
|
|
10
|
+
permission_set: user
|
|
11
|
+
- permission: 'off'
|
|
12
|
+
permission_set: customer
|
|
13
|
+
- permission: 'off'
|
|
14
|
+
permission_set: supplier
|
|
15
|
+
- permission: 'on'
|
|
16
|
+
permission_set: admin
|
|
17
|
+
- permission: 'off'
|
|
18
|
+
permission_set: organization_admin
|
|
19
|
+
- permission: 'off'
|
|
20
|
+
permission_set: workflow_admin
|
|
21
|
+
type: url
|
|
22
|
+
url: /api/v6/
|
|
@@ -84,13 +84,13 @@ CustomTabs:
|
|
|
84
84
|
admin_space_users: Users
|
|
85
85
|
admin_permission_set: Profiles & Permission Sets
|
|
86
86
|
admin_personal_information: Personal Information
|
|
87
|
-
admin_license:
|
|
87
|
+
admin_license: Licenses
|
|
88
88
|
admin_apps: Apps
|
|
89
89
|
admin_steedos_packages: Packages
|
|
90
90
|
admin_objects: Objects
|
|
91
91
|
admin_datasources: External Data Sources
|
|
92
92
|
admin_queue_import: Data Import
|
|
93
|
-
admin_pages:
|
|
93
|
+
admin_pages: Custom Pages
|
|
94
94
|
admin_tabs: Tabs
|
|
95
95
|
admin_queries: Queries
|
|
96
96
|
admin_charts: Charts
|
|
@@ -112,10 +112,11 @@ CustomTabs:
|
|
|
112
112
|
admin_instances_statistic: Efficiency Statistics
|
|
113
113
|
admin_webhooks: Webhooks
|
|
114
114
|
admin_object_workflows: Object Synchronization Rules
|
|
115
|
-
admin_sessions: Sessions
|
|
115
|
+
admin_sessions: Login Sessions
|
|
116
116
|
admin_audit_records: Audit Records
|
|
117
117
|
admin_autonumber: Auto Number
|
|
118
118
|
admin_holidays: Holidays
|
|
119
119
|
admin_business_hours: Business Hours
|
|
120
120
|
admin_api_keys: API Keys
|
|
121
|
-
admin_metadata: Metadata
|
|
121
|
+
admin_metadata: Metadata
|
|
122
|
+
admin_bull_dashboard: Bull Dashboard
|
|
@@ -82,7 +82,7 @@ CustomTabs:
|
|
|
82
82
|
admin_company: 分部
|
|
83
83
|
admin_space_users: 人员
|
|
84
84
|
admin_permission_set: 简档 & 权限集
|
|
85
|
-
admin_license:
|
|
85
|
+
admin_license: 许可证
|
|
86
86
|
admin_apps: 应用程序
|
|
87
87
|
admin_steedos_packages: 软件包
|
|
88
88
|
admin_objects: 对象
|
|
@@ -117,4 +117,5 @@ CustomTabs:
|
|
|
117
117
|
admin_holidays: 节假日
|
|
118
118
|
admin_business_hours: 工作时间
|
|
119
119
|
admin_api_keys: API Key
|
|
120
|
-
admin_metadata: 元数据
|
|
120
|
+
admin_metadata: 元数据
|
|
121
|
+
admin_bull_dashboard: Bull仪表盘
|
|
@@ -5,7 +5,9 @@ when:
|
|
|
5
5
|
isEnabled: true
|
|
6
6
|
handler: |
|
|
7
7
|
try{
|
|
8
|
-
const { doc, userId } = ctx.params;
|
|
8
|
+
const { doc, userId, spaceId} = ctx.params;
|
|
9
|
+
const user = await ctx.getUser(userId, spaceId);
|
|
10
|
+
|
|
9
11
|
// 插入默认字段
|
|
10
12
|
await objects.object_fields.insert({
|
|
11
13
|
object: doc.name,
|
|
@@ -20,7 +22,7 @@ handler: |
|
|
|
20
22
|
index: true,
|
|
21
23
|
searchable: true,
|
|
22
24
|
filterable: true
|
|
23
|
-
});
|
|
25
|
+
}, user);
|
|
24
26
|
|
|
25
27
|
// 插入默认列表视图 "所有"
|
|
26
28
|
await objects.object_listviews.insert({
|
|
@@ -34,13 +36,14 @@ handler: |
|
|
|
34
36
|
crud_mode: 'table',
|
|
35
37
|
type: 'grid',
|
|
36
38
|
columns: [{ field: 'name' }],
|
|
39
|
+
is_enable: true,
|
|
37
40
|
sort: [
|
|
38
41
|
{
|
|
39
42
|
field_name: "created",
|
|
40
43
|
order: "desc"
|
|
41
44
|
}
|
|
42
45
|
]
|
|
43
|
-
});
|
|
46
|
+
}, user);
|
|
44
47
|
|
|
45
48
|
// 插入默认列表视图 "最近查看"
|
|
46
49
|
await objects.object_listviews.insert({
|
|
@@ -54,7 +57,7 @@ handler: |
|
|
|
54
57
|
filter_scope: "space",
|
|
55
58
|
crud_mode: 'table',
|
|
56
59
|
columns: [{ field: 'name' }]
|
|
57
|
-
});
|
|
60
|
+
}, user);
|
|
58
61
|
|
|
59
62
|
|
|
60
63
|
const psUserId = "user"; // 用户权限集 ID
|
|
@@ -86,7 +89,7 @@ handler: |
|
|
|
86
89
|
permission_set_id: psUserId,
|
|
87
90
|
object_name: doc.name,
|
|
88
91
|
space: doc.space
|
|
89
|
-
});
|
|
92
|
+
}, user);
|
|
90
93
|
|
|
91
94
|
// 插入管理员权限对象
|
|
92
95
|
await objects.permission_objects.insert({
|
|
@@ -95,7 +98,7 @@ handler: |
|
|
|
95
98
|
permission_set_id: psAdminId,
|
|
96
99
|
object_name: doc.name,
|
|
97
100
|
space: doc.space
|
|
98
|
-
});
|
|
101
|
+
}, user);
|
|
99
102
|
}catch(error){
|
|
100
103
|
console.log(error)
|
|
101
104
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
|
|
2
|
+
const objectql = require('@steedos/objectql');
|
|
3
|
+
|
|
4
|
+
module.exports = {
|
|
5
|
+
listenTo: 'queue_import',
|
|
6
|
+
|
|
7
|
+
afterFind: async function () {
|
|
8
|
+
if (this.data.values) {
|
|
9
|
+
for (const value of this.data.values) {
|
|
10
|
+
if (value) {
|
|
11
|
+
value.template_url = objectql.absoluteUrl(`/api/data/download/template/${value._id}`)
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*
|
|
2
2
|
* @Author: sunhaolin@hotoa.com
|
|
3
3
|
* @Date: 2022-12-07 14:19:57
|
|
4
|
-
* @LastEditors:
|
|
5
|
-
* @LastEditTime: 2025-
|
|
4
|
+
* @LastEditors: 殷亮辉 yinlianghui@hotoa.com
|
|
5
|
+
* @LastEditTime: 2025-10-14 10:16:10
|
|
6
6
|
* @Description:
|
|
7
7
|
*/
|
|
8
8
|
"use strict";
|
|
@@ -258,7 +258,7 @@ async function updatevaildate(suDoc, doc) {
|
|
|
258
258
|
filters: [
|
|
259
259
|
['mobile', '=', tmpMobile]
|
|
260
260
|
]
|
|
261
|
-
}))
|
|
261
|
+
}))
|
|
262
262
|
|
|
263
263
|
if (mobileUser && mobileUser._id !== suDoc.user) {
|
|
264
264
|
throw new Error("space_users_error_phone_already_existed");
|
package/package.json
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@steedos/service-core-objects",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.131",
|
|
4
4
|
"main": "package.service.js",
|
|
5
|
-
"private": false,
|
|
6
5
|
"publishConfig": {
|
|
7
6
|
"access": "public"
|
|
8
7
|
},
|
|
@@ -10,11 +9,12 @@
|
|
|
10
9
|
"steedos"
|
|
11
10
|
],
|
|
12
11
|
"dependencies": {
|
|
13
|
-
"@steedos/service-package-loader": "3.0.0-beta.
|
|
12
|
+
"@steedos/service-package-loader": "3.0.0-beta.131",
|
|
13
|
+
"json2xls": "^0.1.2",
|
|
14
14
|
"lodash": "^4.17.21"
|
|
15
15
|
},
|
|
16
16
|
"description": "steedos package",
|
|
17
17
|
"repository": {},
|
|
18
18
|
"license": "MIT",
|
|
19
|
-
"gitHead": "
|
|
19
|
+
"gitHead": "be17fae35ef8081798c61d30e4633e0f0f433cef"
|
|
20
20
|
}
|
package/package.service.js
CHANGED
|
@@ -31,7 +31,7 @@ module.exports = {
|
|
|
31
31
|
$package: {
|
|
32
32
|
path: __dirname,
|
|
33
33
|
name: packageName,
|
|
34
|
-
isPackage:
|
|
34
|
+
isPackage: false
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
37
|
/**
|
|
@@ -212,9 +212,10 @@ module.exports = {
|
|
|
212
212
|
this.broker.createService({
|
|
213
213
|
name: 'steedos-server',
|
|
214
214
|
mixins: [],
|
|
215
|
+
dependencies: ['metadata-cachers-service'],
|
|
215
216
|
actions: {
|
|
216
217
|
setSettings(ctx) {
|
|
217
|
-
|
|
218
|
+
global.Steedos.settings = _.defaultsDeep({}, ctx.params, global.Steedos.settings);
|
|
218
219
|
}
|
|
219
220
|
},
|
|
220
221
|
started: function() {
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--tw-border-opacity: 1;
|
|
3
|
+
--private: rgb(14 165 233 / var(--tw-border-opacity));
|
|
4
|
+
--primary-onHover: var(--colors-brand-9);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.ant-modal-mask{
|
|
8
|
+
z-index: 2999 !important;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.ant-modal-wrap{
|
|
12
|
+
z-index: 3999 !important;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
.antd-PdfViewer-Tool svg{
|
|
17
|
+
display: inline !important;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.antd-PdfViewer-Tool .page-input {
|
|
21
|
+
background: transparent !important;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.antd-PdfViewer-Tool{
|
|
25
|
+
bottom: 10px !important;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
.ant-notification{
|
|
30
|
+
z-index: 1900 !important;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
.button_uninstall {
|
|
35
|
+
color: var(--button-danger-default-font-color);
|
|
36
|
+
background: var(--button-danger-default-bg-color);
|
|
37
|
+
border-color: var(--button-danger-default-top-border-color) var(--button-danger-default-right-border-color) var(--button-danger-default-bottom-border-color) var(--button-danger-default-left-border-color);
|
|
38
|
+
border-width: var(--button-danger-default-top-border-width) var(--button-danger-default-right-border-width) var(--button-danger-default-bottom-border-width) var(--button-danger-default-left-border-width);
|
|
39
|
+
border-style: var(--button-danger-default-top-border-style) var(--button-danger-default-right-border-style) var(--button-danger-default-bottom-border-style) var(--button-danger-default-left-border-style);
|
|
40
|
+
box-shadow: var(--button-danger-default-shadow);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.button_uninstall:hover {
|
|
44
|
+
color: var(--button-danger-hover-font-color) !important;
|
|
45
|
+
background: var(--button-danger-hover-bg-color) !important;
|
|
46
|
+
border-color: var(--button-danger-hover-top-border-color) var(--button-danger-hover-right-border-color) var(--button-danger-hover-bottom-border-color) var(--button-danger-hover-left-border-color);
|
|
47
|
+
border-width: 0px !important;
|
|
48
|
+
border-style: var(--button-danger-hover-top-border-style) var(--button-danger-hover-right-border-style) var(--button-danger-hover-bottom-border-style) var(--button-danger-hover-left-border-style);
|
|
49
|
+
box-shadow: var(--button-danger-hover-shadow)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
/* .steedos-apps-home .antd-Panel .antd-Panel-body .app-item.app-item-_add_admin .slds-app-launcher__tile{
|
|
54
|
+
box-shadow: 0 0 2px var(--private), 0 2px 4px rgba(0, 0, 0, 0.14);
|
|
55
|
+
border: none;
|
|
56
|
+
} */
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
.antd-Pagination > li > a, .antd-Pagination > li > span {
|
|
60
|
+
line-height: 28px;
|
|
61
|
+
height: 28px;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
body>.antd-PopOver{
|
|
66
|
+
z-index: 1410 !important;
|
|
67
|
+
}
|
package/public/topic.css
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
:root {
|
|
2
|
-
--
|
|
3
|
-
--
|
|
4
|
-
--
|
|
2
|
+
--tw-bg-opacity: 0.1 !important;
|
|
3
|
+
--tw-onHover-opacity: 0.4;
|
|
4
|
+
--tw-onHover2-opacity: 0.5;
|
|
5
|
+
--private: rgb(14, 165, 233);
|
|
6
|
+
--private-bg: rgb(14, 165, 233, var(--tw-bg-opacity));
|
|
7
|
+
--private-onHover-bg: rgb(14, 165, 233, var(--tw-onHover-opacity));
|
|
8
|
+
--private-onHover-bg2: rgb(14, 165, 233, var(--tw-onHover2-opacity));
|
|
5
9
|
--Tabs--line-onHover-borderColor: var(--private);
|
|
6
10
|
--Tabs--line-active-color: var(--private);
|
|
7
11
|
--SearchBox-hover-color: var(--private);
|
|
@@ -21,7 +25,15 @@
|
|
|
21
25
|
--button-link-default-font-color: var(--private);
|
|
22
26
|
--Toast-paddingY: 10px;
|
|
23
27
|
--Toast-paddingX: 16px;
|
|
28
|
+
|
|
29
|
+
--dialog-header-color: var(--private);
|
|
30
|
+
|
|
31
|
+
--Form-item-fontSize: 14px !important;
|
|
32
|
+
--Table-thead-fontSize: 14px !important;
|
|
33
|
+
--Table-thead-fontSize: 14px !important;
|
|
34
|
+
|
|
24
35
|
}
|
|
36
|
+
|
|
25
37
|
.antd-Table-table td.is-sticky{
|
|
26
38
|
background: unset !important;
|
|
27
39
|
}
|
|
@@ -74,11 +86,11 @@
|
|
|
74
86
|
|
|
75
87
|
|
|
76
88
|
.antd-Nav-Menu-light .antd-Nav-Menu-item.antd-Nav-Menu-item-selected {
|
|
77
|
-
background:
|
|
89
|
+
background: var(--private-bg) !important;
|
|
78
90
|
}
|
|
79
91
|
|
|
80
92
|
.antd-Nav-Menu-light .antd-Nav-Menu-item.antd-Nav-Menu-item-active {
|
|
81
|
-
background:
|
|
93
|
+
background: var(--private-bg) !important;
|
|
82
94
|
}
|
|
83
95
|
|
|
84
96
|
.steedos-record-related-header .slds-icon {
|
|
@@ -130,36 +142,4 @@ body a:hover {
|
|
|
130
142
|
|
|
131
143
|
.ant-btn-primary{
|
|
132
144
|
color: var(--private);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
.ant-modal-mask{
|
|
136
|
-
z-index: 2999 !important;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
.ant-modal-wrap{
|
|
140
|
-
z-index: 3999 !important;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
.sidebar-wrapper{
|
|
145
|
-
width: 240px !important;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
@media (min-width: 768px) {
|
|
149
|
-
body.sidebar.sidebar-open #main {
|
|
150
|
-
margin-left: 240px !important;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
.antd-PdfViewer-Tool svg{
|
|
156
|
-
display: inline !important;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
.antd-PdfViewer-Tool .page-input {
|
|
160
|
-
background: transparent !important;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
.antd-PdfViewer-Tool{
|
|
164
|
-
bottom: 10px !important;
|
|
165
145
|
}
|
package/main/default/objectTranslations/flow_positions.en/flow_positions.en.objectTranslation.yml
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
name: flow_positions
|
|
2
|
-
label: Workflow Position
|
|
3
|
-
description:
|
|
4
|
-
fields:
|
|
5
|
-
role:
|
|
6
|
-
label: Flow Role
|
|
7
|
-
help:
|
|
8
|
-
description:
|
|
9
|
-
users:
|
|
10
|
-
label: Users
|
|
11
|
-
help:
|
|
12
|
-
description:
|
|
13
|
-
org:
|
|
14
|
-
label: Department
|
|
15
|
-
help:
|
|
16
|
-
description:
|
|
17
|
-
listviews:
|
|
18
|
-
all:
|
|
19
|
-
label: All Workflow Positions
|