@steedos-widgets/amis-object 3.6.2-beta.16 → 3.6.2-beta.18

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.
@@ -5281,7 +5281,7 @@ async function getTableColumns$1(fields, options){
5281
5281
  var data = event.data;
5282
5282
  var file_name = data.versions ? data.name : "${field.label}";
5283
5283
  var file_id = data._id;
5284
- SteedosUI.previewFile && SteedosUI.previewFile({file_name, file_id});
5284
+ window.previewFile && window.previewFile({file_name, file_id});
5285
5285
  `;
5286
5286
  columnItem = {
5287
5287
  "type": "button",
@@ -5310,7 +5310,7 @@ async function getTableColumns$1(fields, options){
5310
5310
  "actionType": "custom",
5311
5311
  "script": previewFileScript,
5312
5312
  // "expression": "!!window?.nw?.require" //PC客户端预览附件
5313
- "expression": "!!!(window && window.nw && window.nw.require)"//PC客户端预览附件
5313
+ "expression": "!!(window && window.nw && window.nw.require)"//PC客户端预览附件
5314
5314
  }
5315
5315
  ]
5316
5316
  }
@@ -6093,6 +6093,18 @@ async function getTableApi(mainObject, fields, options){
6093
6093
  return api;
6094
6094
  `;
6095
6095
  api.adaptor = `
6096
+ let fields = ${JSON.stringify(_$1.map(fields, 'name'))};
6097
+ // 这里把行数据中所有为空的字段值配置为空字符串,是因为amis有bug:crud的columns中的列如果type为static-前缀的话,行数据中该字段为空的话会显示为父作用域中同名变量值,见:https://github.com/baidu/amis/issues/9556
6098
+ (payload.data.rows || []).forEach((itemRow) => {
6099
+ (fields || []).forEach((itemField) => {
6100
+ if(itemField && (itemRow[itemField] === undefined || itemRow[itemField] === null)){
6101
+ // 这里itemRow中不存在 itemField 属性,或者值为null时都会有“显示为父作用域中的同名变量值”的问题,所以null和undefined都要重置为空字符串
6102
+ // 实测数字、下拉框、多选lookup等字段类型重置为空字符串都不会有问题,而且实测amis from组件的清空表单字段值功能就是把表单中的各种字段类型设置为空字符串,所以看起来也符合amis规范
6103
+ itemRow[itemField] = "";
6104
+ }
6105
+ });
6106
+ });
6107
+
6096
6108
  if(api.body.listName == "recent"){
6097
6109
  payload.data.rows = _.sortBy(payload.data.rows, function(item){
6098
6110
  return _.indexOf(api.body._ids, item._id)
@@ -11484,7 +11496,6 @@ async function getObjectFilter(objectSchema, fields, options) {
11484
11496
  "timeOut": 1000
11485
11497
  }
11486
11498
  });
11487
- resizeWindow();
11488
11499
  const scope = event.context.scoped;
11489
11500
  // let filterFormValues = event.data;
11490
11501
  let filterForm = SteedosUI.getClosestAmisComponentByType(scope, "form");
@@ -11820,7 +11831,6 @@ async function getObjectCRUD(objectSchema, fields, options){
11820
11831
  payload.status = 2;
11821
11832
  payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;
11822
11833
  }
11823
- debugger;
11824
11834
  var scope = SteedosUI.getRef(context.scopeId);
11825
11835
  var scopeParent = scope && scope.parent;
11826
11836
  var crudScoped = scopeParent.getComponentById('${body.id}');
@@ -15348,13 +15358,31 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
15348
15358
  };
15349
15359
  break;
15350
15360
  case 'input-datetime-range':
15361
+ // convertData = {
15362
+ // type: "input-datetime-range",
15363
+ // inputFormat: 'YYYY-MM-DD HH:mm',
15364
+ // format:'YYYY-MM-DDTHH:mm:ss.SSSZ',
15365
+ // tpl: readonly ? Tpl.getDateTimeTpl(field) : null,
15366
+ // utc: true,
15367
+ // joinValues: false
15368
+ // }
15369
+ // 日期时间字段,按日期方式展现显示控件,用户不用关心小时分钟
15351
15370
  convertData = {
15352
- type: "input-datetime-range",
15353
- inputFormat: 'YYYY-MM-DD HH:mm',
15371
+ type: "input-date-range",
15372
+ inputFormat: "YYYY-MM-DD HH:mm",
15354
15373
  format:'YYYY-MM-DDTHH:mm:ss.SSSZ',
15355
15374
  tpl: readonly ? getDateTimeTpl(field) : null,
15356
15375
  utc: true,
15357
- joinValues: false
15376
+ joinValues: false,
15377
+ "shortcuts": [
15378
+ "thismonth",
15379
+ "2monthsago",
15380
+ "3monthslater",
15381
+ "prevquarter",
15382
+ "thisquarter",
15383
+ "thisyear",
15384
+ "lastYear"
15385
+ ]
15358
15386
  };
15359
15387
  break;
15360
15388
  case 'datetime':
@@ -15536,6 +15564,36 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
15536
15564
  convertData = {
15537
15565
  type: 'static-text'
15538
15566
  };
15567
+ }else if(field.autonumber_enable_modify){
15568
+ convertData = {
15569
+ "type": "input-group",
15570
+ "body": [
15571
+ {
15572
+ "type": "input-text",
15573
+ "name": field.name
15574
+ },
15575
+ {
15576
+ "type": "button",
15577
+ "label": "自动获取",
15578
+ "actionType": "ajax",
15579
+ "api": {
15580
+ "url": `\${context.rootUrl}/api/autonumber/generator/\${objectName}/${field.name}`,
15581
+ "method": "post",
15582
+ "headers": {
15583
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
15584
+ },
15585
+ "adaptor": `
15586
+ payload.data["${field.name}"] = payload.data && payload.data.autonumber;
15587
+ delete payload.data.autonumber;
15588
+ return payload;
15589
+ `
15590
+ },
15591
+ "messages": {
15592
+ "success": "获取成功"
15593
+ }
15594
+ }
15595
+ ]
15596
+ };
15539
15597
  }
15540
15598
  break;
15541
15599
  case 'url':
@@ -15841,8 +15899,9 @@ async function getFieldSearchable(perField, permissionFields, ctx){
15841
15899
  fieldNamePrefix = `${fieldNamePrefix}between__`;
15842
15900
  }
15843
15901
  if(_field.type === 'datetime'){
15844
- // 特意改为日期范围而不是日期时间范围,因为搜索时一般精确到日期就足够了,需要精确到日期时间范围需要在字段上配置amis属性来实现
15845
- _field.type = 'input-date-range';
15902
+ // 这里如果想把搜索范围展示效果改为日期范围,不可以直接改为input-date-range,因为它们规则不一样,包括时区规则和小时分秒的存值规则都不一样
15903
+ // 所以想改为展示日期范围效果,只能改input-datetime-range类型本身的属性来实现
15904
+ _field.type = 'input-datetime-range';
15846
15905
  _field.is_wide = true;
15847
15906
  fieldNamePrefix = `${fieldNamePrefix}between__`;
15848
15907
  }