From e2f10a36e9150b1ec752caf2353192a9443d2efa Mon Sep 17 00:00:00 2001 From: baozhoutao Date: Sat, 18 Jan 2025 17:25:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=80=E4=B8=AA=E5=8F=AF=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E7=89=88=E6=9C=AC=20#7120?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 +- packages/data-import/package.json | 2 +- packages/objectql/src/types/object.ts | 6 +- services/service-api/index.js | 16 +- .../metadata-cachers.service.js | 36 +- .../package.service.js | 5 +- services/service-charts/package.service.js | 4 - services/service-community/package.service.js | 4 +- .../organizations.en.objectTranslation.yml | 64 +++ .../organizations.zh-CN.objectTranslation.yml | 64 +++ .../main/default/objects/apps.object.yml | 396 +++++++++++++ .../company/buttons/updateOrgs.button.js | 104 ++++ .../company/buttons/updateOrgs.button.yml | 3 + .../objects/company/company.object.yml | 7 + .../objects/company/fields/admins.field.yml | 7 + .../objects/company/fields/code.field.yml | 6 + .../company/fields/company_id.field.yml | 18 + .../company/fields/company_ids.field.yml | 18 + .../company/fields/currency_type.field.yml | 5 + .../company/fields/description.field.yml | 5 + .../objects/company/fields/name.field.yml | 7 + .../company/fields/organization.field.yml | 8 + .../objects/company/fields/parent.field.yml | 6 + .../objects/company/fields/sort_no.field.yml | 6 + .../company/listviews/all.listview.yml | 8 + .../company}/permissions/admin.permission.yml | 0 .../company/permissions/user.permission.yml | 9 + .../notifications/fields/body.field.yml | 4 + .../notifications/fields/created.field.yml | 3 + .../notifications/fields/from.field.yml | 8 + .../notifications/fields/is_read.field.yml | 4 + .../notifications/fields/name.field.yml | 4 + .../notifications/fields/owner.field.yml | 4 + .../fields/related_name.field.yml | 4 + .../notifications/fields/related_to.field.yml | 17 + .../notifications/fields/url.field.yml | 4 + .../notifications/listviews/all.listview.yml | 12 + .../notifications/notifications.object.yml | 4 + .../permissions/admin.permission.yml | 7 + .../permissions/customer.permission.yml | 7 + .../permissions/user.permission.yml | 7 + .../object_listviews/buttons/copy.button.js | 58 ++ .../object_listviews/buttons/copy.button.yml | 3 + .../buttons/customize.button.js | 31 + .../buttons/customize.button.yml | 3 + .../buttons/showDesign.button.js | 24 + .../buttons/showDesign.button.yml | 3 + .../object_listviews/fields/adaptor.field.yml | 8 + .../fields/amis_schema.field.yml | 9 + .../fields/columns.$.field.field.yml | 19 + .../fields/columns.$.field.yml | 5 + .../fields/columns.$.width.field.yml | 4 + .../fields/columns.$.wrap.field.yml | 4 + .../object_listviews/fields/columns.field.yml | 14 + .../fields/crud_mode.field.yml | 10 + .../fields/enable_amis_schema.field.yml | 6 + .../fields/filter_fields.field.yml | 11 + .../fields/filter_logic.field.yml | 7 + .../fields/filter_scope.field.yml | 11 + .../object_listviews/fields/filters.field.yml | 10 + .../fields/is_enable.field.yml | 5 + .../fields/is_system.field.yml | 7 + .../object_listviews/fields/label.field.yml | 6 + .../fields/mobile_columns.$.field.field.yml | 19 + .../fields/mobile_columns.$.field.yml | 5 + .../fields/mobile_columns.field.yml | 8 + .../object_listviews/fields/name.field.yml | 12 + .../fields/object_name.field.yml | 8 + .../fields/requestAdaptor.field.yml | 8 + .../fields/scrolling_mode.field.yml | 20 + .../searchable_fields.$.field.field.yml | 8 + .../fields/searchable_fields.$.field.yml | 5 + .../fields/searchable_fields.field.yml | 8 + .../object_listviews/fields/shared.field.yml | 6 + .../fields/shared_to.field.yml | 15 + .../fields/shared_to_organizations.field.yml | 11 + .../fields/show_count.field.yml | 4 + .../object_listviews/fields/sort.$.field.yml | 5 + .../fields/sort.$.field_name.field.yml | 6 + .../fields/sort.$.order.field.yml | 10 + .../object_listviews/fields/sort.field.yml | 8 + .../object_listviews/fields/sort_no.field.yml | 6 + .../object_listviews/fields/type.field.yml | 11 + .../listviews/all.listview.yml | 15 + .../listviews/customize.listview.yml | 14 + .../object_listviews.object.yml | 8 + .../permissions/admin.permission.yml | 7 + .../permissions/user.permission.yml | 7 + .../objects/objects/buttons/custom.button.js | 45 ++ .../objects/objects/buttons/custom.button.yml | 5 + .../objects/buttons/delete_object.button.js | 19 + .../objects/buttons/delete_object.button.yml | 89 +++ .../buttons/design_field_layout.button.js | 28 + .../buttons/design_field_layout.button.yml | 5 + .../buttons/design_fields_layout.button.js | 35 ++ .../buttons/design_fields_layout.button.yml | 4 + .../objects/objects/buttons/reset.button.js | 11 + .../objects/objects/buttons/reset.button.yml | 78 +++ .../objects/buttons/show_object.button.js | 59 ++ .../objects/buttons/show_object.button.yml | 4 + .../objects/buttons/standard_delete.button.js | 3 + .../buttons/standard_delete.button.yml | 4 + .../buttons/standard_delete_many.button.js | 3 + .../buttons/standard_delete_many.button.yml | 3 + .../objects/objects/fields/actions.field.yml | 8 + .../objects/fields/app_unique_id.field.yml | 6 + .../objects/fields/app_version.field.yml | 6 + .../objects/fields/compactLayouts.field.yml | 26 + .../objects/objects/fields/custom.field.yml | 7 + .../objects/fields/datasource.field.yml | 13 + .../objects/fields/description.field.yml | 7 + .../objects/fields/enable_api.field.yml | 7 + .../objects/fields/enable_chatter.field.yml | 6 + .../fields/enable_dataloader.field.yml | 8 + .../fields/enable_enhanced_lookup.field.yml | 11 + .../objects/fields/enable_events.field.yml | 6 + .../objects/fields/enable_files.field.yml | 6 + .../objects/fields/enable_form_tabs.field.yml | 7 + .../fields/enable_inline_edit.field.yml | 7 + .../objects/fields/enable_instances.field.yml | 6 + .../fields/enable_lock_detail.field.yml | 9 + .../objects/fields/enable_notes.field.yml | 6 + .../objects/fields/enable_search.field.yml | 6 + .../objects/fields/enable_share.field.yml | 7 + .../objects/fields/enable_split.field.yml | 7 + .../objects/fields/enable_tasks.field.yml | 6 + .../objects/fields/enable_tree.field.yml | 7 + .../objects/fields/enable_workflow.field.yml | 9 + .../objects/objects/fields/extend.field.yml | 6 + .../fields/field_groups.$.collapsed.field.yml | 5 + .../field_groups.$.group_name.field.yml | 5 + .../field_groups.$.visible_on.field.yml | 5 + .../objects/fields/field_groups.field.yml | 13 + .../objects/objects/fields/fields.field.yml | 8 + .../fields/fields_serial_number.field.yml | 9 + .../objects/objects/fields/icon.field.yml | 29 + .../objects/fields/in_development.field.yml | 17 + .../objects/fields/is_customize.field.yml | 7 + .../objects/fields/is_deleted.field.yml | 8 + .../objects/fields/is_enable.field.yml | 11 + .../objects/fields/is_system.field.yml | 9 + .../objects/objects/fields/label.field.yml | 9 + .../objects/fields/list_views.field.yml | 8 + .../objects/objects/fields/name.field.yml | 15 + .../objects/objects/fields/owner.field.yml | 8 + .../objects/fields/permission_set.field.yml | 8 + .../objects/fields/relatedList.field.yml | 8 + .../objects/fields/reload_time.field.yml | 9 + .../objects/objects/fields/sidebar.field.yml | 8 + .../objects/fields/table_name.field.yml | 11 + .../objects/objects/fields/triggers.field.yml | 8 + .../objects/objects/fields/version.field.yml | 9 + .../objects/listviews/all.listview.yml | 15 + .../objects/listviews/customize.listview.yml | 19 + .../objects/listviews/deleted.listview.yml | 21 + .../objects/listviews/system.listview.yml | 19 + .../objects/objects/objects.object.yml | 12 + .../objects/permissions/admin.permission.yml | 8 + .../objects/permissions/user.permission.yml | 8 + .../organizations/fields/children.field.yml | 0 .../organizations/fields/company_id.field.yml | 0 .../fields/company_ids.field.yml | 0 .../organizations/fields/fullname.field.yml | 0 .../organizations/fields/hidden.field.yml | 0 .../organizations/fields/is_company.field.yml | 0 .../organizations/fields/name.field.yml | 0 .../organizations/fields/parent.field.yml | 0 .../organizations/fields/parents.field.yml | 0 .../organizations/fields/sort_no.field.yml | 0 .../organizations/fields/users.field.yml | 0 .../organizations/listviews/all.listview.yml | 0 .../listviews/effective.listview.yml | 0 .../listviews/lookup.listview.yml | 0 .../organizations/organizations.object.yml | 0 .../permissions/admin.permission.yml | 7 + .../permissions/customer.permission.yml | 0 .../permissions/user.permission.yml | 0 .../default/objects/permission_set.object.yml | 244 ++++++++ .../objects/permission_shares.object.yml | 0 .../objects/process_definition.object.yml | 323 +++++++++++ .../default/objects/queue_import.object.yml | 231 ++++++++ .../main/default/pages/about.page.amis.json | 0 .../main/default/pages/about.page.yml | 0 .../pages/organizations.page.amis.json | 0 .../main/default/pages/organizations.page.yml | 0 .../pages/space_users_list.page.amis.json | 0 .../default/pages/space_users_list.page.yml | 0 .../default/services/app-design.service.js | 540 ++++++++++++++++++ .../default/services/organizations.service.js | 375 ++++++++++++ .../main/default/tabs/.gitkeep | 0 .../tabs/admin_action_field_updates.tab.yml | 21 + .../main/default/tabs/admin_api_keys.tab.yml | 21 + .../main/default/tabs/admin_apps.tab.yml | 21 + .../default/tabs/admin_audit_records.tab.yml | 21 + .../default/tabs/admin_autonumber.tab.yml | 21 + .../default/tabs/admin_business_hours.tab.yml | 21 + .../default/tabs/admin_categories.tab.yml | 21 + .../main/default/tabs/admin_charts.tab.yml | 21 + .../main/default/tabs/admin_company.tab.yml | 21 + .../main/default/tabs/admin_dashboard.tab.yml | 21 + .../default/tabs/admin_datasources.tab.yml | 23 + .../tabs/admin_developer_graphql.tab.yml | 21 + .../tabs/admin_developer_triggers.tab.yml | 21 + .../default/tabs/admin_flow_positions.tab.yml | 21 + .../default/tabs/admin_flow_roles.tab.yml | 21 + .../main/default/tabs/admin_flows.tab.yml | 21 + .../main/default/tabs/admin_holidays.tab.yml | 21 + .../tabs/admin_instance_number_rules.tab.yml | 23 + .../tabs/admin_instances_statistic.tab.yml | 24 + .../main/default/tabs/admin_metadata.tab.yml | 22 + .../admin_object_validation_rules.tab.yml | 21 + .../tabs/admin_object_webhooks.tab.yml | 21 + .../tabs/admin_object_workflows.tab.yml | 21 + .../main/default/tabs/admin_objects.tab.yml | 21 + .../default/tabs/admin_organizations.tab.yml | 21 + .../main/default/tabs/admin_pages.tab.yml | 21 + .../default/tabs/admin_permission_set.tab.yml | 21 + .../tabs/admin_personal_information.tab.yml | 21 + .../tabs/admin_process_definition.tab.yml | 21 + .../admin_process_delegation_rules.tab.yml | 24 + .../default/tabs/admin_queue_import.tab.yml | 21 + .../main/default/tabs/admin_roles.tab.yml | 21 + .../main/default/tabs/admin_sessions.tab.yml | 21 + .../default/tabs/admin_space_info.tab.yml | 21 + .../tabs/admin_space_user_info.tab.yml | 22 + .../tabs/admin_space_user_signs.tab.yml | 25 + .../default/tabs/admin_space_users.tab.yml | 21 + .../tabs/admin_steedos_packages.tab.yml | 21 + .../main/default/tabs/admin_tabs.tab.yml | 21 + .../main/default/tabs/admin_web_forms.tab.yml | 21 + .../main/default/tabs/admin_webhooks.tab.yml | 21 + .../tabs/admin_workflow_notifications.tab.yml | 21 + .../admin_workflow_outbound_messages.tab.yml | 21 + .../default/tabs/admin_workflow_rule.tab.yml | 21 + .../service-core-objects/package.service.js | 10 +- services/service-metadata-server/index.js | 36 +- .../src/translations.service.ts | 6 +- .../src/triggers.service.ts | 5 +- .../src/triggers2.service.ts | 13 +- services/service-objectql/package.service.js | 4 +- services/service-package-loader/index.js | 13 +- .../main/default/manager/loader.js | 11 +- .../package.service.js | 6 +- .../project.package.service.js | 6 +- services/service-packages/index.js | 10 +- .../public/tailwind/tailwind-steedos.css | 96 ++-- services/service-rest/package.service.js | 5 +- services/service-steedos-core/package.json | 75 +++ .../service-steedos-core/package.service.js | 246 ++++++++ .../main/default/routes/objects.router.js | 6 +- .../service-ui/src/routes/objects.router.ts | 13 +- .../package.service.js | 477 +--------------- .../company.en.objectTranslation.yml | 50 ++ .../company.zh-CN.objectTranslation.yml | 50 ++ .../logs.en/logs.en.objectTranslation.yml | 23 + .../logs.zh-CN.objectTranslation.yml | 23 + .../notifications.en.objectTranslation.yml | 43 ++ .../notifications.zh-CN.objectTranslation.yml | 43 ++ .../settings.en.objectTranslation.yml | 38 ++ .../settings.zh-CN.objectTranslation.yml | 39 ++ .../default/services/organizations.service.js | 10 +- services/standard-space/package.service.js | 105 +--- .../webapp-public/package.service.js | 2 - .../public/assets/icons/License-for-icons.txt | 267 +++++++++ .../public/assets/icons/README-dist.md | 18 + .../icons/action-sprite/svg/symbols-rtl.svg | 1 + .../icons/action-sprite/svg/symbols.svg | 1 + .../icons/custom-sprite/svg/symbols-rtl.svg | 1 + .../icons/custom-sprite/svg/symbols.svg | 1 + .../icons/doctype-sprite/svg/symbols-rtl.svg | 1 + .../icons/doctype-sprite/svg/symbols.svg | 1 + .../icons/standard-sprite/svg/symbols-rtl.svg | 1 + .../icons/standard-sprite/svg/symbols.svg | 1 + .../icons/utility-sprite/svg/symbols-rtl.svg | 1 + .../icons/utility-sprite/svg/symbols.svg | 1 + steedos.config.js | 4 +- 276 files changed, 6016 insertions(+), 729 deletions(-) create mode 100644 services/service-core-objects/main/default/objectTranslations/organizations.en/organizations.en.objectTranslation.yml create mode 100644 services/service-core-objects/main/default/objectTranslations/organizations.zh-CN/organizations.zh-CN.objectTranslation.yml create mode 100644 services/service-core-objects/main/default/objects/apps.object.yml create mode 100644 services/service-core-objects/main/default/objects/company/buttons/updateOrgs.button.js create mode 100644 services/service-core-objects/main/default/objects/company/buttons/updateOrgs.button.yml create mode 100644 services/service-core-objects/main/default/objects/company/company.object.yml create mode 100644 services/service-core-objects/main/default/objects/company/fields/admins.field.yml create mode 100644 services/service-core-objects/main/default/objects/company/fields/code.field.yml create mode 100644 services/service-core-objects/main/default/objects/company/fields/company_id.field.yml create mode 100644 services/service-core-objects/main/default/objects/company/fields/company_ids.field.yml create mode 100644 services/service-core-objects/main/default/objects/company/fields/currency_type.field.yml create mode 100644 services/service-core-objects/main/default/objects/company/fields/description.field.yml create mode 100644 services/service-core-objects/main/default/objects/company/fields/name.field.yml create mode 100644 services/service-core-objects/main/default/objects/company/fields/organization.field.yml create mode 100644 services/service-core-objects/main/default/objects/company/fields/parent.field.yml create mode 100644 services/service-core-objects/main/default/objects/company/fields/sort_no.field.yml create mode 100644 services/service-core-objects/main/default/objects/company/listviews/all.listview.yml rename services/{standard-space/main/default/objects/organizations => service-core-objects/main/default/objects/company}/permissions/admin.permission.yml (100%) create mode 100644 services/service-core-objects/main/default/objects/company/permissions/user.permission.yml create mode 100644 services/service-core-objects/main/default/objects/notifications/fields/body.field.yml create mode 100644 services/service-core-objects/main/default/objects/notifications/fields/created.field.yml create mode 100644 services/service-core-objects/main/default/objects/notifications/fields/from.field.yml create mode 100644 services/service-core-objects/main/default/objects/notifications/fields/is_read.field.yml create mode 100644 services/service-core-objects/main/default/objects/notifications/fields/name.field.yml create mode 100644 services/service-core-objects/main/default/objects/notifications/fields/owner.field.yml create mode 100644 services/service-core-objects/main/default/objects/notifications/fields/related_name.field.yml create mode 100644 services/service-core-objects/main/default/objects/notifications/fields/related_to.field.yml create mode 100644 services/service-core-objects/main/default/objects/notifications/fields/url.field.yml create mode 100644 services/service-core-objects/main/default/objects/notifications/listviews/all.listview.yml create mode 100644 services/service-core-objects/main/default/objects/notifications/notifications.object.yml create mode 100644 services/service-core-objects/main/default/objects/notifications/permissions/admin.permission.yml create mode 100644 services/service-core-objects/main/default/objects/notifications/permissions/customer.permission.yml create mode 100644 services/service-core-objects/main/default/objects/notifications/permissions/user.permission.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/buttons/copy.button.js create mode 100644 services/service-core-objects/main/default/objects/object_listviews/buttons/copy.button.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/buttons/customize.button.js create mode 100644 services/service-core-objects/main/default/objects/object_listviews/buttons/customize.button.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/buttons/showDesign.button.js create mode 100644 services/service-core-objects/main/default/objects/object_listviews/buttons/showDesign.button.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/adaptor.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/amis_schema.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.field.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.width.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.wrap.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/columns.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/crud_mode.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/enable_amis_schema.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/filter_fields.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/filter_logic.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/filter_scope.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/filters.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/is_enable.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/is_system.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/label.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/mobile_columns.$.field.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/mobile_columns.$.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/mobile_columns.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/name.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/object_name.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/requestAdaptor.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/scrolling_mode.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/searchable_fields.$.field.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/searchable_fields.$.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/searchable_fields.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/shared.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/shared_to.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/shared_to_organizations.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/show_count.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/sort.$.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/sort.$.field_name.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/sort.$.order.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/sort.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/sort_no.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/fields/type.field.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/listviews/all.listview.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/listviews/customize.listview.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/object_listviews.object.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/permissions/admin.permission.yml create mode 100644 services/service-core-objects/main/default/objects/object_listviews/permissions/user.permission.yml create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/custom.button.js create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/custom.button.yml create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/delete_object.button.js create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/delete_object.button.yml create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/design_field_layout.button.js create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/design_field_layout.button.yml create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/design_fields_layout.button.js create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/design_fields_layout.button.yml create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/reset.button.js create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/reset.button.yml create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/show_object.button.js create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/show_object.button.yml create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/standard_delete.button.js create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/standard_delete.button.yml create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/standard_delete_many.button.js create mode 100644 services/service-core-objects/main/default/objects/objects/buttons/standard_delete_many.button.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/actions.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/app_unique_id.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/app_version.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/compactLayouts.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/custom.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/datasource.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/description.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_api.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_chatter.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_dataloader.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_enhanced_lookup.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_events.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_files.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_form_tabs.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_inline_edit.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_instances.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_lock_detail.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_notes.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_search.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_share.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_split.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_tasks.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_tree.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/enable_workflow.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/extend.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/field_groups.$.collapsed.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/field_groups.$.group_name.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/field_groups.$.visible_on.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/field_groups.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/fields.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/fields_serial_number.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/icon.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/in_development.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/is_customize.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/is_deleted.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/is_enable.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/is_system.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/label.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/list_views.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/name.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/owner.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/permission_set.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/relatedList.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/reload_time.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/sidebar.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/table_name.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/triggers.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/fields/version.field.yml create mode 100644 services/service-core-objects/main/default/objects/objects/listviews/all.listview.yml create mode 100644 services/service-core-objects/main/default/objects/objects/listviews/customize.listview.yml create mode 100644 services/service-core-objects/main/default/objects/objects/listviews/deleted.listview.yml create mode 100644 services/service-core-objects/main/default/objects/objects/listviews/system.listview.yml create mode 100644 services/service-core-objects/main/default/objects/objects/objects.object.yml create mode 100644 services/service-core-objects/main/default/objects/objects/permissions/admin.permission.yml create mode 100644 services/service-core-objects/main/default/objects/objects/permissions/user.permission.yml rename services/{standard-space => service-core-objects}/main/default/objects/organizations/fields/children.field.yml (100%) rename services/{standard-space => service-core-objects}/main/default/objects/organizations/fields/company_id.field.yml (100%) rename services/{standard-space => service-core-objects}/main/default/objects/organizations/fields/company_ids.field.yml (100%) rename services/{standard-space => service-core-objects}/main/default/objects/organizations/fields/fullname.field.yml (100%) rename services/{standard-space => service-core-objects}/main/default/objects/organizations/fields/hidden.field.yml (100%) rename services/{standard-space => service-core-objects}/main/default/objects/organizations/fields/is_company.field.yml (100%) rename services/{standard-space => service-core-objects}/main/default/objects/organizations/fields/name.field.yml (100%) rename services/{standard-space => service-core-objects}/main/default/objects/organizations/fields/parent.field.yml (100%) rename services/{standard-space => service-core-objects}/main/default/objects/organizations/fields/parents.field.yml (100%) rename services/{standard-space => service-core-objects}/main/default/objects/organizations/fields/sort_no.field.yml (100%) rename services/{standard-space => service-core-objects}/main/default/objects/organizations/fields/users.field.yml (100%) rename services/{standard-space => service-core-objects}/main/default/objects/organizations/listviews/all.listview.yml (100%) rename services/{standard-space => service-core-objects}/main/default/objects/organizations/listviews/effective.listview.yml (100%) rename services/{standard-space => service-core-objects}/main/default/objects/organizations/listviews/lookup.listview.yml (100%) rename services/{standard-space => service-core-objects}/main/default/objects/organizations/organizations.object.yml (100%) create mode 100644 services/service-core-objects/main/default/objects/organizations/permissions/admin.permission.yml rename services/{standard-space => service-core-objects}/main/default/objects/organizations/permissions/customer.permission.yml (100%) rename services/{standard-space => service-core-objects}/main/default/objects/organizations/permissions/user.permission.yml (100%) create mode 100644 services/service-core-objects/main/default/objects/permission_set.object.yml rename services/{standard-permission => service-core-objects}/main/default/objects/permission_shares.object.yml (100%) create mode 100644 services/service-core-objects/main/default/objects/process_definition.object.yml create mode 100644 services/service-core-objects/main/default/objects/queue_import.object.yml rename services/{standard-space => service-core-objects}/main/default/pages/about.page.amis.json (100%) rename services/{standard-space => service-core-objects}/main/default/pages/about.page.yml (100%) rename services/{standard-space => service-core-objects}/main/default/pages/organizations.page.amis.json (100%) rename services/{standard-space => service-core-objects}/main/default/pages/organizations.page.yml (100%) rename services/{standard-space => service-core-objects}/main/default/pages/space_users_list.page.amis.json (100%) rename services/{standard-space => service-core-objects}/main/default/pages/space_users_list.page.yml (100%) create mode 100644 services/service-core-objects/main/default/services/app-design.service.js create mode 100644 services/service-core-objects/main/default/services/organizations.service.js create mode 100644 services/service-core-objects/main/default/tabs/.gitkeep create mode 100644 services/service-core-objects/main/default/tabs/admin_action_field_updates.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_api_keys.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_apps.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_audit_records.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_autonumber.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_business_hours.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_categories.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_charts.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_company.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_dashboard.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_datasources.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_developer_graphql.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_developer_triggers.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_flow_positions.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_flow_roles.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_flows.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_holidays.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_instance_number_rules.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_instances_statistic.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_metadata.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_object_validation_rules.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_object_webhooks.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_object_workflows.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_objects.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_organizations.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_pages.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_permission_set.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_personal_information.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_process_definition.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_process_delegation_rules.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_queue_import.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_roles.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_sessions.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_space_info.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_space_user_info.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_space_user_signs.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_space_users.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_steedos_packages.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_tabs.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_web_forms.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_webhooks.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_workflow_notifications.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_workflow_outbound_messages.tab.yml create mode 100644 services/service-core-objects/main/default/tabs/admin_workflow_rule.tab.yml create mode 100644 services/service-steedos-core/package.json create mode 100644 services/service-steedos-core/package.service.js create mode 100644 services/standard-space/main/default/objectTranslations/company.en/company.en.objectTranslation.yml create mode 100644 services/standard-space/main/default/objectTranslations/company.zh-CN/company.zh-CN.objectTranslation.yml create mode 100644 services/standard-space/main/default/objectTranslations/logs.en/logs.en.objectTranslation.yml create mode 100644 services/standard-space/main/default/objectTranslations/logs.zh-CN/logs.zh-CN.objectTranslation.yml create mode 100644 services/standard-space/main/default/objectTranslations/notifications.en/notifications.en.objectTranslation.yml create mode 100644 services/standard-space/main/default/objectTranslations/notifications.zh-CN/notifications.zh-CN.objectTranslation.yml create mode 100644 services/standard-space/main/default/objectTranslations/settings.en/settings.en.objectTranslation.yml create mode 100644 services/standard-space/main/default/objectTranslations/settings.zh-CN/settings.zh-CN.objectTranslation.yml create mode 100644 steedos-packages/webapp-public/public/assets/icons/License-for-icons.txt create mode 100644 steedos-packages/webapp-public/public/assets/icons/README-dist.md create mode 100644 steedos-packages/webapp-public/public/assets/icons/action-sprite/svg/symbols-rtl.svg create mode 100644 steedos-packages/webapp-public/public/assets/icons/action-sprite/svg/symbols.svg create mode 100644 steedos-packages/webapp-public/public/assets/icons/custom-sprite/svg/symbols-rtl.svg create mode 100644 steedos-packages/webapp-public/public/assets/icons/custom-sprite/svg/symbols.svg create mode 100644 steedos-packages/webapp-public/public/assets/icons/doctype-sprite/svg/symbols-rtl.svg create mode 100644 steedos-packages/webapp-public/public/assets/icons/doctype-sprite/svg/symbols.svg create mode 100644 steedos-packages/webapp-public/public/assets/icons/standard-sprite/svg/symbols-rtl.svg create mode 100644 steedos-packages/webapp-public/public/assets/icons/standard-sprite/svg/symbols.svg create mode 100644 steedos-packages/webapp-public/public/assets/icons/utility-sprite/svg/symbols-rtl.svg create mode 100644 steedos-packages/webapp-public/public/assets/icons/utility-sprite/svg/symbols.svg diff --git a/package.json b/package.json index add7d893c8..f4fc66d4df 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,8 @@ "docker:db": "docker-compose up mongodb mongodb-init redis nats", "i18n": "lerna run i18n", "start": "steedos start --config steedos.config.js", - "sync": "lerna exec --no-private -- cnpm sync \\$LERNA_PACKAGE_NAME" + "sync": "lerna exec --no-private -- cnpm sync \\$LERNA_PACKAGE_NAME", + "repl": "moleculer-runner --config steedos.config.js --repl" }, "resolutions": { "@salesforce/ts-types": "1.1.2", diff --git a/packages/data-import/package.json b/packages/data-import/package.json index 40aa0de9c3..0aa28d12cf 100644 --- a/packages/data-import/package.json +++ b/packages/data-import/package.json @@ -1,7 +1,7 @@ { "name": "@steedos/data-import", "version": "3.0.0-beta.2", - "main": "lib/index.js", + "main": "package.service.js", "license": "MIT", "scripts": { "build": "rm -rf ./lib && tsc" diff --git a/packages/objectql/src/types/object.ts b/packages/objectql/src/types/object.ts index 114fdad98a..0d3f400d89 100644 --- a/packages/objectql/src/types/object.ts +++ b/packages/objectql/src/types/object.ts @@ -1603,7 +1603,8 @@ export class SteedosObjectType extends SteedosObjectProperties { } async getRecordView(userSession, context: any = {}) { - let versionsMap = {} + try { + let versionsMap = {} if (global['HAS_LICENSE_SERVICE']) { versionsMap = { [PLATFORM_ENTERPRISE]: await broker.call(`${LICENSE_SERVICE}.isPlatformEnterprise`, { spaceId: userSession.spaceId }), @@ -1831,6 +1832,9 @@ export class SteedosObjectType extends SteedosObjectProperties { } return objectConfig; + } catch (error) { + console.log(error) + } } async getDefaultRecordView(userSession){ diff --git a/services/service-api/index.js b/services/service-api/index.js index ccbf238c8f..00ba1f881d 100644 --- a/services/service-api/index.js +++ b/services/service-api/index.js @@ -122,12 +122,12 @@ module.exports = { use: [ function (req, res, next) { // 如果service-object-grapqhl未结算完成,则提示服务未就绪,刷新重试 - if (!this.projectStarted) { - const message = 'service is not ready, please refresh later.'; - res.writeHead(503, { 'Content-Type': 'application/json' }); - res.end(JSON.stringify({ status: 1, msg: message, data: {}, errors: [{ message: message }] })); - return; - } + // if (!this.projectStarted) { + // const message = 'service is not ready, please refresh later.'; + // res.writeHead(503, { 'Content-Type': 'application/json' }); + // res.end(JSON.stringify({ status: 1, msg: message, data: {}, errors: [{ message: message }] })); + // return; + // } next(); } ], @@ -1045,9 +1045,8 @@ module.exports = { } }, async started() { - + console.log('started', this.name) this.broker.createService(require("@steedos/service-ui")); - // if (this.settings.server != true && this.settings.steedos_api_port){ // /* istanbul ignore next */ // await new this.Promise((resolve, reject) => { @@ -1063,7 +1062,6 @@ module.exports = { this.broker.waitForServices('~packages-@steedos/service-ui').then(() => { this.app.use("/", this.express()); }) - global.SteedosApi = { express: this.express } diff --git a/services/service-cachers-manager/metadata-cachers.service.js b/services/service-cachers-manager/metadata-cachers.service.js index 5c2ff6deec..ca94f20232 100644 --- a/services/service-cachers-manager/metadata-cachers.service.js +++ b/services/service-cachers-manager/metadata-cachers.service.js @@ -1,8 +1,8 @@ /* * @Author: baozhoutao@steedos.com * @Date: 2024-03-22 14:37:50 - * @LastEditors: 孙浩林 sunhaolin@steedos.com - * @LastEditTime: 2024-05-18 13:31:28 + * @LastEditors: baozhoutao@steedos.com + * @LastEditTime: 2025-01-17 14:21:33 * @Description: 由于 collection observe 在 steedos-server.started 事件中被触发报错需要 Fiber ,添加Fiber 后, 不报错,但是无法订阅到数据. 所以单写服务处理此问题. * */ @@ -23,13 +23,13 @@ module.exports = { /** * Dependencies */ - dependencies: ['steedos-server'], + dependencies: [], events: { '$packages.changed': function(){ - this.loadMetadataWorkflows(); - this.loadMetadataValidationRule(); - this.loadMetadataObjectFunctions(); + // this.loadMetadataWorkflows(); + // this.loadMetadataValidationRule(); + // this.loadMetadataObjectFunctions(); } }, @@ -37,12 +37,12 @@ module.exports = { actions:{ find: function(ctx){ const { metadataName, filters, spaceId } = ctx.params; - const res = this[`${_.camelCase(metadataName)}Cacher`].find(filters, spaceId); - return res; + const res = this[`${_.camelCase(metadataName)}Cacher`]?.find(filters, spaceId); + return res || []; }, get: function(ctx){ const { _id } = ctx.params; - return this[`${_.camelCase(metadataName)}Cacher`].get(_id) + return this[`${_.camelCase(metadataName)}Cacher`]?.get(_id) } }, @@ -88,23 +88,23 @@ module.exports = { }, async started() { - this.actionFieldUpdatesCacher = new ActionFieldUpdateCacher() + // this.actionFieldUpdatesCacher = new ActionFieldUpdateCacher() - this.workflowOutboundMessagesCacher = new WorkflowOutboundMessageCacher(); + // this.workflowOutboundMessagesCacher = new WorkflowOutboundMessageCacher(); - this.workflowNotificationsCacher = new WorkflowNotificationCacher(); + // this.workflowNotificationsCacher = new WorkflowNotificationCacher(); - this.workflowRuleCacher = new WorkflowRuleCacher(); + // this.workflowRuleCacher = new WorkflowRuleCacher(); - this.objectValidationRulesCacher = new ObjectValidationRulesCacher() + // this.objectValidationRulesCacher = new ObjectValidationRulesCacher() - this.settingsCacher = new SettingsCacher(); + // this.settingsCacher = new SettingsCacher(); - this.objectWebhooksCacher = new ObjectWebhookCacher(); + // this.objectWebhooksCacher = new ObjectWebhookCacher(); - this.objectFunctionsCacher = new ObjectFunctionsCacher(); + // this.objectFunctionsCacher = new ObjectFunctionsCacher(); - await this.loadMetadataWorkflows() + // await this.loadMetadataWorkflows() }, async stopped(){ diff --git a/services/service-cachers-manager/package.service.js b/services/service-cachers-manager/package.service.js index d9a05c8e2f..782a311d22 100644 --- a/services/service-cachers-manager/package.service.js +++ b/services/service-cachers-manager/package.service.js @@ -2,7 +2,7 @@ * @Author: baozhoutao@steedos.com * @Date: 2022-03-28 09:35:35 * @LastEditors: baozhoutao@steedos.com - * @LastEditTime: 2024-03-22 14:40:23 + * @LastEditTime: 2025-01-17 14:20:54 * @Description: 维护内存缓存 */ "use strict"; @@ -13,6 +13,7 @@ const cachers = require('@steedos/cachers'); const auth = require('@steedos/auth'); const { getObject } = require('@steedos/objectql'); const register = require('@steedos/metadata-registrar'); +const _ = require('underscore'); /** * @typedef {import('moleculer').Context} Context Moleculer's Context * 软件包服务启动后也需要抛出事件。 @@ -31,7 +32,7 @@ module.exports = { /** * Dependencies */ - dependencies: [], + dependencies: ['metadata'], methods: { // 加载mo action规则的triggers loadActionTriggers: async function (broker) { diff --git a/services/service-charts/package.service.js b/services/service-charts/package.service.js index 7cff4f7dde..8685415380 100644 --- a/services/service-charts/package.service.js +++ b/services/service-charts/package.service.js @@ -334,12 +334,8 @@ module.exports = { let publicPath = require.resolve("@steedos/service-charts/package.json"); publicPath = publicPath.replace("package.json", 'webapp'); let routerPath = ""; - if (__meteor_runtime_config__.ROOT_URL_PATH_PREFIX) { - routerPath = __meteor_runtime_config__.ROOT_URL_PATH_PREFIX; - } const cacheTime = 86400000 * 1; // one day router.use(`${routerPath}/builder`, express.static(publicPath, { maxAge: cacheTime })); - // WebApp.rawConnectHandlers.use(router); } catch (error) { console.error(error) this.settings.initBuilderRouter = false; diff --git a/services/service-community/package.service.js b/services/service-community/package.service.js index b3bd8fdb51..f0fb4642e1 100644 --- a/services/service-community/package.service.js +++ b/services/service-community/package.service.js @@ -1,8 +1,8 @@ /* * @Author: yinlianghui@steedos.com * @Date: 2022-07-20 21:31:37 - * @LastEditors: sunhaolin@hotoa.com - * @LastEditTime: 2023-06-12 17:31:40 + * @LastEditors: baozhoutao@steedos.com + * @LastEditTime: 2025-01-15 17:43:55 * @Description: */ "use strict"; diff --git a/services/service-core-objects/main/default/objectTranslations/organizations.en/organizations.en.objectTranslation.yml b/services/service-core-objects/main/default/objectTranslations/organizations.en/organizations.en.objectTranslation.yml new file mode 100644 index 0000000000..4893c9a231 --- /dev/null +++ b/services/service-core-objects/main/default/objectTranslations/organizations.en/organizations.en.objectTranslation.yml @@ -0,0 +1,64 @@ +name: organizations +label: Organizational Structures +description: +fields: + name: + label: Name + help: + description: + fullname: + label: Full Name + help: + description: + parent: + label: Superior Organization + help: + description: + parents: + label: All Superior Organization + help: + description: + children: + label: Subordinate Organization + help: + description: + sort_no: + label: Sort Number + help: + description: + users: + label: Organization Users + help: + description: + company_id: + label: Main Division + help: + description: + company_ids: + label: All Divisions + help: + description: + is_company: + label: is Division + help: + description: + hidden: + label: Hidden + help: + description: +groups: + systemfields: systemfields +listviews: + all: + label: All Organizations + lookup: + label: Lookup Organization + effective: + label: Effective Organizations +actions: + standard_query: + label: Search + addSubOrganization: + label: Add a Branch +CustomLabels: + organizations_group_系统: System diff --git a/services/service-core-objects/main/default/objectTranslations/organizations.zh-CN/organizations.zh-CN.objectTranslation.yml b/services/service-core-objects/main/default/objectTranslations/organizations.zh-CN/organizations.zh-CN.objectTranslation.yml new file mode 100644 index 0000000000..e4309e0f8e --- /dev/null +++ b/services/service-core-objects/main/default/objectTranslations/organizations.zh-CN/organizations.zh-CN.objectTranslation.yml @@ -0,0 +1,64 @@ +name: organizations +label: 组织机构 +description: +fields: + name: + label: 名称 + help: + description: + fullname: + label: 组织全称 + help: + description: + parent: + label: 上级组织 + help: + description: + parents: + label: 上级组织 + help: + description: + children: + label: 下级组织 + help: + description: + sort_no: + label: 排序号 + help: + description: + users: + label: 成员 + help: + description: + company_id: + label: 所属分部 + help: + description: + company_ids: + label: 所属分部 + help: + description: + is_company: + label: 分部级 + help: + description: + hidden: + label: 隐藏 + help: + description: +groups: + systemfields: systemfields +listviews: + all: + label: 所有 + lookup: + label: 相关 + effective: + label: 有效组织 +actions: + standard_query: + label: 查找 + addSubOrganization: + label: 添加子组织 +CustomLabels: + organizations_group_系统: 系统 diff --git a/services/service-core-objects/main/default/objects/apps.object.yml b/services/service-core-objects/main/default/objects/apps.object.yml new file mode 100644 index 0000000000..de05135058 --- /dev/null +++ b/services/service-core-objects/main/default/objects/apps.object.yml @@ -0,0 +1,396 @@ +name: apps +label: App +icon: apps +hidden: true +version: 2 +enable_dataloader: false +fields: + name: + label: Name + type: text + defaultValue: '' + description: '' + inlineHelpText: '' + required: true + searchable: true + filterable: true + index: true + code: + label: API Name + type: text + required: true + searchable: true + filterable: true + icon_slds: + label: SLDS Icon + type: lookup + required: true + optionsFunction: !!js/function | + function () { + var options; + options = []; + + _.forEach(Creator.resources.sldsIcons.standard, function (svg) { + return options.push({ + value: svg, + label: svg, + icon: svg + }); + }); + + return options; + } + filterable: true + sort: + label: Sort Number + type: number + defaultValue: 9100 + sortable: true + description: + label: Description + type: textarea + is_wide: true + searchable: true + filterable: true + tabs: + label: Tabs + type: lookup + multiple: true + group: Business object + is_wide: true + reference_to: tabs + reference_to_field: name + hidden: true + tab_groups: + type: grid + blackbox: true + is_wide: true + # hidden: true + visible_on: "{{false}}" + tab_groups.$.group_name: + type: text + tab_groups.$.default_open: + type: boolean + tab_items: + label: Tabs + type: object + blackbox: true + is_wide: true + required: false + group: Tabs + visible_on: "{{global.mode ==='read' ? false : true}}" + # tab_items.$: + # label: Tabs + # blackbox: true + # type: object + # tab_items.$.tab_name: + # label: Tab Name + # type: lookup + # multiple: false + # is_wide: false + # required: true + # reference_to: tabs + # reference_to_field: name + # tab_items.$.group: + # label: Group + # type: text + + # filterable: true + is_creator: + type: boolean + label: Show this app for Desktop + # defaultValue: true + mobile: + type: boolean + label: Show this app for Mobile + # defaultValue: true + icon: + label: Icon + type: text + hidden: true + visible: + label: Visible + type: boolean + # defaultValue: true + + showSidebar: + label: 显示左侧导航 + type: boolean + defaultValue: false + + nav_schema: + label: 自定义导航 + type: code + language: json + visible_on: "{{false}}" + # members: + # type: object + # label: Members + # is_wide: true + # members.users: + # type: lookup + # label: User Members + # reference_to: users + # multiple: true + # filterable: true + # members.organizations: + # type: lookup + # label: Department Members + # reference_to: organizations + # multiple: true + # filterable: true + + url: + label: URL + type: url + group: External Application + is_use_ie: + type: boolean + label: Open in IE (Using Steedos Desktop) + defaultValue: false + group: External Application + filterable: true + is_use_iframe: + type: boolean + label: Open with iframe + defaultValue: false + group: External Application + visible_on: "{{false}}" + filterable: true + is_new_window: + type: boolean + label: Open in New Window + defaultValue: false + group: External Application + filterable: true + on_click: + type: textarea + label: onClick + rows: 2 + is_wide: true + group: External Application + + auth_name: + label: Auth Name + type: text + group: External Application + secret: + label: API Secret Key + type: text + max: 16 + min: 16 + group: External Application + objects: + label: Desktop Menu(Invalid) + type: lookup + multiple: true + group: other + optionsFunction: !!js/function | + function () { + return Steedos.getObjectsOptions() + } + # filterable: true + mobile_objects: + label: Mobile Menus(Invalid) + type: lookup + multiple: true + group: other + optionsFunction: !!js/function | + function () { + return Steedos.getObjectsOptions() + } + visible_on: + name: visible_on + is_wide: true + label: Visible On + inlineHelpText: Visible On + type: textarea + group: other + enable_nav_schema: + label: 启用自定义导航 + type: boolean + required: false + group: other + + oauth2_enabled: + group: OAuth2 + label: OAuth2 Enabled + type: boolean + hidden: true + oauth2_callback_url: + group: OAuth2 + label: Callback URL + type: text + required: "{{formData.oauth2_enabled}}" + hidden: true + oauth2_scopes: + group: OAuth2 + label: Scopes + type: select + hidden: true + multiple: true + required: "{{formData.oauth2_enabled}}" + options: + - label: Access to Your Unique Identifier (openid) + value: openid + - label: Access Basic Information (id, email, address, phone, locale) + value: profile + - label: Access Fully (full) + value: full + oauth2_logout_enabled: + group: OAuth2 + label: OAuth2 Logout Enabled + type: boolean + hidden: true + oauth2_logout_url: + group: OAuth2 + label: OAuth2 Logout URL + type: url + hidden: true + oauth2_home_url: + group: OAuth2 + label: Homepage URL + type: url + required: "{{formData.oauth2_enabled}}" + hidden: true + oauth2_logo: + group: OAuth2 + label: OAuth2 Logo + type: image + required: "{{formData.oauth2_enabled}}" + hidden: true + oauth2_client_secret: + group: OAuth2 + label: OAuth2 Client secret + type: text + omit: true + hidden: true + saml_enabled: + hidden: true + group: SAML + label: SAML Enabled + type: boolean + saml_entity_id: + hidden: true + group: SAML + label: Entity Id + type: text + saml_issuer: + hidden: true + group: SAML + label: Issuer + type: text + saml_idp_cert: + hidden: true + group: SAML + label: IDP Cert + type: text + saml_acs_url: + hidden: true + group: SAML + label: ACS URL + type: url + saml_name_id_format: + hidden: true + group: SAML + label: Name + type: text + saml_logout_enabled: + hidden: true + group: SAML + label: SAML Logout Enabled + type: boolean + saml_logout_url: + hidden: true + group: SAML + label: SAML Logout URL + type: url + saml_logout_block: + hidden: true + group: SAML + label: SAML Logout Block + type: select + options: + - label: HTTP Redirect + value: redirect + - label: HTTP Post + value: post + is_system: + type: boolean + label: System + # omit: true + readonly: true + visible_on: "{{global.mode ==='read' ? true : false}}" + disabled: true + from_code_id: + type: text + visible_on: "{{false}}" + disabled: true +paging: + enabled: false +actions: + customize: + label: Customize + on: record_only + reset: + label: Reset + on: record_only + createOAuth2App: + label: 创建 OAuth 应用 + on: list + sort: 180 + standard_edit: + visible: false + standard_new: + visible: false +list_views: + all: + label: All Apps + filter_scope: space + columns: + - name + - code + - description + - visible + - sort + - is_system +permission_set: + user: + allowCreate: false + allowDelete: false + allowEdit: false + allowRead: true + modifyAllRecords: false + viewAllRecords: true + admin: + allowCreate: true + allowDelete: true + allowEdit: true + allowRead: true + modifyAllRecords: true + viewAllRecords: true +# triggers: +# before.insert.server.apps: +# 'on': server +# when: before.insert +# todo: !!js/function | +# function (userId, doc) { +# return doc.icon = doc.icon_slds; +# } +# after.update.server.apps: +# 'on': server +# when: after.update +# todo: !!js/function | +# function (userId, doc, fieldNames, modifier, options) { +# var ref; + +# if (modifier != null ? (ref = modifier.$set) != null ? ref.icon_slds : void 0 : void 0) { +# return Creator.getCollection("apps").direct.update({ +# _id: doc._id +# }, { +# $set: { +# icon: modifier.$set.icon_slds +# } +# }); +# } +# } diff --git a/services/service-core-objects/main/default/objects/company/buttons/updateOrgs.button.js b/services/service-core-objects/main/default/objects/company/buttons/updateOrgs.button.js new file mode 100644 index 0000000000..42fda344a0 --- /dev/null +++ b/services/service-core-objects/main/default/objects/company/buttons/updateOrgs.button.js @@ -0,0 +1,104 @@ +/* + * @Author: sunhaolin@hotoa.com + * @Date: 2022-12-12 11:29:54 + * @LastEditors: baozhoutao@steedos.com + * @LastEditTime: 2023-03-05 10:36:36 + * @Description: + */ +module.exports = { + updateOrgs: function (object_name, record_id) { + const record = this.record ? this.record.record : this.record; + if (!record.organization) { + toastr.warning(t("company_warning_no_associated_organization_set")); + return; + } + + var doUpdate = function () { + window.$("body").addClass("loading"); + var userSession = Creator.USER_CONTEXT; + var spaceId = userSession.spaceId; + var authToken = userSession.authToken ? userSession.authToken : userSession.user.authToken; + var url = "/service/api/company/updateOrgs"; + url = Steedos.absoluteUrl(url); + try { + var authorization = "Bearer " + spaceId + "," + authToken; + var fetchParams = { + companyId: record_id + }; + var headers = [{ + name: 'Content-Type', + value: 'application/json' + }, { + name: 'Authorization', + value: authorization + }]; + window.$.ajax({ + type: "POST", + url: url, + data: JSON.stringify(fetchParams), + dataType: "json", + contentType: 'application/json', + beforeSend: function (XHR) { + if (headers && headers.length) { + return headers.forEach(function (header) { + return XHR.setRequestHeader(header.name, header.value); + }); + } + }, + success: function (data) { + console.log(data); + window.$("body").removeClass("loading"); + var logInfo = t("company_success_updata_message",{updatedOrgs:data.updatedOrgs,updatedSus:data.updatedSus}); + console.log(logInfo); + toastr.success(logInfo); + /* 更新组织后刷新分部列表,直接显示新的关联组织、排序号等列表信息 */ + window.$(".slds-page-header--object-home .btn-refresh").trigger("click"); + }, + error: function (XMLHttpRequest, textStatus, errorThrown) { + window.$("body").removeClass("loading"); + console.error(XMLHttpRequest.responseJSON); + if (XMLHttpRequest.responseJSON && XMLHttpRequest.responseJSON.error) { + toastr.error(XMLHttpRequest.responseJSON.error.message) + } + else { + toastr.error(XMLHttpRequest.responseJSON) + } + } + }); + } catch (err) { + console.error(err); + toastr.error(err); + window.$("body").removeClass("loading"); + } + } + + var text = t("company_confirm_text"); + swal({ + title: t("company_confirm_title",record.name), + text: "
" + text + "?
", + html: true, + showCancelButton: true, + confirmButtonText: t('YES'), + cancelButtonText: t('NO') + }, function (option) { + if (option) { + doUpdate(); + } + }); + }, + + updateOrgsVisible: function (object_name, record_id, record_permissions) { + var perms, record; + perms = {}; + if (record_permissions) { + perms = record_permissions; + } else { + record = Creator.getObjectRecord(object_name, record_id); + record_permissions = Creator.getRecordPermissions(object_name, record, Meteor.userId()); + if (record_permissions) { + perms = record_permissions; + } + } + return perms["allowEdit"]; + }, + } \ No newline at end of file diff --git a/services/service-core-objects/main/default/objects/company/buttons/updateOrgs.button.yml b/services/service-core-objects/main/default/objects/company/buttons/updateOrgs.button.yml new file mode 100644 index 0000000000..d9378864b2 --- /dev/null +++ b/services/service-core-objects/main/default/objects/company/buttons/updateOrgs.button.yml @@ -0,0 +1,3 @@ +name: updateOrgs +label: Update The Whole Company +'on': record diff --git a/services/service-core-objects/main/default/objects/company/company.object.yml b/services/service-core-objects/main/default/objects/company/company.object.yml new file mode 100644 index 0000000000..c75a284e5e --- /dev/null +++ b/services/service-core-objects/main/default/objects/company/company.object.yml @@ -0,0 +1,7 @@ +name: company +label: Division +icon: account +enable_api: true +hidden: false +enable_enhanced_lookup: true +version: 2 diff --git a/services/service-core-objects/main/default/objects/company/fields/admins.field.yml b/services/service-core-objects/main/default/objects/company/fields/admins.field.yml new file mode 100644 index 0000000000..1b47e18fea --- /dev/null +++ b/services/service-core-objects/main/default/objects/company/fields/admins.field.yml @@ -0,0 +1,7 @@ +name: admins +label: Admin Users +type: lookup +reference_to: users +multiple: true +filterable: false +sort_no: 150 diff --git a/services/service-core-objects/main/default/objects/company/fields/code.field.yml b/services/service-core-objects/main/default/objects/company/fields/code.field.yml new file mode 100644 index 0000000000..f2642a101f --- /dev/null +++ b/services/service-core-objects/main/default/objects/company/fields/code.field.yml @@ -0,0 +1,6 @@ +name: code +label: Code +type: text +sort_no: 110 +filterable: true +searchable: true diff --git a/services/service-core-objects/main/default/objects/company/fields/company_id.field.yml b/services/service-core-objects/main/default/objects/company/fields/company_id.field.yml new file mode 100644 index 0000000000..2c59b339d7 --- /dev/null +++ b/services/service-core-objects/main/default/objects/company/fields/company_id.field.yml @@ -0,0 +1,18 @@ +name: company_id +defaultValue: ! |- + function anonymous( + ) { + + /* 主分部 company_id / 所属分部 company_ids 业务逻辑 #170 忽略base.object.yml中的defaultValue、optionsFunction脚本 */ + + } +optionsFunction: ! |- + function anonymous( + ) { + + /* 主分部 company_id / 所属分部 company_ids 业务逻辑 #170 忽略base.object.yml中的defaultValue、optionsFunction脚本 */ + + } +omit: true +hidden: true +sort_no: 180 diff --git a/services/service-core-objects/main/default/objects/company/fields/company_ids.field.yml b/services/service-core-objects/main/default/objects/company/fields/company_ids.field.yml new file mode 100644 index 0000000000..eaa0af1540 --- /dev/null +++ b/services/service-core-objects/main/default/objects/company/fields/company_ids.field.yml @@ -0,0 +1,18 @@ +name: company_ids +defaultValue: ! |- + function anonymous( + ) { + + /* 主分部 company_id / 所属分部 company_ids 业务逻辑 #170 忽略base.object.yml中的defaultValue、optionsFunction脚本 */ + + } +optionsFunction: ! |- + function anonymous( + ) { + + /* 主分部 company_id / 所属分部 company_ids 业务逻辑 #170 忽略base.object.yml中的defaultValue、optionsFunction脚本 */ + + } +omit: true +hidden: true +sort_no: 190 diff --git a/services/service-core-objects/main/default/objects/company/fields/currency_type.field.yml b/services/service-core-objects/main/default/objects/company/fields/currency_type.field.yml new file mode 100644 index 0000000000..29293bc838 --- /dev/null +++ b/services/service-core-objects/main/default/objects/company/fields/currency_type.field.yml @@ -0,0 +1,5 @@ +name: currency_type +label: Currency Type +type: text +sort_no: 140 +hidden: true diff --git a/services/service-core-objects/main/default/objects/company/fields/description.field.yml b/services/service-core-objects/main/default/objects/company/fields/description.field.yml new file mode 100644 index 0000000000..95328d8405 --- /dev/null +++ b/services/service-core-objects/main/default/objects/company/fields/description.field.yml @@ -0,0 +1,5 @@ +name: description +label: Description +type: textarea +is_wide: true +sort_no: 160 diff --git a/services/service-core-objects/main/default/objects/company/fields/name.field.yml b/services/service-core-objects/main/default/objects/company/fields/name.field.yml new file mode 100644 index 0000000000..b0fe8d13cf --- /dev/null +++ b/services/service-core-objects/main/default/objects/company/fields/name.field.yml @@ -0,0 +1,7 @@ +name: name +label: Name +type: text +required: true +sort_no: 100 +filterable: true +searchable: true \ No newline at end of file diff --git a/services/service-core-objects/main/default/objects/company/fields/organization.field.yml b/services/service-core-objects/main/default/objects/company/fields/organization.field.yml new file mode 100644 index 0000000000..cc91ce7ae2 --- /dev/null +++ b/services/service-core-objects/main/default/objects/company/fields/organization.field.yml @@ -0,0 +1,8 @@ +name: organization +label: Corresponding Department +type: lookup +required: true +reference_to: organizations +omit: false +sort_no: 130 +filterable: true diff --git a/services/service-core-objects/main/default/objects/company/fields/parent.field.yml b/services/service-core-objects/main/default/objects/company/fields/parent.field.yml new file mode 100644 index 0000000000..e2fa3c03b2 --- /dev/null +++ b/services/service-core-objects/main/default/objects/company/fields/parent.field.yml @@ -0,0 +1,6 @@ +name: parent +label: Parent +type: lookup +reference_to: company +hidden: true +sort_no: 120 diff --git a/services/service-core-objects/main/default/objects/company/fields/sort_no.field.yml b/services/service-core-objects/main/default/objects/company/fields/sort_no.field.yml new file mode 100644 index 0000000000..ed92b9c78a --- /dev/null +++ b/services/service-core-objects/main/default/objects/company/fields/sort_no.field.yml @@ -0,0 +1,6 @@ +name: sort_no +label: Sort Number +type: number +defaultValue: 100 +sortable: true +sort_no: 155 diff --git a/services/service-core-objects/main/default/objects/company/listviews/all.listview.yml b/services/service-core-objects/main/default/objects/company/listviews/all.listview.yml new file mode 100644 index 0000000000..daaa7d0f96 --- /dev/null +++ b/services/service-core-objects/main/default/objects/company/listviews/all.listview.yml @@ -0,0 +1,8 @@ +name: all +label: All Divisions +columns: + - name + - code + - organization + - modified +filter_scope: space diff --git a/services/standard-space/main/default/objects/organizations/permissions/admin.permission.yml b/services/service-core-objects/main/default/objects/company/permissions/admin.permission.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/permissions/admin.permission.yml rename to services/service-core-objects/main/default/objects/company/permissions/admin.permission.yml diff --git a/services/service-core-objects/main/default/objects/company/permissions/user.permission.yml b/services/service-core-objects/main/default/objects/company/permissions/user.permission.yml new file mode 100644 index 0000000000..c3acf9e550 --- /dev/null +++ b/services/service-core-objects/main/default/objects/company/permissions/user.permission.yml @@ -0,0 +1,9 @@ +permission_set_id: user +allowCreate: false +allowDelete: false +allowEdit: false +allowRead: true +modifyAllRecords: false +viewAllRecords: true +modifyCompanyRecords: false +viewCompanyRecords: true diff --git a/services/service-core-objects/main/default/objects/notifications/fields/body.field.yml b/services/service-core-objects/main/default/objects/notifications/fields/body.field.yml new file mode 100644 index 0000000000..47d221c2aa --- /dev/null +++ b/services/service-core-objects/main/default/objects/notifications/fields/body.field.yml @@ -0,0 +1,4 @@ +name: body +label: Body +type: textarea +sort_no: 110 diff --git a/services/service-core-objects/main/default/objects/notifications/fields/created.field.yml b/services/service-core-objects/main/default/objects/notifications/fields/created.field.yml new file mode 100644 index 0000000000..7c51749235 --- /dev/null +++ b/services/service-core-objects/main/default/objects/notifications/fields/created.field.yml @@ -0,0 +1,3 @@ +name: created +label: Notification Time +sort_no: 180 diff --git a/services/service-core-objects/main/default/objects/notifications/fields/from.field.yml b/services/service-core-objects/main/default/objects/notifications/fields/from.field.yml new file mode 100644 index 0000000000..72c3c178c1 --- /dev/null +++ b/services/service-core-objects/main/default/objects/notifications/fields/from.field.yml @@ -0,0 +1,8 @@ +name: from +label: From +type: lookup +reference_to: users +sortable: true +index: true +omit: true +sort_no: 150 diff --git a/services/service-core-objects/main/default/objects/notifications/fields/is_read.field.yml b/services/service-core-objects/main/default/objects/notifications/fields/is_read.field.yml new file mode 100644 index 0000000000..efd96d771d --- /dev/null +++ b/services/service-core-objects/main/default/objects/notifications/fields/is_read.field.yml @@ -0,0 +1,4 @@ +name: is_read +label: Readed +type: boolean +sort_no: 170 diff --git a/services/service-core-objects/main/default/objects/notifications/fields/name.field.yml b/services/service-core-objects/main/default/objects/notifications/fields/name.field.yml new file mode 100644 index 0000000000..a17eb1a1a8 --- /dev/null +++ b/services/service-core-objects/main/default/objects/notifications/fields/name.field.yml @@ -0,0 +1,4 @@ +name: name +label: Title +type: text +sort_no: 100 diff --git a/services/service-core-objects/main/default/objects/notifications/fields/owner.field.yml b/services/service-core-objects/main/default/objects/notifications/fields/owner.field.yml new file mode 100644 index 0000000000..c1bcd769db --- /dev/null +++ b/services/service-core-objects/main/default/objects/notifications/fields/owner.field.yml @@ -0,0 +1,4 @@ +name: owner +label: Owner +hidden: false +sort_no: 160 diff --git a/services/service-core-objects/main/default/objects/notifications/fields/related_name.field.yml b/services/service-core-objects/main/default/objects/notifications/fields/related_name.field.yml new file mode 100644 index 0000000000..fe3c6ae819 --- /dev/null +++ b/services/service-core-objects/main/default/objects/notifications/fields/related_name.field.yml @@ -0,0 +1,4 @@ +name: related_name +label: Name of Related Object Record +type: text +sort_no: 130 diff --git a/services/service-core-objects/main/default/objects/notifications/fields/related_to.field.yml b/services/service-core-objects/main/default/objects/notifications/fields/related_to.field.yml new file mode 100644 index 0000000000..864f6769db --- /dev/null +++ b/services/service-core-objects/main/default/objects/notifications/fields/related_to.field.yml @@ -0,0 +1,17 @@ +name: related_to +label: Related Object Record +type: lookup +index: true +reference_to: ! |- + function anonymous( + ) { + + var o = []; + _.each(Creator.Objects, function (object, object_name) { + return o.push(object.name); + }); + return o; + + } +filterable: true +sort_no: 120 diff --git a/services/service-core-objects/main/default/objects/notifications/fields/url.field.yml b/services/service-core-objects/main/default/objects/notifications/fields/url.field.yml new file mode 100644 index 0000000000..9bc02a5b24 --- /dev/null +++ b/services/service-core-objects/main/default/objects/notifications/fields/url.field.yml @@ -0,0 +1,4 @@ +name: url +label: URL +type: url +sort_no: 140 diff --git a/services/service-core-objects/main/default/objects/notifications/listviews/all.listview.yml b/services/service-core-objects/main/default/objects/notifications/listviews/all.listview.yml new file mode 100644 index 0000000000..d695e0305c --- /dev/null +++ b/services/service-core-objects/main/default/objects/notifications/listviews/all.listview.yml @@ -0,0 +1,12 @@ +name: all +label: All Notifications +filter_scope: space +columns: + - name + - body + - related_to + - related_name + - url + - owner + - is_read + - created diff --git a/services/service-core-objects/main/default/objects/notifications/notifications.object.yml b/services/service-core-objects/main/default/objects/notifications/notifications.object.yml new file mode 100644 index 0000000000..4223e343f8 --- /dev/null +++ b/services/service-core-objects/main/default/objects/notifications/notifications.object.yml @@ -0,0 +1,4 @@ +name: notifications +label: Notification +icon: quick_text +hidden: false diff --git a/services/service-core-objects/main/default/objects/notifications/permissions/admin.permission.yml b/services/service-core-objects/main/default/objects/notifications/permissions/admin.permission.yml new file mode 100644 index 0000000000..0da71bafcb --- /dev/null +++ b/services/service-core-objects/main/default/objects/notifications/permissions/admin.permission.yml @@ -0,0 +1,7 @@ +permission_set_id: admin +allowCreate: true +allowDelete: true +allowEdit: true +allowRead: true +modifyAllRecords: true +viewAllRecords: true diff --git a/services/service-core-objects/main/default/objects/notifications/permissions/customer.permission.yml b/services/service-core-objects/main/default/objects/notifications/permissions/customer.permission.yml new file mode 100644 index 0000000000..45b4a4ba6c --- /dev/null +++ b/services/service-core-objects/main/default/objects/notifications/permissions/customer.permission.yml @@ -0,0 +1,7 @@ +permission_set_id: customer +allowCreate: false +allowDelete: false +allowEdit: false +allowRead: true +modifyAllRecords: false +viewAllRecords: false diff --git a/services/service-core-objects/main/default/objects/notifications/permissions/user.permission.yml b/services/service-core-objects/main/default/objects/notifications/permissions/user.permission.yml new file mode 100644 index 0000000000..81a7775fcd --- /dev/null +++ b/services/service-core-objects/main/default/objects/notifications/permissions/user.permission.yml @@ -0,0 +1,7 @@ +permission_set_id: user +allowCreate: true +allowDelete: true +allowEdit: true +allowRead: true +modifyAllRecords: false +viewAllRecords: false diff --git a/services/service-core-objects/main/default/objects/object_listviews/buttons/copy.button.js b/services/service-core-objects/main/default/objects/object_listviews/buttons/copy.button.js new file mode 100644 index 0000000000..1032c0b4c5 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/buttons/copy.button.js @@ -0,0 +1,58 @@ +module.exports = { +copy:function(object_name, record_id){ + let newRecord = null; // _.clone(Creator.getListView(Session.get("object_name"), record_id)); + if(!newRecord){ + let doc = Creator.odata.get(object_name, record_id); + if(!doc.columns || !doc.columns.length){ + const objectName_label = record_id.split('.'); + let columns = Creator.getListView(objectName_label[0], objectName_label[1], true).columns; + doc.columns = columns || []; + } + doc.columns = doc.columns.map((item)=>{ + if(typeof item === 'string'){ + return { field: item } + } + return item; + }) + newRecord = _.pick(doc, Creator.getObjectFieldsName(object_name)); + } + delete newRecord.is_system; + delete newRecord._id; + delete newRecord.name; + delete newRecord.from_code_id; + delete newRecord.label; + delete newRecord.owner; + + var data = newRecord || { _filters_type_controller: 'conditions' }; + //数据格式转换 + if (data) { + data.sort = lodash.map(data.sort, (item) => { + return `${item.field_name}:${item.order || 'asc'}` + }); + + data.searchable_fields = lodash.map(data.searchable_fields, 'field'); + + if (data.filters && lodash.isString(data.filters)) { + try { + data.filters = JSON.parse(data.filters); + }catch(e){} + } + + if (data.filters && lodash.isString(data.filters)) { + data._filters_type_controller = 'function'; + } else { + data._filters_type_controller = 'conditions' + } + + if (data._filters_type_controller === 'conditions') { + data._filters_conditions = window.amisConvert.filtersToConditions(data.filters || []); + } else { + data._filters_function = data.filters; + } + } + Steedos.Page.Form.StandardNew.render(Session.get("app_id"), 'object_listviews', t("creator_list_copy_list_view"), { defaultData:data }, {}); + }, +copyVisible:function(object_name, record_id, record_permissions, data){ + return true; + } + } \ No newline at end of file diff --git a/services/service-core-objects/main/default/objects/object_listviews/buttons/copy.button.yml b/services/service-core-objects/main/default/objects/object_listviews/buttons/copy.button.yml new file mode 100644 index 0000000000..9fb9267d2e --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/buttons/copy.button.yml @@ -0,0 +1,3 @@ +name: copy +label: 复制 +'on': record_only diff --git a/services/service-core-objects/main/default/objects/object_listviews/buttons/customize.button.js b/services/service-core-objects/main/default/objects/object_listviews/buttons/customize.button.js new file mode 100644 index 0000000000..436c1e7159 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/buttons/customize.button.js @@ -0,0 +1,31 @@ +module.exports = { +customize:function (object_name, record_id, fields) { + let doc = Creator.odata.get(object_name, record_id); + if(!doc.columns || !doc.columns.length){ + const objectName_label = record_id.split('.'); + let columns = Creator.getListView(objectName_label[0], objectName_label[1], true).columns; + doc.columns = columns || []; + } + doc.columns = doc.columns.map((item)=>{ + if(typeof item === 'string'){ + return { field: item } + } + return item; + }) + var newRecord = _.pick(doc, Creator.getObjectFieldsName(object_name)); + delete newRecord.is_system; + delete newRecord._id; + delete newRecord.record_permissions; + newRecord.from_code_id = record_id; + Creator.odata.insert(object_name, newRecord, function(result, error){ + if(result){ + FlowRouter.go(`/app/-/${object_name}/view/${result._id}`) + } + }); + + }, +customizeVisible:function(object_name, record_id, record_permissions, data){ + var record = data && data.record; + return Creator.baseObject.actions.standard_new.visible(object_name) && record.is_system; + } + } \ No newline at end of file diff --git a/services/service-core-objects/main/default/objects/object_listviews/buttons/customize.button.yml b/services/service-core-objects/main/default/objects/object_listviews/buttons/customize.button.yml new file mode 100644 index 0000000000..8316b194d8 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/buttons/customize.button.yml @@ -0,0 +1,3 @@ +name: customize +label: Customize +'on': record_only diff --git a/services/service-core-objects/main/default/objects/object_listviews/buttons/showDesign.button.js b/services/service-core-objects/main/default/objects/object_listviews/buttons/showDesign.button.js new file mode 100644 index 0000000000..711832724d --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/buttons/showDesign.button.js @@ -0,0 +1,24 @@ +module.exports = { +showDesign:function (object_name, record_id) { + document.location = Steedos.absoluteUrl(`/api/amisListviewDesign?id=${record_id}&object=${this.record.object_name}&assetUrls=${Builder.settings.assetUrls}&locale=${Builder.settings.locale}`); + }, +showDesignVisible:function (object_name, record_id, record_permissions) { + var perms= {}; + var record = Creator.getObjectRecord(object_name, record_id); + if(!record){ + return false; + } + if(!record.enable_amis_schema){ + return false; + } + if (record_permissions) { + perms = record_permissions; + } else { + record_permissions = Creator.getRecordPermissions(object_name, record, Meteor.userId()); + if (record_permissions) { + perms = record_permissions; + } + } + return perms["allowEdit"]; + } + } \ No newline at end of file diff --git a/services/service-core-objects/main/default/objects/object_listviews/buttons/showDesign.button.yml b/services/service-core-objects/main/default/objects/object_listviews/buttons/showDesign.button.yml new file mode 100644 index 0000000000..c153abe003 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/buttons/showDesign.button.yml @@ -0,0 +1,3 @@ +name: showDesign +label: 设计器 +'on': record_only diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/adaptor.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/adaptor.field.yml new file mode 100644 index 0000000000..b08f3d7ad7 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/adaptor.field.yml @@ -0,0 +1,8 @@ +name: adaptor +label: Adaptor +type: code +language: javascript +is_wide: true +inlineHelpText: '函数签名: (payload, response, api) => payload' +group: data_interface +sort_no: 450 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/amis_schema.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/amis_schema.field.yml new file mode 100644 index 0000000000..0602594314 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/amis_schema.field.yml @@ -0,0 +1,9 @@ +name: amis_schema +label: Amis Schema +type: code +group: advanced +language: json +required: false +is_wide: true +visible_on: '{{false}}' +sort_no: 430 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.field.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.field.field.yml new file mode 100644 index 0000000000..30b120f37f --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.field.field.yml @@ -0,0 +1,19 @@ +name: columns.$.field +label: Field +type: lookup +multiple: false +is_wide: false +required: true +depend_on: + - object_name +reference_to: object_fields +reference_to_field: name +enable_enhanced_lookup: false +filtersFunction: ! |- + function anonymous(filters,values + ) { + + return ['object', '=', values.object_name] + + } +sort_no: 250 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.field.yml new file mode 100644 index 0000000000..54993009b9 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.field.yml @@ -0,0 +1,5 @@ +name: columns.$ +label: Column +blackbox: true +type: object +sort_no: 240 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.width.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.width.field.yml new file mode 100644 index 0000000000..14fcec2aee --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.width.field.yml @@ -0,0 +1,4 @@ +name: columns.$.width +label: Width +type: text +sort_no: 260 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.wrap.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.wrap.field.yml new file mode 100644 index 0000000000..4bd771c857 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/columns.$.wrap.field.yml @@ -0,0 +1,4 @@ +name: columns.$.wrap +label: Wrap +type: boolean +sort_no: 270 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/columns.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/columns.field.yml new file mode 100644 index 0000000000..ca6d3d43c6 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/columns.field.yml @@ -0,0 +1,14 @@ +name: columns +label: Columns +type: table +is_wide: true +required: true +group: show_columns +amis: + columns: + - field + - name: width + width: 100 + - name: wrap + width: 100 +sort_no: 230 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/crud_mode.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/crud_mode.field.yml new file mode 100644 index 0000000000..7d7c00ef28 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/crud_mode.field.yml @@ -0,0 +1,10 @@ +name: crud_mode +label: 显示模式 +type: select +options: + - label: 表格 + value: table + - label: 卡片 + value: cards +defaultValue: table +sort_no: 220 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/enable_amis_schema.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/enable_amis_schema.field.yml new file mode 100644 index 0000000000..7bcbe3be94 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/enable_amis_schema.field.yml @@ -0,0 +1,6 @@ +name: enable_amis_schema +label: Enable amis_schema +type: boolean +group: advanced +required: false +sort_no: 420 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/filter_fields.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/filter_fields.field.yml new file mode 100644 index 0000000000..c658ebf807 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/filter_fields.field.yml @@ -0,0 +1,11 @@ +name: filter_fields +label: Default Filter Fields +type: lookup +multiple: true +is_wide: true +hidden: true +depend_on: + - object_name +reference_to: object_fields +reference_to_field: name +sort_no: 280 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/filter_logic.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/filter_logic.field.yml new file mode 100644 index 0000000000..0a16f54c36 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/filter_logic.field.yml @@ -0,0 +1,7 @@ +name: filter_logic +label: Logic +type: text +readonly: true +hidden: true +visible_on: '{{global.mode ===''read'' ? true : false}}' +sort_no: 340 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/filter_scope.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/filter_scope.field.yml new file mode 100644 index 0000000000..d3db11acd8 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/filter_scope.field.yml @@ -0,0 +1,11 @@ +name: filter_scope +label: Filter Scope +type: select +defaultValue: space +required: true +options: + - label: 我的 + value: mine + - label: 工作区 + value: space +sort_no: 130 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/filters.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/filters.field.yml new file mode 100644 index 0000000000..5d5f4912fb --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/filters.field.yml @@ -0,0 +1,10 @@ +name: filters +label: Filters +type: code +is_wide: true +hidden: false +readonly: false +depend_on: + - object_name +group: filters +sort_no: 330 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/is_enable.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/is_enable.field.yml new file mode 100644 index 0000000000..4cbc4048b4 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/is_enable.field.yml @@ -0,0 +1,5 @@ +name: is_enable +type: toggle +label: Enable +defaultValue: true +sort_no: 210 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/is_system.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/is_system.field.yml new file mode 100644 index 0000000000..d921b670a9 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/is_system.field.yml @@ -0,0 +1,7 @@ +name: is_system +type: boolean +label: System +readonly: true +visible_on: '{{global.mode ===''read'' ? true : false}}' +disabled: true +sort_no: 410 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/label.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/label.field.yml new file mode 100644 index 0000000000..6b9a935c5c --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/label.field.yml @@ -0,0 +1,6 @@ +name: label +label: Label +type: text +is_name: true +required: true +sort_no: 100 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/mobile_columns.$.field.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/mobile_columns.$.field.field.yml new file mode 100644 index 0000000000..6235e6349d --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/mobile_columns.$.field.field.yml @@ -0,0 +1,19 @@ +name: mobile_columns.$.field +label: Field +type: lookup +multiple: false +is_wide: false +required: true +depend_on: + - object_name +reference_to: object_fields +reference_to_field: name +enable_enhanced_lookup: false +filtersFunction: ! |- + function anonymous(filters,values + ) { + + return ['object', '=', values.object_name] + + } +sort_no: 370 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/mobile_columns.$.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/mobile_columns.$.field.yml new file mode 100644 index 0000000000..4b67914870 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/mobile_columns.$.field.yml @@ -0,0 +1,5 @@ +name: mobile_columns.$ +label: Column +blackbox: true +type: object +sort_no: 360 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/mobile_columns.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/mobile_columns.field.yml new file mode 100644 index 0000000000..9eed4602fd --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/mobile_columns.field.yml @@ -0,0 +1,8 @@ +name: mobile_columns +label: Mobile Columns +type: table +is_wide: true +depend_on: + - object_name +group: show_columns +sort_no: 350 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/name.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/name.field.yml new file mode 100644 index 0000000000..d669c65b54 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/name.field.yml @@ -0,0 +1,12 @@ +name: name +label: API Name +type: text +searchable: true +index: true +inlineHelpText: >- + Can only contain lowercase letters and numbers, must start with a letter, + cannot end with an underscore character or contain two consecutive underscore + characters +amis: + requiredOn: '${!!recordId}' +sort_no: 110 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/object_name.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/object_name.field.yml new file mode 100644 index 0000000000..f89c609083 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/object_name.field.yml @@ -0,0 +1,8 @@ +name: object_name +label: Object +type: master_detail +write_requires_master_read: true +required: true +reference_to: objects +reference_to_field: name +sort_no: 120 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/requestAdaptor.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/requestAdaptor.field.yml new file mode 100644 index 0000000000..a593211e88 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/requestAdaptor.field.yml @@ -0,0 +1,8 @@ +name: requestAdaptor +label: Request Adaptor +type: code +language: javascript +is_wide: true +inlineHelpText: 函数签名:(api) => api, 数据在 api.data 中,修改后返回 api 对象。 +group: data_interface +sort_no: 440 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/scrolling_mode.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/scrolling_mode.field.yml new file mode 100644 index 0000000000..cecf73f99c --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/scrolling_mode.field.yml @@ -0,0 +1,20 @@ +name: scrolling_mode +label: Scrolling Mode +inlineHelpText: Define the scroll bar display style for the data list. +type: select +options: + - label: >- + Standard ( Click the page number to load the data of the corresponding + page. ) + value: standard + - label: >- + Virtual ( Switch the page through the scroll bar. When you scroll to the + corresponding page, the data will be loaded remotely. ) + value: virtual + - label: >- + Infinite ( Initially, only the first page will be loaded, and the next + page will be loaded while scrolling. ) + value: infinite +defaultValue: '"standard"' +hidden: true +sort_no: 190 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/searchable_fields.$.field.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/searchable_fields.$.field.field.yml new file mode 100644 index 0000000000..1e65035abf --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/searchable_fields.$.field.field.yml @@ -0,0 +1,8 @@ +name: searchable_fields.$.field +label: Field +type: lookup +multiple: false +is_wide: false +reference_to: object_fields +reference_to_field: name +sort_no: 400 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/searchable_fields.$.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/searchable_fields.$.field.yml new file mode 100644 index 0000000000..517216058c --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/searchable_fields.$.field.yml @@ -0,0 +1,5 @@ +name: searchable_fields.$ +label: Column +blackbox: true +type: object +sort_no: 390 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/searchable_fields.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/searchable_fields.field.yml new file mode 100644 index 0000000000..347661c248 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/searchable_fields.field.yml @@ -0,0 +1,8 @@ +name: searchable_fields +label: Searchable Fields +type: grid +is_wide: true +depend_on: + - object_name +group: search_term +sort_no: 380 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/shared.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/shared.field.yml new file mode 100644 index 0000000000..2e570638a9 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/shared.field.yml @@ -0,0 +1,6 @@ +name: shared +label: Shared to All Users +type: boolean +visible_on: '{{false}}' +group: share_rules +sort_no: 140 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/shared_to.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/shared_to.field.yml new file mode 100644 index 0000000000..8d680dbc70 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/shared_to.field.yml @@ -0,0 +1,15 @@ +name: shared_to +label: Who can see this list view? +type: select +defaultValue: mine +required: true +options: + - label: Only I can view this list view. + value: mine + - label: This list view is available to all users. + value: space + - label: Share the list view with some organizations. + value: organizations +visible_on: '${global.user.is_space_admin}' +group: share_rules +sort_no: 150 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/shared_to_organizations.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/shared_to_organizations.field.yml new file mode 100644 index 0000000000..f94adeafd9 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/shared_to_organizations.field.yml @@ -0,0 +1,11 @@ +name: shared_to_organizations +label: Shared to which organizations? +type: lookup +reference_to: organizations +multiple: true +is_wide: true +depend_on: + - shared_to +visible_on: '${global.user.is_space_admin && shared_to ===''organizations''}' +group: share_rules +sort_no: 160 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/show_count.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/show_count.field.yml new file mode 100644 index 0000000000..b2907eae6c --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/show_count.field.yml @@ -0,0 +1,4 @@ +name: show_count +label: Show Record Count +type: boolean +sort_no: 170 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/sort.$.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/sort.$.field.yml new file mode 100644 index 0000000000..d8464979d5 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/sort.$.field.yml @@ -0,0 +1,5 @@ +name: sort.$ +label: Order +blackbox: true +type: object +sort_no: 300 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/sort.$.field_name.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/sort.$.field_name.field.yml new file mode 100644 index 0000000000..ae71ff62f7 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/sort.$.field_name.field.yml @@ -0,0 +1,6 @@ +name: sort.$.field_name +label: Field Name +type: lookup +reference_to: object_fields +reference_to_field: name +sort_no: 310 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/sort.$.order.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/sort.$.order.field.yml new file mode 100644 index 0000000000..d1358b5fca --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/sort.$.order.field.yml @@ -0,0 +1,10 @@ +name: sort.$.order +label: Sort Order +type: select +defaultValue: asc +options: + - label: ASC + value: asc + - label: DESC + value: desc +sort_no: 320 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/sort.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/sort.field.yml new file mode 100644 index 0000000000..8b8924da87 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/sort.field.yml @@ -0,0 +1,8 @@ +name: sort +label: Default Sort Order +type: grid +is_wide: true +depend_on: + - object_name +group: sort +sort_no: 290 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/sort_no.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/sort_no.field.yml new file mode 100644 index 0000000000..f6be3cef74 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/sort_no.field.yml @@ -0,0 +1,6 @@ +name: sort_no +label: Sort no +type: number +scale: 0 +defaultValue: 100 +sort_no: 200 diff --git a/services/service-core-objects/main/default/objects/object_listviews/fields/type.field.yml b/services/service-core-objects/main/default/objects/object_listviews/fields/type.field.yml new file mode 100644 index 0000000000..67082feb3e --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/fields/type.field.yml @@ -0,0 +1,11 @@ +name: type +label: Type +type: select +options: + - label: Grid + value: grid + - label: Calendar + value: calendar +defaultValue: '"grid"' +hidden: true +sort_no: 180 diff --git a/services/service-core-objects/main/default/objects/object_listviews/listviews/all.listview.yml b/services/service-core-objects/main/default/objects/object_listviews/listviews/all.listview.yml new file mode 100644 index 0000000000..b6749f7943 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/listviews/all.listview.yml @@ -0,0 +1,15 @@ +name: all +columns: + - label + - name + - shared_to + - owner + - sort_no + - modified + - is_enable + - is_system +label: All List Views +filter_scope: space +sort: + - field_name: sort_no + order: asc diff --git a/services/service-core-objects/main/default/objects/object_listviews/listviews/customize.listview.yml b/services/service-core-objects/main/default/objects/object_listviews/listviews/customize.listview.yml new file mode 100644 index 0000000000..c03c2343a3 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/listviews/customize.listview.yml @@ -0,0 +1,14 @@ +name: customize +columns: + - label + - name + - shared_to + - owner + - modified + - is_system +label: 自定义 +filters: + - - is_system + - <> + - true +filter_scope: space diff --git a/services/service-core-objects/main/default/objects/object_listviews/object_listviews.object.yml b/services/service-core-objects/main/default/objects/object_listviews/object_listviews.object.yml new file mode 100644 index 0000000000..c9c19c0a39 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/object_listviews.object.yml @@ -0,0 +1,8 @@ +name: object_listviews +label: List View +icon: forecasts +version: 2 +enable_dataloader: false +hidden: true +paging: + enabled: false diff --git a/services/service-core-objects/main/default/objects/object_listviews/permissions/admin.permission.yml b/services/service-core-objects/main/default/objects/object_listviews/permissions/admin.permission.yml new file mode 100644 index 0000000000..fbfa67916c --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/permissions/admin.permission.yml @@ -0,0 +1,7 @@ +permission_set_id: admin +allowCreate: true +allowDelete: true +allowEdit: true +allowRead: false +modifyAllRecords: true +viewAllRecords: true diff --git a/services/service-core-objects/main/default/objects/object_listviews/permissions/user.permission.yml b/services/service-core-objects/main/default/objects/object_listviews/permissions/user.permission.yml new file mode 100644 index 0000000000..fd30d22b56 --- /dev/null +++ b/services/service-core-objects/main/default/objects/object_listviews/permissions/user.permission.yml @@ -0,0 +1,7 @@ +permission_set_id: user +allowCreate: true +allowDelete: true +allowEdit: true +allowRead: false +modifyAllRecords: false +viewAllRecords: false diff --git a/services/service-core-objects/main/default/objects/objects/buttons/custom.button.js b/services/service-core-objects/main/default/objects/objects/buttons/custom.button.js new file mode 100644 index 0000000000..1b2bf73a8e --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/custom.button.js @@ -0,0 +1,45 @@ +module.exports = { + + custom: function(object_name, record_id) { + $(document.body).addClass('loading'); + let url = `/graphql`; + const obj = Creator.odata.get("objects", record_id); + delete obj.record_permissions; + delete obj["@odata.context"] + delete obj["@odata.editLink"] + delete obj["@odata.etag"] + delete obj["@odata.id"] + delete obj.idFieldName; + let options = { + type: 'post', + async: true, + data: JSON.stringify({ + query: `mutation{objects__upsert(id: "${obj.name}", doc: ${JSON.stringify(JSON.stringify(obj))}){_id,name}}` + }), + success: function(data) { + SteedosUI.notification.success({ + message: '对象已自定义。' + }); + // SteedosUI.router.go({}, "/app/" + Session.get("app_id") + "/" + object_name + "/view/" + data.data.objects__upsert._id); + FlowRouter.reload() + $(document.body).removeClass('loading'); + }, + error: function(XMLHttpRequest, textStatus, errorThrown) { + SteedosUI.notification.error({ + message: '操作失败', + description: t(XMLHttpRequest.responseJSON.error), + }); + $(document.body).removeClass('loading'); + } + }; + Steedos.authRequest(url, options); + }, + customVisible: function(object_name, record_id, permission, data) { + if (Meteor.settings.public.enable_saas) { + return false; + } + var record = data && data.record; + return record && record.is_system && !record.created; + } + +} \ No newline at end of file diff --git a/services/service-core-objects/main/default/objects/objects/buttons/custom.button.yml b/services/service-core-objects/main/default/objects/objects/buttons/custom.button.yml new file mode 100644 index 0000000000..6512a65d89 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/custom.button.yml @@ -0,0 +1,5 @@ +name: custom +is_enable: true +label: 自定义 +'on': record_only +sort: 200 diff --git a/services/service-core-objects/main/default/objects/objects/buttons/delete_object.button.js b/services/service-core-objects/main/default/objects/objects/buttons/delete_object.button.js new file mode 100644 index 0000000000..3920e21d11 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/delete_object.button.js @@ -0,0 +1,19 @@ +module.exports = { + + delete_objectVisible: function(object_name, record_id, record_permissions, data) { + var record = data && data.record; + if (!Creator.isSpaceAdmin()) { + return false + } + if (!record) { + record = Creator.odata.get("objects", record_id, "is_deleted"); + } + if (record.is_system) { + return false; + } + if (record && !record.is_deleted) { + return Creator.baseObject.actions.standard_delete.visible.apply(this, arguments); + } + } + +} \ No newline at end of file diff --git a/services/service-core-objects/main/default/objects/objects/buttons/delete_object.button.yml b/services/service-core-objects/main/default/objects/objects/buttons/delete_object.button.yml new file mode 100644 index 0000000000..4b51897db0 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/delete_object.button.yml @@ -0,0 +1,89 @@ +name: delete_object +amis_schema: |- + { + "type": "service", + "body": [ + { + "type": "button", + "label": "删除", + "id": "u:delete_object", + "onEvent": { + "click": { + "actions": [ + { + "actionType": "dialog", + "dialog": { + "type": "dialog", + "title": "删除对象: ${record.label}", + "body": [ + { + "type": "tpl", + "tpl": "
\n
删除一个自定义对象进行以下操作:
\n
    \n
  • 删除对象的字段和按钮
  • \n
  • 删除对象的选项卡和列表视图删除对象的页面布局
  • \n
  • 删除对象的权限
  • \n
  • 删除对象的验证规则
  • \n
  • 删除对象的限制规则
  • \n
  • 删除对象的共享规则
  • \n
  • 删除使用该对象的流程映射
  • \n
  • 删除使用该对象的开放流程
  • \n
  • 删除使用该对象的页面
  • \n
\n
", + "inline": true, + "id": "u:6d0819fc0bda" + } + ], + "id": "u:b5c0f98dc113", + "closeOnEsc": false, + "closeOnOutside": false, + "showCloseButton": true, + "data": { + "&": "$$", + "recordId": "${recordId}" + }, + "onEvent": { + "confirm": { + "weight": 0, + "actions": [ + { + "componentId": "", + "args": { + "api": { + "url": "${context.rootUrl}/graphql", + "method": "post", + "data": { + "&": "$$", + "recordId": "${recordId}" + }, + "requestAdaptor": "const recordId = api.data.recordId; \napi.data = {\n query: `\n mutation{\n objects__delete(id: \"${recordId}\")\n }\n `\n}", + "headers": { + "Authorization": "Bearer ${context.tenantId},${context.authToken}" + } + }, + "messages": {} + }, + "actionType": "ajax" + }, + { + "actionType": "broadcast", + "args": { + "eventName": "@data.changed.objects" + }, + "data": { + "objectName": "objects", + "__deletedRecord": true + } + } + ] + } + } + } + } + ], + "weight": 0 + } + } + } + ], + "regions": [ + "body" + ], + "data": { + }, + "bodyClassName": "p-0", + "id": "u:46d1821365fc" + } +is_enable: true +label: 删除 +'on': record_only_more +type: amis_button diff --git a/services/service-core-objects/main/default/objects/objects/buttons/design_field_layout.button.js b/services/service-core-objects/main/default/objects/objects/buttons/design_field_layout.button.js new file mode 100644 index 0000000000..35c4f5adee --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/design_field_layout.button.js @@ -0,0 +1,28 @@ +module.exports = { + + design_field_layout: function(object_name, record_id, item_element) { + var record = this.record || Creator.getObjectById(record_id); + if (record && record.record) { + record = record.record; + } + if (!record) { + return toastr.error("未找到记录"); + } + + window.open(Creator.getRelativeUrl("/api/page/view/design_field_layout?designObjectName=" + record.name)); + }, + design_field_layoutVisible: function(object_name, record_id, record_permissions, data) { + var record = data && data.record; + if (!Creator.isSpaceAdmin()) { + return false + } + if (!record) { + record = Creator.odata.get("objects", record_id, "is_deleted"); + } + + if (record && !record.is_deleted && record.name != 'users' && record.created) { + return true; + } + } + +} \ No newline at end of file diff --git a/services/service-core-objects/main/default/objects/objects/buttons/design_field_layout.button.yml b/services/service-core-objects/main/default/objects/objects/buttons/design_field_layout.button.yml new file mode 100644 index 0000000000..0eaf6dfe24 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/design_field_layout.button.yml @@ -0,0 +1,5 @@ +name: design_field_layout +is_enable: true +label: 设计字段布局 +'on': record_more +sort: 80 \ No newline at end of file diff --git a/services/service-core-objects/main/default/objects/objects/buttons/design_fields_layout.button.js b/services/service-core-objects/main/default/objects/objects/buttons/design_fields_layout.button.js new file mode 100644 index 0000000000..d14de55807 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/design_fields_layout.button.js @@ -0,0 +1,35 @@ +/* + * @Author: baozhoutao@steedos.com + * @Date: 2024-08-29 09:36:15 + * @LastEditors: baozhoutao@steedos.com + * @LastEditTime: 2024-09-05 16:26:51 + * @Description: + */ +module.exports = { + + design_fields_layout: function(object_name, record_id, item_element) { + var record = this.record || Creator.getObjectById(record_id); + if (record && record.record) { + record = record.record; + } + if (!record) { + return toastr.error("未找到记录"); + } + + window.open(Creator.getRelativeUrl("/api/amisObjectFieldsDesign?oid=" + record_id+`&assetUrls=${Builder.settings.assetUrls}`)); + }, + design_fields_layoutVisible: function(object_name, record_id, record_permissions, data) { + var record = data && data.record; + if (!Creator.isSpaceAdmin()) { + return false + } + if (!record) { + record = Creator.odata.get("objects", record_id, "is_deleted"); + } + + if (record && !record.is_deleted && record.name != 'users' && record.created) { + return true; + } + } + +} \ No newline at end of file diff --git a/services/service-core-objects/main/default/objects/objects/buttons/design_fields_layout.button.yml b/services/service-core-objects/main/default/objects/objects/buttons/design_fields_layout.button.yml new file mode 100644 index 0000000000..ccbf2385a9 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/design_fields_layout.button.yml @@ -0,0 +1,4 @@ +name: design_fields_layout +is_enable: true +label: 设计对象 +'on': record_only \ No newline at end of file diff --git a/services/service-core-objects/main/default/objects/objects/buttons/reset.button.js b/services/service-core-objects/main/default/objects/objects/buttons/reset.button.js new file mode 100644 index 0000000000..433eee59de --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/reset.button.js @@ -0,0 +1,11 @@ +module.exports = { + + resetVisible: function(object_name, record_id, permission, data) { + if (Meteor.settings.public.enable_saas) { + return false; + } + var record = data && data.record; + return record && record.is_system && record.is_customize && record.created; + } + +} \ No newline at end of file diff --git a/services/service-core-objects/main/default/objects/objects/buttons/reset.button.yml b/services/service-core-objects/main/default/objects/objects/buttons/reset.button.yml new file mode 100644 index 0000000000..e3998967f3 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/reset.button.yml @@ -0,0 +1,78 @@ +name: reset +amis_schema: |- + { + "type": "service", + "body": [ + { + "type": "button", + "label": "重置", + "id": "u:delete_object", + "onEvent": { + "click": { + "actions": [ + { + "actionType": "dialog", + "dialog": { + "type": "dialog", + "title": "重置对象: ${record.label}", + "body": [ + { + "type": "tpl", + "tpl": "
\n
重置一个自定义对象进行以下操作:
\n
    \n
  • 删除自定义的对象
  • \n
  • 删除自定义对象的字段
  • \n
\n
", + "inline": true, + "id": "u:6d0819fc0bda" + } + ], + "id": "u:b5c0f98dc113", + "closeOnEsc": false, + "closeOnOutside": false, + "showCloseButton": true, + "data": { + "&": "$$", + "recordId": "${recordId}" + }, + "onEvent": { + "confirm": { + "weight": 0, + "actions": [ + { + "componentId": "", + "args": { + "api": { + "url": "/service/api/~database-objects/reset", + "method": "post", + "data": { + "objectName": "${record.name}" + } + }, + "messages": {} + }, + "actionType": "ajax" + }, + { + "actionType": "custom", + "script": "window.location.reload();" + } + ] + } + } + } + } + ], + "weight": 0 + } + } + } + ], + "regions": [ + "body" + ], + "data": { + }, + "bodyClassName": "p-0", + "id": "u:46d1821365fc" + } +is_enable: true +label: 重置 +'on': record_only_more +type: amis_button diff --git a/services/service-core-objects/main/default/objects/objects/buttons/show_object.button.js b/services/service-core-objects/main/default/objects/objects/buttons/show_object.button.js new file mode 100644 index 0000000000..bb9a1e8640 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/show_object.button.js @@ -0,0 +1,59 @@ +module.exports = { + + show_object: function(object_name, record_id, item_element) { + var record = this.record || Creator.getObjectById(record_id); + if (record && record.record) { + record = record.record; + } + if (!record) { + return toastr.error("未找到记录"); + } + + if (record.is_enable === false) { + return toastr.warning("请先启动对象"); + } + + if (record.datasource && record.datasource != 'default' && record.datasource != 'meteor') { + var datasource = Creator.odata.get('datasources', record.datasource, 'is_enable'); + if (!datasource) { + return toastr.error("未找到数据源"); + } + if (!datasource.is_enable) { + return toastr.warning("请先启动数据源"); + } + } + window.open(Creator.getRelativeUrl("/app/admin/" + (record.name || this.record.name))); + // SteedosUI.Object.getUISchema(record.name).then((res)=>{ + // if(res.idFieldName){ + // window.open(Creator.getRelativeUrl("/app/-/" + record.name)); + // }else{ + // return toastr.error("请配置主键字段"); + // } + // }).catch(function(err){ + // return window.toastr.error(err.message); + // }) + + + + // var allViews = Creator.odata.query('object_listviews', { $select: '_id', $filter: `((object_name eq '${record.name}') and (name eq 'all'))` }, true); + // if(allViews && allViews.length > 0){ + // Steedos.openWindow(Creator.getRelativeUrl("/app/-/" + record.name + "/grid/" + allViews[0]._id)) + // }else{ + // Steedos.openWindow(Creator.getRelativeUrl("/app/-/" + record.name + "/grid/all")) + // } + }, + show_objectVisible: function(object_name, record_id, record_permissions, data) { + var record = data && data.record; + if (!Creator.isSpaceAdmin()) { + return false + } + if (!record) { + record = Creator.odata.get("objects", record_id, "is_deleted"); + } + + if (record && !record.is_deleted && record.name != 'users') { + return true; + } + } + +} \ No newline at end of file diff --git a/services/service-core-objects/main/default/objects/objects/buttons/show_object.button.yml b/services/service-core-objects/main/default/objects/objects/buttons/show_object.button.yml new file mode 100644 index 0000000000..195ba20e14 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/show_object.button.yml @@ -0,0 +1,4 @@ +name: show_object +is_enable: true +label: Preview +'on': record diff --git a/services/service-core-objects/main/default/objects/objects/buttons/standard_delete.button.js b/services/service-core-objects/main/default/objects/objects/buttons/standard_delete.button.js new file mode 100644 index 0000000000..c3b447f828 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/standard_delete.button.js @@ -0,0 +1,3 @@ +module.exports = { + + } \ No newline at end of file diff --git a/services/service-core-objects/main/default/objects/objects/buttons/standard_delete.button.yml b/services/service-core-objects/main/default/objects/objects/buttons/standard_delete.button.yml new file mode 100644 index 0000000000..f7a4d6970f --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/standard_delete.button.yml @@ -0,0 +1,4 @@ +name: standard_delete +is_enable: true +label: Delete +visible: false diff --git a/services/service-core-objects/main/default/objects/objects/buttons/standard_delete_many.button.js b/services/service-core-objects/main/default/objects/objects/buttons/standard_delete_many.button.js new file mode 100644 index 0000000000..c3b447f828 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/standard_delete_many.button.js @@ -0,0 +1,3 @@ +module.exports = { + + } \ No newline at end of file diff --git a/services/service-core-objects/main/default/objects/objects/buttons/standard_delete_many.button.yml b/services/service-core-objects/main/default/objects/objects/buttons/standard_delete_many.button.yml new file mode 100644 index 0000000000..92c38cb5a2 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/buttons/standard_delete_many.button.yml @@ -0,0 +1,3 @@ +name: standard_delete_many +is_enable: true +visible: false diff --git a/services/service-core-objects/main/default/objects/objects/fields/actions.field.yml b/services/service-core-objects/main/default/objects/objects/fields/actions.field.yml new file mode 100644 index 0000000000..e45bc60035 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/actions.field.yml @@ -0,0 +1,8 @@ +name: actions +blackbox: true +hidden: true +label: Actions +omit: true +sort_no: 360 +type: object +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/app_unique_id.field.yml b/services/service-core-objects/main/default/objects/objects/fields/app_unique_id.field.yml new file mode 100644 index 0000000000..a6d53bc99b --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/app_unique_id.field.yml @@ -0,0 +1,6 @@ +name: app_unique_id +hidden: true +label: App Unique ID +sort_no: 420 +type: text +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/app_version.field.yml b/services/service-core-objects/main/default/objects/objects/fields/app_version.field.yml new file mode 100644 index 0000000000..e4dc6550f6 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/app_version.field.yml @@ -0,0 +1,6 @@ +name: app_version +hidden: true +label: App Version +sort_no: 430 +type: text +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/compactLayouts.field.yml b/services/service-core-objects/main/default/objects/objects/fields/compactLayouts.field.yml new file mode 100644 index 0000000000..825d3ca403 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/compactLayouts.field.yml @@ -0,0 +1,26 @@ +name: compactLayouts +depend_on: + - name +filters: [] +filtersFunction: ! |- + function(filters,values + ) { + + + + + return ['object', '=', values.name] + + + + + } +group: switch +hidden: false +is_wide: true +label: 高亮字段 +multiple: true +reference_to: object_fields +reference_to_field: name +sort_no: 120 +type: lookup diff --git a/services/service-core-objects/main/default/objects/objects/fields/custom.field.yml b/services/service-core-objects/main/default/objects/objects/fields/custom.field.yml new file mode 100644 index 0000000000..33e78836da --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/custom.field.yml @@ -0,0 +1,7 @@ +name: custom +hidden: true +label: Custom +omit: true +sort_no: 400 +type: boolean +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/datasource.field.yml b/services/service-core-objects/main/default/objects/objects/fields/datasource.field.yml new file mode 100644 index 0000000000..fb9d9784b6 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/datasource.field.yml @@ -0,0 +1,13 @@ +name: datasource +amis: + disabledOn: '${is_system == true}' +defaultValue: default +filters: [] +group: advanced +hidden: false +label: Datasource +reference_to: datasources +required: false +showIcon: false +sort_no: 180 +type: master_detail diff --git a/services/service-core-objects/main/default/objects/objects/fields/description.field.yml b/services/service-core-objects/main/default/objects/objects/fields/description.field.yml new file mode 100644 index 0000000000..28c62b0997 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/description.field.yml @@ -0,0 +1,7 @@ +name: description +hidden: false +is_wide: true +label: Description +sort_no: 50 +type: textarea +filterable: true diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_api.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_api.field.yml new file mode 100644 index 0000000000..c038a416aa --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_api.field.yml @@ -0,0 +1,7 @@ +name: enable_api +defaultValue: true +hidden: true +label: Enable API +sort_no: 270 +type: boolean +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_chatter.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_chatter.field.yml new file mode 100644 index 0000000000..778258508a --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_chatter.field.yml @@ -0,0 +1,6 @@ +name: enable_chatter +hidden: true +label: Enable Chatter +sort_no: 300 +type: boolean +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_dataloader.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_dataloader.field.yml new file mode 100644 index 0000000000..d3c6ac2d75 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_dataloader.field.yml @@ -0,0 +1,8 @@ +name: enable_dataloader +defaultValue: true +hidden: true +inlineHelpText: Enable the dataloader for the object GraphQL API. The default value is "true". +label: Enable Dataloader +sort_no: 310 +type: boolean +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_enhanced_lookup.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_enhanced_lookup.field.yml new file mode 100644 index 0000000000..acba889484 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_enhanced_lookup.field.yml @@ -0,0 +1,11 @@ +name: enable_enhanced_lookup +defaultValue: true +group: advanced +hidden: false # 为兼容老版本魔方,不可以设置为true,只能用visible_on隐藏,否则前端拿不到该属性值,会造成老版本魔方升级后字段上未配置enable_enhanced_lookup的lookup字段默认不是弹出选择 +inlineHelpText: >- + When enabled, the lookup field associated with this object displays its + options as a pop-up window. +label: Enable Enhanced Lookup +sort_no: 230 +type: boolean +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_events.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_events.field.yml new file mode 100644 index 0000000000..2eae1639ce --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_events.field.yml @@ -0,0 +1,6 @@ +name: enable_events +group: switch +hidden: false +label: Enable Events +sort_no: 160 +type: boolean diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_files.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_files.field.yml new file mode 100644 index 0000000000..8b3927c6f3 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_files.field.yml @@ -0,0 +1,6 @@ +name: enable_files +group: switch +hidden: false +label: Enable Files +sort_no: 130 +type: boolean diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_form_tabs.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_form_tabs.field.yml new file mode 100644 index 0000000000..862729821c --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_form_tabs.field.yml @@ -0,0 +1,7 @@ +# 只影响编辑页面 +name: enable_form_tabs +group: switch +label: Enable Form Tabs +sort_no: 461 +type: boolean +inlineHelpText: This feature exclusively affects the editable pages, with precedence given to configurations specified on the components. diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_inline_edit.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_inline_edit.field.yml new file mode 100644 index 0000000000..3313ab631a --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_inline_edit.field.yml @@ -0,0 +1,7 @@ +name: enable_inline_edit +defaultValue: true +group: advanced +hidden: false +label: Enable Single Field Edit +sort_no: 210 +type: boolean diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_instances.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_instances.field.yml new file mode 100644 index 0000000000..936f71edf0 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_instances.field.yml @@ -0,0 +1,6 @@ +name: enable_instances +group: switch +hidden: false +label: Enable Instances +sort_no: 140 +type: boolean diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_lock_detail.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_lock_detail.field.yml new file mode 100644 index 0000000000..767b53ad2a --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_lock_detail.field.yml @@ -0,0 +1,9 @@ +name: enable_lock_detail +defaultValue: true +filters: [] +group: advanced +hidden: false +inlineHelpText: When the main watch is locked all sub tables are read only. +label: Enable Lock Details +sort_no: 220 +type: boolean diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_notes.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_notes.field.yml new file mode 100644 index 0000000000..2218707571 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_notes.field.yml @@ -0,0 +1,6 @@ +name: enable_notes +group: switch +hidden: false +label: Enable Notes +sort_no: 170 +type: boolean diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_search.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_search.field.yml new file mode 100644 index 0000000000..3b05ccaecf --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_search.field.yml @@ -0,0 +1,6 @@ +name: enable_search +hidden: true +label: Enable Search +sort_no: 460 +type: boolean +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_share.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_share.field.yml new file mode 100644 index 0000000000..0232c71970 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_share.field.yml @@ -0,0 +1,7 @@ +name: enable_share +defaultValue: false +hidden: true +label: Enable Share +sort_no: 290 +type: boolean +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_split.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_split.field.yml new file mode 100644 index 0000000000..cc22468fee --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_split.field.yml @@ -0,0 +1,7 @@ +name: enable_split +defaultValue: false +group: advanced +hidden: false +label: Enable Split +sort_no: 240 +type: boolean diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_tasks.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_tasks.field.yml new file mode 100644 index 0000000000..a8d67a5944 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_tasks.field.yml @@ -0,0 +1,6 @@ +name: enable_tasks +group: switch +hidden: false +label: Enable Tasks +sort_no: 150 +type: boolean diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_tree.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_tree.field.yml new file mode 100644 index 0000000000..ea44b611ed --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_tree.field.yml @@ -0,0 +1,7 @@ +name: enable_tree +group: advanced +hidden: false +inlineHelpText: Enable a tree structure to display records +label: Enable Tree +sort_no: 200 +type: boolean diff --git a/services/service-core-objects/main/default/objects/objects/fields/enable_workflow.field.yml b/services/service-core-objects/main/default/objects/objects/fields/enable_workflow.field.yml new file mode 100644 index 0000000000..a62872005c --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/enable_workflow.field.yml @@ -0,0 +1,9 @@ +name: enable_workflow +defaultValue: true +filters: [] +hidden: true +label: Enable Workflow +required: false +sort_no: 260 +type: boolean +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/extend.field.yml b/services/service-core-objects/main/default/objects/objects/fields/extend.field.yml new file mode 100644 index 0000000000..150f6a13bb --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/extend.field.yml @@ -0,0 +1,6 @@ +name: extend +hidden: false +label: Extend +sort_no: 470 +type: text +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/field_groups.$.collapsed.field.yml b/services/service-core-objects/main/default/objects/objects/fields/field_groups.$.collapsed.field.yml new file mode 100644 index 0000000000..029d224793 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/field_groups.$.collapsed.field.yml @@ -0,0 +1,5 @@ +name: field_groups.$.collapsed +hidden: false +label: 默认折叠 +sort_no: 80 +type: boolean diff --git a/services/service-core-objects/main/default/objects/objects/fields/field_groups.$.group_name.field.yml b/services/service-core-objects/main/default/objects/objects/fields/field_groups.$.group_name.field.yml new file mode 100644 index 0000000000..0155ce38c9 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/field_groups.$.group_name.field.yml @@ -0,0 +1,5 @@ +name: field_groups.$.group_name +hidden: false +label: 名称 +sort_no: 70 +type: text diff --git a/services/service-core-objects/main/default/objects/objects/fields/field_groups.$.visible_on.field.yml b/services/service-core-objects/main/default/objects/objects/fields/field_groups.$.visible_on.field.yml new file mode 100644 index 0000000000..3e2a85941f --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/field_groups.$.visible_on.field.yml @@ -0,0 +1,5 @@ +name: field_groups.$.visible_on +hidden: false +label: 显示条件 +sort_no: 90 +type: text diff --git a/services/service-core-objects/main/default/objects/objects/fields/field_groups.field.yml b/services/service-core-objects/main/default/objects/objects/fields/field_groups.field.yml new file mode 100644 index 0000000000..aacdd90d71 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/field_groups.field.yml @@ -0,0 +1,13 @@ +name: field_groups +blackbox: true +filters: [] +hidden: false +readonly: true +is_wide: true +label: 字段分组 +sort_no: 60 +type: grid +group: switch +defaultValue: + - group_name: 系统信息 + collapsed: true diff --git a/services/service-core-objects/main/default/objects/objects/fields/fields.field.yml b/services/service-core-objects/main/default/objects/objects/fields/fields.field.yml new file mode 100644 index 0000000000..305ba072b9 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/fields.field.yml @@ -0,0 +1,8 @@ +name: fields +blackbox: true +hidden: true +label: Fields +omit: true +sort_no: 340 +type: object +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/fields_serial_number.field.yml b/services/service-core-objects/main/default/objects/objects/fields/fields_serial_number.field.yml new file mode 100644 index 0000000000..3e41af9529 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/fields_serial_number.field.yml @@ -0,0 +1,9 @@ +name: fields_serial_number +disabled: true +hidden: true +label: Serial Number +omit: true +scale: 0 +sort_no: 440 +type: number +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/icon.field.yml b/services/service-core-objects/main/default/objects/objects/fields/icon.field.yml new file mode 100644 index 0000000000..131c6a08c1 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/icon.field.yml @@ -0,0 +1,29 @@ +name: icon +hidden: false +label: Icon +optionsFunction: ! |- + function( + ) { + + + + + var options; + options = []; + + _.forEach(Creator.resources.sldsIcons.standard, function (svg) { + return options.push({ + value: svg, + label: svg, + icon: svg + }); + }); + return options; + + + + + } +required: true +sort_no: 30 +type: lookup diff --git a/services/service-core-objects/main/default/objects/objects/fields/in_development.field.yml b/services/service-core-objects/main/default/objects/objects/fields/in_development.field.yml new file mode 100644 index 0000000000..5ef8a55cde --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/in_development.field.yml @@ -0,0 +1,17 @@ +name: in_development +amis: + disabledOn: '${is_system == true}' +defaultValue: '1' +hidden: false +inlineHelpText: Developing ( Only administrators can access. ) +label: Development State +options: + - label: Developing ( Only administrators can access. ) + value: '1' + - label: Deployed + value: '0' +required: true +sort_no: 40 +type: select +filterable: true + diff --git a/services/service-core-objects/main/default/objects/objects/fields/is_customize.field.yml b/services/service-core-objects/main/default/objects/objects/fields/is_customize.field.yml new file mode 100644 index 0000000000..492b5e1ceb --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/is_customize.field.yml @@ -0,0 +1,7 @@ +name: is_customize +hidden: false +label: 是否自定义 +readonly: true +sort_no: 100 +type: boolean +filterable: true diff --git a/services/service-core-objects/main/default/objects/objects/fields/is_deleted.field.yml b/services/service-core-objects/main/default/objects/objects/fields/is_deleted.field.yml new file mode 100644 index 0000000000..9e3d04645f --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/is_deleted.field.yml @@ -0,0 +1,8 @@ +name: is_deleted +disabled: false +hidden: false +label: 已删除 +omit: true +readonly: false +sort_no: 280 +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/is_enable.field.yml b/services/service-core-objects/main/default/objects/objects/fields/is_enable.field.yml new file mode 100644 index 0000000000..8ae218a2d2 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/is_enable.field.yml @@ -0,0 +1,11 @@ +name: is_enable +amis: + disabledOn: '${is_system == true}' +defaultValue: true +filters: [] +hidden: true +label: Enable +required: false +sort_no: 250 +type: boolean +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/is_system.field.yml b/services/service-core-objects/main/default/objects/objects/fields/is_system.field.yml new file mode 100644 index 0000000000..9ccdffd140 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/is_system.field.yml @@ -0,0 +1,9 @@ +name: is_system +disabled: true +hidden: false +label: System +readonly: true +sort_no: 110 +type: boolean +visible_on: '{{global.mode ===''read'' ? true : false}}' +filterable: true diff --git a/services/service-core-objects/main/default/objects/objects/fields/label.field.yml b/services/service-core-objects/main/default/objects/objects/fields/label.field.yml new file mode 100644 index 0000000000..42ad0bc040 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/label.field.yml @@ -0,0 +1,9 @@ +name: label +filterable: true +hidden: false +is_name: true +label: Label +required: true +searchable: true +sort_no: 10 +type: text diff --git a/services/service-core-objects/main/default/objects/objects/fields/list_views.field.yml b/services/service-core-objects/main/default/objects/objects/fields/list_views.field.yml new file mode 100644 index 0000000000..a9b51ca92c --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/list_views.field.yml @@ -0,0 +1,8 @@ +name: list_views +blackbox: true +hidden: true +label: ListViews +omit: true +sort_no: 350 +type: object +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/name.field.yml b/services/service-core-objects/main/default/objects/objects/fields/name.field.yml new file mode 100644 index 0000000000..41f61cebd0 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/name.field.yml @@ -0,0 +1,15 @@ +name: name +amis: + disabledOn: '${is_system == true}' +filterable: true +hidden: false +index: true +inlineHelpText: >- + Can only contain lowercase letters and numbers, must start with a letter, + cannot end with an underscore character or contain two consecutive underscore + characters +label: API Name +required: true +searchable: true +sort_no: 20 +type: text diff --git a/services/service-core-objects/main/default/objects/objects/fields/owner.field.yml b/services/service-core-objects/main/default/objects/objects/fields/owner.field.yml new file mode 100644 index 0000000000..3b3e78d130 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/owner.field.yml @@ -0,0 +1,8 @@ +name: owner +hidden: true +index: true +label: Owner +omit: true +sort_no: 410 +sortable: true +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/permission_set.field.yml b/services/service-core-objects/main/default/objects/objects/fields/permission_set.field.yml new file mode 100644 index 0000000000..0cc4dcd209 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/permission_set.field.yml @@ -0,0 +1,8 @@ +name: permission_set +blackbox: true +hidden: true +label: Permission Set +omit: true +sort_no: 380 +type: object +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/relatedList.field.yml b/services/service-core-objects/main/default/objects/objects/fields/relatedList.field.yml new file mode 100644 index 0000000000..ae21b81ef3 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/relatedList.field.yml @@ -0,0 +1,8 @@ +name: relatedList +blackbox: true +hidden: true +label: Related List +omit: true +sort_no: 370 +type: grid +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/reload_time.field.yml b/services/service-core-objects/main/default/objects/objects/fields/reload_time.field.yml new file mode 100644 index 0000000000..434ba7040f --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/reload_time.field.yml @@ -0,0 +1,9 @@ +name: reload_time +disabled: true +hidden: true +label: 重新加载时间 +omit: true +readonly: true +sort_no: 450 +type: datetime +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/sidebar.field.yml b/services/service-core-objects/main/default/objects/objects/fields/sidebar.field.yml new file mode 100644 index 0000000000..1eeb16e059 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/sidebar.field.yml @@ -0,0 +1,8 @@ +name: sidebar +blackbox: true +hidden: true +label: Sidebar +omit: true +sort_no: 330 +type: object +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/table_name.field.yml b/services/service-core-objects/main/default/objects/objects/fields/table_name.field.yml new file mode 100644 index 0000000000..2c088d6aeb --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/table_name.field.yml @@ -0,0 +1,11 @@ +name: table_name +amis: + disabledOn: '${is_system == true}' +group: advanced +hidden: false +index: true +inlineHelpText: The default data source does not support this property +label: Table Name +searchable: true +sort_no: 190 +type: text diff --git a/services/service-core-objects/main/default/objects/objects/fields/triggers.field.yml b/services/service-core-objects/main/default/objects/objects/fields/triggers.field.yml new file mode 100644 index 0000000000..7b39249544 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/triggers.field.yml @@ -0,0 +1,8 @@ +name: triggers +blackbox: true +hidden: true +label: Triggers +omit: true +sort_no: 390 +type: object +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/fields/version.field.yml b/services/service-core-objects/main/default/objects/objects/fields/version.field.yml new file mode 100644 index 0000000000..f29b71c517 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/fields/version.field.yml @@ -0,0 +1,9 @@ +name: version +defaultValue: 2 +hidden: true +label: Version +readonly: true +scale: 0 +sort_no: 320 +type: number +visible_on: '{{false}}' diff --git a/services/service-core-objects/main/default/objects/objects/listviews/all.listview.yml b/services/service-core-objects/main/default/objects/objects/listviews/all.listview.yml new file mode 100644 index 0000000000..18a6a2ebc9 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/listviews/all.listview.yml @@ -0,0 +1,15 @@ +name: all +columns: + - label + - name + - in_development + - is_system + - is_customize +extra_columns: + - datasource + - fields + - is_deleted +filter_scope: space +label: All +shared: true +shared_to: space diff --git a/services/service-core-objects/main/default/objects/objects/listviews/customize.listview.yml b/services/service-core-objects/main/default/objects/objects/listviews/customize.listview.yml new file mode 100644 index 0000000000..fc08f01234 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/listviews/customize.listview.yml @@ -0,0 +1,19 @@ +name: customize +columns: + - label + - name + - in_development + - is_system + - is_customize +extra_columns: + - datasource + - fields + - is_deleted +filter_scope: space +filters: + - - is_customize + - = + - true +label: Customize +shared: true +shared_to: space diff --git a/services/service-core-objects/main/default/objects/objects/listviews/deleted.listview.yml b/services/service-core-objects/main/default/objects/objects/listviews/deleted.listview.yml new file mode 100644 index 0000000000..e2bb06cc05 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/listviews/deleted.listview.yml @@ -0,0 +1,21 @@ +name: deleted +columns: + - label + - name + - in_development + - is_system +extra_columns: + - datasource + - fields + - is_deleted +filter_scope: space +filters: + - - is_system + - <> + - true + - - is_deleted + - '=' + - true +label: Deleted +shared: true +shared_to: space diff --git a/services/service-core-objects/main/default/objects/objects/listviews/system.listview.yml b/services/service-core-objects/main/default/objects/objects/listviews/system.listview.yml new file mode 100644 index 0000000000..b7188ca187 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/listviews/system.listview.yml @@ -0,0 +1,19 @@ +name: system +columns: + - label + - name + - in_development + - is_system + - is_customize +extra_columns: + - datasource + - fields + - is_deleted +filter_scope: space +filters: + - - is_system + - '=' + - true +label: System +shared: true +shared_to: space diff --git a/services/service-core-objects/main/default/objects/objects/objects.object.yml b/services/service-core-objects/main/default/objects/objects/objects.object.yml new file mode 100644 index 0000000000..713ba85752 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/objects.object.yml @@ -0,0 +1,12 @@ +name: objects +custom: true +enable_dataloader: false +field_groups: + - group_name: switch + - group_name: advanced +hidden: true +icon: orders +label: Objects +paging: + enabled: false +version: 2 diff --git a/services/service-core-objects/main/default/objects/objects/permissions/admin.permission.yml b/services/service-core-objects/main/default/objects/objects/permissions/admin.permission.yml new file mode 100644 index 0000000000..d943b3c624 --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/permissions/admin.permission.yml @@ -0,0 +1,8 @@ +allowCreate: true +allowDelete: true +allowEdit: true +allowRead: true +modifyAllRecords: true +permission_set_id: admin +viewAllRecords: true +field_permissions: [] diff --git a/services/service-core-objects/main/default/objects/objects/permissions/user.permission.yml b/services/service-core-objects/main/default/objects/objects/permissions/user.permission.yml new file mode 100644 index 0000000000..fb59255d8a --- /dev/null +++ b/services/service-core-objects/main/default/objects/objects/permissions/user.permission.yml @@ -0,0 +1,8 @@ +allowCreate: false +allowDelete: false +allowEdit: false +allowRead: true +modifyAllRecords: false +permission_set_id: user +viewAllRecords: true +field_permissions: [] diff --git a/services/standard-space/main/default/objects/organizations/fields/children.field.yml b/services/service-core-objects/main/default/objects/organizations/fields/children.field.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/fields/children.field.yml rename to services/service-core-objects/main/default/objects/organizations/fields/children.field.yml diff --git a/services/standard-space/main/default/objects/organizations/fields/company_id.field.yml b/services/service-core-objects/main/default/objects/organizations/fields/company_id.field.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/fields/company_id.field.yml rename to services/service-core-objects/main/default/objects/organizations/fields/company_id.field.yml diff --git a/services/standard-space/main/default/objects/organizations/fields/company_ids.field.yml b/services/service-core-objects/main/default/objects/organizations/fields/company_ids.field.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/fields/company_ids.field.yml rename to services/service-core-objects/main/default/objects/organizations/fields/company_ids.field.yml diff --git a/services/standard-space/main/default/objects/organizations/fields/fullname.field.yml b/services/service-core-objects/main/default/objects/organizations/fields/fullname.field.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/fields/fullname.field.yml rename to services/service-core-objects/main/default/objects/organizations/fields/fullname.field.yml diff --git a/services/standard-space/main/default/objects/organizations/fields/hidden.field.yml b/services/service-core-objects/main/default/objects/organizations/fields/hidden.field.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/fields/hidden.field.yml rename to services/service-core-objects/main/default/objects/organizations/fields/hidden.field.yml diff --git a/services/standard-space/main/default/objects/organizations/fields/is_company.field.yml b/services/service-core-objects/main/default/objects/organizations/fields/is_company.field.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/fields/is_company.field.yml rename to services/service-core-objects/main/default/objects/organizations/fields/is_company.field.yml diff --git a/services/standard-space/main/default/objects/organizations/fields/name.field.yml b/services/service-core-objects/main/default/objects/organizations/fields/name.field.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/fields/name.field.yml rename to services/service-core-objects/main/default/objects/organizations/fields/name.field.yml diff --git a/services/standard-space/main/default/objects/organizations/fields/parent.field.yml b/services/service-core-objects/main/default/objects/organizations/fields/parent.field.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/fields/parent.field.yml rename to services/service-core-objects/main/default/objects/organizations/fields/parent.field.yml diff --git a/services/standard-space/main/default/objects/organizations/fields/parents.field.yml b/services/service-core-objects/main/default/objects/organizations/fields/parents.field.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/fields/parents.field.yml rename to services/service-core-objects/main/default/objects/organizations/fields/parents.field.yml diff --git a/services/standard-space/main/default/objects/organizations/fields/sort_no.field.yml b/services/service-core-objects/main/default/objects/organizations/fields/sort_no.field.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/fields/sort_no.field.yml rename to services/service-core-objects/main/default/objects/organizations/fields/sort_no.field.yml diff --git a/services/standard-space/main/default/objects/organizations/fields/users.field.yml b/services/service-core-objects/main/default/objects/organizations/fields/users.field.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/fields/users.field.yml rename to services/service-core-objects/main/default/objects/organizations/fields/users.field.yml diff --git a/services/standard-space/main/default/objects/organizations/listviews/all.listview.yml b/services/service-core-objects/main/default/objects/organizations/listviews/all.listview.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/listviews/all.listview.yml rename to services/service-core-objects/main/default/objects/organizations/listviews/all.listview.yml diff --git a/services/standard-space/main/default/objects/organizations/listviews/effective.listview.yml b/services/service-core-objects/main/default/objects/organizations/listviews/effective.listview.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/listviews/effective.listview.yml rename to services/service-core-objects/main/default/objects/organizations/listviews/effective.listview.yml diff --git a/services/standard-space/main/default/objects/organizations/listviews/lookup.listview.yml b/services/service-core-objects/main/default/objects/organizations/listviews/lookup.listview.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/listviews/lookup.listview.yml rename to services/service-core-objects/main/default/objects/organizations/listviews/lookup.listview.yml diff --git a/services/standard-space/main/default/objects/organizations/organizations.object.yml b/services/service-core-objects/main/default/objects/organizations/organizations.object.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/organizations.object.yml rename to services/service-core-objects/main/default/objects/organizations/organizations.object.yml diff --git a/services/service-core-objects/main/default/objects/organizations/permissions/admin.permission.yml b/services/service-core-objects/main/default/objects/organizations/permissions/admin.permission.yml new file mode 100644 index 0000000000..0da71bafcb --- /dev/null +++ b/services/service-core-objects/main/default/objects/organizations/permissions/admin.permission.yml @@ -0,0 +1,7 @@ +permission_set_id: admin +allowCreate: true +allowDelete: true +allowEdit: true +allowRead: true +modifyAllRecords: true +viewAllRecords: true diff --git a/services/standard-space/main/default/objects/organizations/permissions/customer.permission.yml b/services/service-core-objects/main/default/objects/organizations/permissions/customer.permission.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/permissions/customer.permission.yml rename to services/service-core-objects/main/default/objects/organizations/permissions/customer.permission.yml diff --git a/services/standard-space/main/default/objects/organizations/permissions/user.permission.yml b/services/service-core-objects/main/default/objects/organizations/permissions/user.permission.yml similarity index 100% rename from services/standard-space/main/default/objects/organizations/permissions/user.permission.yml rename to services/service-core-objects/main/default/objects/organizations/permissions/user.permission.yml diff --git a/services/service-core-objects/main/default/objects/permission_set.object.yml b/services/service-core-objects/main/default/objects/permission_set.object.yml new file mode 100644 index 0000000000..fc0e058893 --- /dev/null +++ b/services/service-core-objects/main/default/objects/permission_set.object.yml @@ -0,0 +1,244 @@ +name: permission_set +label: Profile & Permission Set +icon: groups +hidden: true +enable_inline_edit: false +version: 2 +enable_dataloader: false +paging: + enabled: false +fields: + name: + label: Name + type: text + searchable: true + index: true + required: true + label: + label: Label + type: text + searchable: true + index: true + is_name: true + required: true + filterable: true + type: + label: Type + type: select + firstOption: false + filterable: true + options: Profile:profile,Permission set:permission_set + defaultValue: permission_set + amis: + "disabledOn": "${global.mode !='read'}" + assigned_apps: + label: Assigned Apps + type: lookup + multiple: true + reference_to: apps + reference_to_field: code + name: assigned_apps + filterable: false + is_wide: true + default_standard_buttons: + label: Default Standard Buttons + type: select + multiple: true + options: + - label: 查找 + value: standard_query + - label: 新建 + value: standard_new + - label: 查看 + value: standard_open_view + - label: 编辑 + value: standard_edit + - label: 删除 + value: standard_delete + - label: 删除 + value: standard_delete_many + - label: 发起审批 + value: standard_approve + - label: 查看审批单 + value: standard_view_instance + - label: 关注 + value: standard_follow + - label: 提请批准 + value: standard_submit_for_approval + - label: 导入数据 + value: standard_import_data + visible_on: "{{'profile' === formData.type ? true: false}}" + users: + label: Users + type: lookup + reference_to: users + multiple: true + is_wide: true + filterable: true + inlineHelpText: When the type is a profile, no user needs to be selected + visible_on: "{{'permission_set' === formData.type}}" + is_system: + type: boolean + label: System + # omit: true + readonly: true + visible_on: "{{global.mode ==='read' ? true : false}}" + disabled: true + password_history: + type: lookup + group: profile password policy + showIcon: false + label: 强制密码历史 + optionsFunction: !!js/function | + function(){ + var options = []; + //TODO 支持value = 0 + for(var i= 1; i < 25; i++){ + options.push({label: TAPi18n.__('permission_set_field_password_history_options', i), value: `${i}`}) + } + return options; + } + defaultValue: "3" + visible_on: "{{'profile' === formData.type ? true: false}}" + max_login_attempts: + type: select + label: 最大无效登录尝试次数 + group: profile password policy + firstOption: false + required: true + options: + - label: '3' + value: '3' + - label: '5' + value: '5' + - label: '10' + value: '10' + - label: '无限制' + value: '0' + defaultValue: "10" + visible_on: "{{'profile' === formData.type ? true: false}}" + lockout_interval: + type: select + group: profile password policy + label: 锁定有效期间 + firstOption: false + required: true + options: + - label: '15 分钟' + value: '15' + - label: '30 分钟' + value: '30' + - label: '60 分钟' + value: '60' + - label: '始终(必须由管理员重置)' + value: '0' + defaultValue: "15" + visible_on: "{{'profile' === formData.type ? true: false}}" + enable_MFA: + type: boolean + label: 多重身份验证(需要开启短信服务) + inlineHelpText: 密码登陆的基础上增加短信验证的两种组合的鉴别技术进行系统登陆. + sort_no: 1200 + group: login policy + visible_on: "{{'profile' === formData.type ? true: false}}" + logout_other_clients: + type: boolean + label: 单例登录 + inlineHelpText: 注销以当前用户身份登录的其他客户端。 + sort_no: 1100 + group: login policy + visible_on: "{{'profile' === formData.type ? true: false}}" + login_expiration_in_days: + type: number + scale: 4 + label: 登录到期时间(天) + sort_no: 1000 + defaultValue: 90 + group: login policy + visible_on: "{{'profile' === formData.type ? true: false}}" + phone_logout_other_clients: + type: boolean + label: 手机App单例登录 + inlineHelpText: 注销以当前用户身份登录的其他客户端。 + sort_no: 1100 + group: login policy + visible_on: "{{'profile' === formData.type ? true: false}}" + phone_login_expiration_in_days: + type: number + scale: 4 + label: 手机App登录到期时间(天) + sort_no: 1000 + defaultValue: 90 + group: login policy + visible_on: "{{'profile' === formData.type ? true: false}}" +list_views: + all: + label: All + filter_scope: space + columns: + - label + - name + - users + - type + - license + - is_system + permission_set: + label: Permission Set + filter_scope: space + filters: + - [["type", "=", "permission_set"]] + columns: + - label + - name + - users + - type + - license + - is_system + profile: + label: Profile + filter_scope: space + filters: + - [["type", "=", "profile"]] + columns: + - label + - name + - type + - license + - is_system +actions: + customize: + label: Customize + on: record_only +# relatedList: +# - objectName: permission_objects +# filters: !!js/function | +# function(parentRecord) { +# return [["is_system","=",true], ["permission_set_id","=",parentRecord._id]] +# } +# - objectName: permission_objects +# filters: !!js/function | +# function(parentRecord) { +# return [["is_system","<>",true], ["permission_set_id","=",parentRecord._id]] +# } +permission_set: + user: + allowCreate: false + allowDelete: false + allowEdit: false + allowRead: false + modifyAllRecords: false + viewAllRecords: false + admin: + allowCreate: true + allowDelete: true + allowEdit: true + allowRead: true + modifyAllRecords: true + viewAllRecords: true + customer: + allowCreate: false + allowDelete: false + allowEdit: false + allowRead: false + modifyAllRecords: false + viewAllRecords: false \ No newline at end of file diff --git a/services/standard-permission/main/default/objects/permission_shares.object.yml b/services/service-core-objects/main/default/objects/permission_shares.object.yml similarity index 100% rename from services/standard-permission/main/default/objects/permission_shares.object.yml rename to services/service-core-objects/main/default/objects/permission_shares.object.yml diff --git a/services/service-core-objects/main/default/objects/process_definition.object.yml b/services/service-core-objects/main/default/objects/process_definition.object.yml new file mode 100644 index 0000000000..cc1a79dd73 --- /dev/null +++ b/services/service-core-objects/main/default/objects/process_definition.object.yml @@ -0,0 +1,323 @@ +name: process_definition +label: Approval Processes +hidden: true +icon: approval +enable_inline_edit: false +version: 2 +fields: + name: + type: text + required: true + filterable: true + searchable: true + label: + type: text + required: true + is_name: true + filterable: true + searchable: true + object_name: + type: lookup + required: true + is_wide: true + filterable: true + create: false + reference_to: objects + reference_to_field: name + description: + label: Description + type: textarea + is_wide: true + filterable: true + searchable: true + order: #TODO 必须是连续的数字 + type: number + required: true + scale: 0 + min: 1 + active: + type: boolean + label: Active + # hidden: true + # omit: true + readonly: true + defaultValue: false + filterable: true + visible_on: "{{global.mode ==='read' ? true : false}}" + entry_criteria: + type: textarea + label: Specify Entry Criteria + is_wide: true + required: true + # group: Specify Entry Criteria + inlineHelpText: If only certain types of records should enter this approval process, enter that criteria below. For example, only expense reports from employees at headquarters should use this approval process. + # user_hierarchy_field: + # type: text + # is_wide: true + # label: Next Automated Approver Determined By + # inlineHelpText: 可选项为对象的所有人员字段 + # group: next Automated Approver TODO + # use_approver_field_of_record_owner: + # type: boolean + # is_wide: true + # label: Use Approver Field of Record Owner + # group: next Automated Approver TODO + record_editability: + type: select + is_wide: true + required: true + firstOption: false + defaultValue: admin_only + inlineHelpText: When a record is submitted for approval, it’s locked to prevent users from editing it during the approval process. Use the record editability properties to determine who can edit records that are locked in this approval process. + label: Record Editability Properties + options: + - label: Administrators ONLY can edit records during the approval process + value: admin_only + # - label: Administrators OR the currently assigned approver can edit records during the approval process. + # value: admin_or_current_approver + # approval_page_fields: + # type: text + # is_wide: true + # group: 选择要在批准页面布局上显示的字段 TODO + # # type: lookup + # # reference_to: object_layout + # label: Select Fields to Display on Approval Page Layout + # inlineHelpText: The approval page is where an approver will actually approve or reject a request. Using the options below, choose the fields to display on this page. + # show_approval_history: + # type: boolean + # is_wide: true + # label: Display approval history information in addition to the fields selected above. + # group: 选择要在批准页面布局上显示的字段 TODO + # allowed_submitters: + # type: text + # multiple: true + # is_wide: true + # group: 指定初始提交人 TODO + # inlineHelpText: 指定谁可以提交记录到批准过程。 如果该列表中不包括提交记录以待批准的用户,记录不会进入该批准过程,即使记录满足进入条件。 + allow_recall: + type: boolean + is_wide: true + label: Allow submitters to recall approval requests + filterable: true + # group: 提交设置 + initial_submission_record_lock: + type: select + # required: true + firstOption: false + options: + - label: Lock the record from being edited + value: lock + - label: Unlock the record for editing + value: unlock + defaultValue: lock + readonly: true + label: Record Lock + group: Initial Submission Actions + initial_submission_updates_field_actions: + type: lookup + multiple: true + label: Field Update + reference_to: action_field_updates + reference_to_field: name + depend_on: + - object_name + filtersFunction: !!js/function | + function (filters, dependValues) { + if(dependValues && dependValues.object_name){ + return "object_name eq '" + dependValues.object_name + "'"; + } + } + group: Initial Submission Actions + initial_submission_workflow_notifications_actions: + type: lookup + multiple: true + label: Workflow Notification + reference_to: workflow_notifications + reference_to_field: name + depend_on: + - object_name + filtersFunction: !!js/function | + function (filters, dependValues) { + if(dependValues && dependValues.object_name){ + return "object_name eq '" + dependValues.object_name + "'"; + } + } + group: Initial Submission Actions + final_approval_record_lock: + type: select + required: true + firstOption: false + options: + - label: Lock the record from being edited + value: lock + - label: Unlock the record for editing + value: unlock + defaultValue: lock + label: Record Lock + group: Final Approval Actions + final_approval_updates_field_actions: + type: lookup + multiple: true + label: Field Update + reference_to: action_field_updates + reference_to_field: name + depend_on: + - object_name + filtersFunction: !!js/function | + function (filters, dependValues) { + if(dependValues && dependValues.object_name){ + return "object_name eq '" + dependValues.object_name + "'"; + } + } + group: Final Approval Actions + final_approval_workflow_notifications_actions: + type: lookup + multiple: true + label: Workflow Notification + reference_to: workflow_notifications + reference_to_field: name + depend_on: + - object_name + filtersFunction: !!js/function | + function (filters, dependValues) { + if(dependValues && dependValues.object_name){ + return "object_name eq '" + dependValues.object_name + "'"; + } + } + group: Final Approval Actions + final_rejection_record_lock: + type: select + required: true + firstOption: false + options: + - label: Lock the record from being edited + value: lock + - label: Unlock the record for editing + value: unlock + defaultValue: unlock + label: Record Lock + group: Final Rejection Actions + final_rejection_updates_field_actions: + type: lookup + multiple: true + label: Field Update + reference_to: action_field_updates + reference_to_field: name + depend_on: + - object_name + filtersFunction: !!js/function | + function (filters, dependValues) { + if(dependValues && dependValues.object_name){ + return "object_name eq '" + dependValues.object_name + "'"; + } + } + group: Final Rejection Actions + final_rejection_workflow_notifications_actions: + type: lookup + multiple: true + label: Workflow Notification + reference_to: workflow_notifications + reference_to_field: name + depend_on: + - object_name + filtersFunction: !!js/function | + function (filters, dependValues) { + if(dependValues && dependValues.object_name){ + return "object_name eq '" + dependValues.object_name + "'"; + } + } + group: Final Rejection Actions + recall_record_lock: + type: select + # required: true + firstOption: false + options: + - label: Lock the record from being edited + value: lock + - label: Unlock the record for editing + value: unlock + defaultValue: unlock + readonly: true + label: Record Lock + group: Recall Actions + recall_updates_field_actions: + type: lookup + multiple: true + label: Field Update + reference_to: action_field_updates + reference_to_field: name + depend_on: + - object_name + filtersFunction: !!js/function | + function (filters, dependValues) { + if(dependValues && dependValues.object_name){ + return "object_name eq '" + dependValues.object_name + "'"; + } + } + group: Recall Actions + recall_workflow_notifications_actions: + type: lookup + multiple: true + label: Workflow Notification + reference_to: workflow_notifications + reference_to_field: name + depend_on: + - object_name + filtersFunction: !!js/function | + function (filters, dependValues) { + if(dependValues && dependValues.object_name){ + return "object_name eq '" + dependValues.object_name + "'"; + } + } + group: Recall Actions + is_system: + type: boolean + label: System + readonly: true + visible_on: "{{global.mode ==='read' ? true : false}}" + disabled: true + +relatedList: + - process_node + # - action_field_updates +list_views: + all: + label: All + filter_scope: space + filter_fields: + - object_name + columns: + - label + - name + - object_name + - order + - description + - active +actions: + enable: + label: Enable + on: record + disable: + label: Disable + on: record + copy: + label: Copy + on: record + customize: + label: Customize + on: record +permission_set: + user: + allowCreate: false + allowDelete: false + allowEdit: false + allowRead: true + modifyAllRecords: false + viewAllRecords: true + admin: + allowCreate: true + allowDelete: true + allowEdit: true + allowRead: true + modifyAllRecords: true + viewAllRecords: true diff --git a/services/service-core-objects/main/default/objects/queue_import.object.yml b/services/service-core-objects/main/default/objects/queue_import.object.yml new file mode 100644 index 0000000000..bc2e0be058 --- /dev/null +++ b/services/service-core-objects/main/default/objects/queue_import.object.yml @@ -0,0 +1,231 @@ +name: queue_import +label: Data Import Queue +icon: product_consumed +enable_files: false +enable_enhanced_lookup: true +hidden: true +version: 2 +fields: + name: + index: true + label: API Name + required: true + searchable: true + sort_no: 10 + type: text + filterable: true + description: + label: Description + type: text + is_wide: true + required: true + is_name: true + name: description + searchable: true + filterable: true + object_name: + label: Object + type: lookup + required: true + is_wide: true + reference_to: objects + reference_to_field: name + name: object_name + filterable: true + encoding: + label: Character Code + type: select + defaultValue: '"GB2312"' + options: + - label: GB2312 , Simplified Chinese + value: GB2312 + - label: Unicode (UTF8) + value: UTF8 + - label: Unicode (UTF16) + value: UTF16 + - label: Big5 , Traditional Chinese + value: Big5 + - label: Big5 , Traditional Chinese (HKSCS) + value: HKSCS + - label: Windows Japanese + value: Windows 日语 + - label: Japanese (Shift_JIS-2004) + value: Shift_JIS-2004 + - label: KS C 5601 Korean + value: KS C 5601 + - label: ISO-8859-1(ISO-LATIN-1) + value: ISO + readonly: true + visible_on: "{{global.mode ==='read' ? true : false}}" + name: encoding + value_separator: + label: Separator + type: select + options: + - label: ',' + value: ',' + readonly: true + visible_on: "{{global.mode ==='read' ? true : false}}" + defaultValue: '","' + name: value_separator + + operation: + type: select + label: operation + options: + - label: insert + value: insert + - label: update + value: update + - label: upsert + value: upsert + required: true + filterable: true + fire_workflows: + name: fire_workflows + label: Fire Workflows + type: boolean + hidden: true + + field_mappings: + label: Field Mappings + type: table + is_wide: true + defaultIcon: service_contract + required: true + name: field_mappings + amis: + showIndex: true, + enableDialog: false + columns: ["header","api_name","matched_by","save_key_while_fail"] + field_mappings.$: + label: Column + blackbox: true + type: object + field_mappings.$.header: + label: Header + type: text + field_mappings.$.api_name: + label: ApiName + type: lookup + multiple: false + is_wide: false + required: false + depend_on: + - object_name + # optionsFunction: ! |- + # function (values) { + # if(values && values.object_name){ + # var _object = Creator.getObject(values.object_name); + # if(_object){ + # var icon = _object.icon; + # return [{label: "Primary Key ( _id )", value: "_id", icon: icon}].concat(Creator.getObjectLookupFieldOptions(values != null ? values.object_name : void 0, true)); + # } + # }else{ + # return [] + # } + # } + reference_to: object_fields + enable_enhanced_lookup: false + reference_to_field: name + amis: + "autoComplete": + "method": "get" + "url": "${context.rootUrl}/service/api/amis-metadata-objects/objects/${object_name}/fields/options?include_deep=true&term=${term}" + "headers": + "Authorization": "Bearer ${context.tenantId},${context.authToken}" + "sendOn": "!!this.object_name" + "adaptor": "payload.data.options = [{ label: \"Primary Key ( _id )\", value: \"_id\" }].concat(payload.data.options);\nreturn payload;" + "source": + "method": "get" + "url": "${context.rootUrl}/service/api/amis-metadata-objects/objects/${object_name}/fields/options?include_deep=true&term=${term}" + "headers": + "Authorization": "Bearer ${context.tenantId},${context.authToken}" + "sendOn": "!!this.object_name" + "adaptor": "payload.data.options = [{ label: \"Primary Key ( _id )\", value: \"_id\" }].concat(payload.data.options);\nreturn payload;" + field_mappings.$.matched_by: + label: Matched By + type: text + field_mappings.$.save_key_while_fail: + label: Save key while fail to map a record + type: boolean + defaultValue: false + + external_id_name: + label: External_id (Based on this when executing again) + type: lookup + multiple: true + is_wide: true + depend_on: + - object_name + defaultIcon: service_contract + reference_to: object_fields + reference_to_field: name + filtersFunction: ! |- + function(filters, values){ + return ['object', '=', values.object_name] + } + visible_on: "{{formData.operation != 'insert' ? true : false}}" + required: true + name: external_id_name + template_url: + label: 导入模板 + type: url + hidden: false + omit: false + readonly: true + disabled: true + is_wide: true + # 为了区分crud内容的label与button的label,使用button-group把button包裹住 + amis: + "type": "button-group" + "static": false + "buttons": + - "type": "button" + "label": "下载" + "visibleOn": "${template_url}" + "level": "link" + "actionType": "download" + "api": + "url": "${template_url}" + "method": "get" + "headers": + "Authorization": "Bearer ${context.tenantId},${context.authToken}" + is_system: + type: boolean + label: System + readonly: true + visible_on: "{{global.mode ==='read' ? true : false}}" + disabled: true +list_views: + all: + label: All Queues + columns: + - description + - name + - object_name + - operation + - template_url + filter_scope: space +permission_set: + user: + allowCreate: false + allowDelete: false + allowEdit: false + allowRead: true + modifyAllRecords: false + viewAllRecords: true + customer: + allowCreate: false + allowDelete: false + allowEdit: false + allowRead: true + modifyAllRecords: false + viewAllRecords: false + admin: + allowCreate: true + allowDelete: true + allowEdit: true + allowRead: true + modifyAllRecords: true + viewAllRecords: true \ No newline at end of file diff --git a/services/standard-space/main/default/pages/about.page.amis.json b/services/service-core-objects/main/default/pages/about.page.amis.json similarity index 100% rename from services/standard-space/main/default/pages/about.page.amis.json rename to services/service-core-objects/main/default/pages/about.page.amis.json diff --git a/services/standard-space/main/default/pages/about.page.yml b/services/service-core-objects/main/default/pages/about.page.yml similarity index 100% rename from services/standard-space/main/default/pages/about.page.yml rename to services/service-core-objects/main/default/pages/about.page.yml diff --git a/services/standard-space/main/default/pages/organizations.page.amis.json b/services/service-core-objects/main/default/pages/organizations.page.amis.json similarity index 100% rename from services/standard-space/main/default/pages/organizations.page.amis.json rename to services/service-core-objects/main/default/pages/organizations.page.amis.json diff --git a/services/standard-space/main/default/pages/organizations.page.yml b/services/service-core-objects/main/default/pages/organizations.page.yml similarity index 100% rename from services/standard-space/main/default/pages/organizations.page.yml rename to services/service-core-objects/main/default/pages/organizations.page.yml diff --git a/services/standard-space/main/default/pages/space_users_list.page.amis.json b/services/service-core-objects/main/default/pages/space_users_list.page.amis.json similarity index 100% rename from services/standard-space/main/default/pages/space_users_list.page.amis.json rename to services/service-core-objects/main/default/pages/space_users_list.page.amis.json diff --git a/services/standard-space/main/default/pages/space_users_list.page.yml b/services/service-core-objects/main/default/pages/space_users_list.page.yml similarity index 100% rename from services/standard-space/main/default/pages/space_users_list.page.yml rename to services/service-core-objects/main/default/pages/space_users_list.page.yml diff --git a/services/service-core-objects/main/default/services/app-design.service.js b/services/service-core-objects/main/default/services/app-design.service.js new file mode 100644 index 0000000000..cd48c14537 --- /dev/null +++ b/services/service-core-objects/main/default/services/app-design.service.js @@ -0,0 +1,540 @@ +/* + * @Author: sunhaolin@hotoa.com + * @Date: 1985-10-26 16:15:00 + * @LastEditors: baozhoutao@steedos.com + * @LastEditTime: 2025-01-16 21:18:27 + * @Description: + */ +"use strict"; + +const { customAlphabet } = require('nanoid'); +const nanoid = customAlphabet('1234567890abcdef', 10) +const objectMixin = require('@steedos/service-object-mixin') +/** + * @typedef {import('moleculer').Context} Context Moleculer's Context + */ +module.exports = { + name: 'app-design', + namespace: "steedos", + mixins: [objectMixin], + /** + * Settings + */ + settings: { + }, + + /** + * Dependencies + */ + dependencies: [], + + /** + * Actions + */ + actions: { + create_object: { + rest: { + method: "POST", + fullPath: "/service/api/objects/create_by_design" + }, + async handler(ctx) { + const { appId, groupId, name, label, icon } = ctx.params; + const userSession = ctx.meta.user; + + if(!appId){ + return; + } + + const records = await this.getObject('apps').find({ + filters: ['code', '=', appId] + }); + const app = records.length > 0 ? records[0] : null; + + if(!app){ + return ; + } + + // 1 创建对象 + const obj = await this.getObject('objects').insert({ + name: name || `o_${nanoid(5)}`, + label: label || '未命名对象', + datasource: 'default', + icon: icon || 'account' + }, userSession); + + + const tab_items = app.tab_items || {}; + tab_items[`object_${obj.name.replace(/__c$/, "")}`] = { + group: groupId + } + + await this.getObject('apps').update(app._id, { + tab_items + }, userSession); + + return obj; + } + }, + create_app_group: { + rest: { + method: "POST", + fullPath: "/service/api/apps/create_app_group_by_design" + }, + async handler(ctx) { + const { appId, name, defaultOpen, oldName } = ctx.params; + const userSession = ctx.meta.user; + + if(!appId){ + return {}; + } + + const records = await this.getObject('apps').find({ + filters: ['code', '=', appId] + }); + const app = records.length > 0 ? records[0] : null; + + if(!app){ + return {}; + } + + await this.getObject('apps').update(app._id, { + $push: { + tab_groups: { + group_name: name, + default_open: defaultOpen + } + } + }, userSession); + + return {}; + } + }, + update_app_group: { + rest: { + method: "POST", + fullPath: "/service/api/apps/update_app_group_by_design" + }, + async handler(ctx) { + const { appId, name, defaultOpen, oldName } = ctx.params; + const userSession = ctx.meta.user; + + if(!oldName){ + return {} + } + + if(!appId){ + return {}; + } + + const records = await this.getObject('apps').find({ + filters: ['code', '=', appId] + }); + const app = records.length > 0 ? records[0] : null; + + if(!app){ + return {}; + }; + + const tab_groups = app.tab_groups; + + const tab_items = app.tab_items; + + _.each(tab_groups, (tGroup)=>{ + if(tGroup.group_name == oldName){ + tGroup.group_name = name; + tGroup.default_open = defaultOpen + } + }); + + + _.each(tab_items, (tItem, key)=>{ + if(tItem.group === oldName){ + tab_items[key] = { + group: name + } + } + }) + + await this.getObject('apps').update(app._id, { + tab_groups, tab_items + }, userSession); + + return {}; + } + }, + create_by_design: { + rest: { + method: "POST", + fullPath: "/service/api/apps/create_by_design" + }, + async handler(ctx) { + const { code, name, icon } = ctx.params; + const userSession = ctx.meta.user; + + if(!code || !name){ + return {}; + } + + return await this.getObject('apps').insert({ + name: name, + code: code, + sort : 9100, + is_creator : true, + mobile : true, + visible : true, + showSidebar : true, + icon_slds : icon || "account", + }, userSession); + } + }, + update_app_by_design: { + rest: { + method: "POST", + fullPath: "/service/api/apps/update_app_by_design" + }, + async handler(ctx) { + const { appId, tab_groups, tab_items } = ctx.params; + const userSession = ctx.meta.user; + + if(!appId){ + return {}; + } + + const records = await this.getObject('apps').find({ + filters: ['code', '=', appId] + }); + const app = records.length > 0 ? records[0] : null; + + if(!app){ + return {}; + } + + await this.getObject('apps').update(app._id, { + tab_groups: tab_groups, + tab_items: tab_items + }, userSession); + + } + }, + update_app_tabs_by_design: { + rest: { + method: "POST", + fullPath: "/service/api/apps/update_app_tabs_by_design" + }, + async handler(ctx) { + const { appId, addTabNames, groupId } = ctx.params; + const userSession = ctx.meta.user; + + if(!appId){ + return {}; + } + + const records = await this.getObject('apps').find({ + filters: ['code', '=', appId] + }); + const app = records.length > 0 ? records[0] : null; + + if(!app){ + return {}; + } + + const tab_items = app.tab_items || {}; + + _.each(addTabNames, (tabName)=>{ + if(tabName){ + tab_items[tabName] = { + group: groupId + } + } + }) + + await this.getObject('apps').update(app._id, { + tab_items + }, userSession); + + } + }, + create_link_tab_by_design: { + rest: { + method: "POST", + fullPath: "/service/api/tabs/create_link_tab_by_design" + }, + async handler(ctx) { + const { appId, groupId, name, label, icon, url } = ctx.params; + const userSession = ctx.meta.user; + + if(!appId){ + return; + } + + const records = await this.getObject('apps').find({ + filters: ['code', '=', appId] + }); + const app = records.length > 0 ? records[0] : null; + + if(!app){ + return ; + } + + const tab = await this.getObject('tabs').insert({ + name: name || `t_${nanoid(5)}`, + label: label || '未命名选项卡', + icon: icon || 'account', + mobile : true, + desktop : true, + is_new_window : false, + is_use_iframe : true, + type : "url", + url : url, + }, userSession); + + + const tab_items = app.tab_items || {}; + tab_items[tab.name] = { + group: groupId + } + await this.getObject('apps').update(app._id, { + tab_items + }, userSession); + + return tab; + } + }, + update_link_tab_by_design: { + rest: { + method: "POST", + fullPath: "/service/api/tabs/update_link_tab_by_design" + }, + async handler(ctx) { + const { appId, groupId, name, label, icon, url } = ctx.params; + const userSession = ctx.meta.user; + + if(!appId){ + return; + } + + const records = await this.getObject('apps').find({ + filters: ['code', '=', appId] + }); + const app = records.length > 0 ? records[0] : null; + + if(!app){ + return ; + } + + const dbTab = await this.getObject('tabs').find({ + filters: ['name', '=', name] + }, userSession); + + if(dbTab.length > 0){ + const tab = await this.getObject('tabs').update(dbTab[0]._id, { + name: name, + label: label, + icon: icon, + url : url, + }, userSession); + return tab; + } + return dbTab; + } + }, + create_page_by_design: { + rest: { + method: "POST", + fullPath: "/service/api/pages/create_page_by_design" + }, + async handler(ctx) { + const { appId, groupId, name, label, icon } = ctx.params; + const userSession = ctx.meta.user; + + if(!appId){ + return; + } + + const records = await this.getObject('apps').find({ + filters: ['code', '=', appId] + }); + const app = records.length > 0 ? records[0] : null; + + if(!app){ + return ; + } + + const page = await this.getObject('pages').insert({ + name: name || `t_${nanoid(5)}`, + label : label, + is_active : true, + render_engine : "amis", + type : "app" + }, userSession); + + const tab = await this.getObject('tabs').insert({ + name: `page_${page.name}`, + mobile : true, + desktop : true, + is_new_window : false, + is_use_iframe : false, + icon : icon, + type : "page", + label : label, + page : page.name, + }, userSession); + + + const tab_items = app.tab_items || {}; + tab_items[tab.name] = { + group: groupId + } + await this.getObject('apps').update(app._id, { + tab_items + }, userSession); + + return page; + } + }, + delete_app_tab: { + rest: { + method: "POST", + fullPath: "/service/api/apps/delete_app_tab" + }, + async handler(ctx) { + const { appId, tabName } = ctx.params; + const userSession = ctx.meta.user; + + if(!appId){ + return; + } + + const records = await this.getObject('apps').find({ + filters: ['code', '=', appId] + }); + const app = records.length > 0 ? records[0] : null; + + if(!app){ + return ; + } + + + const tab_items = app.tab_items || {}; + + delete tab_items[tabName] + + await this.getObject('apps').update(app._id, { + tab_items + }, userSession); + + return app; + } + }, + delete_app_group: { + rest: { + method: "POST", + fullPath: "/service/api/apps/delete_app_group" + }, + async handler(ctx) { + const { appId, groupName } = ctx.params; + const userSession = ctx.meta.user; + + if(!appId){ + return; + } + + const records = await this.getObject('apps').find({ + filters: ['code', '=', appId] + }); + const app = records.length > 0 ? records[0] : null; + + if(!app){ + return ; + } + + const tab_groups = app.tab_groups || []; + const newTabGroups = []; + + _.each(tab_groups, (tGroup)=>{ + if(tGroup.group_name != groupName){ + newTabGroups.push(tGroup); + } + }); + await this.getObject('apps').update(app._id, { + tab_groups: newTabGroups + }, userSession); + + return app; + } + }, + move_app_tab: { + rest: { + method: "POST", + fullPath: "/service/api/apps/move_app_tab" + }, + async handler(ctx) { + const { appId, tabName, groupName, oldGroupName } = ctx.params; + const userSession = ctx.meta.user; + + if(!appId){ + return; + } + + const records = await this.getObject('apps').find({ + filters: ['code', '=', appId] + }); + const app = records.length > 0 ? records[0] : null; + + if(!app){ + return ; + } + + + const tab_items = app.tab_items || {}; + + _.each(tab_items, (item, k)=>{ + if(k === tabName){ + tab_items[k].group = groupName == 0 ? '' : groupName + } + }) + + await this.getObject('apps').update(app._id, { + tab_items + }, userSession); + + return app; + } + }, + }, + + /** + * Events + */ + events: { + + }, + + /** + * Methods + */ + methods: { + + }, + + /** + * Service created lifecycle event handler + */ + async created() { + + }, + + /** + * Service started lifecycle event handler + */ + async started() { + + }, + + /** + * Service stopped lifecycle event handler + */ + async stopped() { + + } +}; diff --git a/services/service-core-objects/main/default/services/organizations.service.js b/services/service-core-objects/main/default/services/organizations.service.js new file mode 100644 index 0000000000..5812097146 --- /dev/null +++ b/services/service-core-objects/main/default/services/organizations.service.js @@ -0,0 +1,375 @@ +/* + * @Author: sunhaolin@hotoa.com + * @Date: 2022-12-02 16:53:23 + * @LastEditors: baozhoutao@steedos.com + * @LastEditTime: 2025-01-17 16:34:36 + * @Description: + */ +"use strict"; +const { getObject } = require("@steedos/objectql") +const _ = require('underscore') +const lodash = require('lodash'); + +function getTreeRootIds(rows) { + const valueField = "_id"; + const ids = []; + for (var i = 0; i < rows.length; i++) { + const row = rows[i]; + if (!!row["parent"]) { + if (!lodash.some(rows, row2 => row["parent"] == row2[valueField])){ + ids.push(row._id); + } + } else { + ids.push(row._id); + }; + } + return ids; +} + + +/** + * @typedef {import('moleculer').Context} Context Moleculer's Context + */ +module.exports = { + name: 'organizations', + namespace: "steedos", + mixins: [], + /** + * Settings + */ + settings: { + + }, + + /** + * Dependencies + */ + dependencies: [], + + /** + * Actions + */ + actions: { + /** + * @api {post} calculateFullname 计算组织的全名 + * @apiName calculateFullname + * @apiGroup organizations.service.js + * @apiParam {String} orgId 组织ID + * @apiSuccess {String} 返回组织的全名 + */ + calculateFullname: { + params: { + orgId: { type: "string" }, + }, + async handler(ctx) { + this.broker.logger.info('[service][organizations]===>', 'calculateFullname', ctx.params.orgId) + return this.calculateFullname(ctx.params.orgId) + } + }, + /** + * @api {post} calculateParents 计算组织的父节点 + * @apiName calculateParents + * @apiGroup organizations.service.js + * @apiParam {String} orgId 组织ID + * @apiSuccess {String[]} 返回组织的父节点 + */ + calculateParents: { + params: { + orgId: { type: "string" }, + }, + async handler(ctx) { + this.broker.logger.info('[service][organizations]===>', 'calculateParents', ctx.params.orgId) + return this.calculateParents(ctx.params.orgId) + } + }, + /** + * @api {post} calculateChildren 计算组织的子节点 + * @apiName calculateChildren + * @apiGroup organizations.service.js + * @apiParam {String} orgId 组织ID + * @apiSuccess {String[]} 返回组织的子节点 + */ + calculateChildren: { + params: { + orgId: { type: "string" }, + }, + async handler(ctx) { + this.broker.logger.info('[service][organizations]===>', 'calculateChildren', ctx.params.orgId) + return this.calculateChildren(ctx.params.orgId) + } + }, + /** + * @api {post} updateUsers 更新组织成员 + * @apiName updateUsers + * @apiGroup organizations.service.js + * @apiParam {String} orgId 组织ID + */ + updateUsers: { + params: { + orgId: { type: "string" }, + }, + async handler(ctx) { + this.broker.logger.info('[service][organizations]===>', 'updateUsers', ctx.params.orgId) + return this.updateUsers(ctx.params.orgId) + } + }, + /** + * @api {post} calculateUsers 计算组织成员 + * @apiName calculateUsers + * @apiGroup organizations.service.js + * @apiParam {String} orgId 组织ID + * @apiParam {Boolean} isIncludeParents 是否计算父组织 + * @apiSuccess {String[]} 成员IDs + */ + calculateUsers: { + params: { + orgId: { type: "string" }, + isIncludeParents: { type: "boolean", optional: true }, + }, + async handler(ctx) { + this.broker.logger.info('[service][organizations]===>', 'calculateUsers', ctx.params) + return this.calculateUsers(ctx.params.orgId, ctx.params.isIncludeParents) + } + }, + getOrganizationsRootNode: { + params: { + fields: { type: 'string', optional: true }, + filters: { type: 'string', optional: true }, + }, + // 访问地址: GET /service/api/organizations/root + rest: { method: 'GET', path: '/root' }, + async handler(ctx) { + return this.getOrganizationsRootNode(ctx) + } + } + }, + + /** + * Events + */ + events: { + + }, + + /** + * Methods + */ + methods: { + /** + * 计算组织的全名 + * @param {String} orgId + * @returns 组织的全名 + */ + async calculateFullname(orgId) { + const orgObj = getObject('organizations') + const orgDoc = await orgObj.findOne(orgId) + let fullname = orgDoc.name; + if (!orgDoc.parent) { + return fullname; + } + let parentId = orgDoc.parent; + while (parentId) { + const parentOrg = await orgObj.findOne(parentId, { fields: ['parent', 'name'] }); + if (parentOrg) { + parentId = parentOrg.parent; + } else { + parentId = null; + } + if (parentId) { + fullname = (parentOrg != null ? parentOrg.name : void 0) + "/" + fullname; + } + } + return fullname; + }, + + /** + * 计算组织父节点 + * @param {*} orgId + */ + async calculateParents(orgId) { + const orgObj = getObject('organizations') + const orgDoc = await orgObj.findOne(orgId) + var parentId, parentOrg, parents; + parents = []; + if (!orgDoc.parent) { + return parents; + } + parentId = orgDoc.parent; + while (parentId) { + parents.push(parentId); + parentOrg = await orgObj.findOne(parentId, { fields: ['parent', 'name'] }); + if (parentOrg) { + parentId = parentOrg.parent; + } else { + parentId = null; + } + } + return parents; + }, + /** + * 计算组织的子节点 + * @param {*} orgId + */ + async calculateChildren(orgId) { + const orgObj = getObject('organizations') + var children, childrenObjs; + children = []; + childrenObjs = await orgObj.find({ + filters: [ + ['parent', '=', orgId] + ], + fields: ['_id'] + }); + childrenObjs.forEach(function (child) { + return children.push(child._id); + }); + return children; + }, + /** + * 更新组织成员 + * @param {*} orgId + */ + async updateUsers(orgId) { + const orgObj = getObject('organizations') + const suObj = getObject('space_users') + var spaceUsers, users; + users = []; + spaceUsers = await suObj.find({ + filters: [ + ['organizations', '=', orgId] + ], + fields: ['user'] + }); + spaceUsers.forEach(function (su) { + return users.push(su.user); + }); + await orgObj.directUpdate(orgId, { users: users }); + }, + /** + * 计算组织所有子节点 + * @param {*} orgId + * @returns + */ + async calculateAllChildren(orgId) { + const orgObj = getObject('organizations') + var children, childrenObjs; + children = []; + childrenObjs = await orgObj.find({ + filters: [ + ['parents', '=', orgId] + ], + fields: ['_id'] + }); + childrenObjs.forEach(function (child) { + return children.push(child._id); + }); + return _.uniq(children); + }, + /** + * 计算组织成员 + * @param {*} orgId + * @param {*} isIncludeParents + */ + async calculateUsers(orgId, isIncludeParents) { + const orgObj = getObject('organizations') + var orgs, userOrgs, users; + orgs = isIncludeParents ? (await this.calculateAllChildren(orgId)) : (await this.calculateChildren(orgId)); + orgs.push(orgId); + users = []; + userOrgs = await orgObj.find({ + filters: [ + ['_id', 'in', orgs] + ], + fields: ['users'] + }); + userOrgs.forEach(function (org) { + var ref; + if (org != null ? (ref = org.users) != null ? ref.length : void 0 : void 0) { + return users = users.concat(org.users); + } + }); + return _.uniq(users); + }, + + /** + * 从所有组织数据中算出当前用户有权限访问的根组织节点 + * @param {*} orgId + * @returns + */ + async getOrganizationsRootNode(ctx) { + console.log('getOrganizationsRootNode 1') + const orgObj = getObject('organizations'); + + let userFilters = null; + + if(ctx.params?.filters && lodash.isString(ctx.params.filters)){ + userFilters = JSON.parse(ctx.params.filters) + } + console.log('getOrganizationsRootNode 2') + const orgs = await orgObj.find({filters: userFilters, fields: ['_id','parent', 'children']}) + const rootIds = getTreeRootIds(orgs) + console.log('getOrganizationsRootNode 3') + let queryFields = ctx.params?.fields || ` + _id, + name, + fullname, + sort_no, + hidden, + _display:_ui{sort_no,hidden}, + parent, + children + `; + const filters = ["_id", "in", rootIds]; + console.log('api.graphql 1', queryFields) + let graphqlResult = await this.broker.call('api.graphql', { + query: ` + query { + rows: organizations(filters: ${JSON.stringify(filters)},sort: \"sort_no desc\") { + ${queryFields} + } + } + `}, + { + meta: { + user: ctx.meta.user + } + } + ) + console.log('api.graphql 2', queryFields) + let rootOrgs = graphqlResult.data.rows; + return { + data: { + rows: _.map(rootOrgs, (item)=>{ + return { + ...item, + defer: !!(item.children && item.children.length), + __reloadTag: new Date().getTime() + } + }), + count: orgs.length + } + }; + } + }, + + /** + * Service created lifecycle event handler + */ + created() { + + }, + + /** + * Service started lifecycle event handler + */ + async started() { + this.broker.logger.info('[service][organizations]===>', 'started') + }, + + /** + * Service stopped lifecycle event handler + */ + async stopped() { + + } +}; diff --git a/services/service-core-objects/main/default/tabs/.gitkeep b/services/service-core-objects/main/default/tabs/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/services/service-core-objects/main/default/tabs/admin_action_field_updates.tab.yml b/services/service-core-objects/main/default/tabs/admin_action_field_updates.tab.yml new file mode 100644 index 0000000000..826f09eee0 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_action_field_updates.tab.yml @@ -0,0 +1,21 @@ +name: admin_action_field_updates +desktop: true +icon: record +is_new_window: false +label: 字段更新 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: action_field_updates diff --git a/services/service-core-objects/main/default/tabs/admin_api_keys.tab.yml b/services/service-core-objects/main/default/tabs/admin_api_keys.tab.yml new file mode 100644 index 0000000000..e268379e82 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_api_keys.tab.yml @@ -0,0 +1,21 @@ +name: admin_api_keys +desktop: true +icon: omni_supervisor +is_new_window: false +label: API Key +mobile: true +permissions: + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: api_keys diff --git a/services/service-core-objects/main/default/tabs/admin_apps.tab.yml b/services/service-core-objects/main/default/tabs/admin_apps.tab.yml new file mode 100644 index 0000000000..779e6bd921 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_apps.tab.yml @@ -0,0 +1,21 @@ +name: admin_apps +desktop: true +icon: apps +is_new_window: false +label: 应用程序 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: apps diff --git a/services/service-core-objects/main/default/tabs/admin_audit_records.tab.yml b/services/service-core-objects/main/default/tabs/admin_audit_records.tab.yml new file mode 100644 index 0000000000..4a54591b89 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_audit_records.tab.yml @@ -0,0 +1,21 @@ +name: admin_audit_records +desktop: true +icon: medication +is_new_window: false +label: 审计日志 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: audit_records diff --git a/services/service-core-objects/main/default/tabs/admin_autonumber.tab.yml b/services/service-core-objects/main/default/tabs/admin_autonumber.tab.yml new file mode 100644 index 0000000000..269160027e --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_autonumber.tab.yml @@ -0,0 +1,21 @@ +name: admin_autonumber +desktop: true +icon: formula +is_new_window: false +label: 自动编号 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: autonumber diff --git a/services/service-core-objects/main/default/tabs/admin_business_hours.tab.yml b/services/service-core-objects/main/default/tabs/admin_business_hours.tab.yml new file mode 100644 index 0000000000..bce39d429a --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_business_hours.tab.yml @@ -0,0 +1,21 @@ +name: admin_business_hours +desktop: true +icon: date_time +is_new_window: false +label: 工作时间 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: business_hours diff --git a/services/service-core-objects/main/default/tabs/admin_categories.tab.yml b/services/service-core-objects/main/default/tabs/admin_categories.tab.yml new file mode 100644 index 0000000000..e89252459b --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_categories.tab.yml @@ -0,0 +1,21 @@ +name: admin_categories +desktop: true +icon: hierarchy +is_new_window: false +label: 流程分类 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: categories diff --git a/services/service-core-objects/main/default/tabs/admin_charts.tab.yml b/services/service-core-objects/main/default/tabs/admin_charts.tab.yml new file mode 100644 index 0000000000..7b361e884c --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_charts.tab.yml @@ -0,0 +1,21 @@ +name: admin_charts +desktop: true +icon: case +is_new_window: false +label: 图表 +mobile: true +permissions: + - permission: 'off' # 2.4禁用图表功能 + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: charts diff --git a/services/service-core-objects/main/default/tabs/admin_company.tab.yml b/services/service-core-objects/main/default/tabs/admin_company.tab.yml new file mode 100644 index 0000000000..274d9c7d12 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_company.tab.yml @@ -0,0 +1,21 @@ +name: admin_company +desktop: true +icon: account +is_new_window: false +label: 分部 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: company diff --git a/services/service-core-objects/main/default/tabs/admin_dashboard.tab.yml b/services/service-core-objects/main/default/tabs/admin_dashboard.tab.yml new file mode 100644 index 0000000000..29621551cf --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_dashboard.tab.yml @@ -0,0 +1,21 @@ +name: admin_dashboard +desktop: true +icon: dashboard_ea +is_new_window: false +label: 自定义主页 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: dashboard diff --git a/services/service-core-objects/main/default/tabs/admin_datasources.tab.yml b/services/service-core-objects/main/default/tabs/admin_datasources.tab.yml new file mode 100644 index 0000000000..c29d43d90d --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_datasources.tab.yml @@ -0,0 +1,23 @@ +name: admin_datasources +desktop: true +icon: entity +is_new_window: false +label: 外部数据源 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: datasources +license: + - platform-enterprise diff --git a/services/service-core-objects/main/default/tabs/admin_developer_graphql.tab.yml b/services/service-core-objects/main/default/tabs/admin_developer_graphql.tab.yml new file mode 100644 index 0000000000..01cf5a2637 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_developer_graphql.tab.yml @@ -0,0 +1,21 @@ +name: admin_developer_graphql +desktop: true +icon: portal +is_new_window: true +label: Graphql IDE +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: url +url: /graphql \ No newline at end of file diff --git a/services/service-core-objects/main/default/tabs/admin_developer_triggers.tab.yml b/services/service-core-objects/main/default/tabs/admin_developer_triggers.tab.yml new file mode 100644 index 0000000000..108f0c8bf1 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_developer_triggers.tab.yml @@ -0,0 +1,21 @@ +name: admin_developer_triggers +desktop: true +icon: choice +is_new_window: false +label: 触发器 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: object_triggers diff --git a/services/service-core-objects/main/default/tabs/admin_flow_positions.tab.yml b/services/service-core-objects/main/default/tabs/admin_flow_positions.tab.yml new file mode 100644 index 0000000000..61d8f02502 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_flow_positions.tab.yml @@ -0,0 +1,21 @@ +name: admin_flow_positions +desktop: true +icon: person_account +is_new_window: false +label: 审批岗位成员 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: flow_positions diff --git a/services/service-core-objects/main/default/tabs/admin_flow_roles.tab.yml b/services/service-core-objects/main/default/tabs/admin_flow_roles.tab.yml new file mode 100644 index 0000000000..b815b9fc5e --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_flow_roles.tab.yml @@ -0,0 +1,21 @@ +name: admin_flow_roles +desktop: true +icon: messaging_user +is_new_window: false +label: 审批岗位 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: flow_roles diff --git a/services/service-core-objects/main/default/tabs/admin_flows.tab.yml b/services/service-core-objects/main/default/tabs/admin_flows.tab.yml new file mode 100644 index 0000000000..2f87d9666b --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_flows.tab.yml @@ -0,0 +1,21 @@ +name: admin_flows +desktop: true +icon: environment_hub +is_new_window: false +label: 流程 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: flows diff --git a/services/service-core-objects/main/default/tabs/admin_holidays.tab.yml b/services/service-core-objects/main/default/tabs/admin_holidays.tab.yml new file mode 100644 index 0000000000..e993f81c42 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_holidays.tab.yml @@ -0,0 +1,21 @@ +name: admin_holidays +desktop: true +icon: event +is_new_window: false +label: 节假日 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: holidays diff --git a/services/service-core-objects/main/default/tabs/admin_instance_number_rules.tab.yml b/services/service-core-objects/main/default/tabs/admin_instance_number_rules.tab.yml new file mode 100644 index 0000000000..5161f3bf30 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_instance_number_rules.tab.yml @@ -0,0 +1,23 @@ +name: admin_instance_number_rules +desktop: true +icon: topic2 +is_new_window: false +label: 流程编号 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: instance_number_rules +license: + - platform-enterprise diff --git a/services/service-core-objects/main/default/tabs/admin_instances_statistic.tab.yml b/services/service-core-objects/main/default/tabs/admin_instances_statistic.tab.yml new file mode 100644 index 0000000000..ed3496c7b4 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_instances_statistic.tab.yml @@ -0,0 +1,24 @@ +name: admin_instances_statistic +desktop: true +icon: metrics +is_new_window: false +label: 效率统计 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: instances_statistic +license: + - platform-enterprise + diff --git a/services/service-core-objects/main/default/tabs/admin_metadata.tab.yml b/services/service-core-objects/main/default/tabs/admin_metadata.tab.yml new file mode 100644 index 0000000000..c85de7da87 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_metadata.tab.yml @@ -0,0 +1,22 @@ +name: admin_metadata +desktop: true +icon: discounts +is_new_window: false +is_use_iframe: false +label: 元数据 +mobile: true +page: metadata +type: page +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin \ No newline at end of file diff --git a/services/service-core-objects/main/default/tabs/admin_object_validation_rules.tab.yml b/services/service-core-objects/main/default/tabs/admin_object_validation_rules.tab.yml new file mode 100644 index 0000000000..bf8ed773ab --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_object_validation_rules.tab.yml @@ -0,0 +1,21 @@ +name: admin_object_validation_rules +desktop: true +icon: textbox +is_new_window: false +label: 对象验证规则 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: object_validation_rules diff --git a/services/service-core-objects/main/default/tabs/admin_object_webhooks.tab.yml b/services/service-core-objects/main/default/tabs/admin_object_webhooks.tab.yml new file mode 100644 index 0000000000..f6a4bae6a5 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_object_webhooks.tab.yml @@ -0,0 +1,21 @@ +name: admin_object_webhooks +desktop: true +icon: output +is_new_window: false +label: WebHooks +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: object_webhooks diff --git a/services/service-core-objects/main/default/tabs/admin_object_workflows.tab.yml b/services/service-core-objects/main/default/tabs/admin_object_workflows.tab.yml new file mode 100644 index 0000000000..8622020570 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_object_workflows.tab.yml @@ -0,0 +1,21 @@ +name: admin_object_workflows +desktop: true +icon: link +is_new_window: false +label: 对象流程映射 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: object_workflows diff --git a/services/service-core-objects/main/default/tabs/admin_objects.tab.yml b/services/service-core-objects/main/default/tabs/admin_objects.tab.yml new file mode 100644 index 0000000000..41fb9e947b --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_objects.tab.yml @@ -0,0 +1,21 @@ +name: admin_objects +desktop: true +icon: orders +is_new_window: false +label: 对象 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: objects diff --git a/services/service-core-objects/main/default/tabs/admin_organizations.tab.yml b/services/service-core-objects/main/default/tabs/admin_organizations.tab.yml new file mode 100644 index 0000000000..836bb0ed25 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_organizations.tab.yml @@ -0,0 +1,21 @@ +name: admin_organizations +desktop: true +icon: team_member +is_new_window: false +label: 组织结构 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'on' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: organizations diff --git a/services/service-core-objects/main/default/tabs/admin_pages.tab.yml b/services/service-core-objects/main/default/tabs/admin_pages.tab.yml new file mode 100644 index 0000000000..eb7329239a --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_pages.tab.yml @@ -0,0 +1,21 @@ +name: admin_pages +desktop: true +icon: contract +is_new_window: false +label: 微页面 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: pages diff --git a/services/service-core-objects/main/default/tabs/admin_permission_set.tab.yml b/services/service-core-objects/main/default/tabs/admin_permission_set.tab.yml new file mode 100644 index 0000000000..a81b8f18d7 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_permission_set.tab.yml @@ -0,0 +1,21 @@ +name: admin_permission_set +desktop: true +icon: groups +is_new_window: false +label: 简档 & 权限集 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: permission_set diff --git a/services/service-core-objects/main/default/tabs/admin_personal_information.tab.yml b/services/service-core-objects/main/default/tabs/admin_personal_information.tab.yml new file mode 100644 index 0000000000..eab5778271 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_personal_information.tab.yml @@ -0,0 +1,21 @@ +name: admin_personal_information +desktop: true +icon: user_role +is_new_window: false +label: 个人资料 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'on' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: url +url: /app/admin/space_users/view/${context.user.spaceUserId} diff --git a/services/service-core-objects/main/default/tabs/admin_process_definition.tab.yml b/services/service-core-objects/main/default/tabs/admin_process_definition.tab.yml new file mode 100644 index 0000000000..267b07090b --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_process_definition.tab.yml @@ -0,0 +1,21 @@ +name: admin_process_definition +desktop: true +icon: approval +is_new_window: false +label: 批准过程 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: process_definition diff --git a/services/service-core-objects/main/default/tabs/admin_process_delegation_rules.tab.yml b/services/service-core-objects/main/default/tabs/admin_process_delegation_rules.tab.yml new file mode 100644 index 0000000000..b4e0c47d32 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_process_delegation_rules.tab.yml @@ -0,0 +1,24 @@ +name: admin_process_delegation_rules +desktop: true +icon: rtc_presence +is_new_window: false +label: 流程委托 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'on' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: process_delegation_rules +license: + - platform-professional + - platform-enterprise diff --git a/services/service-core-objects/main/default/tabs/admin_queue_import.tab.yml b/services/service-core-objects/main/default/tabs/admin_queue_import.tab.yml new file mode 100644 index 0000000000..1d6fc2ceb2 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_queue_import.tab.yml @@ -0,0 +1,21 @@ +name: admin_queue_import +desktop: true +icon: product_consumed +is_new_window: false +label: 数据导入 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: queue_import diff --git a/services/service-core-objects/main/default/tabs/admin_roles.tab.yml b/services/service-core-objects/main/default/tabs/admin_roles.tab.yml new file mode 100644 index 0000000000..cbdf1d5819 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_roles.tab.yml @@ -0,0 +1,21 @@ +name: admin_roles +desktop: true +icon: job_family +is_new_window: false +label: 角色 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: roles diff --git a/services/service-core-objects/main/default/tabs/admin_sessions.tab.yml b/services/service-core-objects/main/default/tabs/admin_sessions.tab.yml new file mode 100644 index 0000000000..31d06d2535 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_sessions.tab.yml @@ -0,0 +1,21 @@ +name: admin_sessions +desktop: true +icon: queue +is_new_window: false +label: 登录会话 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: sessions diff --git a/services/service-core-objects/main/default/tabs/admin_space_info.tab.yml b/services/service-core-objects/main/default/tabs/admin_space_info.tab.yml new file mode 100644 index 0000000000..51a624b141 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_space_info.tab.yml @@ -0,0 +1,21 @@ +name: admin_space_info +desktop: true +icon: household +is_new_window: false +label: 公司 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: url +url: /app/admin/spaces/view/${global.user.spaceId} diff --git a/services/service-core-objects/main/default/tabs/admin_space_user_info.tab.yml b/services/service-core-objects/main/default/tabs/admin_space_user_info.tab.yml new file mode 100644 index 0000000000..1fdefb099e --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_space_user_info.tab.yml @@ -0,0 +1,22 @@ +name: admin_space_user_info +desktop: true +icon: people +is_new_window: false +label: 我的资料 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'on' + permission_set: user + - permission: 'on' + permission_set: customer + - permission: 'on' + permission_set: supplier + - permission: 'on' + permission_set: organization_admin + - permission: 'on' + permission_set: workflow_admin +type: url +url: /app/admin/page/space_user_info_record?id=${global.user.spaceUserId} +# url: /app/admin/space_users/view/${global.user.spaceUserId}?ref=users diff --git a/services/service-core-objects/main/default/tabs/admin_space_user_signs.tab.yml b/services/service-core-objects/main/default/tabs/admin_space_user_signs.tab.yml new file mode 100644 index 0000000000..fe4a0ea132 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_space_user_signs.tab.yml @@ -0,0 +1,25 @@ +name: admin_space_user_signs +desktop: true +icon: carousel +is_new_window: false +label: 图片签名 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: space_user_signs +license: + - platform-professional + - platform-enterprise + diff --git a/services/service-core-objects/main/default/tabs/admin_space_users.tab.yml b/services/service-core-objects/main/default/tabs/admin_space_users.tab.yml new file mode 100644 index 0000000000..ec75fd5d42 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_space_users.tab.yml @@ -0,0 +1,21 @@ +name: admin_space_users +desktop: true +icon: user +is_new_window: false +label: 人员 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'on' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: space_users diff --git a/services/service-core-objects/main/default/tabs/admin_steedos_packages.tab.yml b/services/service-core-objects/main/default/tabs/admin_steedos_packages.tab.yml new file mode 100644 index 0000000000..fa6aee86c6 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_steedos_packages.tab.yml @@ -0,0 +1,21 @@ +name: admin_steedos_packages +desktop: true +icon: all +is_new_window: false +label: 软件包 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: steedos_packages diff --git a/services/service-core-objects/main/default/tabs/admin_tabs.tab.yml b/services/service-core-objects/main/default/tabs/admin_tabs.tab.yml new file mode 100644 index 0000000000..099e51697b --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_tabs.tab.yml @@ -0,0 +1,21 @@ +name: admin_tabs +desktop: true +icon: timeslot +is_new_window: false +label: 选项卡 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: tabs diff --git a/services/service-core-objects/main/default/tabs/admin_web_forms.tab.yml b/services/service-core-objects/main/default/tabs/admin_web_forms.tab.yml new file mode 100644 index 0000000000..a553e807c2 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_web_forms.tab.yml @@ -0,0 +1,21 @@ +name: admin_web_forms +desktop: true +icon: display_text +is_new_window: false +label: 在线表单 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: web_forms diff --git a/services/service-core-objects/main/default/tabs/admin_webhooks.tab.yml b/services/service-core-objects/main/default/tabs/admin_webhooks.tab.yml new file mode 100644 index 0000000000..e968f52ea3 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_webhooks.tab.yml @@ -0,0 +1,21 @@ +name: admin_webhooks +desktop: true +icon: sales_cadence +is_new_window: false +label: 流程触发器 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: webhooks diff --git a/services/service-core-objects/main/default/tabs/admin_workflow_notifications.tab.yml b/services/service-core-objects/main/default/tabs/admin_workflow_notifications.tab.yml new file mode 100644 index 0000000000..31142b8cc9 --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_workflow_notifications.tab.yml @@ -0,0 +1,21 @@ +name: admin_workflow_notifications +desktop: true +icon: quick_text +is_new_window: false +label: 消息提醒 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: workflow_notifications diff --git a/services/service-core-objects/main/default/tabs/admin_workflow_outbound_messages.tab.yml b/services/service-core-objects/main/default/tabs/admin_workflow_outbound_messages.tab.yml new file mode 100644 index 0000000000..30dd06480c --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_workflow_outbound_messages.tab.yml @@ -0,0 +1,21 @@ +name: admin_workflow_outbound_messages +desktop: true +icon: app +is_new_window: false +label: 出站消息 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: workflow_outbound_messages diff --git a/services/service-core-objects/main/default/tabs/admin_workflow_rule.tab.yml b/services/service-core-objects/main/default/tabs/admin_workflow_rule.tab.yml new file mode 100644 index 0000000000..c7b09fa5cb --- /dev/null +++ b/services/service-core-objects/main/default/tabs/admin_workflow_rule.tab.yml @@ -0,0 +1,21 @@ +name: admin_workflow_rule +desktop: true +icon: maintenance_work_rule +is_new_window: false +label: 工作流规则 +mobile: true +permissions: + - permission: 'on' + permission_set: admin + - permission: 'off' + permission_set: user + - permission: 'off' + permission_set: customer + - permission: 'off' + permission_set: supplier + - permission: 'off' + permission_set: organization_admin + - permission: 'off' + permission_set: workflow_admin +type: object +object: workflow_rule diff --git a/services/service-core-objects/package.service.js b/services/service-core-objects/package.service.js index f4b551ad38..0f1563fff2 100644 --- a/services/service-core-objects/package.service.js +++ b/services/service-core-objects/package.service.js @@ -2,7 +2,7 @@ * @Author: sunhaolin@hotoa.com * @Date: 2022-12-02 13:17:06 * @LastEditors: baozhoutao@steedos.com - * @LastEditTime: 2025-01-15 16:00:15 + * @LastEditTime: 2025-01-15 18:34:50 * @Description: */ "use strict"; @@ -45,7 +45,7 @@ module.exports = { /** * Dependencies */ - dependencies: ['~packages-standard-objects'], + dependencies: [], /** * Actions @@ -169,13 +169,15 @@ module.exports = { /** * Service created lifecycle event handler */ - created() {}, + created() { + console.log(`created`, packageName) + }, /** * Service started lifecycle event handler */ async started() { - + console.log(`started`, packageName) }, /** diff --git a/services/service-metadata-server/index.js b/services/service-metadata-server/index.js index 0770866f08..846e3b1445 100644 --- a/services/service-metadata-server/index.js +++ b/services/service-metadata-server/index.js @@ -1,8 +1,8 @@ /* * @Author: baozhoutao@hotoa.com * @Date: 2022-03-28 14:16:03 - * @LastEditors: 孙浩林 sunhaolin@steedos.com - * @LastEditTime: 2024-05-15 15:23:49 + * @LastEditors: baozhoutao@steedos.com + * @LastEditTime: 2025-01-17 10:56:40 * @Description: */ @@ -46,40 +46,72 @@ module.exports = { * Service created lifecycle event handler */ async created() { + console.log(`metadata-server created.....`) this.broker.createService(metadata); + console.log('metadata service created'); this.broker.createService(packages); + console.log('packages service created'); this.broker.createService(apps); + console.log('apps service created'); this.broker.createService(objects); + console.log('objects service created'); this.broker.createService(layouts); + console.log('layouts service created'); this.broker.createService(permissionsets); + console.log('permissionsets service created'); this.broker.createService(tabs); + console.log('tabs service created'); this.broker.createService(translations); + console.log('translations service created'); this.broker.createService(triggers); + console.log('triggers service created'); this.broker.createService(queriesService); + console.log('queriesService created'); this.broker.createService(chartsService); + console.log('chartsService created'); this.broker.createService(pagesService); + console.log('pagesService created'); this.broker.createService(shareRulesService); + console.log('shareRulesService created'); this.broker.createService(restrictionRulesService); + console.log('restrictionRulesService created'); this.broker.createService(permissionFieldsService); + console.log('permissionFieldsService created'); this.broker.createService(processService); + console.log('processService created'); this.broker.createService(processTriggerService); + console.log('processTriggerService created'); this.broker.createService(objectTriggerService); + console.log('objectTriggerService created'); this.broker.createService(permissionTabsService); + console.log('permissionTabsService created'); this.broker.createService(importService); + console.log('importService created'); this.broker.createService(clientJSService); + console.log('clientJSService created'); this.broker.createService(questionService); + console.log('questionService created'); this.broker.createService(dashboardService); + console.log('dashboardService created'); this.broker.createService(printService); + console.log('printService created'); this.broker.createService(objectFunctionService); + console.log('objectFunctionService created'); this.broker.createService(approvalProcessService); + console.log('approvalProcessService created'); this.broker.createService(flowRoleService); + console.log('flowRoleService created'); this.broker.createService(roleService); + console.log('roleService created'); this.broker.createService(validationRuleService); + console.log('validationRuleService created'); this.broker.createService(workflowService); + console.log('workflowService created'); }, async started() { await this.broker.waitForServices(['metadata', 'apps', 'objects', 'permissionsets', 'translations', 'triggers'], null, 10); + console.log(`metadata-server started.....`) } } \ No newline at end of file diff --git a/services/service-metadata-translations/src/translations.service.ts b/services/service-metadata-translations/src/translations.service.ts index 5c177240be..e1ab89f9d4 100644 --- a/services/service-metadata-translations/src/translations.service.ts +++ b/services/service-metadata-translations/src/translations.service.ts @@ -12,7 +12,7 @@ module.exports = { /** * Dependencies */ - dependencies: ['metadata'], + dependencies: [], /** * Actions @@ -111,14 +111,14 @@ module.exports = { * Service created lifecycle event handler */ created() { - + console.log('=================>mTTT<==================') }, /** * Service started lifecycle event handler */ async started() { - + console.log('=================> mTTT started <==================') }, /** diff --git a/services/service-metadata-triggers/src/triggers.service.ts b/services/service-metadata-triggers/src/triggers.service.ts index eefea42735..b427a6b5c5 100644 --- a/services/service-metadata-triggers/src/triggers.service.ts +++ b/services/service-metadata-triggers/src/triggers.service.ts @@ -112,7 +112,7 @@ module.exports = { /** * Dependencies */ - dependencies: ['metadata'], + dependencies: [], /** * Actions @@ -202,6 +202,7 @@ module.exports = { * Service created lifecycle event handler */ async created() { + console.log('triggers created....') this.nodes = []; this.metrics = {}; @@ -212,7 +213,7 @@ module.exports = { * Service started lifecycle event handler */ async started() { - + console.log('triggers started....') }, /** diff --git a/services/service-metadata-triggers/src/triggers2.service.ts b/services/service-metadata-triggers/src/triggers2.service.ts index 1059500c78..27ca9c5523 100644 --- a/services/service-metadata-triggers/src/triggers2.service.ts +++ b/services/service-metadata-triggers/src/triggers2.service.ts @@ -1,8 +1,8 @@ /* * @Author: sunhaolin@hotoa.com * @Date: 2023-04-11 11:50:53 - * @LastEditors: 孙浩林 sunhaolin@steedos.com - * @LastEditTime: 2023-08-08 12:30:59 + * @LastEditors: baozhoutao@steedos.com + * @LastEditTime: 2025-01-17 14:19:27 * @Description: */ "use strict"; @@ -24,11 +24,6 @@ module.exports = { triggers: [] }, - /** - * Dependencies - */ - dependencies: ['metadata'], - /** * Actions */ @@ -115,14 +110,14 @@ module.exports = { * Service created lifecycle event handler */ async created() { - + console.log('triggers created....') }, /** * Service started lifecycle event handler */ async started() { - + console.log('triggers started....') }, /** diff --git a/services/service-objectql/package.service.js b/services/service-objectql/package.service.js index c486edd044..ea09e63853 100644 --- a/services/service-objectql/package.service.js +++ b/services/service-objectql/package.service.js @@ -2,7 +2,7 @@ * @Author: sunhaolin@hotoa.com * @Date: 2023-03-23 15:12:14 * @LastEditors: baozhoutao@steedos.com - * @LastEditTime: 2024-05-11 13:44:56 + * @LastEditTime: 2025-01-16 16:55:42 * @Description: */ "use strict"; @@ -12,6 +12,8 @@ const { getObject } = objectql; const { ObjectId } = require('mongodb'); +const _ = require('lodash'); + /** * @typedef {import('moleculer').Context} Context Moleculer's Context */ diff --git a/services/service-package-loader/index.js b/services/service-package-loader/index.js index 6e1b12fd7f..4d0934bb83 100644 --- a/services/service-package-loader/index.js +++ b/services/service-package-loader/index.js @@ -222,7 +222,7 @@ module.exports = { } let publicPath = path.join(packagePath, 'public'); try { - if (!fs.existsSync(publicPath) ||this.settings.loadedPackagePublicFiles || typeof WebApp == 'undefined') { + if (!fs.existsSync(publicPath) || this.settings.loadedPackagePublicFiles) { return; } } catch (error) { @@ -235,9 +235,6 @@ module.exports = { try { const router = require('@steedos/router').staticRouter(); let routerPath = ""; - if (__meteor_runtime_config__.ROOT_URL_PATH_PREFIX) { - routerPath = __meteor_runtime_config__.ROOT_URL_PATH_PREFIX; - } const cacheTime = 86400000 * 1; // one day router.use(routerPath, express.static(publicPath, { maxAge: cacheTime })); // WebApp.connectHandlers.use(router); @@ -286,9 +283,9 @@ module.exports = { console.log(`service ${this.name} started`); return; } - this.broker.waitForServices("steedos-server").then(async () => { - await this.loadDataOnServiceStarted() - }); + // this.broker.waitForServices("steedos-server").then(async () => { + // await this.loadDataOnServiceStarted() + // }); if (true != isUnmanaged) { // 受管软件包加载元数据文件,非受管软件包不加载 @@ -311,7 +308,7 @@ module.exports = { await this.loadPackageMetadataServices(_path); - // await this.loadPackagePublicFiles(_path); + await this.loadPackagePublicFiles(_path); this.started = true; const endTime = moment(); console.log(`service ${this.name} started:`, `${endTime.diff(startTime, 'seconds', true)}s`); diff --git a/services/service-package-registry/main/default/manager/loader.js b/services/service-package-registry/main/default/manager/loader.js index 0a3f4c5e33..e5f2a68d62 100644 --- a/services/service-package-registry/main/default/manager/loader.js +++ b/services/service-package-registry/main/default/manager/loader.js @@ -101,7 +101,6 @@ const appendToPackagesConfig = (packageName, options, actionName)=>{ const loadPackages = async ()=>{ let schema = objectql.getSteedosSchema(); - let broker = schema.broker; const packages = loadPackagesConfig(); for (const packageName in packages) { const package = packages[packageName] @@ -116,7 +115,7 @@ const loadPackages = async ()=>{ } } } catch (error) { - broker.logger.error(`start package ${packageName} error: ${error.message}`) + console.error(`start package ${packageName} error: ${error.message}`) } }else if(package.local !== true){ @@ -134,7 +133,7 @@ const loadPackages = async ()=>{ const packageInfo = await loadPackage(packageName); appendToPackagesConfig(packageInfo.name, {version: packageInfo.version, description: packageInfo.description, local: false}); } catch (error) { - broker.logger.error(`start package ${packageName} error: ${error.message}`) + console.error(`start package ${packageName} error: ${error.message}`) } } }else if(package.local === true && package.static != true){ @@ -149,7 +148,7 @@ const loadPackages = async ()=>{ appendToPackagesConfig(packageInfo.name, {version: packageInfo.version, description: packageInfo.description, local: true}); } } catch (error) { - broker.logger.error(`start package ${packageName} error: ${error.message}`) + console.error(`start package ${packageName} error: ${error.message}`) } } } @@ -183,7 +182,7 @@ const destroyExistThePackageService = async (packageInfo)=>{ }); } if (svc) { - broker.logger.info(`Destroy previous '${schema.name}' service...`); + console.info(`Destroy previous '${schema.name}' service...`); await broker.destroyService(svc); } } @@ -249,7 +248,7 @@ const loadPackage = async (packageName, packagePath)=>{ let schema = objectql.getSteedosSchema(); let broker = schema.broker; if(!fs.existsSync(packagePath) || !fs.existsSync(path.join(packagePath, 'package.json'))){ - broker.logger.warn(`已经从 steedos-packages.yml 文件中删除无效的软件包配置 ${packageName} : ${packagePath}`) + console.warn(`已经从 steedos-packages.yml 文件中删除无效的软件包配置 ${packageName} : ${packagePath}`) removePackageConfig(packageName); return ; } diff --git a/services/service-package-registry/package.service.js b/services/service-package-registry/package.service.js index 940092fac8..f28d9b21d2 100644 --- a/services/service-package-registry/package.service.js +++ b/services/service-package-registry/package.service.js @@ -1,8 +1,8 @@ /* * @Author: baozhoutao@steedos.com * @Date: 2022-07-16 15:58:42 - * @LastEditors: 孙浩林 sunhaolin@steedos.com - * @LastEditTime: 2024-01-08 15:36:18 + * @LastEditors: baozhoutao@steedos.com + * @LastEditTime: 2025-01-15 19:42:35 * @Description: */ "use strict"; @@ -40,6 +40,7 @@ module.exports = { * Service created lifecycle event handler */ async created() { + console.log(`created`, packageName) this.broker.createService(require('./project.package.service')); }, @@ -47,6 +48,7 @@ module.exports = { * Service started lifecycle event handler */ async started() { + console.log(`started`, packageName) }, /** diff --git a/services/service-package-registry/project.package.service.js b/services/service-package-registry/project.package.service.js index b158bfc1ba..f529641e30 100644 --- a/services/service-package-registry/project.package.service.js +++ b/services/service-package-registry/project.package.service.js @@ -42,7 +42,7 @@ module.exports = { /** * Dependencies */ - dependencies: ['~packages-standard-objects'], + dependencies: ['@steedos/service-packages'], /** * Actions @@ -556,14 +556,14 @@ module.exports = { * Service created lifecycle event handler */ async created() { - + console.log(`created`, "@steedos/service-project") }, /** * Service started lifecycle event handler */ async started() { - + console.log(`started`, "@steedos/service-project") const PACKAGE_INSTALL_NODE = process.env.PACKAGE_INSTALL_NODE if(PACKAGE_INSTALL_NODE){ await this.broker.call('metadata.add', {key: `#package_install_node.${this.broker.nodeID}`, data: {nodeID: PACKAGE_INSTALL_NODE}}, {meta: {}}) diff --git a/services/service-packages/index.js b/services/service-packages/index.js index b39f22722f..771db8cfaa 100644 --- a/services/service-packages/index.js +++ b/services/service-packages/index.js @@ -179,9 +179,9 @@ module.exports = { this.countTimeoutId = setTimeout(async()=>{ const startingPackages = await Register.filterList(this.broker, {key: getStartingCacherKey()}); const startedPackages = await Register.filterList(this.broker, {key: getStartedCacherKey()}); - // console.log(`startingPackages`, startingPackages.length, startedPackages.length); + console.log(`startingPackages`, startingPackages.length, startedPackages.length); if(startingPackages.length <= startedPackages.length){ - // console.log(`broadcast $packages.changed========`) + console.log(`broadcast $packages.changed========`) this.broker.broadcast("$packages.changed", {}); } }, 1000 * 3) @@ -193,20 +193,20 @@ module.exports = { * Service created lifecycle event handler */ async created() { - + console.log('created', packageName) }, /** * Service started lifecycle event handler */ async started() { - + console.log('started', packageName) }, /** * Service stopped lifecycle event handler */ async stopped() { - + console.log('stopped', packageName) } }; diff --git a/services/service-plugin-amis/public/tailwind/tailwind-steedos.css b/services/service-plugin-amis/public/tailwind/tailwind-steedos.css index 226a6217f4..1b36e53cc2 100644 --- a/services/service-plugin-amis/public/tailwind/tailwind-steedos.css +++ b/services/service-plugin-amis/public/tailwind/tailwind-steedos.css @@ -95,14 +95,14 @@ float: right } -.m-1 { - margin: 0.25rem -} - .m-0 { margin: 0px } +.m-1 { + margin: 0.25rem +} + .-m-8 { margin: -2rem } @@ -126,6 +126,14 @@ margin-right: -2.75rem } +.mb-0 { + margin-bottom: 0px +} + +.ml-2 { + margin-left: 0.5rem +} + .mt-3 { margin-top: 0.75rem } @@ -154,14 +162,6 @@ margin-right: 1.75rem } -.mb-0 { - margin-bottom: 0px -} - -.ml-2 { - margin-left: 0.5rem -} - .block { display: block } @@ -194,14 +194,14 @@ display: none } -.h-9 { - height: 2.25rem -} - .h-full { height: 100% } +.h-9 { + height: 2.25rem +} + .h-0 { height: 0px } @@ -210,6 +210,10 @@ height: 1.75rem } +.w-96 { + width: 24rem +} + .w-9 { width: 2.25rem } @@ -226,18 +230,14 @@ width: 80% } -.w-96 { - width: 24rem +.min-w-\[200px\] { + min-width: 200px } .min-w-\[240px\] { min-width: 240px } -.min-w-\[200px\] { - min-width: 200px -} - .max-w-4xl { max-width: 56rem } @@ -324,17 +324,12 @@ border-bottom-width: 1px } -.border-r { - border-right-width: 1px -} - .border-b { border-bottom-width: 1px } -.border-gray-300 { - --tw-border-opacity: 1; - border-color: rgb(209 213 219 / var(--tw-border-opacity)) +.border-r { + border-right-width: 1px } .border-gray-200 { @@ -342,19 +337,24 @@ border-color: rgb(229 231 235 / var(--tw-border-opacity)) } +.border-gray-300 { + --tw-border-opacity: 1; + border-color: rgb(209 213 219 / var(--tw-border-opacity)) +} + .bg-white { --tw-bg-opacity: 1; background-color: rgb(255 255 255 / var(--tw-bg-opacity)) } -.bg-gray-50 { +.bg-gray-100 { --tw-bg-opacity: 1; - background-color: rgb(249 250 251 / var(--tw-bg-opacity)) + background-color: rgb(243 244 246 / var(--tw-bg-opacity)) } -.bg-gray-100 { +.bg-gray-50 { --tw-bg-opacity: 1; - background-color: rgb(243 244 246 / var(--tw-bg-opacity)) + background-color: rgb(249 250 251 / var(--tw-bg-opacity)) } .bg-none { @@ -365,18 +365,23 @@ padding: 0px } -.p-4 { - padding: 1rem -} - .p-2 { padding: 0.5rem } +.p-4 { + padding: 1rem +} + .p-1 { padding: 0.25rem } +.py-1 { + padding-top: 0.25rem; + padding-bottom: 0.25rem +} + .px-2 { padding-left: 0.5rem; padding-right: 0.5rem @@ -407,11 +412,6 @@ padding-right: 0px } -.py-1 { - padding-top: 0.25rem; - padding-bottom: 0.25rem -} - .py-4 { padding-top: 1rem; padding-bottom: 1rem @@ -449,14 +449,14 @@ line-height: 1 } -.text-gray-600 { +.text-black { --tw-text-opacity: 1; - color: rgb(75 85 99 / var(--tw-text-opacity)) + color: rgb(0 0 0 / var(--tw-text-opacity)) } -.text-black { +.text-gray-300 { --tw-text-opacity: 1; - color: rgb(0 0 0 / var(--tw-text-opacity)) + color: rgb(209 213 219 / var(--tw-text-opacity)) } .text-gray-500 { @@ -464,9 +464,9 @@ color: rgb(107 114 128 / var(--tw-text-opacity)) } -.text-gray-300 { +.text-gray-600 { --tw-text-opacity: 1; - color: rgb(209 213 219 / var(--tw-text-opacity)) + color: rgb(75 85 99 / var(--tw-text-opacity)) } .underline { diff --git a/services/service-rest/package.service.js b/services/service-rest/package.service.js index 9c89e4a746..42ddcb758d 100644 --- a/services/service-rest/package.service.js +++ b/services/service-rest/package.service.js @@ -1,8 +1,8 @@ /* * @Author: sunhaolin@hotoa.com * @Date: 2023-03-23 15:12:14 - * @LastEditors: 孙浩林 sunhaolin@steedos.com - * @LastEditTime: 2024-05-21 13:22:25 + * @LastEditors: baozhoutao@steedos.com + * @LastEditTime: 2025-01-17 16:12:30 * @Description: */ "use strict"; @@ -534,6 +534,7 @@ module.exports = { const userSession = ctx.meta.user; const query = {} if (fields) { + console.log(`fields:`, fields) query.fields = JSON.parse(fields) } const doc = await this.findOne(objectName, id, query, userSession) diff --git a/services/service-steedos-core/package.json b/services/service-steedos-core/package.json new file mode 100644 index 0000000000..1bc0784bc5 --- /dev/null +++ b/services/service-steedos-core/package.json @@ -0,0 +1,75 @@ +{ + "name": "@steedos/service-steedos-core", + "main": "package.service.js", + "version": "3.0.0-beta.2", + "private": false, + "repository": "https://github.com/steedos/steedos-platform.git", + "description": "", + "engines": { + "node": ">=12" + }, + "author": "steedos", + "license": "MIT", + "dependencies": { + "@steedos-builder/amis-editor": "6.3.0-beta.13", + "@steedos/ee_sso-oidc": "3.0.0-beta.2", + "@steedos/service-analytics": "3.0.0-beta.2", + "@steedos/service-ancillary": "3.0.0-beta.2", + "@steedos/service-charts": "3.0.0-beta.2", + "@steedos/service-i18n": "3.0.0-beta.2", + "@steedos/service-identity-jwt": "3.0.0-beta.2", + "@steedos/service-metadata-server": "3.0.0-beta.2", + "@steedos/service-objectql": "3.0.0-beta.2", + "@steedos/service-package-loader": "3.0.0-beta.2", + "@steedos/service-package-registry": "3.0.0-beta.2", + "@steedos/service-package-tool": "3.0.0-beta.2", + "@steedos/service-pages": "3.0.0-beta.2", + "@steedos/service-rest": "3.0.0-beta.2", + "@steedos/service-saas": "3.0.0-beta.2", + "@steedos/service-sentry": "3.0.0-beta.2", + "@steedos/service-steedos-server": "3.0.0-beta.2", + "@steedos/steedos-plugin-schema-builder": "3.0.0-beta.2", + "@steedos/unpkg": "3.0.0-beta.2", + "@steedos/workflow_time_trigger": "3.0.0-beta.2", + "aliyun-sdk": "1.12.3", + "async-retry": "^1.3.1", + "axios": "^0.21.1", + "bcrypt": "^5.1.0", + "bignumber.js": "^9.0.1", + "cbor-x": "^1.5.3", + "chalk": "^4.1.2", + "cross-env": "^7.0.3", + "crypto-js": "^4.0.0", + "dotenv-flow": "^3.1.0", + "ioredis": "^4.22.0", + "isomorphic-fetch": "^3.0.0", + "js-base64": "^3.6.1", + "keyv": "^4.0.3", + "lodash": "^4.17.21", + "md5": "^2.3.0", + "moleculer": "^0.14.25", + "moleculer-cron": "^0.0.2", + "moleculer-repl": "^0.7.1", + "moment": "^2.29.1", + "mysql": "^2.18.1", + "nats": "^2.13.1", + "node-schedule": "^2.0.0", + "node-xlsx": "^0.16.1", + "notepack.io": "^3.0.1", + "pg": "^8.10.0", + "promise-queue": "^2.2.5", + "qrcode": "^1.4.4", + "query-string": "^7.0.0", + "randomcolor": "^0.6.2", + "randomstring": "^1.2.1", + "redlock": "^4.2.0", + "steedos-cli": "3.0.0-beta.2", + "tslib": "^2.4.0", + "validator": "^13.6.0" + }, + "homepage": "https://www.steedos.com", + "publishConfig": { + "access": "public" + }, + "gitHead": "72fa51bda8ff714d5fdb933bf0a45ea4cb82df74" +} diff --git a/services/service-steedos-core/package.service.js b/services/service-steedos-core/package.service.js new file mode 100644 index 0000000000..9372eacd38 --- /dev/null +++ b/services/service-steedos-core/package.service.js @@ -0,0 +1,246 @@ +/* + * @Author: yinlianghui@steedos.com + * @Date: 2022-07-20 21:31:37 + * @LastEditors: baozhoutao@steedos.com + * @LastEditTime: 2025-01-17 10:21:24 + * @Description: + */ +"use strict"; +const project = require('./package.json'); +const serviceName = project.name; +const validator = require('validator'); +const objectql = require('@steedos/objectql'); + +const packageLoader = require('@steedos/service-package-loader'); +/** + * @typedef {import('moleculer').Context} Context Moleculer's Context + * 软件包服务启动后也需要抛出事件。 + */ +module.exports = { + name: serviceName, + namespace: "steedos", + /** + * Settings + */ + settings: { + packageInfo: { + path: __dirname, + name: serviceName + }, + jwt: { + enable: validator.toBoolean(process.env.STEEDOS_IDENTITY_JWT_ENABLED || 'false', true), + }, + unpkg:{ + enable: validator.toBoolean(process.env.STEEDOS_UNPKG_ENABLE_LOCAL || 'false', true) + }, + saas: { + enable: validator.toBoolean(process.env.STEEDOS_TENANT_ENABLE_SAAS || 'false', true) + }, + oidc: { + enable: validator.toBoolean(process.env.STEEDOS_IDENTITY_OIDC_ENABLED || 'false', true), + } + }, + + /** + * Dependencies + */ + dependencies: [], + /** + * Actions + */ + actions: { + + }, + + /** + * Events + */ + events: { + + "steedos-server.started": { + async handler() { + if (process.env.B6_OIDC_ENABLED) { + objectql.getSteedosConfig().setTenant({ + disabled_account_register: true, + sso_providers: { + oidc: { + name: process.env.B6_OIDC_NAME, + label: process.env.B6_OIDC_LABEL, + logo: process.env.B6_OIDC_LOGO, + url: process.env.B6_OIDC_URL || '/api/v6/oidc/default/login' + } + } + }); + } + + } + }, + }, + + /** + * Methods + */ + methods: { + + }, + + /** + * Service created lifecycle event handler + */ + async created() { + }, + + /** + * Service started lifecycle event handler + */ + async started(ctx) { + + require('@steedos/objectql').getSteedosSchema(this.broker); + + // 创建一个空的~packages-standard-objects 服务 + this.broker.createService({ + name: '~packages-standard-objects', + mixins: [], + settings: { packageInfo: { + path: './', + }, }, + started: function() { + }, + created: function(){ + } + }); + + // 国际化 + this.broker.createService(require("@steedos/service-i18n")); + + // 启动 元数据服务 + this.broker.createService(require("@steedos/service-metadata-server")); + + this.broker.createService(require("@steedos/service-cachers-manager")); + + + this.broker.createService(require("@steedos/data-import")); + + this.broker.createService(require("@steedos/service-core-objects")); + + this.broker.createService(require("@steedos/service-objectql")); + + // rest api + this.broker.createService(require("@steedos/service-rest")); + + //ApiGateway + this.broker.createService(require('@steedos/service-api')); + + this.broker.createService(require("@steedos/webapp-public")); + + + // this.broker.createService(require("@steedos/accounts")); + + this.broker.createService(require("@steedos/service-accounts")); + + this.broker.createService(require("@steedos/service-pages")); + + // this.broker.createService(require("@steedos/service-workflow")); + + this.broker.createService(require("@steedos/service-plugin-amis")); + + // this.broker.createService(require("@steedos/service-files")); + + // this.broker.createService(require("@steedos/service-ancillary")); + + // 故障报告服务 + // this.broker.createService(require("@steedos/service-sentry")); + + + + // 启动 加载软件包服务 + this.broker.createService(require("@steedos/service-package-registry")); + + // 启动 软件包安装、卸载、重载等操作 + this.broker.createService(require("@steedos/service-package-tool")); + + // if(this.settings.jwt.enable){ + // this.broker.createService(require("@steedos/service-identity-jwt")); + // } + + // 启动 OIDC SSO 服务 + // if (this.settings.oidc.enable) { + // this.broker.createService(require("@steedos/ee_sso-oidc")); + // } + + + + // 启动 steedos-server 服务 + // this.broker.createService(require("@steedos/service-steedos-server")); + + // 启动 本地 CDN + // this.broker.createService(require("@steedos/unpkg")); + + // 启动 登录页面 + // this.broker.createService(require("@steedos/webapp-accounts")); + + // this.broker.createService(require("@steedos-builder/amis-editor")); + + // 产品分析 + // this.broker.createService(require("@steedos/service-analytics")); + + + // if (this.settings.saas.enable) { + // this.broker.createService(require('@steedos/service-saas')); + // } + + // 启动时间触发器服务 + // this.broker.createService(require("@steedos/workflow_time_trigger")); + + + // await this.broker.waitForServices(["@steedos/service-project"]); + + // console.log(require('chalk').blue('pm-'.repeat(10))); + // await this.broker.call('@steedos/service-project.addPackages', { + // packages: [ + // { + // name: '@steedos/service-charts', + // enable: true + // }, + // { + // name: '@steedos/steedos-plugin-schema-builder', + // enable: false + // }, + // ] + // }); + + + this.broker.waitForServices('api').then(() => { + const port = 6900 + const express = require('express'); + const app = express(); + const session = require('express-session'); + app.use(session({ + secret: process.env.STEEDOS_SESSION_SECRET || 'steedos', + resave: false, + saveUninitialized: true, + cookie: { secure: false, maxAge: 800000 }, + name: 'ivan' + })) + app.use((req, res, next)=>{ + next(); + }); + app.use(require('@steedos/router').staticRouter()); + + app.use(SteedosApi.express()); + + app.listen(port, () => { + console.log(`Server is running at http://127.0.0.1:${port}`); + }); + }) + + + }, + + /** + * Service stopped lifecycle event handler + */ + async stopped() { + + } +}; diff --git a/services/service-ui/main/default/routes/objects.router.js b/services/service-ui/main/default/routes/objects.router.js index 5983562191..56845676c2 100644 --- a/services/service-ui/main/default/routes/objects.router.js +++ b/services/service-ui/main/default/routes/objects.router.js @@ -62,13 +62,9 @@ router.get('/service/api/:objectServiceName/uiSchema', core.requireAuthenticatio try { const { objectServiceName } = req.params; const objectName = objectServiceName.substring(1); - const [result, hasImportTemplates] = yield Promise.all([ + const [result] = yield Promise.all([ callObjectServiceAction(`objectql.getRecordView`, userSession, { objectName }), - callObjectServiceAction(`@steedos/data-import.hasImportTemplates`, userSession, { - objectName: objectName - }) ]); - result.hasImportTemplates = hasImportTemplates; res.status(200).send(result); } catch (error) { diff --git a/services/service-ui/src/routes/objects.router.ts b/services/service-ui/src/routes/objects.router.ts index 8844c8c6f5..65365507b4 100644 --- a/services/service-ui/src/routes/objects.router.ts +++ b/services/service-ui/src/routes/objects.router.ts @@ -61,13 +61,16 @@ router.get('/service/api/:objectServiceName/uiSchema', core.requireAuthenticatio try { const { objectServiceName } = req.params; const objectName = objectServiceName.substring(1); - const [ result, hasImportTemplates ] = await Promise.all([ + // const [ result, hasImportTemplates ] = await Promise.all([ + // callObjectServiceAction(`objectql.getRecordView`, userSession, { objectName }), + // callObjectServiceAction(`@steedos/data-import.hasImportTemplates`, userSession, { + // objectName: objectName + // }) + // ]) + // result.hasImportTemplates = hasImportTemplates //TODO 这段查的有点多 + const [ result ] = await Promise.all([ callObjectServiceAction(`objectql.getRecordView`, userSession, { objectName }), - callObjectServiceAction(`@steedos/data-import.hasImportTemplates`, userSession, { - objectName: objectName - }) ]) - result.hasImportTemplates = hasImportTemplates res.status(200).send(result); } catch (error) { res.status(500).send(error.message); diff --git a/services/standard-object-database/package.service.js b/services/standard-object-database/package.service.js index 08dce701f6..606035e4e5 100644 --- a/services/standard-object-database/package.service.js +++ b/services/standard-object-database/package.service.js @@ -2,7 +2,7 @@ * @Author: sunhaolin@hotoa.com * @Date: 1985-10-26 16:15:00 * @LastEditors: baozhoutao@steedos.com - * @LastEditTime: 2024-10-10 15:58:37 + * @LastEditTime: 2025-01-16 21:21:25 * @Description: */ "use strict"; @@ -14,10 +14,6 @@ const validator = require('validator'); const triggers = require('./src/triggers'); const { checkAPIName } = require('@steedos/standard-objects').util -const { customAlphabet } = require('nanoid'); -const { group } = require('console'); -const nanoid = customAlphabet('1234567890abcdef', 10) - /** * @typedef {import('moleculer').Context} Context Moleculer's Context */ @@ -136,476 +132,7 @@ module.exports = { const { objectName, fieldName, fieldValue, recordId, filters } = ctx.params; await checkAPIName(objectName, fieldName, fieldValue, recordId, filters) } - }, - create_object: { - rest: { - method: "POST", - fullPath: "/service/api/objects/create_by_design" - }, - async handler(ctx) { - const { appId, groupId, name, label, icon } = ctx.params; - const userSession = ctx.meta.user; - - if(!appId){ - return; - } - - const records = await this.getObject('apps').find({ - filters: ['code', '=', appId] - }); - const app = records.length > 0 ? records[0] : null; - - if(!app){ - return ; - } - - // 1 创建对象 - const obj = await this.getObject('objects').insert({ - name: name || `o_${nanoid(5)}`, - label: label || '未命名对象', - datasource: 'default', - icon: icon || 'account' - }, userSession); - - - const tab_items = app.tab_items || {}; - tab_items[`object_${obj.name.replace(/__c$/, "")}`] = { - group: groupId - } - - await this.getObject('apps').update(app._id, { - tab_items - }, userSession); - - return obj; - } - }, - create_app_group: { - rest: { - method: "POST", - fullPath: "/service/api/apps/create_app_group_by_design" - }, - async handler(ctx) { - const { appId, name, defaultOpen, oldName } = ctx.params; - const userSession = ctx.meta.user; - - if(!appId){ - return {}; - } - - const records = await this.getObject('apps').find({ - filters: ['code', '=', appId] - }); - const app = records.length > 0 ? records[0] : null; - - if(!app){ - return {}; - } - - await this.getObject('apps').update(app._id, { - $push: { - tab_groups: { - group_name: name, - default_open: defaultOpen - } - } - }, userSession); - - return {}; - } - }, - update_app_group: { - rest: { - method: "POST", - fullPath: "/service/api/apps/update_app_group_by_design" - }, - async handler(ctx) { - const { appId, name, defaultOpen, oldName } = ctx.params; - const userSession = ctx.meta.user; - - if(!oldName){ - return {} - } - - if(!appId){ - return {}; - } - - const records = await this.getObject('apps').find({ - filters: ['code', '=', appId] - }); - const app = records.length > 0 ? records[0] : null; - - if(!app){ - return {}; - }; - - const tab_groups = app.tab_groups; - - const tab_items = app.tab_items; - - _.each(tab_groups, (tGroup)=>{ - if(tGroup.group_name == oldName){ - tGroup.group_name = name; - tGroup.default_open = defaultOpen - } - }); - - - _.each(tab_items, (tItem, key)=>{ - if(tItem.group === oldName){ - tab_items[key] = { - group: name - } - } - }) - - await this.getObject('apps').update(app._id, { - tab_groups, tab_items - }, userSession); - - return {}; - } - }, - create_by_design: { - rest: { - method: "POST", - fullPath: "/service/api/apps/create_by_design" - }, - async handler(ctx) { - const { code, name, icon } = ctx.params; - const userSession = ctx.meta.user; - - if(!code || !name){ - return {}; - } - - return await this.getObject('apps').insert({ - name: name, - code: code, - sort : 9100, - is_creator : true, - mobile : true, - visible : true, - showSidebar : true, - icon_slds : icon || "account", - }, userSession); - } - }, - update_app_by_design: { - rest: { - method: "POST", - fullPath: "/service/api/apps/update_app_by_design" - }, - async handler(ctx) { - const { appId, tab_groups, tab_items } = ctx.params; - const userSession = ctx.meta.user; - - if(!appId){ - return {}; - } - - const records = await this.getObject('apps').find({ - filters: ['code', '=', appId] - }); - const app = records.length > 0 ? records[0] : null; - - if(!app){ - return {}; - } - - await this.getObject('apps').update(app._id, { - tab_groups: tab_groups, - tab_items: tab_items - }, userSession); - - } - }, - update_app_tabs_by_design: { - rest: { - method: "POST", - fullPath: "/service/api/apps/update_app_tabs_by_design" - }, - async handler(ctx) { - const { appId, addTabNames, groupId } = ctx.params; - const userSession = ctx.meta.user; - - if(!appId){ - return {}; - } - - const records = await this.getObject('apps').find({ - filters: ['code', '=', appId] - }); - const app = records.length > 0 ? records[0] : null; - - if(!app){ - return {}; - } - - const tab_items = app.tab_items || {}; - - _.each(addTabNames, (tabName)=>{ - if(tabName){ - tab_items[tabName] = { - group: groupId - } - } - }) - - await this.getObject('apps').update(app._id, { - tab_items - }, userSession); - - } - }, - create_link_tab_by_design: { - rest: { - method: "POST", - fullPath: "/service/api/tabs/create_link_tab_by_design" - }, - async handler(ctx) { - const { appId, groupId, name, label, icon, url } = ctx.params; - const userSession = ctx.meta.user; - - if(!appId){ - return; - } - - const records = await this.getObject('apps').find({ - filters: ['code', '=', appId] - }); - const app = records.length > 0 ? records[0] : null; - - if(!app){ - return ; - } - - const tab = await this.getObject('tabs').insert({ - name: name || `t_${nanoid(5)}`, - label: label || '未命名选项卡', - icon: icon || 'account', - mobile : true, - desktop : true, - is_new_window : false, - is_use_iframe : true, - type : "url", - url : url, - }, userSession); - - - const tab_items = app.tab_items || {}; - tab_items[tab.name] = { - group: groupId - } - await this.getObject('apps').update(app._id, { - tab_items - }, userSession); - - return tab; - } - }, - update_link_tab_by_design: { - rest: { - method: "POST", - fullPath: "/service/api/tabs/update_link_tab_by_design" - }, - async handler(ctx) { - const { appId, groupId, name, label, icon, url } = ctx.params; - const userSession = ctx.meta.user; - - if(!appId){ - return; - } - - const records = await this.getObject('apps').find({ - filters: ['code', '=', appId] - }); - const app = records.length > 0 ? records[0] : null; - - if(!app){ - return ; - } - - const dbTab = await this.getObject('tabs').find({ - filters: ['name', '=', name] - }, userSession); - - if(dbTab.length > 0){ - const tab = await this.getObject('tabs').update(dbTab[0]._id, { - name: name, - label: label, - icon: icon, - url : url, - }, userSession); - return tab; - } - return dbTab; - } - }, - create_page_by_design: { - rest: { - method: "POST", - fullPath: "/service/api/pages/create_page_by_design" - }, - async handler(ctx) { - const { appId, groupId, name, label, icon } = ctx.params; - const userSession = ctx.meta.user; - - if(!appId){ - return; - } - - const records = await this.getObject('apps').find({ - filters: ['code', '=', appId] - }); - const app = records.length > 0 ? records[0] : null; - - if(!app){ - return ; - } - - const page = await this.getObject('pages').insert({ - name: name || `t_${nanoid(5)}`, - label : label, - is_active : true, - render_engine : "amis", - type : "app" - }, userSession); - - const tab = await this.getObject('tabs').insert({ - name: `page_${page.name}`, - mobile : true, - desktop : true, - is_new_window : false, - is_use_iframe : false, - icon : icon, - type : "page", - label : label, - page : page.name, - }, userSession); - - - const tab_items = app.tab_items || {}; - tab_items[tab.name] = { - group: groupId - } - await this.getObject('apps').update(app._id, { - tab_items - }, userSession); - - return page; - } - }, - delete_app_tab: { - rest: { - method: "POST", - fullPath: "/service/api/apps/delete_app_tab" - }, - async handler(ctx) { - const { appId, tabName } = ctx.params; - const userSession = ctx.meta.user; - - if(!appId){ - return; - } - - const records = await this.getObject('apps').find({ - filters: ['code', '=', appId] - }); - const app = records.length > 0 ? records[0] : null; - - if(!app){ - return ; - } - - - const tab_items = app.tab_items || {}; - - delete tab_items[tabName] - - await this.getObject('apps').update(app._id, { - tab_items - }, userSession); - - return app; - } - }, - delete_app_group: { - rest: { - method: "POST", - fullPath: "/service/api/apps/delete_app_group" - }, - async handler(ctx) { - const { appId, groupName } = ctx.params; - const userSession = ctx.meta.user; - - if(!appId){ - return; - } - - const records = await this.getObject('apps').find({ - filters: ['code', '=', appId] - }); - const app = records.length > 0 ? records[0] : null; - - if(!app){ - return ; - } - - const tab_groups = app.tab_groups || []; - const newTabGroups = []; - - _.each(tab_groups, (tGroup)=>{ - if(tGroup.group_name != groupName){ - newTabGroups.push(tGroup); - } - }); - await this.getObject('apps').update(app._id, { - tab_groups: newTabGroups - }, userSession); - - return app; - } - }, - move_app_tab: { - rest: { - method: "POST", - fullPath: "/service/api/apps/move_app_tab" - }, - async handler(ctx) { - const { appId, tabName, groupName, oldGroupName } = ctx.params; - const userSession = ctx.meta.user; - - if(!appId){ - return; - } - - const records = await this.getObject('apps').find({ - filters: ['code', '=', appId] - }); - const app = records.length > 0 ? records[0] : null; - - if(!app){ - return ; - } - - - const tab_items = app.tab_items || {}; - - _.each(tab_items, (item, k)=>{ - if(k === tabName){ - tab_items[k].group = groupName == 0 ? '' : groupName - } - }) - - await this.getObject('apps').update(app._id, { - tab_items - }, userSession); - - return app; - } - }, + } }, /** diff --git a/services/standard-space/main/default/objectTranslations/company.en/company.en.objectTranslation.yml b/services/standard-space/main/default/objectTranslations/company.en/company.en.objectTranslation.yml new file mode 100644 index 0000000000..602f65882d --- /dev/null +++ b/services/standard-space/main/default/objectTranslations/company.en/company.en.objectTranslation.yml @@ -0,0 +1,50 @@ +name: company +label: Division +description: +fields: + name: + label: Name + help: + description: + code: + label: Code + help: + description: + parent: + label: Superior Department + help: + description: + organization: + label: Corresponding Department + help: + description: + currency_type: + label: Currency Type + help: + description: + admins: + label: Administrator + help: + description: + description: + label: Description + help: + description: + sort_no: + label: Sort Number + help: + description: + company_id: + label: + help: + description: + company_ids: + label: + help: + description: +listviews: + all: + label: All Divisions +actions: + updateOrgs: + label: Update The Whole Company diff --git a/services/standard-space/main/default/objectTranslations/company.zh-CN/company.zh-CN.objectTranslation.yml b/services/standard-space/main/default/objectTranslations/company.zh-CN/company.zh-CN.objectTranslation.yml new file mode 100644 index 0000000000..0c98b58244 --- /dev/null +++ b/services/standard-space/main/default/objectTranslations/company.zh-CN/company.zh-CN.objectTranslation.yml @@ -0,0 +1,50 @@ +name: company +label: 分部 +description: +fields: + name: + label: 分部名称 + help: + description: + code: + label: 分部代码 + help: + description: + parent: + label: 上级分部 + help: + description: + organization: + label: 关联部门 + help: + description: + currency_type: + label: 本位币 + help: + description: + admins: + label: 管理员 + help: + description: + description: + label: 备注 + help: + description: + sort_no: + label: 排序号 + help: + description: + company_id: + label: 主分部 + help: + description: + company_ids: + label: 所属分部 + help: + description: +listviews: + all: + label: 所有 +actions: + updateOrgs: + label: 更新组织 diff --git a/services/standard-space/main/default/objectTranslations/logs.en/logs.en.objectTranslation.yml b/services/standard-space/main/default/objectTranslations/logs.en/logs.en.objectTranslation.yml new file mode 100644 index 0000000000..3ed5e1c824 --- /dev/null +++ b/services/standard-space/main/default/objectTranslations/logs.en/logs.en.objectTranslation.yml @@ -0,0 +1,23 @@ +name: logs +label: Logs +description: +fields: + name: + label: Name + help: + description: + level: + label: Level + help: + description: + data: + label: Data + help: + description: + node_id: + label: Node ID + help: + description: +listviews: + all: + label: All diff --git a/services/standard-space/main/default/objectTranslations/logs.zh-CN/logs.zh-CN.objectTranslation.yml b/services/standard-space/main/default/objectTranslations/logs.zh-CN/logs.zh-CN.objectTranslation.yml new file mode 100644 index 0000000000..79eed1f86c --- /dev/null +++ b/services/standard-space/main/default/objectTranslations/logs.zh-CN/logs.zh-CN.objectTranslation.yml @@ -0,0 +1,23 @@ +name: logs +label: 系统日志 +description: +fields: + name: + label: 标题 + help: + description: + level: + label: 级别 + help: + description: + data: + label: 数据 + help: + description: + node_id: + label: 节点标识 + help: + description: +listviews: + all: + label: 所有 diff --git a/services/standard-space/main/default/objectTranslations/notifications.en/notifications.en.objectTranslation.yml b/services/standard-space/main/default/objectTranslations/notifications.en/notifications.en.objectTranslation.yml new file mode 100644 index 0000000000..bd5318f90a --- /dev/null +++ b/services/standard-space/main/default/objectTranslations/notifications.en/notifications.en.objectTranslation.yml @@ -0,0 +1,43 @@ +name: notifications +label: Notification +description: +fields: + name: + label: Title + help: + description: + body: + label: Body + help: + description: + related_to: + label: Related Object Record + help: + description: + related_name: + label: Name of Related Object Record + help: + description: + url: + label: URL + help: + description: + from: + label: From + help: + description: + owner: + label: Owner + help: + description: + is_read: + label: Readed + help: + description: + created: + label: Notification Time + help: + description: +listviews: + all: + label: All Notifications diff --git a/services/standard-space/main/default/objectTranslations/notifications.zh-CN/notifications.zh-CN.objectTranslation.yml b/services/standard-space/main/default/objectTranslations/notifications.zh-CN/notifications.zh-CN.objectTranslation.yml new file mode 100644 index 0000000000..e8f4f28b08 --- /dev/null +++ b/services/standard-space/main/default/objectTranslations/notifications.zh-CN/notifications.zh-CN.objectTranslation.yml @@ -0,0 +1,43 @@ +name: notifications +label: 通知 +description: +fields: + name: + label: 通知标题 + help: + description: + body: + label: 通知描述 + help: + description: + related_to: + label: 相关记录 + help: + description: + related_name: + label: 记录标题 + help: + description: + url: + label: 相对链接 + help: + description: + from: + label: 发送人 + help: + description: + owner: + label: 通知对象 + help: + description: + is_read: + label: 已读 + help: + description: + created: + label: 通知时间 + help: + description: +listviews: + all: + label: 全部 diff --git a/services/standard-space/main/default/objectTranslations/settings.en/settings.en.objectTranslation.yml b/services/standard-space/main/default/objectTranslations/settings.en/settings.en.objectTranslation.yml new file mode 100644 index 0000000000..5636cd9083 --- /dev/null +++ b/services/standard-space/main/default/objectTranslations/settings.en/settings.en.objectTranslation.yml @@ -0,0 +1,38 @@ +name: settings +label: Setting +description: +fields: + description: + label: Description + help: + description: + schema: + label: Form Schema + help: + description: + instance_state: + label: 申请单审批状态 + help: + options: + description: + is_public: + label: 公开 + help: 在前端可访问 + description: + key: + label: key + help: + description: + name: + label: Name + help: + description: + value: + label: Value + help: + description: +listviews: + all: + label: All + recent: + label: Recent diff --git a/services/standard-space/main/default/objectTranslations/settings.zh-CN/settings.zh-CN.objectTranslation.yml b/services/standard-space/main/default/objectTranslations/settings.zh-CN/settings.zh-CN.objectTranslation.yml new file mode 100644 index 0000000000..25c58b422c --- /dev/null +++ b/services/standard-space/main/default/objectTranslations/settings.zh-CN/settings.zh-CN.objectTranslation.yml @@ -0,0 +1,39 @@ +name: settings +label: 参数配置 +description: +fields: + description: + label: 描述 + help: + description: + schema: + label: 表单 + help: + description: + is_public: + label: 公开 + help: 在前端可访问 + description: + key: + label: key + help: + description: + name: + label: 名称 + help: + description: + owner: + label: 所有者 + help: + description: + value: + label: 值 + help: + description: +groups: + 系统信息: 系统信息 +listviews: + all: + label: 所有 + recent: + label: 最近查看 diff --git a/services/standard-space/main/default/services/organizations.service.js b/services/standard-space/main/default/services/organizations.service.js index 95c6a2d48a..ebae8010ff 100644 --- a/services/standard-space/main/default/services/organizations.service.js +++ b/services/standard-space/main/default/services/organizations.service.js @@ -2,7 +2,7 @@ * @Author: sunhaolin@hotoa.com * @Date: 2022-12-02 16:53:23 * @LastEditors: baozhoutao@steedos.com - * @LastEditTime: 2024-12-06 14:06:03 + * @LastEditTime: 2025-01-17 16:29:29 * @Description: */ "use strict"; @@ -335,7 +335,7 @@ module.exports = { * @returns */ async getOrganizationsRootNode(ctx) { - + console.log('getOrganizationsRootNode 1') const orgObj = getObject('organizations'); let userFilters = null; @@ -343,10 +343,10 @@ module.exports = { if(ctx.params?.filters && lodash.isString(ctx.params.filters)){ userFilters = JSON.parse(ctx.params.filters) } - + console.log('getOrganizationsRootNode 2') const orgs = await orgObj.find({filters: userFilters, fields: ['_id','parent', 'children']}) const rootIds = getTreeRootIds(orgs) - + console.log('getOrganizationsRootNode 3') let queryFields = ctx.params?.fields || ` _id, name, @@ -358,6 +358,7 @@ module.exports = { children `; const filters = ["_id", "in", rootIds]; + console.log('api.graphql 1', queryFields) let graphqlResult = await this.broker.call('api.graphql', { query: ` query { @@ -372,6 +373,7 @@ module.exports = { } } ) + console.log('api.graphql 2', queryFields) let rootOrgs = graphqlResult.data.rows; return { data: { diff --git a/services/standard-space/package.service.js b/services/standard-space/package.service.js index 41120dd004..d0735ab358 100644 --- a/services/standard-space/package.service.js +++ b/services/standard-space/package.service.js @@ -2,7 +2,7 @@ * @Author: sunhaolin@hotoa.com * @Date: 2022-12-02 13:17:06 * @LastEditors: baozhoutao@steedos.com - * @LastEditTime: 2025-01-15 11:44:28 + * @LastEditTime: 2025-01-15 17:03:15 * @Description: */ "use strict"; @@ -10,8 +10,6 @@ const project = require('./package.json'); const packageName = project.name; const packageLoader = require('@steedos/service-meteor-package-loader'); const objectMixin = require('@steedos/service-object-mixin') -const objectql = require('@steedos/objectql'); -const { MongoClient } = require('mongodb'); const _ = require('lodash') const triggers = require('./src/triggers') @@ -59,106 +57,7 @@ module.exports = { * Events */ events: { - /** - * [Feature]: Master-detail relationship 级联删除 #4984 - * [Feature]: Lookup relationship 级联删除 #4985 - * 考虑死循环的情况,A 主表是 B,B主表是A - */ - "@*.deleted": { - async handler(ctx) { - // console.log(require('chalk').red('-------------------@*.deleted-------------------'), ctx.params) - const params = ctx.params - const { isDelete, isAfter, previousDoc, objectName } = params; - if (isAfter && isDelete && previousDoc) { - const spaceId = previousDoc.space; - const obj = objectql.getObject(objectName); - const detailsInfo = await obj.getDetailsInfo(); // 查找当前哪些对象有masterDetail字段引用当前对象 - const lookupDetailsInfo = await obj.getLookupDetailsInfo(); // 查找当前哪些对象有lookup字段引用当前对象 - - // 空的不执行 - if (_.isEmpty(detailsInfo) && _.isEmpty(lookupDetailsInfo)) { - return; - } - - const client = new MongoClient(process.env.MONGO_URL, { - useNewUrlParser: true, - useUnifiedTopology: true, - }); - await client.connect(); - const db = client.db(); - - // Start a session. - const session = client.startSession(); - - // Start a transaction - session.startTransaction({ readConcern: { level: "majority" }, writeConcern: { w: "majority" }, readPreference: 'primary' }); - - // Operations inside the transaction - try { - const infoMap = {}; // 防止死循环 - const deleteDetails = async (detailsInfo, previousDoc) => { - for (const info of detailsInfo) { - if (!infoMap[info]) { - infoMap[info] = 1 - } else { - continue; - } - const infos = info.split("."); - const detailObjectApiName = infos[0]; - const detailFieldName = infos[1]; - - const detailObj = objectql.getObject(detailObjectApiName); - const detailField = detailObj.getField(detailFieldName); - const refFieldName = detailField.reference_to_field || '_id' - - const detailColl = db.collection(detailObjectApiName); - const query = { [detailFieldName]: previousDoc[refFieldName], space: spaceId }; - const docs = await detailColl.find(query, { session }).toArray() - await detailColl.deleteMany(query, { session }); - - const detailDetailsInfo = await detailObj.getDetailsInfo(); - if (detailDetailsInfo.length > 0) { - for (const doc of docs) { - await deleteDetails(detailDetailsInfo, doc) - } - } - } - } - - await deleteDetails(detailsInfo, previousDoc) - - for (const info of lookupDetailsInfo) { - const infos = info.split("."); - const detailObjectApiName = infos[0]; - const detailFieldName = infos[1]; - const detailObj = objectql.getObject(detailObjectApiName); - const detailField = detailObj.getField(detailFieldName); - if ('clear' === detailField.deleted_lookup_record_behavior || !detailField.deleted_lookup_record_behavior) { // 清除相关记录lookup字段的值,默认清除 - const refFieldName = detailField.reference_to_field || '_id' - const detailColl = db.collection(detailObjectApiName); - await detailColl.updateMany({ - [detailFieldName]: previousDoc[refFieldName] - }, { - $unset: { - [detailFieldName]: 1 - } - }, { session }); - } - } - - await session.commitTransaction(); - } catch (error) { - // Abort transaction on error - await session.abortTransaction(); - console.error(error); - } finally { - await session.endSession(); - await client.close(); - } - - } - } - }, + }, /** diff --git a/steedos-packages/webapp-public/package.service.js b/steedos-packages/webapp-public/package.service.js index 1d0d807ce3..21552cacd6 100644 --- a/steedos-packages/webapp-public/package.service.js +++ b/steedos-packages/webapp-public/package.service.js @@ -56,14 +56,12 @@ module.exports = { * Service created lifecycle event handler */ async created() { - }, /** * Service started lifecycle event handler */ async started() { - }, /** diff --git a/steedos-packages/webapp-public/public/assets/icons/License-for-icons.txt b/steedos-packages/webapp-public/public/assets/icons/License-for-icons.txt new file mode 100644 index 0000000000..9a8a66aaa5 --- /dev/null +++ b/steedos-packages/webapp-public/public/assets/icons/License-for-icons.txt @@ -0,0 +1,267 @@ +Creative Commons Attribution-NoDerivatives 4.0 International Public License +https://creativecommons.org/licenses/by-nd/4.0/legalcode + + + +SUMMARY OF THE LICENSE: + +You are free to: + +* Share — copy and redistribute the material in any medium or format + for any purpose, even commercially. +* The licensor cannot revoke these freedoms as long as you follow the + license terms. + +Under the following terms: + +* Attribution — You must give appropriate credit, provide a link to + the license, and indicate if changes were made. You may do so in any + reasonable manner, but not in any way that suggests the licensor + endorses you or your use. +* NoDerivatives — If you remix, transform, or build upon the material, + you may not distribute the modified material. + +No additional restrictions — You may not apply legal terms or +technological measures that legally restrict others from doing +anything the license permits. + + + +FULL LICENSE TEXT: + +By exercising the Licensed Rights (defined below), You accept and +agree to be bound by the terms and conditions of this Creative Commons +Attribution-NoDerivatives 4.0 International Public License ("Public +License"). To the extent this Public License may be interpreted as a +contract, You are granted the Licensed Rights in consideration of Your +acceptance of these terms and conditions, and the Licensor grants You +such rights in consideration of benefits the Licensor receives from +making the Licensed Material available under these terms and +conditions. + +Section 1 – Definitions. +a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material and + in which the Licensed Material is translated, altered, arranged, + transformed, or otherwise modified in a manner requiring permission + under the Copyright and Similar Rights held by the Licensor. For + purposes of this Public License, where the Licensed Material is a + musical work, performance, or sound recording, Adapted Material is + always produced where the Licensed Material is synched in timed + relation with a moving image. +b. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) (#s2b) are not Copyright and + Similar Rights. +c. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. +d. Exceptions and Limitations means fair use, fair dealing, and/or any + other exception or limitation to Copyright and Similar Rights that + applies to Your use of the Licensed Material. +e. Licensed Material means the artistic or literary work, database, or + other material to which the Licensor applied this Public License. +f. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. +g. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. +h. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such as + reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. +i. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. +j. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + +Section 2 – Scope. +a. License grant. + 1. Subject to the terms and conditions of this Public License, the + Licensor hereby grants You a worldwide, royalty-free, non- + sublicensable, non-exclusive, irrevocable license to exercise the + Licensed Rights in the Licensed Material to: + A. reproduce and Share the Licensed Material, in whole or in part; + and + B. produce and reproduce, but not Share, Adapted Material. + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public License + does not apply, and You do not need to comply with its terms and + conditions. + 3. Term. The term of this Public License is specified in Section + 6(a) (#s6a) . + 4. Media and formats; technical modifications allowed. The Licensor + authorizes You to exercise the Licensed Rights in all media and + formats whether now known or hereafter created, and to make + technical modifications necessary to do so. The Licensor waives + and/or agrees not to assert any right or authority to forbid You + from making technical modifications necessary to exercise the + Licensed Rights, including technical modifications necessary to + circumvent Effective Technological Measures. For purposes of this + Public License, simply making modifications authorized by this + Section 2(a)(4) (#s2a4) never produces Adapted Material. + 5. Downstream recipients. + A. Offer from the Licensor – Licensed Material. Every recipient of + the Licensed Material automatically receives an offer from the + Licensor to exercise the Licensed Rights under the terms and + conditions of this Public License. + B. No downstream restrictions. You may not offer or impose any + additional or different terms or conditions on, or apply any + Effective Technological Measures to, the Licensed Material if + doing so restricts exercise of the Licensed Rights by any + recipient of the Licensed Material. + 6. No endorsement. Nothing in this Public License constitutes or may + be construed as permission to assert or imply that You are, or + that Your use of the Licensed Material is, connected with, or + sponsored, endorsed, or granted official status by, the Licensor + or others designated to receive attribution as provided in + Section 3(a)(1)(A)(i) (#s3a1Ai) . +b. Other rights. + 1. Moral rights, such as the right of integrity, are not licensed + under this Public License, nor are publicity, privacy, and/or + other similar personality rights; however, to the extent + possible, the Licensor waives and/or agrees not to assert any + such rights held by the Licensor to the limited extent necessary + to allow You to exercise the Licensed Rights, but not otherwise. + 2. Patent and trademark rights are not licensed under this Public + License. + 3. To the extent possible, the Licensor waives any right to collect + royalties from You for the exercise of the Licensed Rights, + whether directly or through a collecting society under any + voluntary or waivable statutory or compulsory licensing scheme. + In all other cases the Licensor expressly reserves any right to + collect such royalties. + +Section 3 – License Conditions. +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. +a. Attribution. + 1. If You Share the Licensed Material, You must: + A. retain the following if it is supplied by the Licensor with the + Licensed Material: + i. identification of the creator(s) of the Licensed Material and + any others designated to receive attribution, in any + reasonable manner requested by the Licensor (including by + pseudonym if designated); ii. a copyright notice; iii. a + notice that refers to this Public License; iv. a notice that + refers to the disclaimer of warranties; + v. a URI or hyperlink to the Licensed Material to the extent + reasonably practicable; + B. indicate if You modified the Licensed Material and retain an + indication of any previous modifications; and + C. indicate the Licensed Material is licensed under this Public + License, and include the text of, or the URI or hyperlink to, + this Public License. For the avoidance of doubt, You do not + have permission under this Public License to Share Adapted + Material. + 2. You may satisfy the conditions in Section 3(a)(1) (#s3a1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required information. + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) (#s3a1A) to the extent + reasonably practicable. + +Section 4 – Sui Generis Database Rights. +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + a. for the avoidance of doubt, Section 2(a)(1) (#s2a1) grants You + the right to extract, reuse, reproduce, and Share all or a + substantial portion of the contents of the database, provided You + do not Share Adapted Material; + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + c. You must comply with the conditions in Section 3(a) (#s3a) if You + Share all or a substantial portion of the contents of the + database. + +For the avoidance of doubt, this Section 4 (#s4) supplements and does +not replace Your obligations under this Public License where the +Licensed Rights include other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. +a. Unless otherwise separately undertaken by the Licensor, to the + extent possible, the Licensor offers the Licensed Material as-is + and as-available, and makes no representations or warranties of any + kind concerning the Licensed Material, whether express, implied, + statutory, or other. This includes, without limitation, warranties + of title, merchantability, fitness for a particular purpose, non- + infringement, absence of latent or other defects, accuracy, or the + presence or absence of errors, whether or not known or + discoverable. Where disclaimers of warranties are not allowed in + full or in part, this disclaimer may not apply to You. +b. To the extent possible, in no event will the Licensor be liable to + You on any legal theory (including, without limitation, negligence) + or otherwise for any direct, special, indirect, incidental, + consequential, punitive, exemplary, or other losses, costs, + expenses, or damages arising out of this Public License or use of + the Licensed Material, even if the Licensor has been advised of the + possibility of such losses, costs, expenses, or damages. Where a + limitation of liability is not allowed in full or in part, this + limitation may not apply to You. + +c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + +Section 6 – Term and Termination. +a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. +b. Where Your right to use the Licensed Material has terminated under + Section 6(a) (#s6a) , it reinstates: + 1. automatically as of the date the violation is cured, provided it + is cured within 30 days of Your discovery of the violation; or + 2. upon express reinstatement by the Licensor. For the avoidance of + doubt, this Section 6(b) (#s6b) does not affect any right the + Licensor may have to seek remedies for Your violations of this + Public License. +c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. +d. Sections 1 (#s1) , 5 (#s5) , 6 (#s6) , 7 (#s7) , and 8 (#s8) + survive termination of this Public License. + +Section 7 – Other Terms and Conditions. +a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. +b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + +Section 8 – Interpretation. +a. For the avoidance of doubt, this Public License does not, and shall + not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. +b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. +c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. +d. Nothing in this Public License constitutes or may be interpreted as + a limitation upon, or waiver of, any privileges and immunities that + apply to the Licensor or You, including from the legal processes of + any jurisdiction or authority. diff --git a/steedos-packages/webapp-public/public/assets/icons/README-dist.md b/steedos-packages/webapp-public/public/assets/icons/README-dist.md new file mode 100644 index 0000000000..50baaa4680 --- /dev/null +++ b/steedos-packages/webapp-public/public/assets/icons/README-dist.md @@ -0,0 +1,18 @@ +Salesforce Design System Icons + +Contents: + +action-sprite/ - sprited SVGs, see symbols.html and svg/symbols.svg +custom-sprite/ +doctype-sprite/ +standard-sprite/ +utility-sprite/ + +action/ - individual 60x60 and 120x120 PNG icons, SVG icons +custom/ +doctype/ +standard/ +utility/ + +License-for-icons.txt + diff --git a/steedos-packages/webapp-public/public/assets/icons/action-sprite/svg/symbols-rtl.svg b/steedos-packages/webapp-public/public/assets/icons/action-sprite/svg/symbols-rtl.svg new file mode 100644 index 0000000000..9d70e98f1a --- /dev/null +++ b/steedos-packages/webapp-public/public/assets/icons/action-sprite/svg/symbols-rtl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/steedos-packages/webapp-public/public/assets/icons/action-sprite/svg/symbols.svg b/steedos-packages/webapp-public/public/assets/icons/action-sprite/svg/symbols.svg new file mode 100644 index 0000000000..4d8114a73e --- /dev/null +++ b/steedos-packages/webapp-public/public/assets/icons/action-sprite/svg/symbols.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/steedos-packages/webapp-public/public/assets/icons/custom-sprite/svg/symbols-rtl.svg b/steedos-packages/webapp-public/public/assets/icons/custom-sprite/svg/symbols-rtl.svg new file mode 100644 index 0000000000..db20379eae --- /dev/null +++ b/steedos-packages/webapp-public/public/assets/icons/custom-sprite/svg/symbols-rtl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/steedos-packages/webapp-public/public/assets/icons/custom-sprite/svg/symbols.svg b/steedos-packages/webapp-public/public/assets/icons/custom-sprite/svg/symbols.svg new file mode 100644 index 0000000000..c2ed629b82 --- /dev/null +++ b/steedos-packages/webapp-public/public/assets/icons/custom-sprite/svg/symbols.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/steedos-packages/webapp-public/public/assets/icons/doctype-sprite/svg/symbols-rtl.svg b/steedos-packages/webapp-public/public/assets/icons/doctype-sprite/svg/symbols-rtl.svg new file mode 100644 index 0000000000..f74190029a --- /dev/null +++ b/steedos-packages/webapp-public/public/assets/icons/doctype-sprite/svg/symbols-rtl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/steedos-packages/webapp-public/public/assets/icons/doctype-sprite/svg/symbols.svg b/steedos-packages/webapp-public/public/assets/icons/doctype-sprite/svg/symbols.svg new file mode 100644 index 0000000000..9815186b28 --- /dev/null +++ b/steedos-packages/webapp-public/public/assets/icons/doctype-sprite/svg/symbols.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/steedos-packages/webapp-public/public/assets/icons/standard-sprite/svg/symbols-rtl.svg b/steedos-packages/webapp-public/public/assets/icons/standard-sprite/svg/symbols-rtl.svg new file mode 100644 index 0000000000..3496b785a2 --- /dev/null +++ b/steedos-packages/webapp-public/public/assets/icons/standard-sprite/svg/symbols-rtl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/steedos-packages/webapp-public/public/assets/icons/standard-sprite/svg/symbols.svg b/steedos-packages/webapp-public/public/assets/icons/standard-sprite/svg/symbols.svg new file mode 100644 index 0000000000..61065b92d2 --- /dev/null +++ b/steedos-packages/webapp-public/public/assets/icons/standard-sprite/svg/symbols.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/steedos-packages/webapp-public/public/assets/icons/utility-sprite/svg/symbols-rtl.svg b/steedos-packages/webapp-public/public/assets/icons/utility-sprite/svg/symbols-rtl.svg new file mode 100644 index 0000000000..995daa385e --- /dev/null +++ b/steedos-packages/webapp-public/public/assets/icons/utility-sprite/svg/symbols-rtl.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/steedos-packages/webapp-public/public/assets/icons/utility-sprite/svg/symbols.svg b/steedos-packages/webapp-public/public/assets/icons/utility-sprite/svg/symbols.svg new file mode 100644 index 0000000000..bc71d7cd60 --- /dev/null +++ b/steedos-packages/webapp-public/public/assets/icons/utility-sprite/svg/symbols.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/steedos.config.js b/steedos.config.js index c3911d96f7..d746be6a70 100644 --- a/steedos.config.js +++ b/steedos.config.js @@ -1,6 +1,6 @@ - // Moleculer Configuration // https://moleculer.services/docs/0.14/configuration.html +require('dotenv-flow').config({}); module.exports = { // Namespace of nodes to segment your nodes on the same network. namespace: "steedos", @@ -12,7 +12,7 @@ module.exports = { // Called after broker started. started(broker) { - broker.createService(require("@steedos/service-community")); + // broker.createService(require("@steedos/service-community")); } }; \ No newline at end of file