@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.
@@ -5309,7 +5309,7 @@ async function getTableColumns$1(fields, options){
5309
5309
  var data = event.data;
5310
5310
  var file_name = data.versions ? data.name : "${field.label}";
5311
5311
  var file_id = data._id;
5312
- SteedosUI.previewFile && SteedosUI.previewFile({file_name, file_id});
5312
+ window.previewFile && window.previewFile({file_name, file_id});
5313
5313
  `;
5314
5314
  columnItem = {
5315
5315
  "type": "button",
@@ -5338,7 +5338,7 @@ async function getTableColumns$1(fields, options){
5338
5338
  "actionType": "custom",
5339
5339
  "script": previewFileScript,
5340
5340
  // "expression": "!!window?.nw?.require" //PC客户端预览附件
5341
- "expression": "!!!(window && window.nw && window.nw.require)"//PC客户端预览附件
5341
+ "expression": "!!(window && window.nw && window.nw.require)"//PC客户端预览附件
5342
5342
  }
5343
5343
  ]
5344
5344
  }
@@ -6121,6 +6121,18 @@ async function getTableApi(mainObject, fields, options){
6121
6121
  return api;
6122
6122
  `;
6123
6123
  api.adaptor = `
6124
+ let fields = ${JSON.stringify(_$1__namespace.map(fields, 'name'))};
6125
+ // 这里把行数据中所有为空的字段值配置为空字符串,是因为amis有bug:crud的columns中的列如果type为static-前缀的话,行数据中该字段为空的话会显示为父作用域中同名变量值,见:https://github.com/baidu/amis/issues/9556
6126
+ (payload.data.rows || []).forEach((itemRow) => {
6127
+ (fields || []).forEach((itemField) => {
6128
+ if(itemField && (itemRow[itemField] === undefined || itemRow[itemField] === null)){
6129
+ // 这里itemRow中不存在 itemField 属性,或者值为null时都会有“显示为父作用域中的同名变量值”的问题,所以null和undefined都要重置为空字符串
6130
+ // 实测数字、下拉框、多选lookup等字段类型重置为空字符串都不会有问题,而且实测amis from组件的清空表单字段值功能就是把表单中的各种字段类型设置为空字符串,所以看起来也符合amis规范
6131
+ itemRow[itemField] = "";
6132
+ }
6133
+ });
6134
+ });
6135
+
6124
6136
  if(api.body.listName == "recent"){
6125
6137
  payload.data.rows = _.sortBy(payload.data.rows, function(item){
6126
6138
  return _.indexOf(api.body._ids, item._id)
@@ -11512,7 +11524,6 @@ async function getObjectFilter(objectSchema, fields, options) {
11512
11524
  "timeOut": 1000
11513
11525
  }
11514
11526
  });
11515
- resizeWindow();
11516
11527
  const scope = event.context.scoped;
11517
11528
  // let filterFormValues = event.data;
11518
11529
  let filterForm = SteedosUI.getClosestAmisComponentByType(scope, "form");
@@ -11848,7 +11859,6 @@ async function getObjectCRUD(objectSchema, fields, options){
11848
11859
  payload.status = 2;
11849
11860
  payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;
11850
11861
  }
11851
- debugger;
11852
11862
  var scope = SteedosUI.getRef(context.scopeId);
11853
11863
  var scopeParent = scope && scope.parent;
11854
11864
  var crudScoped = scopeParent.getComponentById('${body.id}');
@@ -15376,13 +15386,31 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
15376
15386
  };
15377
15387
  break;
15378
15388
  case 'input-datetime-range':
15389
+ // convertData = {
15390
+ // type: "input-datetime-range",
15391
+ // inputFormat: 'YYYY-MM-DD HH:mm',
15392
+ // format:'YYYY-MM-DDTHH:mm:ss.SSSZ',
15393
+ // tpl: readonly ? Tpl.getDateTimeTpl(field) : null,
15394
+ // utc: true,
15395
+ // joinValues: false
15396
+ // }
15397
+ // 日期时间字段,按日期方式展现显示控件,用户不用关心小时分钟
15379
15398
  convertData = {
15380
- type: "input-datetime-range",
15381
- inputFormat: 'YYYY-MM-DD HH:mm',
15399
+ type: "input-date-range",
15400
+ inputFormat: "YYYY-MM-DD HH:mm",
15382
15401
  format:'YYYY-MM-DDTHH:mm:ss.SSSZ',
15383
15402
  tpl: readonly ? getDateTimeTpl(field) : null,
15384
15403
  utc: true,
15385
- joinValues: false
15404
+ joinValues: false,
15405
+ "shortcuts": [
15406
+ "thismonth",
15407
+ "2monthsago",
15408
+ "3monthslater",
15409
+ "prevquarter",
15410
+ "thisquarter",
15411
+ "thisyear",
15412
+ "lastYear"
15413
+ ]
15386
15414
  };
15387
15415
  break;
15388
15416
  case 'datetime':
@@ -15564,6 +15592,36 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
15564
15592
  convertData = {
15565
15593
  type: 'static-text'
15566
15594
  };
15595
+ }else if(field.autonumber_enable_modify){
15596
+ convertData = {
15597
+ "type": "input-group",
15598
+ "body": [
15599
+ {
15600
+ "type": "input-text",
15601
+ "name": field.name
15602
+ },
15603
+ {
15604
+ "type": "button",
15605
+ "label": "自动获取",
15606
+ "actionType": "ajax",
15607
+ "api": {
15608
+ "url": `\${context.rootUrl}/api/autonumber/generator/\${objectName}/${field.name}`,
15609
+ "method": "post",
15610
+ "headers": {
15611
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
15612
+ },
15613
+ "adaptor": `
15614
+ payload.data["${field.name}"] = payload.data && payload.data.autonumber;
15615
+ delete payload.data.autonumber;
15616
+ return payload;
15617
+ `
15618
+ },
15619
+ "messages": {
15620
+ "success": "获取成功"
15621
+ }
15622
+ }
15623
+ ]
15624
+ };
15567
15625
  }
15568
15626
  break;
15569
15627
  case 'url':
@@ -15869,8 +15927,9 @@ async function getFieldSearchable(perField, permissionFields, ctx){
15869
15927
  fieldNamePrefix = `${fieldNamePrefix}between__`;
15870
15928
  }
15871
15929
  if(_field.type === 'datetime'){
15872
- // 特意改为日期范围而不是日期时间范围,因为搜索时一般精确到日期就足够了,需要精确到日期时间范围需要在字段上配置amis属性来实现
15873
- _field.type = 'input-date-range';
15930
+ // 这里如果想把搜索范围展示效果改为日期范围,不可以直接改为input-date-range,因为它们规则不一样,包括时区规则和小时分秒的存值规则都不一样
15931
+ // 所以想改为展示日期范围效果,只能改input-datetime-range类型本身的属性来实现
15932
+ _field.type = 'input-datetime-range';
15874
15933
  _field.is_wide = true;
15875
15934
  fieldNamePrefix = `${fieldNamePrefix}between__`;
15876
15935
  }