@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.esm.js CHANGED
@@ -1609,11 +1609,11 @@ async function getQuickEditSchema(field, options){
1609
1609
  if(event.data.isBatchEdit){
1610
1610
  selectedItems.forEach(function(selectedItem){
1611
1611
  selectedItem._display.${field.name} = event.data._display.${field.name};
1612
- doAction({actionType: 'setValue', "args": {"value": selectedItem._display},componentId: "_display_" + selectedItem._index});
1612
+ doAction({actionType: 'setValue', "args": {"value": selectedItem._display},componentId: ${options.objectName} + "_display_" + selectedItem._index});
1613
1613
  doAction({actionType: 'setValue', "args": {"value": event.data.${field.name}},componentId: "${options.objectName + "_" + field.name + "_"}" + selectedItem._index});
1614
1614
  })
1615
1615
  }else{
1616
- doAction({actionType: 'setValue', "args": {"value": event.data._display},componentId: "_display_" + event.data._index});
1616
+ doAction({actionType: 'setValue', "args": {"value": event.data._display},componentId: ${options.objectName} + "_display_" + event.data._index});
1617
1617
  doAction({actionType: 'setValue', "args": {"value": event.data.${field.name}},componentId: "${options.objectName + "_" + field.name + "_"}" + event.data._index});
1618
1618
  }
1619
1619
  `
@@ -1643,7 +1643,6 @@ async function getQuickEditSchema(field, options){
1643
1643
  {
1644
1644
  "actionType": "custom",
1645
1645
  "script": `
1646
-
1647
1646
  var _display = _.cloneDeep(event.data._display);
1648
1647
  ${displayField}
1649
1648
  doAction({actionType: 'setValue', "args": {"value": {_display}},componentId: "${quickEditId}"});
@@ -1814,6 +1813,23 @@ async function getQuickEditSchema(field, options){
1814
1813
  "onEvent":{
1815
1814
  "init":{
1816
1815
  "actions":[
1816
+ //amis3.6无法从数据域中直接拿到正确的selectitems,需要通过crud组件的getSelected()函数获取
1817
+ {
1818
+ "actionType": "custom",
1819
+ "script": `
1820
+ crudScoped = event.context.scoped.getComponentById('${options.crudId}');
1821
+ const selectedItems = crudScoped && crudScoped.control.getSelected();
1822
+ doAction({
1823
+ "componentId": "${quickEditId}",
1824
+ "actionType": "setValue",
1825
+ "args": {
1826
+ "value": {
1827
+ selectedItems
1828
+ }
1829
+ }
1830
+ });
1831
+ `
1832
+ },
1817
1833
  {
1818
1834
  "actionType": "setValue",
1819
1835
  "componentId": quickEditId,
@@ -5744,12 +5760,16 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
5744
5760
  // }
5745
5761
  // listView.handleFilterSubmit(Object.assign({}, removedValues, filterFormValues));
5746
5762
  // 点击搜索的时候自动收起搜索栏
5747
- let resizeWindow = function(){
5748
- //触发amis crud 高度重算
5749
- setTimeout(()=>{
5750
- window.dispatchEvent(new Event("resize"))
5751
- }, 500);
5752
- }
5763
+ //触发amis crud 高度重算
5764
+ doAction({
5765
+ "actionType": "broadcast",
5766
+ "args": {
5767
+ "eventName": "@height.changed.${objectSchema.name}"
5768
+ },
5769
+ "data": {
5770
+ "timeOut": 500
5771
+ }
5772
+ });
5753
5773
  const filterService = filterForm.context.getComponents().find(function(n){
5754
5774
  return n.props.type === "service";
5755
5775
  });
@@ -5851,9 +5871,16 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
5851
5871
  let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, "service");
5852
5872
  filterFormService.setData({showFieldsFilter: !!!filterFormService.props.data.showFieldsFilter});
5853
5873
  //触发amis crud 高度重算
5854
- setTimeout(()=>{
5855
- window.dispatchEvent(new Event("resize"))
5856
- }, 100);
5874
+ doAction({
5875
+ "actionType": "broadcast",
5876
+ "args": {
5877
+ "eventName": "@height.changed.${objectSchema.name}"
5878
+ },
5879
+ "data": {
5880
+ "timeOut": 100
5881
+ }
5882
+ });
5883
+
5857
5884
  // 移除搜索按钮上的红点
5858
5885
  // let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
5859
5886
  let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
@@ -6010,9 +6037,15 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6010
6037
  sessionStorage.setItem(listViewPropsStoreKey, JSON.stringify(localListViewProps));
6011
6038
  }
6012
6039
  //触发amis crud 高度重算
6013
- setTimeout(()=>{
6014
- window.dispatchEvent(new Event("resize"))
6015
- }, 100)
6040
+ doAction({
6041
+ "actionType": "broadcast",
6042
+ "args": {
6043
+ "eventName": "@height.changed.${objectSchema.name}"
6044
+ },
6045
+ "data": {
6046
+ "timeOut": 100
6047
+ }
6048
+ });
6016
6049
  // ===END===
6017
6050
  `;
6018
6051
  return {
@@ -7718,13 +7751,16 @@ const filterService = filterForm.context.getComponents().find(function(n){
7718
7751
  });
7719
7752
  let toShowFieldsFilter = !!!filterService.props.data.showFieldsFilter;
7720
7753
  filterService.setData({showFieldsFilter: toShowFieldsFilter});
7721
- let resizeWindow = function(){
7722
- //触发amis crud 高度重算
7723
- setTimeout(()=>{
7724
- window.dispatchEvent(new Event("resize"))
7725
- }, 1000);
7726
- }
7727
- resizeWindow();
7754
+ //触发amis crud 高度重算
7755
+ doAction({
7756
+ "actionType": "broadcast",
7757
+ "args": {
7758
+ "eventName": "@height.changed." + event.data.objectName
7759
+ },
7760
+ "data": {
7761
+ "timeOut": 1000
7762
+ }
7763
+ });
7728
7764
  // 手机端在显示搜索栏时隐藏crud上的刷新按钮,因为点击后crud高度显示有问题
7729
7765
  let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
7730
7766
  crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
@@ -8088,12 +8124,16 @@ async function getObjectFilter(objectSchema, fields, options) {
8088
8124
  return;
8089
8125
  }
8090
8126
  // 列表搜索栏字段值变更后立刻触发提交表单执行crud搜索,所以这里需要额外重算crud高度及筛选按钮红色星号图标显示隐藏
8091
- let resizeWindow = function(){
8092
- //触发amis crud 高度重算
8093
- setTimeout(()=>{
8094
- window.dispatchEvent(new Event("resize"))
8095
- }, 1000);
8096
- }
8127
+ //触发amis crud 高度重算
8128
+ doAction({
8129
+ "actionType": "broadcast",
8130
+ "args": {
8131
+ "eventName": "@height.changed.${objectSchema.name}"
8132
+ },
8133
+ "data": {
8134
+ "timeOut": 1000
8135
+ }
8136
+ });
8097
8137
  resizeWindow();
8098
8138
  const scope = event.context.scoped;
8099
8139
  // let filterFormValues = event.data;
@@ -8405,7 +8445,7 @@ async function getObjectCRUD(objectSchema, fields, options){
8405
8445
 
8406
8446
  if(body.columns && options.formFactor != 'SMALL'){
8407
8447
  //将_display放入crud的columns的倒数第二列中(最后一列会影响固定列),可以通过setvalue修改行内数据域的_display,而不影响上层items的_display,用于批量编辑
8408
- body.columns.splice(body.columns.length - 1, 0, {name: '_display',type: 'static', width: 32, placeholder: "",id: "_display_${_index}", className: "hidden"});
8448
+ body.columns.splice(body.columns.length - 1, 0, {name: '_display',type: 'static', width: 32, placeholder: "",id: objectSchema.name + "_display_${_index}", className: "hidden"});
8409
8449
  }
8410
8450
 
8411
8451
  if (defaults) {
@@ -8442,7 +8482,24 @@ async function getObjectCRUD(objectSchema, fields, options){
8442
8482
  id: `service_${id}`,
8443
8483
  name: `page`,
8444
8484
  data: options.amisData,
8445
- body: body
8485
+ body: body,
8486
+ //监听广播事件,重算crud高度
8487
+ onEvent: {
8488
+ [`@height.changed.${objectSchema.name}`]: {
8489
+ "actions": [
8490
+ {
8491
+ "actionType": "custom",
8492
+ "script": `
8493
+ var crudScoped = event.context.scoped.getComponentById('${body.id}');
8494
+ var timeOut = event.data.timeOut || 500;
8495
+ setTimeout(()=>{
8496
+ crudScoped && crudScoped.control.updateAutoFillHeight();
8497
+ }, timeOut);
8498
+ `
8499
+ }
8500
+ ]
8501
+ }
8502
+ }
8446
8503
  }
8447
8504
  }
8448
8505
 
@@ -10341,6 +10398,8 @@ function getLookupSapceUserTreeSchema(isMobile){
10341
10398
  _.each(children, (item) => {
10342
10399
  if (item.children) {
10343
10400
  item.children = getChildren(records, item.children)
10401
+ }else{
10402
+ item.children = [];
10344
10403
  }
10345
10404
  })
10346
10405
  return children;
@@ -10695,6 +10754,14 @@ async function lookupToAmisPicker(field, readonly, ctx){
10695
10754
  })
10696
10755
  payload.data.rows = rows;
10697
10756
  */
10757
+ if(enable_tree){
10758
+ const rows = _.map(payload.data.rows, (item)=>{
10759
+ delete item.children;
10760
+ delete item.parent;
10761
+ return item;
10762
+ })
10763
+ payload.data.rows = rows;
10764
+ }
10698
10765
  return payload;
10699
10766
  }
10700
10767
  if(!payload.data.rows){
@@ -10726,6 +10793,8 @@ async function lookupToAmisPicker(field, readonly, ctx){
10726
10793
  _.each(children, (item)=>{
10727
10794
  if(item.children){
10728
10795
  item.children = getChildren(records, item.children)
10796
+ }else{
10797
+ item.children = [];
10729
10798
  }
10730
10799
  })
10731
10800
  return children;
@@ -10780,7 +10849,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
10780
10849
  const isAllowCreate = refObjectConfig.permissions.allowCreate;
10781
10850
  const isCreate = _$1.isBoolean(field.create) ? field.create : true;
10782
10851
  // lookup字段配置过滤条件就强制不显示新建按钮
10783
- let isHasFilters = (field.filters || field._filtersFunction) ? true : false;
10852
+ let isHasFilters = (field.filters || field.filtersFunction || field._filtersFunction) ? true : false;
10784
10853
  if (isAllowCreate && isCreate && !isHasFilters) {
10785
10854
  const new_button = await getSchema$5(refObjectConfig, { appId: ctx.appId, objectName: refObjectConfig.name, formFactor: ctx.formFactor });
10786
10855
  new_button.align = "right";
@@ -11183,18 +11252,30 @@ async function lookupToAmis(field, readonly, ctx){
11183
11252
  enableEnhancedLookup = true;
11184
11253
  }
11185
11254
  }
11255
+ let amisSchema;
11186
11256
  // 默认使用下拉框模式显示lookup选项,只能配置了enable_enhanced_lookup才使用弹出增强模式
11187
11257
  if(enableEnhancedLookup == true){
11188
- return await lookupToAmisPicker(field, readonly, ctx);
11258
+ amisSchema = await lookupToAmisPicker(field, readonly, ctx);
11189
11259
  }else if(refObject.enable_tree) {
11190
- return await lookupToAmisTreeSelect(field, readonly, Object.assign({}, ctx, {
11260
+ amisSchema = await lookupToAmisTreeSelect(field, readonly, Object.assign({}, ctx, {
11191
11261
  labelField: referenceTo.labelField?.name || 'name',
11192
11262
  valueField: referenceTo.valueField?.name || '_id',
11193
11263
  objectName: referenceTo.objectName
11194
11264
  }));
11195
11265
  }else {
11196
- return await lookupToAmisSelect(field, readonly, ctx);
11266
+ amisSchema = await lookupToAmisSelect(field, readonly, ctx);
11267
+ }
11268
+ let refLookupPage = refObject.pages && refObject.pages.lookup;
11269
+ if(refLookupPage){
11270
+ if(refLookupPage.is_enable){
11271
+ let pageAmisSchema = refLookupPage.amis_schema;
11272
+ if(typeof pageAmisSchema == 'string'){
11273
+ pageAmisSchema = JSON.parse(pageAmisSchema);
11274
+ }
11275
+ amisSchema = _$1.defaultsDeep({}, pageAmisSchema, amisSchema);
11276
+ }
11197
11277
  }
11278
+ return amisSchema;
11198
11279
  }
11199
11280
 
11200
11281
  async function lookupToAmisSelectUser(field, readonly, ctx){
@@ -11943,7 +12024,8 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
11943
12024
  },
11944
12025
  pipeOut: (value, oldValue, data) => {
11945
12026
  if(value){
11946
- return value/100;
12027
+ const result = value/100;
12028
+ return Number(result.toFixed(field.scale+2));
11947
12029
  }
11948
12030
  return value;
11949
12031
  },
@@ -12177,7 +12259,7 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
12177
12259
  if(field.is_wide || convertData.type === 'group'){
12178
12260
  convertData.className = 'col-span-2 m-0';
12179
12261
  }else {
12180
- convertData.className = 'm-0';
12262
+ convertData.className = 'm-1';
12181
12263
  }
12182
12264
  if(readonly){
12183
12265
  convertData.className = `${convertData.className} border-b`;
@@ -12582,8 +12664,8 @@ async function getFormBody(permissionFields, formFields, ctx){
12582
12664
  /*
12583
12665
  * @Author: 殷亮辉 yinlianghui@hotoa.com
12584
12666
  * @Date: 2023-11-15 09:50:22
12585
- * @LastEditors: baozhoutao@steedos.com
12586
- * @LastEditTime: 2024-01-02 15:43:50
12667
+ * @LastEditors: liaodaxue
12668
+ * @LastEditTime: 2024-01-09 18:12:28
12587
12669
  */
12588
12670
 
12589
12671
  /**
@@ -12623,6 +12705,7 @@ function getInputTableCell(field, showAsInlineEditMode) {
12623
12705
  "config": Object.assign({}, field, {
12624
12706
  label: false
12625
12707
  }),
12708
+ inInputTable: true,
12626
12709
  "static": true,
12627
12710
  "readonly": true,
12628
12711
  label: field.label,