@steedos-widgets/amis-lib 3.6.0-beta.7 → 3.6.1

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.cjs.js CHANGED
@@ -1636,11 +1636,11 @@ async function getQuickEditSchema(field, options){
1636
1636
  if(event.data.isBatchEdit){
1637
1637
  selectedItems.forEach(function(selectedItem){
1638
1638
  selectedItem._display.${field.name} = event.data._display.${field.name};
1639
- doAction({actionType: 'setValue', "args": {"value": selectedItem._display},componentId: "_display_" + selectedItem._index});
1639
+ doAction({actionType: 'setValue', "args": {"value": selectedItem._display},componentId: ${options.objectName} + "_display_" + selectedItem._index});
1640
1640
  doAction({actionType: 'setValue', "args": {"value": event.data.${field.name}},componentId: "${options.objectName + "_" + field.name + "_"}" + selectedItem._index});
1641
1641
  })
1642
1642
  }else{
1643
- doAction({actionType: 'setValue', "args": {"value": event.data._display},componentId: "_display_" + event.data._index});
1643
+ doAction({actionType: 'setValue', "args": {"value": event.data._display},componentId: ${options.objectName} + "_display_" + event.data._index});
1644
1644
  doAction({actionType: 'setValue', "args": {"value": event.data.${field.name}},componentId: "${options.objectName + "_" + field.name + "_"}" + event.data._index});
1645
1645
  }
1646
1646
  `
@@ -1670,7 +1670,6 @@ async function getQuickEditSchema(field, options){
1670
1670
  {
1671
1671
  "actionType": "custom",
1672
1672
  "script": `
1673
-
1674
1673
  var _display = _.cloneDeep(event.data._display);
1675
1674
  ${displayField}
1676
1675
  doAction({actionType: 'setValue', "args": {"value": {_display}},componentId: "${quickEditId}"});
@@ -1841,6 +1840,23 @@ async function getQuickEditSchema(field, options){
1841
1840
  "onEvent":{
1842
1841
  "init":{
1843
1842
  "actions":[
1843
+ //amis3.6无法从数据域中直接拿到正确的selectitems,需要通过crud组件的getSelected()函数获取
1844
+ {
1845
+ "actionType": "custom",
1846
+ "script": `
1847
+ crudScoped = event.context.scoped.getComponentById('${options.crudId}');
1848
+ const selectedItems = crudScoped && crudScoped.control.getSelected();
1849
+ doAction({
1850
+ "componentId": "${quickEditId}",
1851
+ "actionType": "setValue",
1852
+ "args": {
1853
+ "value": {
1854
+ selectedItems
1855
+ }
1856
+ }
1857
+ });
1858
+ `
1859
+ },
1844
1860
  {
1845
1861
  "actionType": "setValue",
1846
1862
  "componentId": quickEditId,
@@ -5771,12 +5787,16 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
5771
5787
  // }
5772
5788
  // listView.handleFilterSubmit(Object.assign({}, removedValues, filterFormValues));
5773
5789
  // 点击搜索的时候自动收起搜索栏
5774
- let resizeWindow = function(){
5775
- //触发amis crud 高度重算
5776
- setTimeout(()=>{
5777
- window.dispatchEvent(new Event("resize"))
5778
- }, 500);
5779
- }
5790
+ //触发amis crud 高度重算
5791
+ doAction({
5792
+ "actionType": "broadcast",
5793
+ "args": {
5794
+ "eventName": "@height.changed.${objectSchema.name}"
5795
+ },
5796
+ "data": {
5797
+ "timeOut": 500
5798
+ }
5799
+ });
5780
5800
  const filterService = filterForm.context.getComponents().find(function(n){
5781
5801
  return n.props.type === "service";
5782
5802
  });
@@ -5878,9 +5898,16 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
5878
5898
  let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, "service");
5879
5899
  filterFormService.setData({showFieldsFilter: !!!filterFormService.props.data.showFieldsFilter});
5880
5900
  //触发amis crud 高度重算
5881
- setTimeout(()=>{
5882
- window.dispatchEvent(new Event("resize"))
5883
- }, 100);
5901
+ doAction({
5902
+ "actionType": "broadcast",
5903
+ "args": {
5904
+ "eventName": "@height.changed.${objectSchema.name}"
5905
+ },
5906
+ "data": {
5907
+ "timeOut": 100
5908
+ }
5909
+ });
5910
+
5884
5911
  // 移除搜索按钮上的红点
5885
5912
  // let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
5886
5913
  let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
@@ -6037,9 +6064,15 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6037
6064
  sessionStorage.setItem(listViewPropsStoreKey, JSON.stringify(localListViewProps));
6038
6065
  }
6039
6066
  //触发amis crud 高度重算
6040
- setTimeout(()=>{
6041
- window.dispatchEvent(new Event("resize"))
6042
- }, 100)
6067
+ doAction({
6068
+ "actionType": "broadcast",
6069
+ "args": {
6070
+ "eventName": "@height.changed.${objectSchema.name}"
6071
+ },
6072
+ "data": {
6073
+ "timeOut": 100
6074
+ }
6075
+ });
6043
6076
  // ===END===
6044
6077
  `;
6045
6078
  return {
@@ -7745,13 +7778,16 @@ const filterService = filterForm.context.getComponents().find(function(n){
7745
7778
  });
7746
7779
  let toShowFieldsFilter = !!!filterService.props.data.showFieldsFilter;
7747
7780
  filterService.setData({showFieldsFilter: toShowFieldsFilter});
7748
- let resizeWindow = function(){
7749
- //触发amis crud 高度重算
7750
- setTimeout(()=>{
7751
- window.dispatchEvent(new Event("resize"))
7752
- }, 1000);
7753
- }
7754
- resizeWindow();
7781
+ //触发amis crud 高度重算
7782
+ doAction({
7783
+ "actionType": "broadcast",
7784
+ "args": {
7785
+ "eventName": "@height.changed." + event.data.objectName
7786
+ },
7787
+ "data": {
7788
+ "timeOut": 1000
7789
+ }
7790
+ });
7755
7791
  // 手机端在显示搜索栏时隐藏crud上的刷新按钮,因为点击后crud高度显示有问题
7756
7792
  let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
7757
7793
  crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
@@ -8115,12 +8151,16 @@ async function getObjectFilter(objectSchema, fields, options) {
8115
8151
  return;
8116
8152
  }
8117
8153
  // 列表搜索栏字段值变更后立刻触发提交表单执行crud搜索,所以这里需要额外重算crud高度及筛选按钮红色星号图标显示隐藏
8118
- let resizeWindow = function(){
8119
- //触发amis crud 高度重算
8120
- setTimeout(()=>{
8121
- window.dispatchEvent(new Event("resize"))
8122
- }, 1000);
8123
- }
8154
+ //触发amis crud 高度重算
8155
+ doAction({
8156
+ "actionType": "broadcast",
8157
+ "args": {
8158
+ "eventName": "@height.changed.${objectSchema.name}"
8159
+ },
8160
+ "data": {
8161
+ "timeOut": 1000
8162
+ }
8163
+ });
8124
8164
  resizeWindow();
8125
8165
  const scope = event.context.scoped;
8126
8166
  // let filterFormValues = event.data;
@@ -8432,7 +8472,7 @@ async function getObjectCRUD(objectSchema, fields, options){
8432
8472
 
8433
8473
  if(body.columns && options.formFactor != 'SMALL'){
8434
8474
  //将_display放入crud的columns的倒数第二列中(最后一列会影响固定列),可以通过setvalue修改行内数据域的_display,而不影响上层items的_display,用于批量编辑
8435
- body.columns.splice(body.columns.length - 1, 0, {name: '_display',type: 'static', width: 32, placeholder: "",id: "_display_${_index}", className: "hidden"});
8475
+ body.columns.splice(body.columns.length - 1, 0, {name: '_display',type: 'static', width: 32, placeholder: "",id: objectSchema.name + "_display_${_index}", className: "hidden"});
8436
8476
  }
8437
8477
 
8438
8478
  if (defaults) {
@@ -8469,7 +8509,24 @@ async function getObjectCRUD(objectSchema, fields, options){
8469
8509
  id: `service_${id}`,
8470
8510
  name: `page`,
8471
8511
  data: options.amisData,
8472
- body: body
8512
+ body: body,
8513
+ //监听广播事件,重算crud高度
8514
+ onEvent: {
8515
+ [`@height.changed.${objectSchema.name}`]: {
8516
+ "actions": [
8517
+ {
8518
+ "actionType": "custom",
8519
+ "script": `
8520
+ var crudScoped = event.context.scoped.getComponentById('${body.id}');
8521
+ var timeOut = event.data.timeOut || 500;
8522
+ setTimeout(()=>{
8523
+ crudScoped && crudScoped.control.updateAutoFillHeight();
8524
+ }, timeOut);
8525
+ `
8526
+ }
8527
+ ]
8528
+ }
8529
+ }
8473
8530
  }
8474
8531
  }
8475
8532
 
@@ -10368,6 +10425,8 @@ function getLookupSapceUserTreeSchema(isMobile){
10368
10425
  _.each(children, (item) => {
10369
10426
  if (item.children) {
10370
10427
  item.children = getChildren(records, item.children)
10428
+ }else{
10429
+ item.children = [];
10371
10430
  }
10372
10431
  })
10373
10432
  return children;
@@ -10722,6 +10781,14 @@ async function lookupToAmisPicker(field, readonly, ctx){
10722
10781
  })
10723
10782
  payload.data.rows = rows;
10724
10783
  */
10784
+ if(enable_tree){
10785
+ const rows = _.map(payload.data.rows, (item)=>{
10786
+ delete item.children;
10787
+ delete item.parent;
10788
+ return item;
10789
+ })
10790
+ payload.data.rows = rows;
10791
+ }
10725
10792
  return payload;
10726
10793
  }
10727
10794
  if(!payload.data.rows){
@@ -10753,6 +10820,8 @@ async function lookupToAmisPicker(field, readonly, ctx){
10753
10820
  _.each(children, (item)=>{
10754
10821
  if(item.children){
10755
10822
  item.children = getChildren(records, item.children)
10823
+ }else{
10824
+ item.children = [];
10756
10825
  }
10757
10826
  })
10758
10827
  return children;
@@ -10807,7 +10876,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
10807
10876
  const isAllowCreate = refObjectConfig.permissions.allowCreate;
10808
10877
  const isCreate = ___namespace.isBoolean(field.create) ? field.create : true;
10809
10878
  // lookup字段配置过滤条件就强制不显示新建按钮
10810
- let isHasFilters = (field.filters || field._filtersFunction) ? true : false;
10879
+ let isHasFilters = (field.filters || field.filtersFunction || field._filtersFunction) ? true : false;
10811
10880
  if (isAllowCreate && isCreate && !isHasFilters) {
10812
10881
  const new_button = await getSchema$5(refObjectConfig, { appId: ctx.appId, objectName: refObjectConfig.name, formFactor: ctx.formFactor });
10813
10882
  new_button.align = "right";
@@ -11210,18 +11279,30 @@ async function lookupToAmis(field, readonly, ctx){
11210
11279
  enableEnhancedLookup = true;
11211
11280
  }
11212
11281
  }
11282
+ let amisSchema;
11213
11283
  // 默认使用下拉框模式显示lookup选项,只能配置了enable_enhanced_lookup才使用弹出增强模式
11214
11284
  if(enableEnhancedLookup == true){
11215
- return await lookupToAmisPicker(field, readonly, ctx);
11285
+ amisSchema = await lookupToAmisPicker(field, readonly, ctx);
11216
11286
  }else if(refObject.enable_tree) {
11217
- return await lookupToAmisTreeSelect(field, readonly, Object.assign({}, ctx, {
11287
+ amisSchema = await lookupToAmisTreeSelect(field, readonly, Object.assign({}, ctx, {
11218
11288
  labelField: referenceTo.labelField?.name || 'name',
11219
11289
  valueField: referenceTo.valueField?.name || '_id',
11220
11290
  objectName: referenceTo.objectName
11221
11291
  }));
11222
11292
  }else {
11223
- return await lookupToAmisSelect(field, readonly, ctx);
11293
+ amisSchema = await lookupToAmisSelect(field, readonly, ctx);
11294
+ }
11295
+ let refLookupPage = refObject.pages && refObject.pages.lookup;
11296
+ if(refLookupPage){
11297
+ if(refLookupPage.is_enable){
11298
+ let pageAmisSchema = refLookupPage.amis_schema;
11299
+ if(typeof pageAmisSchema == 'string'){
11300
+ pageAmisSchema = JSON.parse(pageAmisSchema);
11301
+ }
11302
+ amisSchema = ___namespace.defaultsDeep({}, pageAmisSchema, amisSchema);
11303
+ }
11224
11304
  }
11305
+ return amisSchema;
11225
11306
  }
11226
11307
 
11227
11308
  async function lookupToAmisSelectUser(field, readonly, ctx){
@@ -11970,7 +12051,8 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
11970
12051
  },
11971
12052
  pipeOut: (value, oldValue, data) => {
11972
12053
  if(value){
11973
- return value/100;
12054
+ const result = value/100;
12055
+ return Number(result.toFixed(field.scale+2));
11974
12056
  }
11975
12057
  return value;
11976
12058
  },
@@ -12204,7 +12286,7 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
12204
12286
  if(field.is_wide || convertData.type === 'group'){
12205
12287
  convertData.className = 'col-span-2 m-0';
12206
12288
  }else {
12207
- convertData.className = 'm-0';
12289
+ convertData.className = 'm-1';
12208
12290
  }
12209
12291
  if(readonly){
12210
12292
  convertData.className = `${convertData.className} border-b`;
@@ -12609,8 +12691,8 @@ async function getFormBody(permissionFields, formFields, ctx){
12609
12691
  /*
12610
12692
  * @Author: 殷亮辉 yinlianghui@hotoa.com
12611
12693
  * @Date: 2023-11-15 09:50:22
12612
- * @LastEditors: baozhoutao@steedos.com
12613
- * @LastEditTime: 2024-01-02 15:43:50
12694
+ * @LastEditors: liaodaxue
12695
+ * @LastEditTime: 2024-01-09 18:12:28
12614
12696
  */
12615
12697
 
12616
12698
  /**
@@ -12650,6 +12732,7 @@ function getInputTableCell(field, showAsInlineEditMode) {
12650
12732
  "config": Object.assign({}, field, {
12651
12733
  label: false
12652
12734
  }),
12735
+ inInputTable: true,
12653
12736
  "static": true,
12654
12737
  "readonly": true,
12655
12738
  label: field.label,