@steedos-widgets/amis-object 1.2.27 → 1.2.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4110,796 +4110,808 @@
4110
4110
  }
4111
4111
  }
4112
4112
 
4113
- /*
4114
- * @Author: baozhoutao@steedos.com
4115
- * @Date: 2022-07-23 09:12:14
4116
- * @LastEditors: baozhoutao@steedos.com
4117
- * @LastEditTime: 2022-11-25 13:28:35
4118
- * @Description:
4119
- */
4120
-
4121
- async function getListBody(fields, options){
4122
- const columns = [];
4123
- for (const field of fields) {
4124
-
4125
- const tpl = await getFieldTpl(field, options);
4126
-
4127
- let type = 'text';
4128
- if(tpl){
4129
- type = 'tpl';
4130
- }
4131
- if(!field.hidden && !field.extra){
4132
- columns.push({
4133
- name: field.name,
4134
- label: field.label,
4135
- sortable: field.sortable,
4136
- // searchable: field.searchable,
4137
- width: field.width,
4138
- type: type,
4139
- tpl: tpl,
4140
- toggled: field.toggled
4141
- // toggled: true
4142
- });
4143
- }
4144
- }
4145
- return {
4146
- "type": "hbox",
4147
- "columns": columns
4148
- };
4149
- }
4150
-
4151
- function getDefaultParams$1(options){
4152
- return {
4153
- perPage: options.top || options.perPage || 10
4154
- }
4155
- }
4156
-
4157
- async function getListSchema$1(fields, options){
4158
- const listBody = await getListBody(fields, options);
4159
- const columns = listBody.columns;
4160
- return {
4161
- mode: "list",
4162
- name: "thelist",
4163
- draggable: false,
4164
- headerToolbar: ['reload'],
4165
- defaultParams: getDefaultParams$1(options),
4166
- syncLocation: false,
4167
- keepItemSelectionOnPageChange: true,
4168
- checkOnItemClick: false,
4169
- labelTpl: `\${name}`, //TODO 获取name字段
4170
- listItem: {
4171
- body: [...columns],
4172
- actions: options.actions === false ? null : [
4173
- {
4174
- icon: "fa fa-eye",
4175
- label: "查看",
4176
- type: "button",
4177
- actionType: "link",
4178
- link: Router$1.getObjectDetailPath({
4179
- formFactor: options.formFactor,
4180
- appId: options.appId,
4181
- objectName: options.tabId,
4182
- listView: options.listView,
4183
- recordId: `\${_id}`
4184
- })
4185
- }
4186
- ]
4187
- }
4188
- }
4189
- }
4190
-
4191
-
4192
- async function getCardSchema(fields, options){
4193
- let title = null;
4194
- const titleField = _.find(fields, (f)=>{
4195
- return f.name === options.labelFieldName;
4196
- });
4197
- if(titleField){
4198
- title = await getFieldTpl(titleField, options);
4199
- }
4200
- const listBody = await getListBody(_.filter(fields, (f)=>{
4201
- return f.name != options.labelFieldName
4202
- }), options);
4203
- return {
4204
- mode: "cards",
4205
- name: "cards",
4206
- draggable: false,
4207
- headerToolbar: ['statistics', 'pagination'],
4208
- defaultParams: getDefaultParams$1(options),
4209
- syncLocation: false,
4210
- keepItemSelectionOnPageChange: false,
4211
- checkOnItemClick: false,
4212
- labelTpl: `\${${options.labelFieldName}}`,
4213
- card: {
4214
- "type": "card",
4215
- "header": {
4216
- "title": title
4217
- },
4218
- "body": [...listBody.columns]
4219
- }
4220
- }
4221
- }
4222
-
4223
- const refUsersObjectName = "space_users";
4224
- const refOrgsObjectName = "organizations";
4225
-
4226
- async function getSource$1(field, ctx) {
4227
- // data.query 最终格式 "{ \tleftOptions:organizations(filters: {__filters}){value:_id,label:name,children}, children:organizations(filters: {__filters}){ref:_id,children}, defaultValueOptions:space_users(filters: {__options_filters}){user,name} }"
4228
- const data = await getFindQuery({ name: refOrgsObjectName }, null, [{ name: "_id", alias: "value" },{name: "parent"}, { name: "name", alias: "label" }, { name: "children" }], {
4229
- alias: "leftOptions",
4230
- filters: "{__filters}"
4231
- });
4232
- data.query = data.query.replace(/,count\:.+/, "}");
4233
- const childrenData = await getFindQuery({ name: refOrgsObjectName }, null, [{ name: "_id", alias: "ref" }], {
4234
- alias: "children",
4235
- filters: "{__filters}"
4236
- });
4237
- childrenData.query = childrenData.query.replace(/,count\:.+/, "}");
4238
- data.query = data.query.replace(/}$/, "," + childrenData.query.replace(/{(.+)}/, "$1}"));
4239
- const defaultValueOptionsData = await getFindQuery({ name: refUsersObjectName }, null, [{ name: "user", alias: "value" }, { name: "name", alias: "label" }], {
4240
- alias: "defaultValueOptions",
4241
- filters: "{__options_filters}"
4242
- });
4243
- defaultValueOptionsData.query = defaultValueOptionsData.query.replace(/,count\:.+/, "}");
4244
- data.query = data.query.replace(/}$/, "," + defaultValueOptionsData.query.replace(/{(.+)}/, "$1}"));
4245
- let valueField = `${field.name}`;
4246
- if(field._prefix){
4247
- // field._prefix一般来object类型字段的子字段的父字段api名称,比如流程对象的字段perms.users_can_add前缀为perms.
4248
- valueField = `${field._prefix}${field.name}`;
4249
- }
4250
- if(ctx.fieldNamePrefix){
4251
- // ctx.fieldNamePrefix一般来自列表搜索,值为__searchable__
4252
- valueField = `${ctx.fieldNamePrefix}${valueField}`;
4253
- }
4254
- data.$value = `$${valueField}`;
4255
- // data["&"] = "$$";
4256
-
4257
- const requestAdaptor = `
4258
- var filters = [];
4259
- api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters));
4260
- var defaultValue = api.data.$value;
4261
- var optionsFiltersOp = "${field.multiple ? "in" : "="}";
4262
- var optionsFilters = [["user", optionsFiltersOp, []]];
4263
- if (defaultValue) {
4264
- optionsFilters = [["user", optionsFiltersOp, defaultValue]];
4265
- }
4266
- api.data.query = api.data.query.replace(/{__options_filters}/g, JSON.stringify(optionsFilters));
4267
- return api;
4268
- `;
4269
- const adaptor = `
4270
- const data = payload.data;
4271
- const rows = data.leftOptions
4272
- data.children = data.children.map(function (child) {
4273
- // child.defer = !!(child.children && child.children.length);
4274
- child.defer = true;
4275
- delete child.children;
4276
- return child;
4277
- });
4278
-
4279
- var getTreeOptions = SteedosUI.getTreeOptions
4280
- data.leftOptions = getTreeOptions(rows);
4281
-
4282
-
4283
- var defaultValueOptions = data.defaultValueOptions;
4284
- data.children = _.union(data.children, defaultValueOptions);
4285
- delete data.defaultValueOptions;
4286
- payload.data = { options: [data] };
4287
- return payload;
4288
- `;
4289
- return {
4290
- "method": "post",
4291
- // 这里需要ObjectForm在api请求成功后才显示其中的amis form,否则就会有bug
4292
- // 见issue: https://github.com/baidu/amis/issues/6065
4293
- // "url": graphql.getApi() + `?value=\${${field.multiple ? valueField + "|join" : valueField}}`,
4294
- // "url": graphql.getApi() + `?value=\${editFormInited}`,
4295
- "url": getApi$2(),
4296
- "requestAdaptor": requestAdaptor,
4297
- "adaptor": adaptor,
4298
- "data": data,
4299
- // "sendOn": `this.editFormInited`,
4300
- "headers": {
4301
- "Authorization": "Bearer ${context.tenantId},${context.authToken}"
4302
- },
4303
- }
4304
- }
4113
+ var frontend_field_group_generalization$1 = "Generalization";
4114
+ var frontend_download$1 = "Download";
4115
+ var frontend_form_save$1 = "Save";
4116
+ var frontend_form_save_and_new$1 = "Save and New";
4117
+ var frontend_form_cancel$1 = "Cancel";
4118
+ var frontend_form_new$1 = "New";
4119
+ var frontend_form_edit$1 = "Edit";
4120
+ var frontend_form_select$1 = "Select";
4121
+ var frontend_form_confirm$1 = "Confirm";
4122
+ var frontend_form_delete$1 = "Delete";
4123
+ var frontend_form_view$1 = "view";
4124
+ var frontend_delete_confirm_text$1 = "Are you sure you want to delete this item?";
4125
+ var frontend_delete_many_selected_required$1 = "Please select the item to be deleted";
4126
+ var frontend_delete_many_confirm_text$1 = "Are you sure you want to delete?";
4127
+ var frontend_display_type_is_table$1 = "Table";
4128
+ var frontend_display_type_is_split$1 = "Split View";
4129
+ var frontend_display_as$1 = "Displayed as";
4130
+ var frontend_record_sum$1 = "items";
4131
+ var frontend_button_reload_tooltip$1 = "Refresh";
4132
+ var frontend_button_search_tooltip$1 = "Search";
4133
+ var frontend_fields_filter_button_search$1 = "Search";
4134
+ var frontend_fields_filter_button_settings$1 = "Set search options";
4135
+ var frontend_button_listview_control_tooltip$1 = "List View Controls";
4136
+ var frontend_button_listview_control_label$1 = "LIST VIEW CONTROLS";
4137
+ var frontend_listview_control_columns$1 = "Show List";
4138
+ var frontend_listview_control_columns_mobile_group$1 = "Mobile side";
4139
+ var frontend_listview_control_clone_label$1 = "Clone";
4140
+ var frontend_listview_control_clone_title$1 = "Clone List View";
4141
+ var frontend_listview_control_clone_defaultData_label_start$1 = "Copy of";
4142
+ var frontend_listview_control_clone_defaultData_label_end$1 = "";
4143
+ var frontend_listview_control_delete_label$1 = "Delete";
4144
+ var frontend_listview_control_delete_confirm_text$1 = "If you delete this list view it will be permanently removed for all users with access. Are you sure you want to delete?";
4145
+ var frontend_listview_control_delete_message_success$1 = "Deletion successful";
4146
+ var frontend_listview_control_filters$1 = "Filter settings";
4147
+ var frontend_listview_control_filters_fields_extend$1 = "Conditional component 1";
4148
+ var frontend_listview_control_new_label$1 = "New";
4149
+ var frontend_listview_control_new_title$1 = "New List View";
4150
+ var frontend_listview_control_new_message_success$1 = "Success";
4151
+ var frontend_listview_control_new_message_failed$1 = "Failure";
4152
+ var frontend_listview_control_rename_label$1 = "Rename";
4153
+ var frontend_listview_control_rename_title$1 = "Rename List View";
4154
+ var frontend_listview_control_share$1 = "Sharing Settings";
4155
+ var frontend_listview_control_sort$1 = "Default sorting rule";
4156
+ var frontend_export_excel$1 = "Export Excel";
4157
+ var frontend_operation$1 = "Operation";
4158
+ var frontend_import_data$1 = "Import data";
4159
+ var frontend_import_data_object_name$1 = "Import object";
4160
+ var frontend_import_data_queue_import$1 = "Data import";
4161
+ var frontend_import_data_queue_import_description$1 = "Import description";
4162
+ var frontend_import_data_queue_import_encoding$1 = "Character code";
4163
+ var frontend_import_data_queue_import_template_url$1 = "Import template";
4164
+ var frontend_import_data_file$1 = "Excel file";
4165
+ var frontend_import_data_message_success$1 = "Importing has started...";
4166
+ var frontend_import_data_message_failed$1 = "Import failed";
4167
+ var frontend_record_detail_tab_detailed$1 = "Details";
4168
+ var frontend_record_detail_tab_related$1 = "Related";
4169
+ var frontend_all_apps$1 = "All apps";
4170
+ var frontend_all_projects$1 = "All projects";
4171
+ var frontend_application_launcher$1 = "Application launcher";
4172
+ var frontend_menu$1 = "Menu";
4173
+ var frontend_help$1 = "Help";
4174
+ var frontend_setup$1 = "Setup";
4175
+ var frontend_notifications$1 = "Notifications";
4176
+ var frontend_notifications_allread$1 = "Mark all as read";
4177
+ var frontend_notifications_allread_message$1 = "All marked as read";
4178
+ var frontend_profile$1 = "Profile";
4179
+ var frontend_about$1 = "About";
4180
+ var frontend_log_out$1 = "Log out";
4181
+ var frontend_listview_warning_start$1 = "The current ";
4182
+ var frontend_listview_warning_end$1 = " view does not exist!";
4183
+ var frontend_record_detail_related_list_warning$1 = "Missing parent object, parent record, or related list object property!";
4184
+ var frontend_record_detail_related_lists_warning$1 = "Missing parent object, or parent record property!";
4185
+ var frontend_record_detail_related_lists_info$1 = "No related child tables found";
4186
+ var frontend_calendar_listWeek$1 = "List";
4187
+ var frontend_message_no_permission_to_edit$1 = "You don't have permission to edit this record!";
4188
+ var frontend_message_modification_successful$1 = "Modification successful!";
4189
+ var frontend_message_modification_failed$1 = "Modification failed!";
4190
+ var frontend_objects_related_alert_start$1 = "No related table fields associated with the related list object";
4191
+ var frontend_objects_related_alert_end$1 = "were found.";
4192
+ var frontend_no_records_found$1 = "No records found.";
4193
+ var en_us = {
4194
+ frontend_field_group_generalization: frontend_field_group_generalization$1,
4195
+ frontend_download: frontend_download$1,
4196
+ frontend_form_save: frontend_form_save$1,
4197
+ frontend_form_save_and_new: frontend_form_save_and_new$1,
4198
+ frontend_form_cancel: frontend_form_cancel$1,
4199
+ frontend_form_new: frontend_form_new$1,
4200
+ frontend_form_edit: frontend_form_edit$1,
4201
+ frontend_form_select: frontend_form_select$1,
4202
+ frontend_form_confirm: frontend_form_confirm$1,
4203
+ frontend_form_delete: frontend_form_delete$1,
4204
+ frontend_form_view: frontend_form_view$1,
4205
+ frontend_delete_confirm_text: frontend_delete_confirm_text$1,
4206
+ frontend_delete_many_selected_required: frontend_delete_many_selected_required$1,
4207
+ frontend_delete_many_confirm_text: frontend_delete_many_confirm_text$1,
4208
+ frontend_display_type_is_table: frontend_display_type_is_table$1,
4209
+ frontend_display_type_is_split: frontend_display_type_is_split$1,
4210
+ frontend_display_as: frontend_display_as$1,
4211
+ frontend_record_sum: frontend_record_sum$1,
4212
+ frontend_button_reload_tooltip: frontend_button_reload_tooltip$1,
4213
+ frontend_button_search_tooltip: frontend_button_search_tooltip$1,
4214
+ frontend_fields_filter_button_search: frontend_fields_filter_button_search$1,
4215
+ frontend_fields_filter_button_settings: frontend_fields_filter_button_settings$1,
4216
+ frontend_button_listview_control_tooltip: frontend_button_listview_control_tooltip$1,
4217
+ frontend_button_listview_control_label: frontend_button_listview_control_label$1,
4218
+ frontend_listview_control_columns: frontend_listview_control_columns$1,
4219
+ frontend_listview_control_columns_mobile_group: frontend_listview_control_columns_mobile_group$1,
4220
+ frontend_listview_control_clone_label: frontend_listview_control_clone_label$1,
4221
+ frontend_listview_control_clone_title: frontend_listview_control_clone_title$1,
4222
+ frontend_listview_control_clone_defaultData_label_start: frontend_listview_control_clone_defaultData_label_start$1,
4223
+ frontend_listview_control_clone_defaultData_label_end: frontend_listview_control_clone_defaultData_label_end$1,
4224
+ frontend_listview_control_delete_label: frontend_listview_control_delete_label$1,
4225
+ frontend_listview_control_delete_confirm_text: frontend_listview_control_delete_confirm_text$1,
4226
+ frontend_listview_control_delete_message_success: frontend_listview_control_delete_message_success$1,
4227
+ frontend_listview_control_filters: frontend_listview_control_filters$1,
4228
+ frontend_listview_control_filters_fields_extend: frontend_listview_control_filters_fields_extend$1,
4229
+ frontend_listview_control_new_label: frontend_listview_control_new_label$1,
4230
+ frontend_listview_control_new_title: frontend_listview_control_new_title$1,
4231
+ frontend_listview_control_new_message_success: frontend_listview_control_new_message_success$1,
4232
+ frontend_listview_control_new_message_failed: frontend_listview_control_new_message_failed$1,
4233
+ frontend_listview_control_rename_label: frontend_listview_control_rename_label$1,
4234
+ frontend_listview_control_rename_title: frontend_listview_control_rename_title$1,
4235
+ frontend_listview_control_share: frontend_listview_control_share$1,
4236
+ frontend_listview_control_sort: frontend_listview_control_sort$1,
4237
+ frontend_export_excel: frontend_export_excel$1,
4238
+ frontend_operation: frontend_operation$1,
4239
+ frontend_import_data: frontend_import_data$1,
4240
+ frontend_import_data_object_name: frontend_import_data_object_name$1,
4241
+ frontend_import_data_queue_import: frontend_import_data_queue_import$1,
4242
+ frontend_import_data_queue_import_description: frontend_import_data_queue_import_description$1,
4243
+ frontend_import_data_queue_import_encoding: frontend_import_data_queue_import_encoding$1,
4244
+ frontend_import_data_queue_import_template_url: frontend_import_data_queue_import_template_url$1,
4245
+ frontend_import_data_file: frontend_import_data_file$1,
4246
+ frontend_import_data_message_success: frontend_import_data_message_success$1,
4247
+ frontend_import_data_message_failed: frontend_import_data_message_failed$1,
4248
+ frontend_record_detail_tab_detailed: frontend_record_detail_tab_detailed$1,
4249
+ frontend_record_detail_tab_related: frontend_record_detail_tab_related$1,
4250
+ frontend_all_apps: frontend_all_apps$1,
4251
+ frontend_all_projects: frontend_all_projects$1,
4252
+ frontend_application_launcher: frontend_application_launcher$1,
4253
+ frontend_menu: frontend_menu$1,
4254
+ frontend_help: frontend_help$1,
4255
+ frontend_setup: frontend_setup$1,
4256
+ frontend_notifications: frontend_notifications$1,
4257
+ frontend_notifications_allread: frontend_notifications_allread$1,
4258
+ frontend_notifications_allread_message: frontend_notifications_allread_message$1,
4259
+ frontend_profile: frontend_profile$1,
4260
+ frontend_about: frontend_about$1,
4261
+ frontend_log_out: frontend_log_out$1,
4262
+ frontend_listview_warning_start: frontend_listview_warning_start$1,
4263
+ frontend_listview_warning_end: frontend_listview_warning_end$1,
4264
+ frontend_record_detail_related_list_warning: frontend_record_detail_related_list_warning$1,
4265
+ frontend_record_detail_related_lists_warning: frontend_record_detail_related_lists_warning$1,
4266
+ frontend_record_detail_related_lists_info: frontend_record_detail_related_lists_info$1,
4267
+ frontend_calendar_listWeek: frontend_calendar_listWeek$1,
4268
+ frontend_message_no_permission_to_edit: frontend_message_no_permission_to_edit$1,
4269
+ frontend_message_modification_successful: frontend_message_modification_successful$1,
4270
+ frontend_message_modification_failed: frontend_message_modification_failed$1,
4271
+ frontend_objects_related_alert_start: frontend_objects_related_alert_start$1,
4272
+ frontend_objects_related_alert_end: frontend_objects_related_alert_end$1,
4273
+ frontend_no_records_found: frontend_no_records_found$1
4274
+ };
4305
4275
 
4306
- async function getDeferApi$1(field, ctx) {
4307
- // data.query 最终格式 "{ \toptions:{__object_name}(filters:{__filters}){{__fields}} }"
4308
- const data = await getFindQuery({ name: "{__object_name}" }, null, [], {
4309
- alias: "options",
4310
- // filters: "{__filters}",
4311
- queryOptions: `filters: {__filters}, sort: "{__sort}"`
4312
- });
4313
- // 传入的默认过滤条件,比如[["name", "contains", ""]],将会作为基本过滤条件
4314
- let filters = field.filters;
4315
- if(typeof filters === "string"){
4316
- filters = new Function(`return ${filters}`);
4317
- filters = filters();
4318
- }
4319
- if(typeof filters === "function"){
4320
- filters = filters(field);
4321
- }
4322
- data.query = data.query.replace(/,count\:.+/, "}");
4323
- // 字段要根据请求参数动态生成,写死为__fields后续在发送适配器中替换
4324
- data.query = data.query.replace("{_id}", "{{__fields}}");
4325
- const requestAdaptor = `
4326
- var dep = api.query.dep;
4327
- var ref = api.query.ref;
4328
- var term = api.query.term;
4329
- var filters;
4330
- var objectName;
4331
- var fields;
4332
- var sort = "";
4333
- if (dep) {
4334
- objectName = "${refOrgsObjectName}";
4335
- fields = "value:_id,label:name,children";
4336
- filters = [['parent', '=', dep]];
4337
- sort = "${ctx.orgsSort}";
4338
- }
4339
- else if (ref) {
4340
- objectName = "${refUsersObjectName}";
4341
- // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次
4342
- fields = "_id,value:user,label:name";
4343
- // fields = "user,name,value:user,label:name";
4344
- filters = [['user_accepted', '=', true]];
4345
- var defaultFilters = ${filters && JSON.stringify(filters)};
4346
- if(defaultFilters){
4347
- filters.push(defaultFilters);
4348
- }
4349
- filters.push(['organizations_parents', '=', ref]);
4350
- sort = "${ctx.usersSort}";
4351
- }
4352
- api.data.query = api.data.query.replace(/{__object_name}/g, objectName).replace(/{__fields}/g, fields).replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());
4353
- return api;
4354
- `;
4355
- const adaptor = `
4356
- if (api.query.dep) {
4357
- // 展开组织时才需要根据children值设置defer属性
4358
- const data = payload.data;
4359
- data.options = data.options.map(function (option) {
4360
- option.defer = !!(option.children && option.children.length);
4361
- delete option.children;
4362
- return option;
4363
- });
4364
- payload.data = data;
4365
- }
4366
- return payload;
4367
- `;
4368
- return {
4369
- "method": "post",
4370
- "url": getApi$2() + "&ref=${ref}&dep=${value}",
4371
- "requestAdaptor": requestAdaptor,
4372
- "adaptor": adaptor,
4373
- "data": data,
4374
- "headers": {
4375
- "Authorization": "Bearer ${context.tenantId},${context.authToken}"
4376
- }
4377
- }
4378
- }
4276
+ var frontend_field_group_generalization = "通用";
4277
+ var frontend_download = "下载";
4278
+ var frontend_form_save = "保存";
4279
+ var frontend_form_save_and_new = "保存并新建";
4280
+ var frontend_form_cancel = "取消";
4281
+ var frontend_form_new = "新建";
4282
+ var frontend_form_edit = "编辑";
4283
+ var frontend_form_select = "选择";
4284
+ var frontend_form_confirm = "确认";
4285
+ var frontend_form_delete = "删除";
4286
+ var frontend_form_view = "查看";
4287
+ var frontend_delete_confirm_text = "确定要删除此项目?";
4288
+ var frontend_delete_many_selected_required = "请选择要删除的项";
4289
+ var frontend_delete_many_confirm_text = "确定要删除吗?";
4290
+ var frontend_display_type_is_table = "表格";
4291
+ var frontend_display_type_is_split = "分栏视图";
4292
+ var frontend_display_as = "显示为";
4293
+ var frontend_record_sum = "个项目";
4294
+ var frontend_button_reload_tooltip = "刷新";
4295
+ var frontend_button_search_tooltip = "搜索";
4296
+ var frontend_fields_filter_button_search = "搜索";
4297
+ var frontend_fields_filter_button_settings = "设置搜索项";
4298
+ var frontend_button_listview_control_tooltip = "列表视图控制";
4299
+ var frontend_button_listview_control_label = "列表视图控制";
4300
+ var frontend_listview_control_columns = "显示的列";
4301
+ var frontend_listview_control_columns_mobile_group = "手机端";
4302
+ var frontend_listview_control_clone = "复制";
4303
+ var frontend_listview_control_clone_label = "复制";
4304
+ var frontend_listview_control_clone_title = "复制 列表视图";
4305
+ var frontend_listview_control_clone_defaultData_label_start = "";
4306
+ var frontend_listview_control_clone_defaultData_label_end = "的副本";
4307
+ var frontend_listview_control_delete_label = "删除";
4308
+ var frontend_listview_control_delete_confirm_text = "如果您删除此列表视图,该视图将为所有具备访问权限的用户永久删除。是否确定要删除?";
4309
+ var frontend_listview_control_delete_message_success = "删除成功";
4310
+ var frontend_listview_control_filters = "过滤设置";
4311
+ var frontend_listview_control_filters_fields_extend = "条件组件1";
4312
+ var frontend_listview_control_new_label = "新建";
4313
+ var frontend_listview_control_new_title = "新建 列表视图";
4314
+ var frontend_listview_control_new_message_success = "成功";
4315
+ var frontend_listview_control_new_message_failed = "失败";
4316
+ var frontend_listview_control_rename_label = "重命名";
4317
+ var frontend_listview_control_rename_title = "重命名 列表视图";
4318
+ var frontend_listview_control_share = "共享设置";
4319
+ var frontend_listview_control_sort = "默认排序规则";
4320
+ var frontend_export_excel = "导出";
4321
+ var frontend_operation = "操作";
4322
+ var frontend_import_data = "导入数据";
4323
+ var frontend_import_data_object_name = "导入对象";
4324
+ var frontend_import_data_queue_import = "数据导入";
4325
+ var frontend_import_data_queue_import_description = "导入描述";
4326
+ var frontend_import_data_queue_import_encoding = "字符代码";
4327
+ var frontend_import_data_queue_import_template_url = "导入模板";
4328
+ var frontend_import_data_file = "Excel文件";
4329
+ var frontend_import_data_message_success = "已开始导入...";
4330
+ var frontend_import_data_message_failed = "导入失败";
4331
+ var frontend_record_detail_tab_detailed = "详细";
4332
+ var frontend_record_detail_tab_related = "相关";
4333
+ var frontend_all_apps = "所有应用";
4334
+ var frontend_all_projects = "所有项目";
4335
+ var frontend_application_launcher = "应用程序启动器";
4336
+ var frontend_menu = "菜单";
4337
+ var frontend_help = "帮助";
4338
+ var frontend_setup = "设置";
4339
+ var frontend_notifications = "通知";
4340
+ var frontend_notifications_allread = "全部标记为已读";
4341
+ var frontend_notifications_allread_message = "已全部标记为已读";
4342
+ var frontend_profile = "个人资料";
4343
+ var frontend_about = "关于";
4344
+ var frontend_log_out = "注销";
4345
+ var frontend_listview_warning_start = "当前";
4346
+ var frontend_listview_warning_end = "视图不存在!";
4347
+ var frontend_record_detail_related_list_warning = "缺少父级对象、父级记录或相关列表对象属性!";
4348
+ var frontend_record_detail_related_lists_warning = "缺少父级对象或父级记录属性!";
4349
+ var frontend_record_detail_related_lists_info = "没有相关子表";
4350
+ var frontend_calendar_listWeek = "列表";
4351
+ var frontend_message_no_permission_to_edit = "您没有编辑该记录的权限!";
4352
+ var frontend_message_modification_successful = "修改成功!";
4353
+ var frontend_message_modification_failed = "修改失败!";
4354
+ var frontend_objects_related_alert_start = "未找到与相关列表对象";
4355
+ var frontend_objects_related_alert_end = "关联的相关表字段";
4356
+ var frontend_no_records_found = "无法找到记录";
4357
+ var zh_cn = {
4358
+ frontend_field_group_generalization: frontend_field_group_generalization,
4359
+ frontend_download: frontend_download,
4360
+ frontend_form_save: frontend_form_save,
4361
+ frontend_form_save_and_new: frontend_form_save_and_new,
4362
+ frontend_form_cancel: frontend_form_cancel,
4363
+ frontend_form_new: frontend_form_new,
4364
+ frontend_form_edit: frontend_form_edit,
4365
+ frontend_form_select: frontend_form_select,
4366
+ frontend_form_confirm: frontend_form_confirm,
4367
+ frontend_form_delete: frontend_form_delete,
4368
+ frontend_form_view: frontend_form_view,
4369
+ frontend_delete_confirm_text: frontend_delete_confirm_text,
4370
+ frontend_delete_many_selected_required: frontend_delete_many_selected_required,
4371
+ frontend_delete_many_confirm_text: frontend_delete_many_confirm_text,
4372
+ frontend_display_type_is_table: frontend_display_type_is_table,
4373
+ frontend_display_type_is_split: frontend_display_type_is_split,
4374
+ frontend_display_as: frontend_display_as,
4375
+ frontend_record_sum: frontend_record_sum,
4376
+ frontend_button_reload_tooltip: frontend_button_reload_tooltip,
4377
+ frontend_button_search_tooltip: frontend_button_search_tooltip,
4378
+ frontend_fields_filter_button_search: frontend_fields_filter_button_search,
4379
+ frontend_fields_filter_button_settings: frontend_fields_filter_button_settings,
4380
+ frontend_button_listview_control_tooltip: frontend_button_listview_control_tooltip,
4381
+ frontend_button_listview_control_label: frontend_button_listview_control_label,
4382
+ frontend_listview_control_columns: frontend_listview_control_columns,
4383
+ frontend_listview_control_columns_mobile_group: frontend_listview_control_columns_mobile_group,
4384
+ frontend_listview_control_clone: frontend_listview_control_clone,
4385
+ frontend_listview_control_clone_label: frontend_listview_control_clone_label,
4386
+ frontend_listview_control_clone_title: frontend_listview_control_clone_title,
4387
+ frontend_listview_control_clone_defaultData_label_start: frontend_listview_control_clone_defaultData_label_start,
4388
+ frontend_listview_control_clone_defaultData_label_end: frontend_listview_control_clone_defaultData_label_end,
4389
+ frontend_listview_control_delete_label: frontend_listview_control_delete_label,
4390
+ frontend_listview_control_delete_confirm_text: frontend_listview_control_delete_confirm_text,
4391
+ frontend_listview_control_delete_message_success: frontend_listview_control_delete_message_success,
4392
+ frontend_listview_control_filters: frontend_listview_control_filters,
4393
+ frontend_listview_control_filters_fields_extend: frontend_listview_control_filters_fields_extend,
4394
+ frontend_listview_control_new_label: frontend_listview_control_new_label,
4395
+ frontend_listview_control_new_title: frontend_listview_control_new_title,
4396
+ frontend_listview_control_new_message_success: frontend_listview_control_new_message_success,
4397
+ frontend_listview_control_new_message_failed: frontend_listview_control_new_message_failed,
4398
+ frontend_listview_control_rename_label: frontend_listview_control_rename_label,
4399
+ frontend_listview_control_rename_title: frontend_listview_control_rename_title,
4400
+ frontend_listview_control_share: frontend_listview_control_share,
4401
+ frontend_listview_control_sort: frontend_listview_control_sort,
4402
+ frontend_export_excel: frontend_export_excel,
4403
+ frontend_operation: frontend_operation,
4404
+ frontend_import_data: frontend_import_data,
4405
+ frontend_import_data_object_name: frontend_import_data_object_name,
4406
+ frontend_import_data_queue_import: frontend_import_data_queue_import,
4407
+ frontend_import_data_queue_import_description: frontend_import_data_queue_import_description,
4408
+ frontend_import_data_queue_import_encoding: frontend_import_data_queue_import_encoding,
4409
+ frontend_import_data_queue_import_template_url: frontend_import_data_queue_import_template_url,
4410
+ frontend_import_data_file: frontend_import_data_file,
4411
+ frontend_import_data_message_success: frontend_import_data_message_success,
4412
+ frontend_import_data_message_failed: frontend_import_data_message_failed,
4413
+ frontend_record_detail_tab_detailed: frontend_record_detail_tab_detailed,
4414
+ frontend_record_detail_tab_related: frontend_record_detail_tab_related,
4415
+ frontend_all_apps: frontend_all_apps,
4416
+ frontend_all_projects: frontend_all_projects,
4417
+ frontend_application_launcher: frontend_application_launcher,
4418
+ frontend_menu: frontend_menu,
4419
+ frontend_help: frontend_help,
4420
+ frontend_setup: frontend_setup,
4421
+ frontend_notifications: frontend_notifications,
4422
+ frontend_notifications_allread: frontend_notifications_allread,
4423
+ frontend_notifications_allread_message: frontend_notifications_allread_message,
4424
+ frontend_profile: frontend_profile,
4425
+ frontend_about: frontend_about,
4426
+ frontend_log_out: frontend_log_out,
4427
+ frontend_listview_warning_start: frontend_listview_warning_start,
4428
+ frontend_listview_warning_end: frontend_listview_warning_end,
4429
+ frontend_record_detail_related_list_warning: frontend_record_detail_related_list_warning,
4430
+ frontend_record_detail_related_lists_warning: frontend_record_detail_related_lists_warning,
4431
+ frontend_record_detail_related_lists_info: frontend_record_detail_related_lists_info,
4432
+ frontend_calendar_listWeek: frontend_calendar_listWeek,
4433
+ frontend_message_no_permission_to_edit: frontend_message_no_permission_to_edit,
4434
+ frontend_message_modification_successful: frontend_message_modification_successful,
4435
+ frontend_message_modification_failed: frontend_message_modification_failed,
4436
+ frontend_objects_related_alert_start: frontend_objects_related_alert_start,
4437
+ frontend_objects_related_alert_end: frontend_objects_related_alert_end,
4438
+ frontend_no_records_found: frontend_no_records_found
4439
+ };
4379
4440
 
4380
- async function getSearchApi(field, ctx) {
4381
- // data.query 最终格式 "{ \toptions:space_users(filters: {__filters}){user,name,value:user,label:name}}"
4382
- // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次
4383
- const data = await getFindQuery({ name: refUsersObjectName }, null, [{ name: "user", alias: "value" }, { name: "name", alias: "label" }], {
4384
- alias: "options",
4385
- // filters: "{__filters}",
4386
- queryOptions: `filters: {__filters}, sort: "{__sort}"`
4387
- });
4388
- data.query = data.query.replace(/,count\:.+/, "}");
4389
- // 传入的默认过滤条件,比如[["name", "contains", "三"]],将会作为基本过滤条件
4390
- const filters = field.filters;
4391
- const requestAdaptor = `
4392
- var term = api.query.term;
4393
- var filters;
4394
- var sort = "";
4395
- if (term) {
4396
- filters = [['user_accepted', '=', true]];
4397
- var defaultFilters = ${filters && JSON.stringify(filters)};
4398
- if(defaultFilters){
4399
- filters.push(defaultFilters);
4400
- }
4401
- var fieldsForSearch = ["name", "username", "email", "mobile"];
4402
- var termFilters = [];
4403
- fieldsForSearch.forEach(function (field) {
4404
- termFilters.push([field, 'contains', term]);
4405
- termFilters.push("or");
4406
- });
4407
- termFilters.pop();
4408
- filters.push(termFilters);
4409
- sort = "${ctx.usersSort}";
4410
- }
4411
- api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());
4412
- return api;
4413
- `;
4414
- return {
4415
- "method": "post",
4416
- "url": getApi$2() + "?term=${term}",
4417
- "requestAdaptor": requestAdaptor,
4418
- "data": data,
4419
- "headers": {
4420
- "Authorization": "Bearer ${context.tenantId},${context.authToken}"
4421
- }
4422
- }
4441
+ const resources = {
4442
+ "en-US": {
4443
+ translation: en_us
4444
+ },
4445
+ "zh-CN": {
4446
+ translation: zh_cn
4447
+ }
4448
+ };
4449
+ var locale = "zh-CN";
4450
+ if (typeof window != 'undefined') {
4451
+ if (window.Builder?.settings.locale == "en-us") {
4452
+ locale = "en-US";
4453
+ } else if (window.Builder?.settings.locale == "zh-cn") {
4454
+ locale = "zh-CN";
4455
+ }
4423
4456
  }
4424
4457
 
4425
- function getRefListViewSort$1(refObject){
4426
- const listView = ___default__namespace.find(
4427
- refObject.list_views,
4428
- (view, name) => name === "all"
4429
- );
4430
- let sort = "";
4431
- if(listView){
4432
- sort = getListViewSort(listView);
4433
- }
4434
- return sort;
4435
- }
4436
4458
 
4437
- async function getSelectUserSchema(field, readonly, ctx) {
4438
- if (!field) {
4439
- return {}
4459
+ instance
4460
+ .use(initReactI18next)
4461
+ .init({
4462
+ resources,
4463
+ lng: locale,
4464
+ interpolation: {
4465
+ escapeValue: false
4440
4466
  }
4467
+ });
4441
4468
 
4442
- if (!ctx) {
4443
- ctx = {};
4444
- }
4445
- const amisSchema = {
4446
- "type": getAmisStaticFieldType('select', readonly)
4447
- };
4469
+ /*
4470
+ * @Author: baozhoutao@steedos.com
4471
+ * @Date: 2022-07-23 09:12:14
4472
+ * @LastEditors: baozhoutao@steedos.com
4473
+ * @LastEditTime: 2022-11-25 13:28:35
4474
+ * @Description:
4475
+ */
4448
4476
 
4449
- if (readonly) {
4450
- amisSchema.tpl = await getLookupTpl(field, ctx);
4451
- }
4452
- else {
4453
- const refUsersObjectConfig = await getUISchema(refUsersObjectName);
4454
- ctx.usersSort = getRefListViewSort$1(refUsersObjectConfig);
4455
- const refOrgsObjectConfig = await getUISchema(refOrgsObjectName);
4456
- ctx.orgsSort = getRefListViewSort$1(refOrgsObjectConfig);
4457
- Object.assign(amisSchema, {
4458
- // "labelField": "name",
4459
- // "valueField": "user",
4460
- "multiple": field.multiple,
4461
- "searchable": field.searchable,
4462
- "selectMode": "associated",
4463
- "leftMode": "tree",
4464
- "extractValue": true,
4465
- "clearable": true,
4466
- "source": await getSource$1(field, ctx),
4467
- "deferApi": await getDeferApi$1(field, ctx),
4468
- "searchApi": await getSearchApi(field, ctx)
4469
- });
4470
- if(field.multiple){
4471
- // 单选时如果配置joinValues为false,清空字段值会把字段值设置为空数组,这是amis人员单选功能的bug,普通的select没有这个问题
4472
- Object.assign(amisSchema, {
4473
- "joinValues": false,
4474
- });
4475
- }
4476
- if (typeof amisSchema.searchable !== "boolean") {
4477
- amisSchema.searchable = true;
4478
- }
4477
+ async function getListBody(fields, options){
4478
+ const columns = [];
4479
+ for (const field of fields) {
4479
4480
 
4480
- if(ctx.value){
4481
- amisSchema.value = ctx.value;
4482
- }
4481
+ const tpl = await getFieldTpl(field, options);
4483
4482
 
4484
- const onEvent = field.onEvent;
4485
- if (onEvent) {
4486
- amisSchema.onEvent = onEvent;
4483
+ let type = 'text';
4484
+ if(tpl){
4485
+ type = 'tpl';
4486
+ }
4487
+ if(!field.hidden && !field.extra){
4488
+ columns.push({
4489
+ name: field.name,
4490
+ label: field.label,
4491
+ sortable: field.sortable,
4492
+ // searchable: field.searchable,
4493
+ width: field.width,
4494
+ type: type,
4495
+ tpl: tpl,
4496
+ toggled: field.toggled
4497
+ // toggled: true
4498
+ });
4487
4499
  }
4488
4500
  }
4489
- return amisSchema;
4501
+ return {
4502
+ "type": "hbox",
4503
+ "columns": columns
4504
+ };
4490
4505
  }
4491
4506
 
4492
- const globalTag = '__G_L_O_B_A_L__';
4493
-
4494
- const getParentPath = function (path) {
4495
- var pathArr;
4496
- if (typeof path === 'string') {
4497
- pathArr = path.split('.');
4498
- if (pathArr.length === 1) {
4499
- return '#';
4500
- }
4501
- pathArr.pop();
4502
- return pathArr.join('.');
4507
+ function getDefaultParams$1(options){
4508
+ return {
4509
+ perPage: options.top || options.perPage || 10
4503
4510
  }
4504
- return '#';
4505
- };
4511
+ }
4506
4512
 
4507
- const getValueByPath = function (formData, path) {
4508
- if (path === '#' || !path) {
4509
- return formData || {};
4510
- } else if (typeof path === 'string') {
4511
- return ___default.get(formData, path);
4512
- } else {
4513
- console.error('path has to be a string');
4513
+ async function getListSchema$1(fields, options){
4514
+ const listBody = await getListBody(fields, options);
4515
+ const columns = listBody.columns;
4516
+ return {
4517
+ mode: "list",
4518
+ name: "thelist",
4519
+ draggable: false,
4520
+ headerToolbar: ['reload'],
4521
+ defaultParams: getDefaultParams$1(options),
4522
+ syncLocation: false,
4523
+ keepItemSelectionOnPageChange: true,
4524
+ checkOnItemClick: false,
4525
+ labelTpl: `\${name}`, //TODO 获取name字段
4526
+ listItem: {
4527
+ body: [...columns],
4528
+ actions: options.actions === false ? null : [
4529
+ {
4530
+ icon: "fa fa-eye",
4531
+ label: instance.t('frontend_form_view'),
4532
+ type: "button",
4533
+ actionType: "link",
4534
+ link: Router$1.getObjectDetailPath({
4535
+ formFactor: options.formFactor,
4536
+ appId: options.appId,
4537
+ objectName: options.tabId,
4538
+ listView: options.listView,
4539
+ recordId: `\${_id}`
4540
+ })
4541
+ }
4542
+ ]
4543
+ }
4514
4544
  }
4515
- };
4545
+ }
4516
4546
 
4517
- const isExpression$1 = function (func) {
4518
- var pattern, reg1, reg2;
4519
- if (typeof func !== 'string') {
4520
- return false;
4547
+
4548
+ async function getCardSchema(fields, options){
4549
+ let title = null;
4550
+ const titleField = _.find(fields, (f)=>{
4551
+ return f.name === options.labelFieldName;
4552
+ });
4553
+ if(titleField){
4554
+ title = await getFieldTpl(titleField, options);
4521
4555
  }
4522
- pattern = /^{{(.+)}}$/;
4523
- reg1 = /^{{(function.+)}}$/;
4524
- reg2 = /^{{(.+=>.+)}}$/;
4525
- if (typeof func === 'string' && func.match(pattern) && !func.match(reg1) && !func.match(reg2)) {
4526
- return true;
4556
+ const listBody = await getListBody(_.filter(fields, (f)=>{
4557
+ return f.name != options.labelFieldName
4558
+ }), options);
4559
+ return {
4560
+ mode: "cards",
4561
+ name: "cards",
4562
+ draggable: false,
4563
+ headerToolbar: ['statistics', 'pagination'],
4564
+ defaultParams: getDefaultParams$1(options),
4565
+ syncLocation: false,
4566
+ keepItemSelectionOnPageChange: false,
4567
+ checkOnItemClick: false,
4568
+ labelTpl: `\${${options.labelFieldName}}`,
4569
+ card: {
4570
+ "type": "card",
4571
+ "header": {
4572
+ "title": title
4573
+ },
4574
+ "body": [...listBody.columns]
4575
+ }
4527
4576
  }
4528
- return false;
4529
- };
4577
+ }
4530
4578
 
4531
- const parseSingleExpression$1 = function (func, formData, dataPath, global, userSession = {}) {
4532
- var error, funcBody, parent, parentPath, str;
4579
+ const refUsersObjectName = "space_users";
4580
+ const refOrgsObjectName = "organizations";
4533
4581
 
4534
- if (formData === void 0) {
4535
- formData = {};
4582
+ async function getSource$1(field, ctx) {
4583
+ // data.query 最终格式 "{ \tleftOptions:organizations(filters: {__filters}){value:_id,label:name,children}, children:organizations(filters: {__filters}){ref:_id,children}, defaultValueOptions:space_users(filters: {__options_filters}){user,name} }"
4584
+ const data = await getFindQuery({ name: refOrgsObjectName }, null, [{ name: "_id", alias: "value" },{name: "parent"}, { name: "name", alias: "label" }, { name: "children" }], {
4585
+ alias: "leftOptions",
4586
+ filters: "{__filters}"
4587
+ });
4588
+ data.query = data.query.replace(/,count\:.+/, "}");
4589
+ const childrenData = await getFindQuery({ name: refOrgsObjectName }, null, [{ name: "_id", alias: "ref" }], {
4590
+ alias: "children",
4591
+ filters: "{__filters}"
4592
+ });
4593
+ childrenData.query = childrenData.query.replace(/,count\:.+/, "}");
4594
+ data.query = data.query.replace(/}$/, "," + childrenData.query.replace(/{(.+)}/, "$1}"));
4595
+ const defaultValueOptionsData = await getFindQuery({ name: refUsersObjectName }, null, [{ name: "user", alias: "value" }, { name: "name", alias: "label" }], {
4596
+ alias: "defaultValueOptions",
4597
+ filters: "{__options_filters}"
4598
+ });
4599
+ defaultValueOptionsData.query = defaultValueOptionsData.query.replace(/,count\:.+/, "}");
4600
+ data.query = data.query.replace(/}$/, "," + defaultValueOptionsData.query.replace(/{(.+)}/, "$1}"));
4601
+ let valueField = `${field.name}`;
4602
+ if(field._prefix){
4603
+ // field._prefix一般来object类型字段的子字段的父字段api名称,比如流程对象的字段perms.users_can_add前缀为perms.
4604
+ valueField = `${field._prefix}${field.name}`;
4536
4605
  }
4537
- parentPath = getParentPath(dataPath);
4538
- parent = getValueByPath(formData, parentPath) || {};
4539
- if (typeof func === 'string') {
4540
- funcBody = func.substring(2, func.length - 2);
4541
- str = `\n var $user=${JSON.stringify(userSession)}; return ` + funcBody.replace(/\bformData\b/g, JSON.stringify(formData).replace(/\bglobal\b/g, globalTag)).replace(/\bglobal\b/g, JSON.stringify(global)).replace(new RegExp('\\b' + globalTag + '\\b', 'g'), 'global').replace(/rootValue/g, JSON.stringify(parent));
4542
- try {
4543
- return Function(str)();
4544
- } catch (_error) {
4545
- error = _error;
4546
- console.log(error, func, dataPath);
4547
- return func;
4548
- }
4549
- } else {
4550
- return func;
4606
+ if(ctx.fieldNamePrefix){
4607
+ // ctx.fieldNamePrefix一般来自列表搜索,值为__searchable__
4608
+ valueField = `${ctx.fieldNamePrefix}${valueField}`;
4551
4609
  }
4552
- };
4610
+ data.$value = `$${valueField}`;
4611
+ // data["&"] = "$$";
4553
4612
 
4554
- var frontend_field_group_generalization$1 = "Generalization";
4555
- var frontend_download$1 = "Download";
4556
- var frontend_form_save$1 = "Save";
4557
- var frontend_form_save_and_new$1 = "Save and New";
4558
- var frontend_form_cancel$1 = "Cancel";
4559
- var frontend_form_new$1 = "New";
4560
- var frontend_form_edit$1 = "Edit";
4561
- var frontend_form_select$1 = "Select";
4562
- var frontend_form_confirm$1 = "Confirm";
4563
- var frontend_form_delete$1 = "Delete";
4564
- var frontend_form_view$1 = "view";
4565
- var frontend_delete_confirm_text$1 = "Are you sure you want to delete this item?";
4566
- var frontend_delete_many_selected_required$1 = "Please select the item to be deleted";
4567
- var frontend_delete_many_confirm_text$1 = "Are you sure you want to delete?";
4568
- var frontend_display_type_is_table$1 = "Table";
4569
- var frontend_display_type_is_split$1 = "Split View";
4570
- var frontend_display_as$1 = "Displayed as";
4571
- var frontend_record_sum$1 = "items";
4572
- var frontend_button_reload_tooltip$1 = "Refresh";
4573
- var frontend_button_search_tooltip$1 = "Search";
4574
- var frontend_fields_filter_button_search$1 = "Search";
4575
- var frontend_fields_filter_button_settings$1 = "Set search options";
4576
- var frontend_button_listview_control_tooltip$1 = "List View Controls";
4577
- var frontend_button_listview_control_label$1 = "LIST VIEW CONTROLS";
4578
- var frontend_listview_control_columns$1 = "Show List";
4579
- var frontend_listview_control_columns_mobile_group$1 = "Mobile side";
4580
- var frontend_listview_control_clone_label$1 = "Clone";
4581
- var frontend_listview_control_clone_title$1 = "Clone List View";
4582
- var frontend_listview_control_clone_defaultData_label_start$1 = "Copy of";
4583
- var frontend_listview_control_clone_defaultData_label_end$1 = "";
4584
- var frontend_listview_control_delete_label$1 = "Delete";
4585
- var frontend_listview_control_delete_confirm_text$1 = "If you delete this list view it will be permanently removed for all users with access. Are you sure you want to delete?";
4586
- var frontend_listview_control_delete_message_success$1 = "Deletion successful";
4587
- var frontend_listview_control_filters$1 = "Filter settings";
4588
- var frontend_listview_control_filters_fields_extend$1 = "Conditional component 1";
4589
- var frontend_listview_control_new_label$1 = "New";
4590
- var frontend_listview_control_new_title$1 = "New List View";
4591
- var frontend_listview_control_new_message_success$1 = "Success";
4592
- var frontend_listview_control_new_message_failed$1 = "Failure";
4593
- var frontend_listview_control_rename_label$1 = "Rename";
4594
- var frontend_listview_control_rename_title$1 = "Rename List View";
4595
- var frontend_listview_control_share$1 = "Sharing Settings";
4596
- var frontend_listview_control_sort$1 = "Default sorting rule";
4597
- var frontend_export_excel$1 = "Export Excel";
4598
- var frontend_ercord_operation$1 = "Operation";
4599
- var frontend_import_data$1 = "Import data";
4600
- var frontend_import_data_object_name$1 = "Import object";
4601
- var frontend_import_data_queue_import$1 = "Data import";
4602
- var frontend_import_data_queue_import_description$1 = "Import description";
4603
- var frontend_import_data_queue_import_encoding$1 = "Character code";
4604
- var frontend_import_data_queue_import_template_url$1 = "Import template";
4605
- var frontend_import_data_file$1 = "Excel file";
4606
- var frontend_import_data_message_success$1 = "Importing has started...";
4607
- var frontend_import_data_message_failed$1 = "Import failed";
4608
- var frontend_record_detail_tab_detailed$1 = "Details";
4609
- var frontend_record_detail_tab_related$1 = "Related";
4610
- var frontend_all_apps$1 = "All apps";
4611
- var frontend_all_projects$1 = "All projects";
4612
- var frontend_application_launcher$1 = "Application launcher";
4613
- var frontend_menu$1 = "Menu";
4614
- var frontend_help$1 = "Help";
4615
- var frontend_setup$1 = "Setup";
4616
- var frontend_notifications$1 = "Notifications";
4617
- var frontend_notifications_allread$1 = "Mark all as read";
4618
- var frontend_notifications_allread_message$1 = "All marked as read";
4619
- var frontend_profile$1 = "Profile";
4620
- var frontend_about$1 = "About";
4621
- var frontend_log_out$1 = "Log out";
4622
- var frontend_listview_warning_start$1 = "The current ";
4623
- var frontend_listview_warning_end$1 = " view does not exist!";
4624
- var frontend_record_detail_related_list_warning$1 = "Missing parent object, parent record, or related list object property!";
4625
- var frontend_record_detail_related_lists_warning$1 = "Missing parent object, or parent record property!";
4626
- var frontend_record_detail_related_lists_info$1 = "No related child tables found";
4627
- var frontend_calendar_listWeek$1 = "List";
4628
- var frontend_message_no_permission_to_edit$1 = "You don't have permission to edit this record!";
4629
- var frontend_message_modification_successful$1 = "Modification successful!";
4630
- var frontend_message_modification_failed$1 = "Modification failed!";
4631
- var en_us = {
4632
- frontend_field_group_generalization: frontend_field_group_generalization$1,
4633
- frontend_download: frontend_download$1,
4634
- frontend_form_save: frontend_form_save$1,
4635
- frontend_form_save_and_new: frontend_form_save_and_new$1,
4636
- frontend_form_cancel: frontend_form_cancel$1,
4637
- frontend_form_new: frontend_form_new$1,
4638
- frontend_form_edit: frontend_form_edit$1,
4639
- frontend_form_select: frontend_form_select$1,
4640
- frontend_form_confirm: frontend_form_confirm$1,
4641
- frontend_form_delete: frontend_form_delete$1,
4642
- frontend_form_view: frontend_form_view$1,
4643
- frontend_delete_confirm_text: frontend_delete_confirm_text$1,
4644
- frontend_delete_many_selected_required: frontend_delete_many_selected_required$1,
4645
- frontend_delete_many_confirm_text: frontend_delete_many_confirm_text$1,
4646
- frontend_display_type_is_table: frontend_display_type_is_table$1,
4647
- frontend_display_type_is_split: frontend_display_type_is_split$1,
4648
- frontend_display_as: frontend_display_as$1,
4649
- frontend_record_sum: frontend_record_sum$1,
4650
- frontend_button_reload_tooltip: frontend_button_reload_tooltip$1,
4651
- frontend_button_search_tooltip: frontend_button_search_tooltip$1,
4652
- frontend_fields_filter_button_search: frontend_fields_filter_button_search$1,
4653
- frontend_fields_filter_button_settings: frontend_fields_filter_button_settings$1,
4654
- frontend_button_listview_control_tooltip: frontend_button_listview_control_tooltip$1,
4655
- frontend_button_listview_control_label: frontend_button_listview_control_label$1,
4656
- frontend_listview_control_columns: frontend_listview_control_columns$1,
4657
- frontend_listview_control_columns_mobile_group: frontend_listview_control_columns_mobile_group$1,
4658
- frontend_listview_control_clone_label: frontend_listview_control_clone_label$1,
4659
- frontend_listview_control_clone_title: frontend_listview_control_clone_title$1,
4660
- frontend_listview_control_clone_defaultData_label_start: frontend_listview_control_clone_defaultData_label_start$1,
4661
- frontend_listview_control_clone_defaultData_label_end: frontend_listview_control_clone_defaultData_label_end$1,
4662
- frontend_listview_control_delete_label: frontend_listview_control_delete_label$1,
4663
- frontend_listview_control_delete_confirm_text: frontend_listview_control_delete_confirm_text$1,
4664
- frontend_listview_control_delete_message_success: frontend_listview_control_delete_message_success$1,
4665
- frontend_listview_control_filters: frontend_listview_control_filters$1,
4666
- frontend_listview_control_filters_fields_extend: frontend_listview_control_filters_fields_extend$1,
4667
- frontend_listview_control_new_label: frontend_listview_control_new_label$1,
4668
- frontend_listview_control_new_title: frontend_listview_control_new_title$1,
4669
- frontend_listview_control_new_message_success: frontend_listview_control_new_message_success$1,
4670
- frontend_listview_control_new_message_failed: frontend_listview_control_new_message_failed$1,
4671
- frontend_listview_control_rename_label: frontend_listview_control_rename_label$1,
4672
- frontend_listview_control_rename_title: frontend_listview_control_rename_title$1,
4673
- frontend_listview_control_share: frontend_listview_control_share$1,
4674
- frontend_listview_control_sort: frontend_listview_control_sort$1,
4675
- frontend_export_excel: frontend_export_excel$1,
4676
- frontend_ercord_operation: frontend_ercord_operation$1,
4677
- frontend_import_data: frontend_import_data$1,
4678
- frontend_import_data_object_name: frontend_import_data_object_name$1,
4679
- frontend_import_data_queue_import: frontend_import_data_queue_import$1,
4680
- frontend_import_data_queue_import_description: frontend_import_data_queue_import_description$1,
4681
- frontend_import_data_queue_import_encoding: frontend_import_data_queue_import_encoding$1,
4682
- frontend_import_data_queue_import_template_url: frontend_import_data_queue_import_template_url$1,
4683
- frontend_import_data_file: frontend_import_data_file$1,
4684
- frontend_import_data_message_success: frontend_import_data_message_success$1,
4685
- frontend_import_data_message_failed: frontend_import_data_message_failed$1,
4686
- frontend_record_detail_tab_detailed: frontend_record_detail_tab_detailed$1,
4687
- frontend_record_detail_tab_related: frontend_record_detail_tab_related$1,
4688
- frontend_all_apps: frontend_all_apps$1,
4689
- frontend_all_projects: frontend_all_projects$1,
4690
- frontend_application_launcher: frontend_application_launcher$1,
4691
- frontend_menu: frontend_menu$1,
4692
- frontend_help: frontend_help$1,
4693
- frontend_setup: frontend_setup$1,
4694
- frontend_notifications: frontend_notifications$1,
4695
- frontend_notifications_allread: frontend_notifications_allread$1,
4696
- frontend_notifications_allread_message: frontend_notifications_allread_message$1,
4697
- frontend_profile: frontend_profile$1,
4698
- frontend_about: frontend_about$1,
4699
- frontend_log_out: frontend_log_out$1,
4700
- frontend_listview_warning_start: frontend_listview_warning_start$1,
4701
- frontend_listview_warning_end: frontend_listview_warning_end$1,
4702
- frontend_record_detail_related_list_warning: frontend_record_detail_related_list_warning$1,
4703
- frontend_record_detail_related_lists_warning: frontend_record_detail_related_lists_warning$1,
4704
- frontend_record_detail_related_lists_info: frontend_record_detail_related_lists_info$1,
4705
- frontend_calendar_listWeek: frontend_calendar_listWeek$1,
4706
- frontend_message_no_permission_to_edit: frontend_message_no_permission_to_edit$1,
4707
- frontend_message_modification_successful: frontend_message_modification_successful$1,
4708
- frontend_message_modification_failed: frontend_message_modification_failed$1
4709
- };
4613
+ const requestAdaptor = `
4614
+ var filters = [];
4615
+ api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters));
4616
+ var defaultValue = api.data.$value;
4617
+ var optionsFiltersOp = "${field.multiple ? "in" : "="}";
4618
+ var optionsFilters = [["user", optionsFiltersOp, []]];
4619
+ if (defaultValue) {
4620
+ optionsFilters = [["user", optionsFiltersOp, defaultValue]];
4621
+ }
4622
+ api.data.query = api.data.query.replace(/{__options_filters}/g, JSON.stringify(optionsFilters));
4623
+ return api;
4624
+ `;
4625
+ const adaptor = `
4626
+ const data = payload.data;
4627
+ const rows = data.leftOptions
4628
+ data.children = data.children.map(function (child) {
4629
+ // child.defer = !!(child.children && child.children.length);
4630
+ child.defer = true;
4631
+ delete child.children;
4632
+ return child;
4633
+ });
4710
4634
 
4711
- var frontend_field_group_generalization = "通用";
4712
- var frontend_download = "下载";
4713
- var frontend_form_save = "保存";
4714
- var frontend_form_save_and_new = "保存并新建";
4715
- var frontend_form_cancel = "取消";
4716
- var frontend_form_new = "新建";
4717
- var frontend_form_edit = "编辑";
4718
- var frontend_form_select = "选择";
4719
- var frontend_form_confirm = "确认";
4720
- var frontend_form_delete = "删除";
4721
- var frontend_form_view = "查看";
4722
- var frontend_delete_confirm_text = "确定要删除此项目?";
4723
- var frontend_delete_many_selected_required = "请选择要删除的项";
4724
- var frontend_delete_many_confirm_text = "确定要删除吗?";
4725
- var frontend_display_type_is_table = "表格";
4726
- var frontend_display_type_is_split = "分栏视图";
4727
- var frontend_display_as = "显示为";
4728
- var frontend_record_sum = "个项目";
4729
- var frontend_button_reload_tooltip = "刷新";
4730
- var frontend_button_search_tooltip = "搜索";
4731
- var frontend_fields_filter_button_search = "搜索";
4732
- var frontend_fields_filter_button_settings = "设置搜索项";
4733
- var frontend_button_listview_control_tooltip = "列表视图控制";
4734
- var frontend_button_listview_control_label = "列表视图控制";
4735
- var frontend_listview_control_columns = "显示的列";
4736
- var frontend_listview_control_columns_mobile_group = "手机端";
4737
- var frontend_listview_control_clone = "复制";
4738
- var frontend_listview_control_clone_label = "复制";
4739
- var frontend_listview_control_clone_title = "复制 列表视图";
4740
- var frontend_listview_control_clone_defaultData_label_start = "";
4741
- var frontend_listview_control_clone_defaultData_label_end = "的副本";
4742
- var frontend_listview_control_delete_label = "删除";
4743
- var frontend_listview_control_delete_confirm_text = "如果您删除此列表视图,该视图将为所有具备访问权限的用户永久删除。是否确定要删除?";
4744
- var frontend_listview_control_delete_message_success = "删除成功";
4745
- var frontend_listview_control_filters = "过滤设置";
4746
- var frontend_listview_control_filters_fields_extend = "条件组件1";
4747
- var frontend_listview_control_new_label = "新建";
4748
- var frontend_listview_control_new_title = "新建 列表视图";
4749
- var frontend_listview_control_new_message_success = "成功";
4750
- var frontend_listview_control_new_message_failed = "失败";
4751
- var frontend_listview_control_rename_label = "重命名";
4752
- var frontend_listview_control_rename_title = "重命名 列表视图";
4753
- var frontend_listview_control_share = "共享设置";
4754
- var frontend_listview_control_sort = "默认排序规则";
4755
- var frontend_export_excel = "导出";
4756
- var frontend_ercord_operation = "操作";
4757
- var frontend_import_data = "导入数据";
4758
- var frontend_import_data_object_name = "导入对象";
4759
- var frontend_import_data_queue_import = "数据导入";
4760
- var frontend_import_data_queue_import_description = "导入描述";
4761
- var frontend_import_data_queue_import_encoding = "字符代码";
4762
- var frontend_import_data_queue_import_template_url = "导入模板";
4763
- var frontend_import_data_file = "Excel文件";
4764
- var frontend_import_data_message_success = "已开始导入...";
4765
- var frontend_import_data_message_failed = "导入失败";
4766
- var frontend_record_detail_tab_detailed = "详细";
4767
- var frontend_record_detail_tab_related = "相关";
4768
- var frontend_all_apps = "所有应用";
4769
- var frontend_all_projects = "所有项目";
4770
- var frontend_application_launcher = "应用程序启动器";
4771
- var frontend_menu = "菜单";
4772
- var frontend_help = "帮助";
4773
- var frontend_setup = "设置";
4774
- var frontend_notifications = "通知";
4775
- var frontend_notifications_allread = "全部标记为已读";
4776
- var frontend_notifications_allread_message = "已全部标记为已读";
4777
- var frontend_profile = "个人资料";
4778
- var frontend_about = "关于";
4779
- var frontend_log_out = "注销";
4780
- var frontend_listview_warning_start = "当前";
4781
- var frontend_listview_warning_end = "视图不存在!";
4782
- var frontend_record_detail_related_list_warning = "缺少父级对象、父级记录或相关列表对象属性!";
4783
- var frontend_record_detail_related_lists_warning = "缺少父级对象或父级记录属性!";
4784
- var frontend_record_detail_related_lists_info = "没有相关子表";
4785
- var frontend_calendar_listWeek = "列表";
4786
- var frontend_message_no_permission_to_edit = "您没有编辑该记录的权限!";
4787
- var frontend_message_modification_successful = "修改成功!";
4788
- var frontend_message_modification_failed = "修改失败!";
4789
- var zh_cn = {
4790
- frontend_field_group_generalization: frontend_field_group_generalization,
4791
- frontend_download: frontend_download,
4792
- frontend_form_save: frontend_form_save,
4793
- frontend_form_save_and_new: frontend_form_save_and_new,
4794
- frontend_form_cancel: frontend_form_cancel,
4795
- frontend_form_new: frontend_form_new,
4796
- frontend_form_edit: frontend_form_edit,
4797
- frontend_form_select: frontend_form_select,
4798
- frontend_form_confirm: frontend_form_confirm,
4799
- frontend_form_delete: frontend_form_delete,
4800
- frontend_form_view: frontend_form_view,
4801
- frontend_delete_confirm_text: frontend_delete_confirm_text,
4802
- frontend_delete_many_selected_required: frontend_delete_many_selected_required,
4803
- frontend_delete_many_confirm_text: frontend_delete_many_confirm_text,
4804
- frontend_display_type_is_table: frontend_display_type_is_table,
4805
- frontend_display_type_is_split: frontend_display_type_is_split,
4806
- frontend_display_as: frontend_display_as,
4807
- frontend_record_sum: frontend_record_sum,
4808
- frontend_button_reload_tooltip: frontend_button_reload_tooltip,
4809
- frontend_button_search_tooltip: frontend_button_search_tooltip,
4810
- frontend_fields_filter_button_search: frontend_fields_filter_button_search,
4811
- frontend_fields_filter_button_settings: frontend_fields_filter_button_settings,
4812
- frontend_button_listview_control_tooltip: frontend_button_listview_control_tooltip,
4813
- frontend_button_listview_control_label: frontend_button_listview_control_label,
4814
- frontend_listview_control_columns: frontend_listview_control_columns,
4815
- frontend_listview_control_columns_mobile_group: frontend_listview_control_columns_mobile_group,
4816
- frontend_listview_control_clone: frontend_listview_control_clone,
4817
- frontend_listview_control_clone_label: frontend_listview_control_clone_label,
4818
- frontend_listview_control_clone_title: frontend_listview_control_clone_title,
4819
- frontend_listview_control_clone_defaultData_label_start: frontend_listview_control_clone_defaultData_label_start,
4820
- frontend_listview_control_clone_defaultData_label_end: frontend_listview_control_clone_defaultData_label_end,
4821
- frontend_listview_control_delete_label: frontend_listview_control_delete_label,
4822
- frontend_listview_control_delete_confirm_text: frontend_listview_control_delete_confirm_text,
4823
- frontend_listview_control_delete_message_success: frontend_listview_control_delete_message_success,
4824
- frontend_listview_control_filters: frontend_listview_control_filters,
4825
- frontend_listview_control_filters_fields_extend: frontend_listview_control_filters_fields_extend,
4826
- frontend_listview_control_new_label: frontend_listview_control_new_label,
4827
- frontend_listview_control_new_title: frontend_listview_control_new_title,
4828
- frontend_listview_control_new_message_success: frontend_listview_control_new_message_success,
4829
- frontend_listview_control_new_message_failed: frontend_listview_control_new_message_failed,
4830
- frontend_listview_control_rename_label: frontend_listview_control_rename_label,
4831
- frontend_listview_control_rename_title: frontend_listview_control_rename_title,
4832
- frontend_listview_control_share: frontend_listview_control_share,
4833
- frontend_listview_control_sort: frontend_listview_control_sort,
4834
- frontend_export_excel: frontend_export_excel,
4835
- frontend_ercord_operation: frontend_ercord_operation,
4836
- frontend_import_data: frontend_import_data,
4837
- frontend_import_data_object_name: frontend_import_data_object_name,
4838
- frontend_import_data_queue_import: frontend_import_data_queue_import,
4839
- frontend_import_data_queue_import_description: frontend_import_data_queue_import_description,
4840
- frontend_import_data_queue_import_encoding: frontend_import_data_queue_import_encoding,
4841
- frontend_import_data_queue_import_template_url: frontend_import_data_queue_import_template_url,
4842
- frontend_import_data_file: frontend_import_data_file,
4843
- frontend_import_data_message_success: frontend_import_data_message_success,
4844
- frontend_import_data_message_failed: frontend_import_data_message_failed,
4845
- frontend_record_detail_tab_detailed: frontend_record_detail_tab_detailed,
4846
- frontend_record_detail_tab_related: frontend_record_detail_tab_related,
4847
- frontend_all_apps: frontend_all_apps,
4848
- frontend_all_projects: frontend_all_projects,
4849
- frontend_application_launcher: frontend_application_launcher,
4850
- frontend_menu: frontend_menu,
4851
- frontend_help: frontend_help,
4852
- frontend_setup: frontend_setup,
4853
- frontend_notifications: frontend_notifications,
4854
- frontend_notifications_allread: frontend_notifications_allread,
4855
- frontend_notifications_allread_message: frontend_notifications_allread_message,
4856
- frontend_profile: frontend_profile,
4857
- frontend_about: frontend_about,
4858
- frontend_log_out: frontend_log_out,
4859
- frontend_listview_warning_start: frontend_listview_warning_start,
4860
- frontend_listview_warning_end: frontend_listview_warning_end,
4861
- frontend_record_detail_related_list_warning: frontend_record_detail_related_list_warning,
4862
- frontend_record_detail_related_lists_warning: frontend_record_detail_related_lists_warning,
4863
- frontend_record_detail_related_lists_info: frontend_record_detail_related_lists_info,
4864
- frontend_calendar_listWeek: frontend_calendar_listWeek,
4865
- frontend_message_no_permission_to_edit: frontend_message_no_permission_to_edit,
4866
- frontend_message_modification_successful: frontend_message_modification_successful,
4867
- frontend_message_modification_failed: frontend_message_modification_failed
4635
+ var getTreeOptions = SteedosUI.getTreeOptions
4636
+ data.leftOptions = getTreeOptions(rows);
4637
+
4638
+
4639
+ var defaultValueOptions = data.defaultValueOptions;
4640
+ data.children = _.union(data.children, defaultValueOptions);
4641
+ delete data.defaultValueOptions;
4642
+ payload.data = { options: [data] };
4643
+ return payload;
4644
+ `;
4645
+ return {
4646
+ "method": "post",
4647
+ // 这里需要ObjectForm在api请求成功后才显示其中的amis form,否则就会有bug
4648
+ // 见issue: https://github.com/baidu/amis/issues/6065
4649
+ // "url": graphql.getApi() + `?value=\${${field.multiple ? valueField + "|join" : valueField}}`,
4650
+ // "url": graphql.getApi() + `?value=\${editFormInited}`,
4651
+ "url": getApi$2(),
4652
+ "requestAdaptor": requestAdaptor,
4653
+ "adaptor": adaptor,
4654
+ "data": data,
4655
+ // "sendOn": `this.editFormInited`,
4656
+ "headers": {
4657
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
4658
+ },
4659
+ }
4660
+ }
4661
+
4662
+ async function getDeferApi$1(field, ctx) {
4663
+ // data.query 最终格式 "{ \toptions:{__object_name}(filters:{__filters}){{__fields}} }"
4664
+ const data = await getFindQuery({ name: "{__object_name}" }, null, [], {
4665
+ alias: "options",
4666
+ // filters: "{__filters}",
4667
+ queryOptions: `filters: {__filters}, sort: "{__sort}"`
4668
+ });
4669
+ // 传入的默认过滤条件,比如[["name", "contains", ""]],将会作为基本过滤条件
4670
+ let filters = field.filters;
4671
+ if(typeof filters === "string"){
4672
+ filters = new Function(`return ${filters}`);
4673
+ filters = filters();
4674
+ }
4675
+ if(typeof filters === "function"){
4676
+ filters = filters(field);
4677
+ }
4678
+ data.query = data.query.replace(/,count\:.+/, "}");
4679
+ // 字段要根据请求参数动态生成,写死为__fields后续在发送适配器中替换
4680
+ data.query = data.query.replace("{_id}", "{{__fields}}");
4681
+ const requestAdaptor = `
4682
+ var dep = api.query.dep;
4683
+ var ref = api.query.ref;
4684
+ var term = api.query.term;
4685
+ var filters;
4686
+ var objectName;
4687
+ var fields;
4688
+ var sort = "";
4689
+ if (dep) {
4690
+ objectName = "${refOrgsObjectName}";
4691
+ fields = "value:_id,label:name,children";
4692
+ filters = [['parent', '=', dep]];
4693
+ sort = "${ctx.orgsSort}";
4694
+ }
4695
+ else if (ref) {
4696
+ objectName = "${refUsersObjectName}";
4697
+ // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次
4698
+ fields = "_id,value:user,label:name";
4699
+ // fields = "user,name,value:user,label:name";
4700
+ filters = [['user_accepted', '=', true]];
4701
+ var defaultFilters = ${filters && JSON.stringify(filters)};
4702
+ if(defaultFilters){
4703
+ filters.push(defaultFilters);
4704
+ }
4705
+ filters.push(['organizations_parents', '=', ref]);
4706
+ sort = "${ctx.usersSort}";
4707
+ }
4708
+ api.data.query = api.data.query.replace(/{__object_name}/g, objectName).replace(/{__fields}/g, fields).replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());
4709
+ return api;
4710
+ `;
4711
+ const adaptor = `
4712
+ if (api.query.dep) {
4713
+ // 展开组织时才需要根据children值设置defer属性
4714
+ const data = payload.data;
4715
+ data.options = data.options.map(function (option) {
4716
+ option.defer = !!(option.children && option.children.length);
4717
+ delete option.children;
4718
+ return option;
4719
+ });
4720
+ payload.data = data;
4721
+ }
4722
+ return payload;
4723
+ `;
4724
+ return {
4725
+ "method": "post",
4726
+ "url": getApi$2() + "&ref=${ref}&dep=${value}",
4727
+ "requestAdaptor": requestAdaptor,
4728
+ "adaptor": adaptor,
4729
+ "data": data,
4730
+ "headers": {
4731
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
4732
+ }
4733
+ }
4734
+ }
4735
+
4736
+ async function getSearchApi(field, ctx) {
4737
+ // data.query 最终格式 "{ \toptions:space_users(filters: {__filters}){user,name,value:user,label:name}}"
4738
+ // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次
4739
+ const data = await getFindQuery({ name: refUsersObjectName }, null, [{ name: "user", alias: "value" }, { name: "name", alias: "label" }], {
4740
+ alias: "options",
4741
+ // filters: "{__filters}",
4742
+ queryOptions: `filters: {__filters}, sort: "{__sort}"`
4743
+ });
4744
+ data.query = data.query.replace(/,count\:.+/, "}");
4745
+ // 传入的默认过滤条件,比如[["name", "contains", "三"]],将会作为基本过滤条件
4746
+ const filters = field.filters;
4747
+ const requestAdaptor = `
4748
+ var term = api.query.term;
4749
+ var filters;
4750
+ var sort = "";
4751
+ if (term) {
4752
+ filters = [['user_accepted', '=', true]];
4753
+ var defaultFilters = ${filters && JSON.stringify(filters)};
4754
+ if(defaultFilters){
4755
+ filters.push(defaultFilters);
4756
+ }
4757
+ var fieldsForSearch = ["name", "username", "email", "mobile"];
4758
+ var termFilters = [];
4759
+ fieldsForSearch.forEach(function (field) {
4760
+ termFilters.push([field, 'contains', term]);
4761
+ termFilters.push("or");
4762
+ });
4763
+ termFilters.pop();
4764
+ filters.push(termFilters);
4765
+ sort = "${ctx.usersSort}";
4766
+ }
4767
+ api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());
4768
+ return api;
4769
+ `;
4770
+ return {
4771
+ "method": "post",
4772
+ "url": getApi$2() + "?term=${term}",
4773
+ "requestAdaptor": requestAdaptor,
4774
+ "data": data,
4775
+ "headers": {
4776
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
4777
+ }
4778
+ }
4779
+ }
4780
+
4781
+ function getRefListViewSort$1(refObject){
4782
+ const listView = ___default__namespace.find(
4783
+ refObject.list_views,
4784
+ (view, name) => name === "all"
4785
+ );
4786
+ let sort = "";
4787
+ if(listView){
4788
+ sort = getListViewSort(listView);
4789
+ }
4790
+ return sort;
4791
+ }
4792
+
4793
+ async function getSelectUserSchema(field, readonly, ctx) {
4794
+ if (!field) {
4795
+ return {}
4796
+ }
4797
+
4798
+ if (!ctx) {
4799
+ ctx = {};
4800
+ }
4801
+ const amisSchema = {
4802
+ "type": getAmisStaticFieldType('select', readonly)
4803
+ };
4804
+
4805
+ if (readonly) {
4806
+ amisSchema.tpl = await getLookupTpl(field, ctx);
4807
+ }
4808
+ else {
4809
+ const refUsersObjectConfig = await getUISchema(refUsersObjectName);
4810
+ ctx.usersSort = getRefListViewSort$1(refUsersObjectConfig);
4811
+ const refOrgsObjectConfig = await getUISchema(refOrgsObjectName);
4812
+ ctx.orgsSort = getRefListViewSort$1(refOrgsObjectConfig);
4813
+ Object.assign(amisSchema, {
4814
+ // "labelField": "name",
4815
+ // "valueField": "user",
4816
+ "multiple": field.multiple,
4817
+ "searchable": field.searchable,
4818
+ "selectMode": "associated",
4819
+ "leftMode": "tree",
4820
+ "extractValue": true,
4821
+ "clearable": true,
4822
+ "source": await getSource$1(field, ctx),
4823
+ "deferApi": await getDeferApi$1(field, ctx),
4824
+ "searchApi": await getSearchApi(field, ctx)
4825
+ });
4826
+ if(field.multiple){
4827
+ // 单选时如果配置joinValues为false,清空字段值会把字段值设置为空数组,这是amis人员单选功能的bug,普通的select没有这个问题
4828
+ Object.assign(amisSchema, {
4829
+ "joinValues": false,
4830
+ });
4831
+ }
4832
+ if (typeof amisSchema.searchable !== "boolean") {
4833
+ amisSchema.searchable = true;
4834
+ }
4835
+
4836
+ if(ctx.value){
4837
+ amisSchema.value = ctx.value;
4838
+ }
4839
+
4840
+ const onEvent = field.onEvent;
4841
+ if (onEvent) {
4842
+ amisSchema.onEvent = onEvent;
4843
+ }
4844
+ }
4845
+ return amisSchema;
4846
+ }
4847
+
4848
+ const globalTag = '__G_L_O_B_A_L__';
4849
+
4850
+ const getParentPath = function (path) {
4851
+ var pathArr;
4852
+ if (typeof path === 'string') {
4853
+ pathArr = path.split('.');
4854
+ if (pathArr.length === 1) {
4855
+ return '#';
4856
+ }
4857
+ pathArr.pop();
4858
+ return pathArr.join('.');
4859
+ }
4860
+ return '#';
4868
4861
  };
4869
4862
 
4870
- const resources = {
4871
- "en-US": {
4872
- translation: en_us
4873
- },
4874
- "zh-CN": {
4875
- translation: zh_cn
4876
- }
4863
+ const getValueByPath = function (formData, path) {
4864
+ if (path === '#' || !path) {
4865
+ return formData || {};
4866
+ } else if (typeof path === 'string') {
4867
+ return ___default.get(formData, path);
4868
+ } else {
4869
+ console.error('path has to be a string');
4870
+ }
4871
+ };
4872
+
4873
+ const isExpression$1 = function (func) {
4874
+ var pattern, reg1, reg2;
4875
+ if (typeof func !== 'string') {
4876
+ return false;
4877
+ }
4878
+ pattern = /^{{(.+)}}$/;
4879
+ reg1 = /^{{(function.+)}}$/;
4880
+ reg2 = /^{{(.+=>.+)}}$/;
4881
+ if (typeof func === 'string' && func.match(pattern) && !func.match(reg1) && !func.match(reg2)) {
4882
+ return true;
4883
+ }
4884
+ return false;
4877
4885
  };
4878
- var locale = "zh-CN";
4879
- if (typeof window != 'undefined') {
4880
- if (window.Builder?.settings.locale == "en-us") {
4881
- locale = "en-US";
4882
- } else if (window.Builder?.settings.locale == "zh-cn") {
4883
- locale = "zh-CN";
4884
- }
4885
- }
4886
4886
 
4887
+ const parseSingleExpression$1 = function (func, formData, dataPath, global, userSession = {}) {
4888
+ var error, funcBody, parent, parentPath, str;
4887
4889
 
4888
- instance
4889
- .use(initReactI18next)
4890
- .init({
4891
- resources,
4892
- lng: locale,
4893
- interpolation: {
4894
- escapeValue: false
4890
+ if (formData === void 0) {
4891
+ formData = {};
4895
4892
  }
4896
- });
4893
+ parentPath = getParentPath(dataPath);
4894
+ parent = getValueByPath(formData, parentPath) || {};
4895
+ if (typeof func === 'string') {
4896
+ funcBody = func.substring(2, func.length - 2);
4897
+ str = `\n var $user=${JSON.stringify(userSession)}; return ` + funcBody.replace(/\bformData\b/g, JSON.stringify(formData).replace(/\bglobal\b/g, globalTag)).replace(/\bglobal\b/g, JSON.stringify(global)).replace(new RegExp('\\b' + globalTag + '\\b', 'g'), 'global').replace(/rootValue/g, JSON.stringify(parent));
4898
+ try {
4899
+ return Function(str)();
4900
+ } catch (_error) {
4901
+ error = _error;
4902
+ console.log(error, func, dataPath);
4903
+ return func;
4904
+ }
4905
+ } else {
4906
+ return func;
4907
+ }
4908
+ };
4897
4909
 
4898
4910
  /*
4899
4911
  * @Author: baozhoutao@steedos.com
4900
4912
  * @Date: 2022-11-01 15:51:00
4901
- * @LastEditors: liaodaxue
4902
- * @LastEditTime: 2023-06-06 11:12:33
4913
+ * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
4914
+ * @LastEditTime: 2023-06-28 23:19:41
4903
4915
  * @Description:
4904
4916
  */
4905
4917
 
@@ -4950,6 +4962,16 @@
4950
4962
  return {
4951
4963
  data: formSchema
4952
4964
  };
4965
+ `;
4966
+ const onDialogCancelScript = `
4967
+ // 这里加setTimeout是因为amis的Bug,它会先触发cancel事件执行此脚本关闭父窗口然后再关闭子窗口
4968
+ // 正确的顺序应该是先关闭子窗口再关闭父窗口,顺序错了会造成第二次点击新建按钮的时候异常
4969
+ setTimeout(function(){
4970
+ doAction({
4971
+ "actionType": "cancel",
4972
+ "componentId": "object_actions_drawer_${uiSchema.name}"
4973
+ });
4974
+ }, 200);
4953
4975
  `;
4954
4976
  return {
4955
4977
  "type": "service",
@@ -5011,6 +5033,17 @@
5011
5033
  "closeOnEsc": false,
5012
5034
  "closeOnOutside": false,
5013
5035
  "size": "lg",
5036
+ "onEvent": {
5037
+ "cancel": {
5038
+ "actions": [
5039
+ {
5040
+ "actionType": "custom",
5041
+ "script": onDialogCancelScript,
5042
+ "expression": "${window:innerWidth < 768}",
5043
+ }
5044
+ ]
5045
+ }
5046
+ },
5014
5047
  "actions": [
5015
5048
  {
5016
5049
  type: 'button',
@@ -5073,7 +5106,7 @@
5073
5106
  * @Author: baozhoutao@steedos.com
5074
5107
  * @Date: 2022-11-01 15:49:58
5075
5108
  * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
5076
- * @LastEditTime: 2023-03-27 11:36:49
5109
+ * @LastEditTime: 2023-06-28 23:22:31
5077
5110
  * @Description:
5078
5111
  */
5079
5112
 
@@ -5102,6 +5135,17 @@
5102
5135
  ? JSON.parse(page.schema)
5103
5136
  : page.schema;
5104
5137
  }
5138
+
5139
+ const onDialogCancelScript = `
5140
+ // 这里加setTimeout是因为amis的Bug,它会先触发cancel事件执行此脚本关闭父窗口然后再关闭子窗口
5141
+ // 正确的顺序应该是先关闭子窗口再关闭父窗口,顺序错了会造成第二次点击编辑按钮的时候异常
5142
+ setTimeout(function(){
5143
+ doAction({
5144
+ "actionType": "cancel",
5145
+ "componentId": "object_actions_drawer_${uiSchema.name}"
5146
+ });
5147
+ }, 200);
5148
+ `;
5105
5149
 
5106
5150
  return {
5107
5151
  type: "service",
@@ -5125,6 +5169,17 @@
5125
5169
  closeOnOutside: false,
5126
5170
  showCloseButton: true,
5127
5171
  size: "lg",
5172
+ "onEvent": {
5173
+ "cancel": {
5174
+ "actions": [
5175
+ {
5176
+ "actionType": "custom",
5177
+ "script": onDialogCancelScript,
5178
+ "expression": "${window:innerWidth < 768}",
5179
+ }
5180
+ ]
5181
+ }
5182
+ },
5128
5183
  },
5129
5184
  },
5130
5185
  ],
@@ -5421,6 +5476,7 @@
5421
5476
  label: instance.t('frontend_import_data_file'),
5422
5477
  required: true,
5423
5478
  type: "input-file",
5479
+ accept: ".xlsx,.xls",
5424
5480
  className: "m-1",
5425
5481
  labelClassName: "text-left",
5426
5482
  clearValueOnHidden: true,
@@ -6084,7 +6140,8 @@
6084
6140
  "actionType": "drawer",
6085
6141
  "drawer": {
6086
6142
  "type": "drawer",
6087
- "title": "操作",
6143
+ "title": instance.t('frontend_operation'),
6144
+ "id": "object_actions_drawer_" + objectSchema.name,
6088
6145
  "body": [
6089
6146
  {
6090
6147
  "type": "button-group",
@@ -6107,7 +6164,6 @@
6107
6164
  "size": "lg"
6108
6165
  }
6109
6166
  ],
6110
- "id": "u:9815f7366b9f",
6111
6167
  "position": "bottom",
6112
6168
  "closeOnOutside": true,
6113
6169
  "resizable": false,
@@ -6118,8 +6174,7 @@
6118
6174
  }
6119
6175
  ]
6120
6176
  }
6121
- },
6122
- "id": "u:ee7c7929e6ae"
6177
+ }
6123
6178
  }
6124
6179
  }else {
6125
6180
  if(moreButtons.length > 0){
@@ -6150,7 +6205,8 @@
6150
6205
  "actionType": "drawer",
6151
6206
  "drawer": {
6152
6207
  "type": "drawer",
6153
- "title": "操作",
6208
+ "title": instance.t('frontend_operation'),
6209
+ "id": "object_actions_drawer_" + objectSchema.name,
6154
6210
  "body": [
6155
6211
  {
6156
6212
  "type": "button-group",
@@ -6174,7 +6230,6 @@
6174
6230
  "size": "lg"
6175
6231
  }
6176
6232
  ],
6177
- "id": "u:9815f7366b9f",
6178
6233
  "position": "bottom",
6179
6234
  "closeOnOutside": true,
6180
6235
  "resizable": false,
@@ -6185,8 +6240,7 @@
6185
6240
  }
6186
6241
  ]
6187
6242
  }
6188
- },
6189
- "id": "u:ee7c7929e6ae"
6243
+ }
6190
6244
  }
6191
6245
  }else {
6192
6246
  return ___default__default["default"].map(buttons, (button) => {
@@ -6214,7 +6268,8 @@
6214
6268
  "actionType": "drawer",
6215
6269
  "drawer": {
6216
6270
  "type": "drawer",
6217
- "title": "操作",
6271
+ "title": instance.t('frontend_operation'),
6272
+ "id": "object_actions_drawer_" + objectSchema.name,
6218
6273
  "body": [
6219
6274
  {
6220
6275
  "type": "button-group",
@@ -6862,6 +6917,28 @@
6862
6917
  let amisButtonsSchema = getObjectListViewButtonsSchemas(objectSchema, {formFactor: ctx.formFactor});
6863
6918
  const reg = new RegExp('_', 'g');
6864
6919
  const standardIcon = icon && icon.replace(reg, '-');
6920
+ const standardNewButton = _.find(amisButtonsSchema, { name: "standard_new" });
6921
+ const buttonSchema = [{
6922
+ "type": "flex",
6923
+ "items": amisButtonsSchema,
6924
+ "visibleOn": "${display == 'split'?false:true}"
6925
+ }];
6926
+ if(ctx.formFactor !== 'SMALL'){
6927
+ buttonSchema.push({
6928
+ "type": "flex",
6929
+ "items":[
6930
+ standardNewButton,
6931
+ {
6932
+ "type": "dropdown-button",
6933
+ "buttons": Array.isArray(amisButtonsSchema) ? amisButtonsSchema.filter(obj => obj.name !== "standard_new"):{},
6934
+ "menuClassName": "p-none split-dropdown-buttons",
6935
+ "align": "right",
6936
+ "size": "sm"
6937
+ }
6938
+ ],
6939
+ "visibleOn": "${display == 'split'?true:false}"
6940
+ });
6941
+ }
6865
6942
  return {
6866
6943
  "type": "grid",
6867
6944
  "columns": [
@@ -6912,10 +6989,7 @@
6912
6989
  "md": "auto"
6913
6990
  },
6914
6991
  {
6915
- "body": {
6916
- "type": "flex",
6917
- "items": amisButtonsSchema,
6918
- },
6992
+ "body": buttonSchema,
6919
6993
  "md": "auto",
6920
6994
  "valign": "middle",
6921
6995
  }
@@ -8327,6 +8401,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
8327
8401
  "type": "button",
8328
8402
  "align": "right",
8329
8403
  "tooltip": instance.t('frontend_button_reload_tooltip'),
8404
+ "tooltipPlacement": "top",
8330
8405
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
8331
8406
  "label": "",
8332
8407
  "icon": "fa fa-sync",
@@ -8346,6 +8421,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
8346
8421
  "label": instance.t('frontend_button_search_tooltip'),
8347
8422
  "icon": "fa fa-search",
8348
8423
  "type": "button",
8424
+ "tooltipPlacement": "top",
8349
8425
  "tooltip": instance.t('frontend_button_search_tooltip'),
8350
8426
  "badge": {
8351
8427
  "offset": [
@@ -8392,7 +8468,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
8392
8468
  "type": "reload",
8393
8469
  "align": "right",
8394
8470
  "tooltip": instance.t('frontend_button_reload_tooltip'),
8395
- "tooltipPlacement": "bottom",
8471
+ "tooltipPlacement": "top",
8396
8472
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500"
8397
8473
  },
8398
8474
  // getExportExcelToolbarButtonSchema(),
@@ -8402,7 +8478,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
8402
8478
  "label": instance.t('frontend_button_search_tooltip'),
8403
8479
  "icon": "fa fa-search",
8404
8480
  "tooltip": instance.t('frontend_button_search_tooltip'),
8405
- "tooltipPlacement": "bottom",
8481
+ "tooltipPlacement": "top",
8406
8482
  "type": "button",
8407
8483
  "badge": {
8408
8484
  "offset": [
@@ -8791,6 +8867,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
8791
8867
  const fieldsArr = [];
8792
8868
 
8793
8869
  const listName = "all";
8870
+
8871
+ const isMobile = window.innerWidth < 768;
8794
8872
 
8795
8873
  const listView = ___default__namespace.find(
8796
8874
  refObjectConfig.list_views,
@@ -8867,6 +8945,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
8867
8945
 
8868
8946
  source.data.$term = "$term";
8869
8947
  source.data.$self = "$$";
8948
+
8870
8949
 
8871
8950
  source.requestAdaptor = `
8872
8951
  const selfData = JSON.parse(JSON.stringify(api.data.$self));
@@ -8902,6 +8981,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
8902
8981
  }
8903
8982
  }
8904
8983
 
8984
+
8905
8985
  if(allowSearchFields){
8906
8986
  allowSearchFields.forEach(function(key){
8907
8987
  const keyValue = selfData[key];
@@ -9017,7 +9097,6 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
9017
9097
  pickerSchema.affixHeader = false;
9018
9098
 
9019
9099
  var headerToolbarItems = [];
9020
- const isMobile = window.innerWidth < 768;
9021
9100
  if(referenceTo.objectName === "space_users" && field.reference_to_field === "user" && !isMobile){
9022
9101
  headerToolbarItems = getLookupSapceUserTreeSchema();
9023
9102
  pickerSchema["style"] = {
@@ -9098,7 +9177,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
9098
9177
  }
9099
9178
 
9100
9179
  const ctx = ${JSON.stringify(ctx)};
9101
- const componentId = ctx.defaults.formSchema.id ? 'service-'+ctx.defaults.formSchema.id : 'new-'+ctx.defaults.formSchema.objectApiName;
9180
+ const componentId = ctx.defaults.formSchema.id;
9102
9181
  doAction({
9103
9182
  actionType: 'setValue',
9104
9183
  componentId: componentId,
@@ -9352,6 +9431,11 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
9352
9431
  // ids人员点选模式
9353
9432
  return await lookupToAmisIdsPicker(field, readonly, ctx);
9354
9433
  }
9434
+ if(!field.filters || field.filters.length == 0){
9435
+ field.filters = [["user_accepted", "=", true]];
9436
+ }else {
9437
+ field.filters = [ ["user_accepted", "=", true], "and", field.filters ];
9438
+ }
9355
9439
  // 左侧树右侧人员列表的下拉框模式,不再支持,而是执行下面的lookupToAmisPicker函数弹出选人窗口
9356
9440
  // return await lookupToAmisSelectUser(field, readonly, ctx);
9357
9441
  }
@@ -9492,7 +9576,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
9492
9576
  * @Author: baozhoutao@steedos.com
9493
9577
  * @Date: 2023-01-13 17:27:54
9494
9578
  * @LastEditors: liaodaxue
9495
- * @LastEditTime: 2023-06-16 15:58:21
9579
+ * @LastEditTime: 2023-06-30 10:29:52
9496
9580
  * @Description:
9497
9581
  */
9498
9582
 
@@ -9500,12 +9584,16 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
9500
9584
  const getMarkdownFieldSchema = (field, readonly, ctx)=>{
9501
9585
  if(readonly){
9502
9586
  return {
9503
- "type": "markdown",
9504
- "name": field.name,
9505
- "options": {
9506
- "linkify": true,
9507
- "html": true,
9508
- "breaks": true
9587
+ "type": "control",
9588
+ "label": field.label,
9589
+ "body": {
9590
+ "type": "markdown",
9591
+ "name": field.name,
9592
+ "options": {
9593
+ "linkify": true,
9594
+ "html": true,
9595
+ "breaks": true
9596
+ }
9509
9597
  }
9510
9598
  }
9511
9599
  }else {
@@ -10586,6 +10674,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
10586
10674
  async function getTableColumns$1(fields, options){
10587
10675
  const columns = [{name: '_index',type: 'text', width: 32, placeholder: ""}];
10588
10676
  const allowEdit = options.permissions?.allowEdit && options.permissions?.modifyAllRecords && !options.isLookup && options.enable_inline_edit != false;
10677
+ const defaultWidth = "unset";//用于使table内的td标签下生成div,实现将快速编辑按钮固定在右侧的效果,并不是为了unset效果
10589
10678
  for (const field of fields) {
10590
10679
  //增加quickEdit属性,实现快速编辑
10591
10680
  const quickEditSchema = allowEdit ? await getQuickEditSchema(field, options) : allowEdit;
@@ -10635,16 +10724,19 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
10635
10724
  label: field.label,
10636
10725
  width: field.width,
10637
10726
  toggled: field.toggled,
10638
- className:"whitespace-nowrap"
10727
+ static: true,
10728
+ className:"whitespace-nowrap",
10729
+ quickEdit: quickEditSchema
10639
10730
  }, field.amis, {name: field.name}));
10640
10731
  }else if(field.type === 'avatar' || field.type === 'image' || field.type === 'file'){
10641
10732
  columns.push(Object.assign({}, {
10642
10733
  type: "switch",
10643
10734
  name: field.name,
10644
10735
  label: field.label,
10645
- width: field.width,
10736
+ width: field.width || defaultWidth,
10646
10737
  toggled: field.toggled,
10647
10738
  quickEdit: quickEditSchema,
10739
+ static: true,
10648
10740
  className:"whitespace-nowrap",
10649
10741
  ...getAmisFileReadonlySchema(field)
10650
10742
  }, field.amis, {name: field.name}));
@@ -10657,9 +10749,10 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
10657
10749
  label: field.label,
10658
10750
  map: map,
10659
10751
  sortable: field.sortable,
10660
- width: field.width,
10752
+ width: field.width || defaultWidth,
10661
10753
  toggled: field.toggled,
10662
10754
  className:"whitespace-nowrap",
10755
+ static: true,
10663
10756
  quickEdit: quickEditSchema
10664
10757
  }, field.amis, {name: field.name}));
10665
10758
  }
@@ -10686,11 +10779,12 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
10686
10779
  label: field.label,
10687
10780
  sortable: field.sortable,
10688
10781
  // searchable: field.searchable,
10689
- width: field.width,
10782
+ width: field.width || defaultWidth,
10690
10783
  type: type,
10691
10784
  tpl: tpl,
10692
10785
  toggled: field.toggled,
10693
10786
  className,
10787
+ static: true,
10694
10788
  quickEdit: quickEditSchema,
10695
10789
  options: field.type === 'html' ? {html: true} : null
10696
10790
  // toggled: true
@@ -10967,7 +11061,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
10967
11061
  }
10968
11062
  return {
10969
11063
  type: 'operation',
10970
- label: instance.t('frontend_ercord_operation'),
11064
+ label: instance.t('frontend_operation'),
10971
11065
  fixed: 'right',
10972
11066
  labelClassName: 'text-center',
10973
11067
  className: 'text-center steedos-listview-operation w-20',
@@ -11439,7 +11533,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
11439
11533
  else{
11440
11534
  return {
11441
11535
  status: 2,
11442
- msg: "无法找到记录"
11536
+ msg: "${instance.t('frontend_no_records_found')}"
11443
11537
  }
11444
11538
  }
11445
11539
  }
@@ -12238,8 +12332,8 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
12238
12332
  /*
12239
12333
  * @Author: baozhoutao@steedos.com
12240
12334
  * @Date: 2022-05-26 16:02:08
12241
- * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
12242
- * @LastEditTime: 2023-06-04 15:49:23
12335
+ * @LastEditors: liaodaxue
12336
+ * @LastEditTime: 2023-06-29 17:27:19
12243
12337
  * @Description:
12244
12338
  */
12245
12339
 
@@ -12333,7 +12427,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
12333
12427
  const section = await getSection(formFields, permissionFields, fieldSchemaArray, key, ctx);
12334
12428
  if (section.body.length > 0) {
12335
12429
  if (section.visibleOn) {
12336
- sectionVisibleOns.push(section.visibleOn);
12430
+ sectionVisibleOns.push("("+section.visibleOn+")");
12337
12431
  }
12338
12432
  else {
12339
12433
  sectionVisibleOns.push("true");
@@ -12671,8 +12765,12 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
12671
12765
  if(___default__default["default"].has(formSchema, 'className')){
12672
12766
  formSchema.className = 'steedos-amis-form';
12673
12767
  }
12768
+ if(!formSchema.id){
12769
+ formSchema.id = 'form_' + objectSchema.name;
12770
+ }
12674
12771
  const amisSchema = {
12675
12772
  type: 'service',
12773
+ id: `service_${formSchema.id}`,
12676
12774
  className: 'p-0',
12677
12775
  name: `page_edit_${recordId}`,
12678
12776
  api: await getEditFormInitApi(objectSchema, recordId, fields, ctx),
@@ -12743,11 +12841,6 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
12743
12841
  }
12744
12842
  })]
12745
12843
  };
12746
- if(formSchema.id){
12747
- amisSchema.id = `service-${formSchema.id}`;
12748
- }else {
12749
- amisSchema.id = `new-${objectSchema.name}`;
12750
- }
12751
12844
  return amisSchema;
12752
12845
  }
12753
12846
 
@@ -13035,7 +13128,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
13035
13128
  uiSchema: relatedObjectUiSchema,
13036
13129
  amisSchema: {
13037
13130
  "type": "alert",
13038
- "body": `未找到与相关列表对象${relatedObjectName}关联的相关表字段`,
13131
+ "body": `${instance.t('frontend_objects_related_alert_start')} ${relatedObjectName} ${instance.t('frontend_objects_related_alert_end')}`,
13039
13132
  "level": "warning",
13040
13133
  "showIcon": true,
13041
13134
  "className": "mb-3"
@@ -17171,16 +17264,16 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
17171
17264
  };
17172
17265
 
17173
17266
  var AmisObjectForm = function (props) { return __awaiter(void 0, void 0, void 0, function () {
17174
- var $schema, recordId, defaultData, mode, layout, labelAlign, appId, fieldsExtend, _a, excludedFields, _b, fields, _c, className, initApiRequestAdaptor, initApiAdaptor, apiRequestAdaptor, apiAdaptor, enableTabs, tabsMode, objectApiName, schemaKeys, formSchema, defaults, options, globalData, amisSchema, uiSchema, schema, schema, formData;
17175
- return __generator(this, function (_d) {
17176
- switch (_d.label) {
17267
+ var $schema, recordId, defaultData, mode, layout, labelAlign, appId, fieldsExtend, _a, excludedFields, _b, fields, _c, form, _d, className, initApiRequestAdaptor, initApiAdaptor, apiRequestAdaptor, apiAdaptor, enableTabs, tabsMode, objectApiName, schemaKeys, formSchema, defaults, options, globalData, amisSchema, uiSchema, schema, schema, formData;
17268
+ return __generator(this, function (_e) {
17269
+ switch (_e.label) {
17177
17270
  case 0:
17178
- $schema = props.$schema, recordId = props.recordId, defaultData = props.defaultData, mode = props.mode, layout = props.layout, labelAlign = props.labelAlign, appId = props.appId, fieldsExtend = props.fieldsExtend, _a = props.excludedFields, excludedFields = _a === void 0 ? null : _a, _b = props.fields, fields = _b === void 0 ? null : _b, _c = props.className, className = _c === void 0 ? "" : _c, initApiRequestAdaptor = props.initApiRequestAdaptor, initApiAdaptor = props.initApiAdaptor, apiRequestAdaptor = props.apiRequestAdaptor, apiAdaptor = props.apiAdaptor, enableTabs = props.enableTabs, tabsMode = props.tabsMode;
17271
+ $schema = props.$schema, recordId = props.recordId, defaultData = props.defaultData, mode = props.mode, layout = props.layout, labelAlign = props.labelAlign, appId = props.appId, fieldsExtend = props.fieldsExtend, _a = props.excludedFields, excludedFields = _a === void 0 ? null : _a, _b = props.fields, fields = _b === void 0 ? null : _b, _c = props.form, form = _c === void 0 ? {} : _c, _d = props.className, className = _d === void 0 ? "" : _d, initApiRequestAdaptor = props.initApiRequestAdaptor, initApiAdaptor = props.initApiAdaptor, apiRequestAdaptor = props.apiRequestAdaptor, apiAdaptor = props.apiAdaptor, enableTabs = props.enableTabs, tabsMode = props.tabsMode;
17179
17272
  objectApiName = props.objectApiName || "space_users";
17180
- schemaKeys = ___default.difference(___default.keys($schema), ["type", "mode", "layout", "defaultData"]);
17273
+ schemaKeys = ___default.difference(___default.keys($schema), ["id", "form", "type", "mode", "layout", "defaultData"]);
17181
17274
  formSchema = ___default.pick(props, schemaKeys);
17182
17275
  defaults = {
17183
- formSchema: formSchema
17276
+ formSchema: Object.assign({}, formSchema, form)
17184
17277
  };
17185
17278
  options = {
17186
17279
  recordId: recordId,
@@ -17210,7 +17303,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
17210
17303
  tabsMode: tabsMode
17211
17304
  }))];
17212
17305
  case 1:
17213
- schema = _d.sent();
17306
+ schema = _e.sent();
17214
17307
  amisSchema = schema.amisSchema;
17215
17308
  if (defaultData) {
17216
17309
  // 让ObjectForm支持props中的dafaultData属性与上层组件配置的defaultData混合
@@ -17232,10 +17325,10 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
17232
17325
  }
17233
17326
  return [4 /*yield*/, getViewSchema(objectApiName, recordId, options)];
17234
17327
  case 3:
17235
- schema = _d.sent();
17328
+ schema = _e.sent();
17236
17329
  amisSchema = schema.amisSchema;
17237
17330
  uiSchema = schema.uiSchema;
17238
- _d.label = 4;
17331
+ _e.label = 4;
17239
17332
  case 4:
17240
17333
  formData = {};
17241
17334
  // formData.recordId = recordId || null;
@@ -17256,12 +17349,12 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
17256
17349
  }); };
17257
17350
 
17258
17351
  var AmisObjectListView = function (props) { return __awaiter(void 0, void 0, void 0, function () {
17259
- var $schema, top, perPage, _a, showHeader, data, defaultData, _b, className, crudClassName, _c, showDisplayAs, sideSchema, _e, filterVisible, headerToolbarItems, rowClassNameExpr, headerSchema, ctx, listName, defaults, objectApiName, displayAs, formFactor, isMobile, uiSchema, listView, schemaKeys, listSchema, setDataToComponentId, amisSchemaData, listViewId, listViewSchemaProps, serviceData;
17260
- var _f;
17261
- return __generator(this, function (_g) {
17262
- switch (_g.label) {
17352
+ var $schema, top, perPage, _a, showHeader, data, defaultData, _b, crud, _c, className, crudClassName, _d, showDisplayAs, sideSchema, _f, filterVisible, headerToolbarItems, rowClassNameExpr, headerSchema, ctx, listName, defaults, objectApiName, displayAs, formFactor, isMobile, uiSchema, listView, schemaKeys, listSchema, setDataToComponentId, amisSchemaData, listViewId, listViewSchemaProps, serviceData;
17353
+ var _g;
17354
+ return __generator(this, function (_h) {
17355
+ switch (_h.label) {
17263
17356
  case 0:
17264
- $schema = props.$schema, top = props.top, perPage = props.perPage, _a = props.showHeader, showHeader = _a === void 0 ? true : _a, data = props.data, defaultData = props.defaultData, _b = props.className, className = _b === void 0 ? "" : _b, crudClassName = props.crudClassName, _c = props.showDisplayAs, showDisplayAs = _c === void 0 ? false : _c, sideSchema = props.sideSchema, props.columnsTogglable, _e = props.filterVisible, filterVisible = _e === void 0 ? true : _e, headerToolbarItems = props.headerToolbarItems, rowClassNameExpr = props.rowClassNameExpr;
17357
+ $schema = props.$schema, top = props.top, perPage = props.perPage, _a = props.showHeader, showHeader = _a === void 0 ? true : _a, data = props.data, defaultData = props.defaultData, _b = props.crud, crud = _b === void 0 ? {} : _b, _c = props.className, className = _c === void 0 ? "" : _c, crudClassName = props.crudClassName, _d = props.showDisplayAs, showDisplayAs = _d === void 0 ? false : _d, sideSchema = props.sideSchema, props.columnsTogglable, _f = props.filterVisible, filterVisible = _f === void 0 ? true : _f, headerToolbarItems = props.headerToolbarItems, rowClassNameExpr = props.rowClassNameExpr;
17265
17358
  headerSchema = props.headerSchema;
17266
17359
  ctx = props.ctx;
17267
17360
  listName = (defaultData === null || defaultData === void 0 ? void 0 : defaultData.listName) || (data === null || data === void 0 ? void 0 : data.listName) || (props === null || props === void 0 ? void 0 : props.listName);
@@ -17290,7 +17383,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
17290
17383
  }
17291
17384
  return [4 /*yield*/, getUISchema(objectApiName, false)];
17292
17385
  case 1:
17293
- uiSchema = _g.sent();
17386
+ uiSchema = _h.sent();
17294
17387
  listView = ___default.find(uiSchema.list_views, function (listView, name) {
17295
17388
  // 传入listViewName空值则取第一个
17296
17389
  if (!listName) {
@@ -17309,7 +17402,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
17309
17402
  }
17310
17403
  listName = listView.name;
17311
17404
  if (!(ctx && ctx.defaults)) {
17312
- schemaKeys = ___default.difference(___default.keys($schema), ["type", "showHeader", "id"]);
17405
+ schemaKeys = ___default.difference(___default.keys($schema), ["type", "showHeader", "id", "crud"]);
17313
17406
  listSchema = ___default.pick(props, schemaKeys);
17314
17407
  // className不传入crud组件,crud单独识别crudClassName属性
17315
17408
  listSchema.className = crudClassName;
@@ -17332,7 +17425,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
17332
17425
  ]
17333
17426
  };
17334
17427
  defaults = {
17335
- listSchema: listSchema
17428
+ listSchema: Object.assign({}, listSchema, crud)
17336
17429
  };
17337
17430
  }
17338
17431
  setDataToComponentId = ctx && ctx.setDataToComponentId;
@@ -17355,7 +17448,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
17355
17448
  if (!___default.has(data, 'uiSchema')) {
17356
17449
  serviceData.uiSchema = uiSchema;
17357
17450
  }
17358
- serviceData.defaultListName = listName ? listName : (_f = ___default.first(___default.values(uiSchema.list_views))) === null || _f === void 0 ? void 0 : _f.name;
17451
+ serviceData.defaultListName = listName ? listName : (_g = ___default.first(___default.values(uiSchema.list_views))) === null || _g === void 0 ? void 0 : _g.name;
17359
17452
  // console.timeEnd('AmisObjectListView')
17360
17453
  // console.log('serviceData===>', serviceData)
17361
17454
  // console.log('headerSchema===>', headerSchema)
@@ -17436,13 +17529,13 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
17436
17529
  return tableColumns;
17437
17530
  }
17438
17531
  var AmisObjectTable = function (props) { return __awaiter(void 0, void 0, void 0, function () {
17439
- var $schema, filters, filtersFunction, amisCondition, top, headerSchema, includedFields, fieldsExtend, sort, sortField, sortOrder, extraColumns, data, defaultData, _a, formFactor, _b, className, requestAdaptor, adaptor, _c, filterVisible, headerToolbarItems, ctx, columns, defaults, objectApiName, schemaKeys, listSchema, setDataToComponentId, amisFilters, tableFilters, amisSchemaData, appId, amisSchema;
17440
- return __generator(this, function (_d) {
17441
- switch (_d.label) {
17532
+ var $schema, filters, filtersFunction, amisCondition, top, headerSchema, includedFields, fieldsExtend, sort, sortField, sortOrder, extraColumns, data, defaultData, _a, crud, _b, formFactor, _c, className, requestAdaptor, adaptor, _d, filterVisible, headerToolbarItems, ctx, columns, defaults, objectApiName, schemaKeys, listSchema, setDataToComponentId, amisFilters, tableFilters, amisSchemaData, appId, amisSchema;
17533
+ return __generator(this, function (_e) {
17534
+ switch (_e.label) {
17442
17535
  case 0:
17443
17536
  // console.time('AmisObjectTable')
17444
17537
  console.log("AmisObjectTable props", props);
17445
- $schema = props.$schema, filters = props.filters, filtersFunction = props.filtersFunction, amisCondition = props.amisCondition, top = props.top, headerSchema = props.headerSchema, includedFields = props.fields, fieldsExtend = props.fieldsExtend, sort = props.sort, sortField = props.sortField, sortOrder = props.sortOrder, extraColumns = props.extraColumns, data = props.data, defaultData = props.defaultData, _a = props.formFactor, formFactor = _a === void 0 ? window.innerWidth < 768 ? 'SMALL' : 'LARGE' : _a, _b = props.className, className = _b === void 0 ? "" : _b, requestAdaptor = props.requestAdaptor, adaptor = props.adaptor, _c = props.filterVisible, filterVisible = _c === void 0 ? true : _c, headerToolbarItems = props.headerToolbarItems;
17538
+ $schema = props.$schema, filters = props.filters, filtersFunction = props.filtersFunction, amisCondition = props.amisCondition, top = props.top, headerSchema = props.headerSchema, includedFields = props.fields, fieldsExtend = props.fieldsExtend, sort = props.sort, sortField = props.sortField, sortOrder = props.sortOrder, extraColumns = props.extraColumns, data = props.data, defaultData = props.defaultData, _a = props.crud, crud = _a === void 0 ? {} : _a, _b = props.formFactor, formFactor = _b === void 0 ? window.innerWidth < 768 ? 'SMALL' : 'LARGE' : _b, _c = props.className, className = _c === void 0 ? "" : _c, requestAdaptor = props.requestAdaptor, adaptor = props.adaptor, _d = props.filterVisible, filterVisible = _d === void 0 ? true : _d, headerToolbarItems = props.headerToolbarItems;
17446
17539
  ctx = props.ctx;
17447
17540
  if (!ctx) {
17448
17541
  ctx = {};
@@ -17454,12 +17547,12 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
17454
17547
  defaults = {};
17455
17548
  objectApiName = props.objectApiName || "space_users";
17456
17549
  if (!(ctx && ctx.defaults)) {
17457
- schemaKeys = ___default.difference(___default.keys($schema), ["type", "objectApiName", "columns", "extraColumns", "id"]);
17550
+ schemaKeys = ___default.difference(___default.keys($schema), ["type", "objectApiName", "columns", "extraColumns", "id", "crud"]);
17458
17551
  listSchema = ___default.pick(props, schemaKeys);
17459
17552
  // className不传入crud组件,crud单独识别crudClassName属性
17460
17553
  listSchema.className = "";
17461
17554
  defaults = {
17462
- listSchema: listSchema
17555
+ listSchema: Object.assign({}, listSchema, crud)
17463
17556
  };
17464
17557
  }
17465
17558
  // 支持通过直接定义headerSchema属性来定制表头,而不一定要通过ctx.defaults.headerSchema传入
@@ -17478,7 +17571,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
17478
17571
  ctx = ___default.pickBy(ctx, function (value) { return value !== undefined; });
17479
17572
  return [4 /*yield*/, getTableSchema(appId, objectApiName, columns, __assign$2(__assign$2({ filters: tableFilters, filtersFunction: filtersFunction, top: top, sort: sort, sortField: sortField, sortOrder: sortOrder, extraColumns: extraColumns, defaults: defaults }, ctx), { setDataToComponentId: setDataToComponentId, requestAdaptor: requestAdaptor, adaptor: adaptor, filterVisible: filterVisible, headerToolbarItems: headerToolbarItems }))];
17480
17573
  case 1:
17481
- amisSchema = (_d.sent()).amisSchema;
17574
+ amisSchema = (_e.sent()).amisSchema;
17482
17575
  amisSchema.data = Object.assign({}, amisSchema.data, amisSchemaData);
17483
17576
  if (___default.has(props, 'objectApiName')) {
17484
17577
  amisSchema.data.objectName = objectApiName;
@@ -18903,7 +18996,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
18903
18996
  "headers": {
18904
18997
  "Authorization": "Bearer ${context.tenantId},${context.authToken}"
18905
18998
  }
18906
- }, "showIcon": showIcon, "showRadio": showRadio, "onlyLeaf": true, "onEvent": onEvent }, amis);
18999
+ }, "showIcon": showIcon, "showRadio": showRadio, "onlyLeaf": true, "onEvent": onEvent, "static": !!props.static }, amis);
18907
19000
  };
18908
19001
  /**
18909
19002
  *