@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.
Files changed (195) hide show
  1. package/main/default/applications/.gitkeep +0 -0
  2. package/main/default/applications/admin.app.yml +179 -0
  3. package/main/default/client/{topic.client.js → css.client.js} +2 -1
  4. package/main/default/client/socket.client.js +118 -0
  5. package/main/default/objectTranslations/announcements.en/announcements.en.objectTranslation.yml +37 -0
  6. package/main/default/objectTranslations/announcements.zh-CN/announcements.zh-CN.objectTranslation.yml +37 -0
  7. package/main/default/objectTranslations/audit_records.en/audit_records.en.objectTranslation.yml +1 -1
  8. package/main/default/objectTranslations/base.en/base.en.objectTranslation.yml +6 -0
  9. package/main/default/objectTranslations/base.zh-CN/base.zh-CN.objectTranslation.yml +6 -0
  10. package/main/default/objectTranslations/cms_files.en/cms_files.en.objectTranslation.yml +7 -1
  11. package/main/default/objectTranslations/cms_files.zh-CN/cms_files.zh-CN.objectTranslation.yml +7 -1
  12. package/main/default/objectTranslations/company.en/company.en.objectTranslation.yml +6 -1
  13. package/main/default/objectTranslations/company.zh-CN/company.zh-CN.objectTranslation.yml +5 -0
  14. package/main/default/objectTranslations/datasources.zh-CN/datasources.zh-CN.objectTranslation.yml +1 -1
  15. package/main/default/objectTranslations/license.en/license.en.objectTranslation.yml +1 -1
  16. package/main/default/objectTranslations/logs.en/logs.en.objectTranslation.yml +1 -1
  17. package/main/default/objectTranslations/object_actions.en/object_actions.en.objectTranslation.yml +5 -0
  18. package/main/default/objectTranslations/object_actions.zh-CN/object_actions.zh-CN.objectTranslation.yml +6 -1
  19. package/main/default/objectTranslations/object_fields.en/object_fields.en.objectTranslation.yml +4 -8
  20. package/main/default/objectTranslations/object_fields.zh-CN/object_fields.zh-CN.objectTranslation.yml +4 -4
  21. package/main/default/objectTranslations/object_functions.en/object_functions.en.objectTranslation.yml +1 -5
  22. package/main/default/objectTranslations/object_functions.zh-CN/object_functions.zh-CN.objectTranslation.yml +2 -6
  23. package/main/default/objectTranslations/object_layouts.zh-CN/object_layouts.zh-CN.objectTranslation.yml +1 -1
  24. package/main/default/objectTranslations/object_listviews.en/object_listviews.en.objectTranslation.yml +3 -1
  25. package/main/default/objectTranslations/object_listviews.zh-CN/object_listviews.zh-CN.objectTranslation.yml +5 -3
  26. package/main/default/objectTranslations/object_triggers.en/object_triggers.en.objectTranslation.yml +9 -0
  27. package/main/default/objectTranslations/object_triggers.zh-CN/object_triggers.zh-CN.objectTranslation.yml +9 -0
  28. package/main/default/objectTranslations/object_validation_rules.en/object_validation_rules.en.objectTranslation.yml +3 -3
  29. package/main/default/objectTranslations/object_webhooks.en/object_webhooks.en.objectTranslation.yml +12 -6
  30. package/main/default/objectTranslations/object_webhooks.zh-CN/object_webhooks.zh-CN.objectTranslation.yml +12 -6
  31. package/main/default/objectTranslations/objects.en/objects.en.objectTranslation.yml +44 -19
  32. package/main/default/objectTranslations/objects.zh-CN/objects.zh-CN.objectTranslation.yml +59 -25
  33. package/main/default/objectTranslations/operation_logs.en/operation_logs.en.objectTranslation.yml +66 -0
  34. package/main/default/objectTranslations/operation_logs.zh-CN/operation_logs.zh-CN.objectTranslation.yml +66 -0
  35. package/main/default/objectTranslations/organizations.en/organizations.en.objectTranslation.yml +1 -1
  36. package/main/default/objectTranslations/process_delegation_rules.en/process_delegation_rules.en.objectTranslation.yml +1 -1
  37. package/main/default/objectTranslations/sessions.en/sessions.en.objectTranslation.yml +1 -1
  38. package/main/default/objectTranslations/settings.en/settings.en.objectTranslation.yml +10 -1
  39. package/main/default/objectTranslations/settings.zh-CN/settings.zh-CN.objectTranslation.yml +9 -0
  40. package/main/default/objectTranslations/space_users.en/space_users.en.objectTranslation.yml +18 -1
  41. package/main/default/objectTranslations/space_users.zh-CN/space_users.zh-CN.objectTranslation.yml +17 -1
  42. package/main/default/objects/_base/base.client.js +124 -124
  43. package/main/default/objects/_base/base.object.js +502 -320
  44. package/main/default/objects/_base/base.object.yml +8 -0
  45. package/main/default/objects/_base/base.recordFieldAudit.trigger.js +3 -0
  46. package/main/default/objects/announcements.object.yml +68 -0
  47. package/main/default/objects/api_keys/buttons/copy.button.yml +1 -1
  48. package/main/default/objects/apps/apps.object.yml +25 -69
  49. package/main/default/objects/apps/buttons/disable.button.js +9 -7
  50. package/main/default/objects/apps/buttons/enable.button.js +9 -7
  51. package/main/default/objects/audit_records.object.yml +2 -2
  52. package/main/default/objects/cms_files/buttons/download.button.yml +1 -1
  53. package/main/default/objects/cms_files/cms_files.object.yml +7 -6
  54. package/main/default/objects/company/buttons/updateOrgs.button.yml +3 -6
  55. package/main/default/objects/company/company.object.yml +1 -1
  56. package/main/default/objects/favorites.object.yml +65 -0
  57. package/main/default/objects/keyvalue/keyvalue.object.yml +1 -0
  58. package/main/default/objects/logs/logs.object.yml +2 -1
  59. package/main/default/objects/object_actions/buttons/showDesign.button.js +5 -1
  60. package/main/default/objects/object_actions/fields/is_system.field.yml +1 -1
  61. package/main/default/objects/object_fields/buttons/recomputeFormulaValues.button.js +6 -2
  62. package/main/default/objects/object_fields/buttons/recomputeSummaryValues.button.js +6 -2
  63. package/main/default/objects/object_fields/buttons/standard_new.button.js +1 -1
  64. package/main/default/objects/object_fields/fields/_name.field.yml +1 -0
  65. package/main/default/objects/object_fields/fields/auto_fill_mapping.$.to.field.yml +28 -13
  66. package/main/default/objects/object_fields/fields/description.field.yml +11 -2
  67. package/main/default/objects/object_fields/fields/name.field.yml +1 -0
  68. package/main/default/objects/object_fields/fields/options.field.yml +1 -0
  69. package/main/default/objects/object_fields/fields/required.field.yml +1 -1
  70. package/main/default/objects/object_fields/fields/summary_filters.$.field.field.yml +16 -9
  71. package/main/default/objects/object_fields/fields/summary_filters.$.operation.field.yml +26 -29
  72. package/main/default/objects/object_fields/listviews/all.listview.yml +3 -1
  73. package/main/default/objects/object_fields/listviews/customize.listview.yml +3 -1
  74. package/main/default/objects/object_functions/buttons/open_api.button.yml +1 -3
  75. package/main/default/objects/object_functions/fields/script.field.yml +3 -2
  76. package/main/default/objects/object_functions/listviews/all.listview.yml +0 -1
  77. package/main/default/objects/object_functions/listviews/customize.listview.yml +0 -1
  78. package/main/default/objects/object_functions/object_functions.object.yml +1 -1
  79. package/main/default/objects/object_listviews/buttons/customize.button.js +36 -30
  80. package/main/default/objects/object_listviews/buttons/showDesign.button.js +6 -6
  81. package/main/default/objects/object_listviews/fields/adaptor.field.yml +2 -2
  82. package/main/default/objects/object_listviews/fields/crudDataFilter.field.yml +10 -0
  83. package/main/default/objects/object_listviews/fields/enable_amis_schema.field.yml +1 -0
  84. package/main/default/objects/object_listviews/fields/extra_columns.field.yml +18 -0
  85. package/main/default/objects/object_listviews/fields/requestAdaptor.field.yml +2 -2
  86. package/main/default/objects/object_listviews/object_listviews.object.yml +1 -1
  87. package/main/default/objects/object_triggers/fields/handler.field.yml +3 -2
  88. package/main/default/objects/object_webhooks/fields/fields.field.yml +1 -1
  89. package/main/default/objects/object_webhooks/object_webhooks.object.yml +2 -1
  90. package/main/default/objects/objects/buttons/custom.button.js +6 -35
  91. package/main/default/objects/objects/buttons/custom.button.yml +81 -1
  92. package/main/default/objects/objects/buttons/delete_object.button.yml +5 -4
  93. package/main/default/objects/objects/buttons/design_fields_layout.button.js +5 -2
  94. package/main/default/objects/objects/buttons/design_fields_layout.button.yml +1 -1
  95. package/main/default/objects/objects/buttons/reset.button.yml +6 -5
  96. package/main/default/objects/objects/buttons/show_object.button.js +2 -29
  97. package/main/default/objects/objects/fields/compactLayouts.field.yml +2 -2
  98. package/main/default/objects/objects/fields/enable_audit.field.yml +5 -0
  99. package/main/default/objects/objects/fields/enable_chatter.field.yml +5 -4
  100. package/main/default/objects/objects/fields/enable_dataloader.field.yml +0 -1
  101. package/main/default/objects/objects/fields/enable_enhanced_lookup.field.yml +0 -4
  102. package/main/default/objects/objects/fields/enable_events.field.yml +2 -2
  103. package/main/default/objects/objects/fields/enable_files.field.yml +1 -1
  104. package/main/default/objects/objects/fields/enable_form_tabs.field.yml +1 -2
  105. package/main/default/objects/objects/fields/enable_inline_edit.field.yml +1 -1
  106. package/main/default/objects/objects/fields/enable_instances.field.yml +2 -2
  107. package/main/default/objects/objects/fields/enable_lock_detail.field.yml +0 -1
  108. package/main/default/objects/objects/fields/enable_notes.field.yml +2 -2
  109. package/main/default/objects/objects/fields/enable_tasks.field.yml +1 -1
  110. package/main/default/objects/objects/fields/enable_tree.field.yml +0 -1
  111. package/main/default/objects/objects/fields/field_groups.field.yml +1 -1
  112. package/main/default/objects/objects/fields/in_development.field.yml +0 -1
  113. package/main/default/objects/objects/fields/is_deleted.field.yml +1 -0
  114. package/main/default/objects/objects/fields/name.field.yml +1 -4
  115. package/main/default/objects/objects/fields/table_name.field.yml +0 -1
  116. package/main/default/objects/objects/listviews/all.listview.yml +4 -1
  117. package/main/default/objects/objects/listviews/customize.listview.yml +3 -1
  118. package/main/default/objects/objects/listviews/deleted.listview.yml +3 -1
  119. package/main/default/objects/objects/listviews/metadata.listview.yml +3 -1
  120. package/main/default/objects/objects/listviews/system.listview.yml +3 -1
  121. package/main/default/objects/objects/objects.object.yml +1 -1
  122. package/main/default/objects/permission_set/buttons/copy.button.yml +114 -0
  123. package/main/default/objects/permission_set/buttons/set_permission_tabs.button.yml +166 -0
  124. package/main/default/objects/{permission_set.object.yml → permission_set/permission_set.object.yml} +1 -5
  125. package/main/default/objects/queue_import.object.yml +16 -1
  126. package/main/default/objects/roles.object.yml +1 -5
  127. package/main/default/objects/sessions.object.yml +1 -1
  128. package/main/default/objects/space_users/buttons/clear_login_tokens.button.yml +4 -7
  129. package/main/default/objects/space_users/buttons/disable.button.yml +3 -7
  130. package/main/default/objects/space_users/buttons/enable.button.yml +3 -7
  131. package/main/default/objects/space_users/buttons/lockout.button.yml +3 -7
  132. package/main/default/objects/space_users/buttons/standard_edit.button.js +0 -1
  133. package/main/default/objects/space_users/buttons/unlock.button.yml +3 -7
  134. package/main/default/objects/space_users/fields/locale.field.yml +2 -1
  135. package/main/default/objects/space_users/fields/password_expired.field.yml +1 -1
  136. package/main/default/pages/about.page.amis.json +21 -4
  137. package/main/default/pages/ai_chatbots_detail.page.amis.json +393 -0
  138. package/main/default/pages/ai_chatbots_detail.page.yml +13 -0
  139. package/main/default/pages/apps_form.page.amis.json +334 -0
  140. package/main/default/pages/apps_form.page.yml +12 -0
  141. package/main/default/pages/cfs_files_record_preview.page.amis.json +4 -4
  142. package/main/default/pages/cms_files_preview.page.amis.json +25 -6
  143. package/main/default/pages/object_detail.page.amis.json +17 -11
  144. package/main/default/pages/object_fields_form.page.amis.json +1 -12
  145. package/main/default/pages/object_form.page.amis.json +1 -1
  146. package/main/default/pages/object_validation_rules_form.page.amis.json +38 -0
  147. package/main/default/pages/object_validation_rules_form.page.yml +13 -0
  148. package/main/default/pages/object_webhooks_form.page.amis.json +1 -1
  149. package/main/default/pages/organizations.page.amis.json +0 -4
  150. package/main/default/pages/space_users_list.page.amis.json +134 -19
  151. package/main/default/routes/amis_button_design.ejs +4 -1
  152. package/main/default/routes/amis_button_design.router.js +4 -3
  153. package/main/default/routes/importRecords.router.js +87 -0
  154. package/main/default/routes/notifications.router.js +113 -0
  155. package/main/default/routes/object_fields_design.ejs +23 -9
  156. package/main/default/routes/object_fields_design.router.js +5 -4
  157. package/main/default/services/app-design.service.js +2 -1
  158. package/main/default/services/notifications.service.js +190 -0
  159. package/main/default/services/spaces.service.js +1 -1
  160. package/main/default/services/users.service.js +6 -3
  161. package/main/default/tabs/admin_bull_dashboard.tab.yml +22 -0
  162. package/main/default/tabs/{admin_process_delegation_rules.tab.yml → admin_object_functions.tab.yml} +5 -8
  163. package/main/default/tabs/admin_swagger.tab.yml +22 -0
  164. package/main/default/translations/en.translation.yml +5 -4
  165. package/main/default/translations/zh-CN.translation.yml +3 -2
  166. package/main/default/triggers/objects_set_default_object_properties_trigger.trigger.yml +9 -6
  167. package/main/default/triggers/queue_import.trigger.js +16 -0
  168. package/main/default/triggers/space_users.trigger.js +3 -3
  169. package/package.json +4 -4
  170. package/package.service.js +3 -2
  171. package/public/platform.css +67 -0
  172. package/public/topic.css +17 -37
  173. package/main/default/objectTranslations/flow_positions.en/flow_positions.en.objectTranslation.yml +0 -19
  174. package/main/default/objectTranslations/flow_positions.zh-CN/flow_positions.zh-CN.objectTranslation.yml +0 -19
  175. package/main/default/objectTranslations/flow_roles.en/flow_roles.en.objectTranslation.yml +0 -11
  176. package/main/default/objectTranslations/flow_roles.zh-CN/flow_roles.zh-CN.objectTranslation.yml +0 -14
  177. package/main/default/objectTranslations/flows.en/flows.en.objectTranslation.yml +0 -317
  178. package/main/default/objectTranslations/flows.zh-CN/flows.zh-CN.objectTranslation.yml +0 -314
  179. package/main/default/objectTranslations/forms.en/forms.en.objectTranslation.yml +0 -191
  180. package/main/default/objectTranslations/forms.zh-CN/forms.zh-CN.objectTranslation.yml +0 -194
  181. package/main/default/objectTranslations/instances.en/instances.en.objectTranslation.yml +0 -155
  182. package/main/default/objectTranslations/instances.zh-CN/instances.zh-CN.objectTranslation.yml +0 -155
  183. package/main/default/objects/apps/buttons/amis_edit.button.yml +0 -39
  184. package/main/default/objects/apps/buttons/amis_new.button.yml +0 -43
  185. package/main/default/objects/flows/flows.object.yml +0 -1089
  186. package/main/default/objects/object_actions/buttons/customize.button.js +0 -33
  187. package/main/default/objects/object_actions/buttons/customize.button.yml +0 -3
  188. package/main/default/objects/object_functions/fields/is_rest.field.yml +0 -5
  189. package/main/default/objects/object_listviews/buttons/copy.button.js +0 -58
  190. package/main/default/objects/object_listviews/buttons/copy.button.yml +0 -3
  191. package/main/default/objects/object_listviews/buttons/customize.button.yml +0 -3
  192. package/main/default/objects/objects/buttons/design_field_layout.button.js +0 -28
  193. package/main/default/objects/objects/buttons/design_field_layout.button.yml +0 -5
  194. package/main/default/objects/process_definition.object.yml +0 -323
  195. 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
+ };
@@ -253,7 +253,7 @@ module.exports = {
253
253
  rootUrl = process.env.ROOT_URL
254
254
  }
255
255
  if (!rootUrl) {
256
- rootUrl = 'http://localhost:5000'
256
+ rootUrl = 'http://localhost:5100'
257
257
  }
258
258
  const server = rootUrl
259
259
  if (!server.startsWith('http')) {
@@ -1,8 +1,8 @@
1
1
  /*
2
2
  * @Author: sunhaolin@hotoa.com
3
3
  * @Date: 2022-12-02 16:53:23
4
- * @LastEditors: baozhoutao@steedos.com
5
- * @LastEditTime: 2024-02-27 15:20:23
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) : 6
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/
@@ -1,13 +1,13 @@
1
- name: admin_process_delegation_rules
1
+ name: admin_object_functions
2
2
  desktop: true
3
- icon: rtc_presence
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: 'on'
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: process_delegation_rules
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: Micro 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: 孙浩林 sunhaolin@steedos.com
5
- * @LastEditTime: 2025-02-18 16:58:48
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
- }))[0]
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.13",
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.13",
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": "156746559d0ad3804b2344a06b1bcda26a703213"
19
+ "gitHead": "be17fae35ef8081798c61d30e4633e0f0f433cef"
20
20
  }
@@ -31,7 +31,7 @@ module.exports = {
31
31
  $package: {
32
32
  path: __dirname,
33
33
  name: packageName,
34
- isPackage: true
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
- console.log(`TODO setSettings:`, ctx.params)
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
- --private: #1e3a8a;
3
- --private-bg: #1e3a8a38;
4
- --private-onHover-bg: #1e3a8a60;
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: #1e3a8a30 !important;
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: #1e3a8a30 !important;
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
  }
@@ -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
@@ -1,19 +0,0 @@
1
- name: flow_positions
2
- label: 审批岗位成员
3
- description:
4
- fields:
5
- role:
6
- label: 审批岗位
7
- help:
8
- description:
9
- users:
10
- label: 成员
11
- help:
12
- description:
13
- org:
14
- label: 管辖范围
15
- help:
16
- description:
17
- listviews:
18
- all:
19
- label: 所有