@steedos-widgets/amis-lib 6.10.1-beta.31 → 6.10.1-beta.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -505,8 +505,8 @@ function getComparableAmisVersion() {
505
505
  /*
506
506
  * @Author: baozhoutao@steedos.com
507
507
  * @Date: 2022-05-23 09:53:08
508
- * @LastEditors: baozhoutao@steedos.com
509
- * @LastEditTime: 2024-11-17 13:10:08
508
+ * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
509
+ * @LastEditTime: 2025-04-08 10:55:41
510
510
  * @Description:
511
511
  */
512
512
 
@@ -660,9 +660,10 @@ function getRelatedFieldTpl(field, ctx){
660
660
  const href = Router.getObjectDetailPath({
661
661
  formFactor: ctx.formFactor, appId: "${appId}", objectName: `${objectNameTpl}`, recordId: `${recordIdTpl}`
662
662
  });
663
- if(ctx.isRelated && window.innerWidth >= 768){
663
+ if (window.innerWidth >= 768) { //(ctx.isRelated || isObjectListview) && window.innerWidth >= 768
664
+ // 相关表字段,包括列表视图、对象表格组件中的lookup/master_detail字段,在PC端显示时,点击字段值,不跳转到详情页而是右侧弹出drawer
664
665
  labelTpl = `<a href="${href}" ${linkTarget} onclick="return false;">${labelTpl}</a>`;
665
- }else {
666
+ } else {
666
667
  labelTpl = `<a href="${href}" ${linkTarget}>${labelTpl}</a>`;
667
668
  }
668
669
 
@@ -1460,6 +1461,7 @@ var frontend_download$1 = "Download";
1460
1461
  var frontend_form_save$1 = "Save";
1461
1462
  var frontend_form_save_and_new$1 = "Save and New";
1462
1463
  var frontend_form_cancel$1 = "Cancel";
1464
+ var frontend_form_reset$1 = "Reset";
1463
1465
  var frontend_form_new$1 = "New";
1464
1466
  var frontend_form_edit$1 = "Edit";
1465
1467
  var frontend_form_preview$1 = "Preview";
@@ -1478,7 +1480,7 @@ var frontend_display_type_is_split$1 = "Split View";
1478
1480
  var frontend_display_as$1 = "Displayed as";
1479
1481
  var frontend_record_sum$1 = "items";
1480
1482
  var frontend_button_reload_tooltip$1 = "Refresh";
1481
- var frontend_button_search_tooltip$1 = "Advanced Search";
1483
+ var frontend_button_search_tooltip$1 = "Filter";
1482
1484
  var frontend_fields_filter_button_search$1 = "Search";
1483
1485
  var frontend_fields_filter_button_settings$1 = "Set search options";
1484
1486
  var frontend_button_listview_control_tooltip$1 = "List View Controls";
@@ -1550,6 +1552,7 @@ var en_us = {
1550
1552
  frontend_form_save: frontend_form_save$1,
1551
1553
  frontend_form_save_and_new: frontend_form_save_and_new$1,
1552
1554
  frontend_form_cancel: frontend_form_cancel$1,
1555
+ frontend_form_reset: frontend_form_reset$1,
1553
1556
  frontend_form_new: frontend_form_new$1,
1554
1557
  frontend_form_edit: frontend_form_edit$1,
1555
1558
  frontend_form_preview: frontend_form_preview$1,
@@ -1641,6 +1644,7 @@ var frontend_download = "下载";
1641
1644
  var frontend_form_save = "保存";
1642
1645
  var frontend_form_save_and_new = "保存并新建";
1643
1646
  var frontend_form_cancel = "取消";
1647
+ var frontend_form_reset = "重置";
1644
1648
  var frontend_form_new = "新建";
1645
1649
  var frontend_form_edit = "编辑";
1646
1650
  var frontend_form_preview = "预览";
@@ -1659,7 +1663,7 @@ var frontend_display_type_is_split = "分栏视图";
1659
1663
  var frontend_display_as = "显示为";
1660
1664
  var frontend_record_sum = "个项目";
1661
1665
  var frontend_button_reload_tooltip = "刷新";
1662
- var frontend_button_search_tooltip = "高级搜索";
1666
+ var frontend_button_search_tooltip = "筛选";
1663
1667
  var frontend_fields_filter_button_search = "搜索";
1664
1668
  var frontend_fields_filter_button_settings = "选择搜索项";
1665
1669
  var frontend_button_listview_control_tooltip = "列表视图控制";
@@ -1732,6 +1736,7 @@ var zh_cn = {
1732
1736
  frontend_form_save: frontend_form_save,
1733
1737
  frontend_form_save_and_new: frontend_form_save_and_new,
1734
1738
  frontend_form_cancel: frontend_form_cancel,
1739
+ frontend_form_reset: frontend_form_reset,
1735
1740
  frontend_form_new: frontend_form_new,
1736
1741
  frontend_form_edit: frontend_form_edit,
1737
1742
  frontend_form_preview: frontend_form_preview,
@@ -1899,7 +1904,12 @@ async function getQuickEditSchema(object, columnField, options){
1899
1904
  if (field.disabled) {
1900
1905
  quickEditSchema = false;
1901
1906
  } else {
1902
- var fieldSchema = await convertSFieldToAmisField(field, false, _$1.omit(options, 'buttons'));
1907
+ var fieldCtx = Object.assign({}, _$1.omit(options, 'buttons'), {
1908
+ defaults: Object.assign({}, options.defaults, {
1909
+ formSchema: quickEditSchema
1910
+ })
1911
+ });
1912
+ var fieldSchema = await convertSFieldToAmisField(field, false, fieldCtx);
1903
1913
  //存在属性上可编辑,实际不可编辑的字段,convertSFieldToAmisField函数可能会返回undefined,如summary
1904
1914
  if (!!fieldSchema) {
1905
1915
  quickEditSchema.body.push(fieldSchema);
@@ -2332,14 +2342,19 @@ function getFieldWidth(width){
2332
2342
  }
2333
2343
 
2334
2344
  async function getColumnItemOnClick(field, options){
2335
- const recordPage = await getPage({ type: 'record', appId: options.appId, objectName: options.objectName, formFactor: options.formFactor });
2345
+ let objectApiName = options.objectName;
2346
+ if(!(field.is_name || field.name === options.labelFieldName)){
2347
+ objectApiName = field.reference_to;
2348
+ }
2349
+ const recordPage = await getPage({ type: 'record', appId: options.appId, objectName: objectApiName, formFactor: options.formFactor });
2336
2350
  const drawerRecordDetailSchema = recordPage ? Object.assign({}, recordPage.schema, {
2337
2351
  "recordId": `\${${options.idFieldName}}`,
2338
2352
  "data": {
2339
2353
  ...recordPage.schema.data,
2340
2354
  "_inDrawer": true, // 用于判断是否在抽屉中
2341
2355
  "recordLoaded": false, // 重置数据加载状态
2342
- "recordId": `\${${options.idFieldName}}`//审批微页面依赖了作用域中的recordId
2356
+ "recordId": `\${${options.idFieldName}}`,//审批微页面依赖了作用域中的recordId
2357
+ "_tableObjectName": options.objectName
2343
2358
  }
2344
2359
  }) : {
2345
2360
  "type": "steedos-record-detail",
@@ -2350,12 +2365,16 @@ async function getColumnItemOnClick(field, options){
2350
2365
  "data": {
2351
2366
  "_inDrawer": true, // 用于判断是否在抽屉中
2352
2367
  "recordLoaded": false, // 重置数据加载状态
2368
+ "_tableObjectName": options.objectName
2353
2369
  }
2354
2370
  };
2355
2371
 
2356
2372
  if(!(field.is_name || field.name === options.labelFieldName)){
2357
2373
  drawerRecordDetailSchema.objectApiName = field.reference_to;
2358
2374
  drawerRecordDetailSchema.recordId = `\${_display.${field.name}.value}`;
2375
+ // if (recordPage){
2376
+ // drawerRecordDetailSchema.data.recordId = `\${_display.${field.name}.value}`
2377
+ // }
2359
2378
  }
2360
2379
  return {
2361
2380
  "click": {
@@ -2505,6 +2524,33 @@ async function getTableColumns(object, fields, options){
2505
2524
  static: true,
2506
2525
  }, fieldAmis, {name: field.name});
2507
2526
  }
2527
+ else if(field.type === 'lookup' || field.type === 'master_detail'){
2528
+ columnItem = Object.assign({}, {
2529
+ type: "static-wrapper",
2530
+ name: field.name,
2531
+ label: field.label,
2532
+ sortable: field.sortable,
2533
+ width: getFieldWidth(field.width),
2534
+ toggled: field.toggled,
2535
+ className,
2536
+ size: "none",
2537
+ inputClassName: "inline",
2538
+ body: {
2539
+ type: "steedos-field",
2540
+ static: true,
2541
+ tableObjectName: options.objectName,
2542
+ config: {
2543
+ type: "lookup",
2544
+ reference_to: field.reference_to,
2545
+ name: field.name,
2546
+ is_name: field.is_name,
2547
+ label: null,
2548
+ multiple: field.multiple,
2549
+ amis: Object.assign({}, fieldAmis, { label: null })
2550
+ }
2551
+ }
2552
+ }, fieldAmis, {name: field.name});
2553
+ }
2508
2554
  else {
2509
2555
  const tpl = await getFieldTpl(field, options);
2510
2556
  let type = 'static-text';
@@ -2553,10 +2599,20 @@ async function getTableColumns(object, fields, options){
2553
2599
  columnItem.defaultColor = null;
2554
2600
  }
2555
2601
 
2556
- if(window.innerWidth >= 768 && ((field.is_name || field.name === options.labelFieldName) || ((field.type == 'lookup' || field.type == 'master_detail') && _$1.isString(field.reference_to) && field.multiple != true)) && options.isRelated){
2602
+ let needClickEvent = false;
2603
+ // if (options.isRelated){
2604
+ // // 子表列表上,Lookup字段和名称字段都需要点击事件
2605
+ // needClickEvent = ((field.is_name || field.name === options.labelFieldName) || ((field.type == 'lookup' || field.type == 'master_detail') && _.isString(field.reference_to) && field.multiple != true));
2606
+ // }
2607
+ // else {// if (isObjectListview)
2608
+ // // 列表视图、对象表格中,Lookup字段需要点击事件
2609
+ // needClickEvent = (field.type == 'lookup' || field.type == 'master_detail') && _.isString(field.reference_to) && field.multiple != true;
2610
+ // }
2611
+ // lookup字段走steedos-field组件了,所以这里只需要判断子表名称字段才额外加点击事件弹出右侧详情
2612
+ needClickEvent = options.isRelated && (field.is_name || field.name === options.labelFieldName);
2613
+ if(window.innerWidth >= 768 && needClickEvent){
2557
2614
  columnItem.onEvent = await getColumnItemOnClick(field, options);
2558
2615
  }
2559
-
2560
2616
  }
2561
2617
  }
2562
2618
  if(columnItem){
@@ -4908,9 +4964,9 @@ const getSchema$5 = async (uiSchema, ctx) => {
4908
4964
  "body": [
4909
4965
  {
4910
4966
  "type": "button",
4967
+ "level": "primary",
4911
4968
  "label": i18next.t('frontend_form_new'),
4912
4969
  "id": "u:standard_new",
4913
- "level": "default",
4914
4970
  "onEvent": {
4915
4971
  "click": {
4916
4972
  "weight": 0,
@@ -5111,8 +5167,8 @@ const getSchema$4 = async (uiSchema, ctx) => {
5111
5167
  /*
5112
5168
  * @Author: 殷亮辉 yinlianghui@hotoa.com
5113
5169
  * @Date: 2023-03-22 09:31:21
5114
- * @LastEditors: baozhoutao@steedos.com
5115
- * @LastEditTime: 2024-02-18 16:06:21
5170
+ * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
5171
+ * @LastEditTime: 2025-04-07 16:02:53
5116
5172
  */
5117
5173
  const getSchema$3 = (uiSchema)=>{
5118
5174
  return {
@@ -5172,6 +5228,17 @@ const getSchema$3 = (uiSchema)=>{
5172
5228
  "_isRelated": "${_isRelated}"
5173
5229
  },
5174
5230
  "expression": `\${_master.objectName != '${uiSchema.name}' && _master.objectName}`
5231
+ },
5232
+ // 列表视图、对象表格组件上的lookup字段,点开右侧弹出drawer窗口,删除记录后刷新列表
5233
+ {
5234
+ "actionType": "broadcast",
5235
+ "args": {
5236
+ "eventName": "@data.changed.${_tableObjectName}"
5237
+ },
5238
+ "data": {
5239
+ "objectName": "${_tableObjectName}"
5240
+ },
5241
+ "expression": `\${_tableObjectName != '${uiSchema.name}' && _tableObjectName}`
5175
5242
  }
5176
5243
  ]
5177
5244
  }
@@ -6086,7 +6153,7 @@ async function getObjectFieldsFilterFormSchema(ctx) {
6086
6153
  const formSchema = {
6087
6154
  "type": "service",
6088
6155
  "visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
6089
- "className": ctx.formFactor === 'SMALL' ? "slds-filters__body p-0 mb-2 overflow-y-auto overflow-x-hidden" : "slds-filters__body p-0 sm:grid sm:gap-4 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6 p-1",
6156
+ "className": ctx.formFactor === 'SMALL' ? "slds-filters__body p-0 mb-2 overflow-y-auto overflow-x-hidden" : "slds-filters__body p-0 sm:grid sm:gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 p-1",
6090
6157
  "style":{
6091
6158
  "max-height":ctx.formFactor === 'SMALL'?"30vh":"unset"
6092
6159
  },
@@ -6321,6 +6388,21 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6321
6388
  let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service", {name: "service_object_table_crud"});
6322
6389
  crudService && crudService.setData({isFieldsFilterEmpty: true, showFieldsFilter: false});
6323
6390
  `;
6391
+ /**
6392
+ 给lookup字段配置filter_form_data时可以配置为amis变量,也可以配置为事态key-value键值对象值:
6393
+ ```
6394
+ "filter_form_data": "${selectedPublicGroupFilterFormData|toJson}"
6395
+ ```
6396
+ or
6397
+ ```
6398
+ "filter_form_data": {
6399
+ "public_group_ids": [
6400
+ "67addbef39f9a4503789b38d"
6401
+ ]
6402
+ }
6403
+ ```
6404
+ */
6405
+ const filterFormValues = ctx.filter_form_data;
6324
6406
  const dataProviderInited = `
6325
6407
  const searchableFields = ${JSON.stringify(searchableFields)};
6326
6408
  const autoOpenFilter = ${autoOpenFilter};
@@ -6358,6 +6440,16 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6358
6440
  }
6359
6441
  setData({ filterFormSearchableFields: defaultSearchableFields });
6360
6442
  if(isLookup){
6443
+ let filterFormValues = ${_.isObject(filterFormValues) ? JSON.stringify(filterFormValues) : ('"' + filterFormValues + '"')} || {};
6444
+ const isAmisFormula = typeof filterFormValues === "string" && filterFormValues.indexOf("\${") > -1;
6445
+ if (isAmisFormula){
6446
+ filterFormValues = AmisCore.evaluate(filterFormValues, data) || {};
6447
+ }
6448
+ if (_.isObject(filterFormValues) || !_.isEmpty(filterFormValues)){
6449
+ let fields = data.uiSchema && data.uiSchema.fields;
6450
+ filterFormValues = SteedosUI.getSearchFilterFormValues(filterFormValues, fields);
6451
+ setData({ ...filterFormValues });
6452
+ }
6361
6453
  // looup字段过滤器不在本地缓存记住过滤条件,所以初始始终隐藏过滤器
6362
6454
  setData({ showFieldsFilter: autoOpenFilter });
6363
6455
  }
@@ -6514,6 +6606,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6514
6606
  "body": [
6515
6607
  {
6516
6608
  "type": "button",
6609
+ "level": "primary",
6517
6610
  "id": btnSearchId,
6518
6611
  "label": i18next.t('frontend_fields_filter_button_search'),
6519
6612
  "icon": "fa fa-search",
@@ -6531,7 +6624,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6531
6624
  },
6532
6625
  {
6533
6626
  "type": "button",
6534
- "label": i18next.t('frontend_form_cancel'),
6627
+ "label": i18next.t('frontend_form_reset'),
6535
6628
  "name": "btn_filter_form_cancel",
6536
6629
  // "visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
6537
6630
  "onEvent": {
@@ -6621,7 +6714,6 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6621
6714
  "className": "steedos-amis-form"
6622
6715
  }
6623
6716
  ],
6624
- "id": "u:ca99fa9fe1b1",
6625
6717
  "actions": [
6626
6718
  {
6627
6719
  "type": "button",
@@ -6649,13 +6741,15 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6649
6741
  "actionType": "custom",
6650
6742
  "script": onSearchableFieldsChangeScript
6651
6743
  },
6652
- {
6653
- "actionType": "click",
6654
- "componentId": btnSearchId,
6655
- "args": {
6656
- "__from_fields_filter_settings_confirm": true
6657
- }
6658
- },
6744
+ // 自动触发搜索事件会造成bug,应该是升级amis到6.4造成的,见:https://github.com/steedos/steedos-platform/issues/7121
6745
+ // 变更搜索项后,用户一般会点击搜索按钮,所以这里不自动触发搜索事件
6746
+ // {
6747
+ // "actionType": "click",
6748
+ // "componentId": btnSearchId,
6749
+ // "args": {
6750
+ // "__from_fields_filter_settings_confirm": true
6751
+ // }
6752
+ // },
6659
6753
  {
6660
6754
  "componentId": "",
6661
6755
  "args": {},
@@ -6686,12 +6780,11 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6686
6780
  ]
6687
6781
  }
6688
6782
  },
6689
- "id": "u:b96d84868a5a",
6690
6783
  "level": "link"
6691
6784
  }
6692
6785
  ],
6693
6786
  "size": "xs",
6694
- "className": "space-x-4"
6787
+ "className": "space-x-2"
6695
6788
  },
6696
6789
  "size": "xs",
6697
6790
  "className": "slds-filters__footer slds-grid slds-shrink-none flex justify-between p-0"
@@ -7637,7 +7730,7 @@ function getObjectListHeader(objectSchema, listViewName, ctx) {
7637
7730
  let headerSchema = [{
7638
7731
  "type": "wrapper",
7639
7732
  "body": body,
7640
- "className": `p-3 m-4 shadow rounded bg-white`
7733
+ "className": `px-3 pt-3 pb-0 m-1 bg-white`
7641
7734
  }];
7642
7735
  // console.log(`getObjectListHeader`, objectSchema, listViewName, ctx)
7643
7736
  return headerSchema;
@@ -9019,7 +9112,7 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
9019
9112
  return {
9020
9113
  "type": "tooltip-wrapper",
9021
9114
  "id": "steedos_crud_toolbar_quick_search",
9022
- "align": "left",
9115
+ "align": "right",
9023
9116
  "title": "",
9024
9117
  "content": "可搜索字段:" + searchableFieldsLabel.join(","),
9025
9118
  "placement": "bottom",
@@ -9033,6 +9126,7 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
9033
9126
  "name": keywordsSearchBoxName,
9034
9127
  "placeholder": "快捷搜索",
9035
9128
  "value": crudKeywords,
9129
+ "mini": true,
9036
9130
  "clearable": true,//因为清除并不会触发失去焦点事件,只有禁用,但是它会触发change事件,所以等升级到amis 3.4+后可以重新放开
9037
9131
  "clearAndSubmit": true,
9038
9132
  "searchImediately": false,
@@ -9081,7 +9175,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {
9081
9175
  if(!hiddenCount){
9082
9176
  toolbarCount = {
9083
9177
  "type": "tpl",
9084
- "align": "right",
9178
+ "align": "left",
9085
9179
  "className": "text-gray-500 mr-2",
9086
9180
  "tpl": "${count} " + i18next.t('frontend_record_sum')
9087
9181
  };
@@ -9165,7 +9259,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {
9165
9259
  "animation": true,
9166
9260
  "visibleOn": "${isFieldsFilterEmpty == false && isLookup != true}"
9167
9261
  },
9168
- "align": "left",
9262
+ "align": "right",
9169
9263
  "className": "bg-white p-2 rounded text-gray-500",
9170
9264
  "onEvent": {
9171
9265
  "click": {
@@ -9187,27 +9281,27 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {
9187
9281
  // 当出现空的.antd-Crud-toolbar-item dom时会影响toolbar元素的maring-right css样式计算,如果有动态需要应该加到动态数组变量toolbars中
9188
9282
  let toolbars = [];
9189
9283
  if(formFactor === 'SMALL'){
9190
- if(toolbarCount){
9191
- toolbars.push(toolbarCount);
9192
- }
9193
- toolbars.push(toolbarReloadButton);
9194
- toolbars.push(toolbarDisplayAsButton);
9284
+ // if(toolbarCount){
9285
+ // toolbars.push(toolbarCount);
9286
+ // }
9287
+ // toolbars.push(toolbarReloadButton);
9288
+ toolbars.push(toolbarDQuickSearchBox);
9195
9289
  if(toolbarFilter){
9196
9290
  toolbars.push(toolbarFilter);
9197
9291
  }
9198
- toolbars.push(toolbarDQuickSearchBox);
9292
+ toolbars.push(toolbarDisplayAsButton);
9199
9293
  return [
9200
9294
  // "bulkActions",
9201
9295
  ...(headerToolbarItems || []),
9202
9296
  ...toolbars,
9203
9297
  ]
9204
9298
  }else {
9299
+ toolbars.push(toolbarDQuickSearchBox);
9205
9300
  toolbars.push(toolbarReloadButton);
9206
9301
  toolbars.push(toolbarDisplayAsButton);
9207
9302
  if(mainObject?.permissions?.allowCreateListViews){
9208
9303
  toolbars.push(getSettingListviewToolbarButtonSchema());
9209
9304
  }
9210
- toolbars.push(toolbarDQuickSearchBox);
9211
9305
  if(toolbarFilter){
9212
9306
  toolbars.push(toolbarFilter);
9213
9307
  }
@@ -9887,6 +9981,17 @@ async function getObjectForm(objectSchema, ctx){
9887
9981
  },
9888
9982
  "expression": `\${_master.objectName != '${objectSchema.name}' && _master.objectName}`
9889
9983
  },
9984
+ // 列表视图、对象表格组件上的lookup字段,点开右侧弹出drawer窗口,修改记录后刷新列表
9985
+ {
9986
+ "actionType": "broadcast",
9987
+ "args": {
9988
+ "eventName": "@data.changed.${_tableObjectName}"
9989
+ },
9990
+ "data": {
9991
+ "objectName": "${_tableObjectName}"
9992
+ },
9993
+ "expression": `\${_tableObjectName != '${objectSchema.name}' && _tableObjectName}`
9994
+ },
9890
9995
  ...submitSuccActions,
9891
9996
  // {
9892
9997
  // "actionType": "custom",
@@ -11015,7 +11120,8 @@ async function getRecordDetailHeaderSchema(objectName,recordId, options){
11015
11120
  }
11016
11121
 
11017
11122
  async function getRecordDetailSchema(objectName, appId, props = {}){
11018
- const uiSchema = await getUISchema(objectName);
11123
+ const uiSchema = await getUISchema(objectName);
11124
+
11019
11125
  const relatedLists = await getObjectRelatedList(objectName);
11020
11126
  const detailed = {
11021
11127
  "title": i18next.t('frontend_record_detail_tab_detailed'),
@@ -11056,6 +11162,21 @@ async function getRecordDetailSchema(objectName, appId, props = {}){
11056
11162
  if(relatedLists.length){
11057
11163
  content.tabs.push(related);
11058
11164
  }
11165
+ const contents = [content];
11166
+ if (uiSchema.enable_chatter && window.BuilderLiveblocks) {
11167
+ const chatter = {
11168
+ "type": "rooms-provider",
11169
+ "baseUrl": "${context.rootUrl}",
11170
+ "body": [
11171
+ {
11172
+ "type": "rooms-comments",
11173
+ "className": "flex flex-col gap-3 m-4",
11174
+ "roomId": "objects:${objectName}:${recordId}",
11175
+ }
11176
+ ]
11177
+ };
11178
+ contents.push(chatter);
11179
+ }
11059
11180
  // content.tabs = reverse(content.tabs)
11060
11181
  if(content.tabs.length == 1){
11061
11182
  content.className += " steedos-record-tabs--single";
@@ -11075,7 +11196,7 @@ async function getRecordDetailSchema(objectName, appId, props = {}){
11075
11196
  "showBackButton": props.showBackButton,
11076
11197
  _reloadKey: props._reloadKey
11077
11198
  },
11078
- content
11199
+ ...contents,
11079
11200
  ],
11080
11201
  "objectApiName": "${objectName}",
11081
11202
  "recordId": "${recordId}",
@@ -11859,14 +11980,42 @@ function getLookupSapceUserTreeSchema(isMobile){
11859
11980
  {
11860
11981
  "actionType": "custom",
11861
11982
  "script": `
11983
+ console.log("lookup-tree-event.data:",event.data);
11984
+ console.log("lookup-tree-event.data.value.label:",event.data.value.label);
11985
+ console.log("lookup-tree-event.data.value.value:",event.data.value.value);
11862
11986
  const scope = event.context.scoped;
11863
- var filterFormValues={
11987
+ var treeFilterFormValues={
11864
11988
  "__searchable__organizations_parents":event.data.value.value
11865
11989
  }
11866
- var listView = scope.parent.getComponents().find(function(n){
11867
- return n.props.type === "crud";
11990
+ // var listView = scope.parent.getComponents().find(function(n){
11991
+ // return n.props.type === "crud";
11992
+ // });
11993
+ // listView.handleFilterSubmit(Object.assign({}, filterFormValues));
11994
+ let __lookupField = event.data.__lookupField;
11995
+ let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
11996
+ var filterForm = scope.getComponents().find(function(n){
11997
+ return n.props.type === "form";
11868
11998
  });
11869
- listView.handleFilterSubmit(Object.assign({}, filterFormValues));
11999
+ let filterFormValues = filterForm.getData();
12000
+ filterFormValues = JSON.parse(JSON.stringify(filterFormValues)); //只取当层数据域中数据,去除__super层数据
12001
+ const changedFilterFormValues = _.pickBy(filterFormValues, function(n,k){return /^__searchable__/.test(k);});
12002
+ Object.assign(changedFilterFormValues, treeFilterFormValues);
12003
+ // 同步__changedFilterFormValues中的值
12004
+ let __changedFilterFormValuesKey = "__changedFilterFormValues";
12005
+ if(__lookupField){
12006
+ let lookupTag = "__lookup__" + __lookupField.name + "__" + __lookupField.reference_to;
12007
+ if(__lookupField.reference_to_field){
12008
+ lookupTag += "__" + __lookupField.reference_to_field;
12009
+ }
12010
+ __changedFilterFormValuesKey += lookupTag;
12011
+ }
12012
+ if(crud){
12013
+ let crudData = crud.getData();
12014
+ crudData[__changedFilterFormValuesKey] = changedFilterFormValues;
12015
+ crud.setData(crudData);
12016
+ }
12017
+ filterForm.setData(treeFilterFormValues);
12018
+ filterForm.handleFormSubmit(event);
11870
12019
  `
11871
12020
  },
11872
12021
  {
@@ -12084,6 +12233,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
12084
12233
  // field.name可能是带点的名称,比如审批王中子表字段'instances.instances_submitter',如果不替换掉点,会造成审批王表单中新建子表行时报错
12085
12234
  let keywordsSearchBoxName = `__keywords_lookup__${field.name.replace(/\./g, "_")}__to__${refObjectConfig.name}`;
12086
12235
 
12236
+ const filterFormValues = field.filter_form_data;
12087
12237
  source.requestAdaptor = `
12088
12238
  let __changedFilterFormValuesKey = "__changedFilterFormValues";
12089
12239
  let __lookupField = api.data.$self.__lookupField;
@@ -12126,7 +12276,20 @@ async function lookupToAmisPicker(field, readonly, ctx){
12126
12276
  }
12127
12277
  }
12128
12278
 
12129
- var searchableFilter = SteedosUI.getSearchFilter(selfData) || [];
12279
+ let filterFormValues = {};
12280
+ if (selfData.op !== 'loadOptions'){
12281
+ filterFormValues = ${_$1.isObject(filterFormValues) ? JSON.stringify(filterFormValues) : ('"' + filterFormValues + '"')} || {};
12282
+ const isAmisFormula = typeof filterFormValues === "string" && filterFormValues.indexOf("\${") > -1;
12283
+ if (isAmisFormula){
12284
+ filterFormValues = AmisCore.evaluate(filterFormValues, context) || {};
12285
+ }
12286
+ if (_.isObject(filterFormValues) || !_.isEmpty(filterFormValues)){
12287
+ let fields = api.data.$self.uiSchema && api.data.$self.uiSchema.fields;
12288
+ filterFormValues = SteedosUI.getSearchFilterFormValues(filterFormValues, fields);
12289
+ }
12290
+ }
12291
+
12292
+ var searchableFilter = SteedosUI.getSearchFilter(Object.assign({}, { ...filterFormValues }, selfData)) || [];
12130
12293
 
12131
12294
  if(searchableFilter.length > 0){
12132
12295
  if(filters.length > 0 ){
@@ -12316,7 +12479,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
12316
12479
  return payload;
12317
12480
  `;
12318
12481
  }
12319
- let top = 20;
12482
+ let top = 500;
12320
12483
 
12321
12484
  if(refObjectConfig.paging && refObjectConfig.paging.enabled === false){
12322
12485
  top = 1000;
@@ -12366,7 +12529,8 @@ async function lookupToAmisPicker(field, readonly, ctx){
12366
12529
  keywordsSearchBoxName,
12367
12530
  searchable_fields: field.searchable_fields,
12368
12531
  auto_open_filter: field.auto_open_filter,
12369
- show_left_filter: field.show_left_filter
12532
+ show_left_filter: field.show_left_filter,
12533
+ filter_form_data: field.filter_form_data
12370
12534
  });
12371
12535
  }
12372
12536
  pickerSchema.data = Object.assign({}, pickerSchema.data, {
@@ -12439,7 +12603,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
12439
12603
  }
12440
12604
 
12441
12605
  const ctx = ${JSON.stringify(ctx)};
12442
- const componentId = ctx.defaults.formSchema.id;
12606
+ const componentId = ctx.defaults && ctx.defaults.formSchema && ctx.defaults.formSchema.id;
12443
12607
  doAction({
12444
12608
  actionType: 'setValue',
12445
12609
  componentId: componentId,
@@ -12866,6 +13030,10 @@ async function lookupToAmis(field, readonly, ctx){
12866
13030
  }
12867
13031
  let amisSchema;
12868
13032
  // 默认使用下拉框模式显示lookup选项,只能配置了enable_enhanced_lookup才使用弹出增强模式
13033
+ if(enableEnhancedLookup == true && field.amis && field.amis.type && field.amis.type !== 'picker'){
13034
+ // 如果配置了amis.type且其值不是picker,则不使用弹出增强模式
13035
+ enableEnhancedLookup = false;
13036
+ }
12869
13037
  if(enableEnhancedLookup == true){
12870
13038
  amisSchema = await lookupToAmisPicker(field, readonly, ctx);
12871
13039
  }else if(refObject.enable_tree) {
@@ -13997,7 +14165,16 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
13997
14165
  return convertData
13998
14166
  }
13999
14167
  // if(ctx.mode === 'edit'){
14000
- let convertDataResult = Object.assign({}, baseData, convertData, { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name}, field.amis, {name: baseData.name});
14168
+ let convertDataResult;
14169
+ if(convertData.type == "steedos-field"){
14170
+ // 如果是steedos-field,不能把amis属性合并到steedos-field根属性中,要合并也是合并到steedos-field的config.amis中
14171
+ // 而steedos-field字段的amis属性本身就在config.amis中了,所以这里不需要再合并field.amis
14172
+ // 目前测试到受影响的是,把字段的amis属性配置为{"type": "checkboxes"}时,ObjectForm只读模式下,lookup字段返回的是type为steedos-field的组件,此时field.amis中的type不应该合并到steedos-field根属性中
14173
+ convertDataResult = Object.assign({}, baseData, convertData, { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name}, {name: baseData.name});
14174
+ }
14175
+ else {
14176
+ convertDataResult = Object.assign({}, baseData, convertData, { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name}, field.amis, {name: baseData.name});
14177
+ }
14001
14178
  // 只读时file字段的外层control层若存在name,内部each组件存在问题
14002
14179
  if(readonly && field.type == "file") {
14003
14180
  convertDataResult.name = "";