@steedos-widgets/amis-lib 1.3.4-beta.16 → 1.3.4-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.
package/dist/index.esm.js CHANGED
@@ -1764,6 +1764,13 @@ async function getSelectUserSchema(field, readonly, ctx) {
1764
1764
  return amisSchema;
1765
1765
  }
1766
1766
 
1767
+ /*
1768
+ * @Author: 殷亮辉 yinlianghui@hotoa.com
1769
+ * @Date: 2023-03-22 09:31:21
1770
+ * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
1771
+ * @LastEditTime: 2023-10-25 17:40:14
1772
+ */
1773
+
1767
1774
  const globalTag = '__G_L_O_B_A_L__';
1768
1775
 
1769
1776
  const getParentPath = function (path) {
@@ -1803,7 +1810,29 @@ const isExpression = function (func) {
1803
1810
  return false;
1804
1811
  };
1805
1812
 
1813
+ const getMoment$1 = () => {
1814
+ if (window.amisRequire) {
1815
+ return window.amisRequire("moment");
1816
+ } else if (window.moment) {
1817
+ return window.moment;
1818
+ }
1819
+ };
1820
+
1806
1821
  const parseSingleExpression = function (func, formData, dataPath, global, userSession = {}) {
1822
+ if (global) {
1823
+ let now = new Date();
1824
+ let moment = getMoment$1();
1825
+ let today = moment().utc();
1826
+ today.set("hours", 0);
1827
+ today.set("minutes", 0);
1828
+ today.set("seconds", 0);
1829
+ today = today.toDate();
1830
+ Object.assign(global, {
1831
+ now,
1832
+ today
1833
+ });
1834
+ }
1835
+
1807
1836
  var error, funcBody, parent, parentPath, str;
1808
1837
 
1809
1838
  if (formData === void 0) {
@@ -4363,7 +4392,8 @@ const getCopyListviewButtonSchema = ()=>{
4363
4392
  "&": "${list_view}",
4364
4393
  "name":"",
4365
4394
  "label": i18next.t('frontend_listview_control_clone_defaultData_label_start') + " ${list_view.label} " + i18next.t('frontend_listview_control_clone_defaultData_label_end'),
4366
- "shared":false
4395
+ "shared":false,
4396
+ "object_name": "${targetObjectName}",
4367
4397
  },
4368
4398
  "fieldsExtend": fieldsExtend$3(),
4369
4399
  "fields": fields(),
@@ -6071,7 +6101,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
6071
6101
  pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { headerToolbarItems, isLookup: true, keywordsSearchBoxName });
6072
6102
  const isAllowCreate = refObjectConfig.permissions.allowCreate;
6073
6103
  const isCreate = _$1.isBoolean(field.create) ? field.create : true;
6074
- if (isAllowCreate && isCreate) {
6104
+ // lookup字段配置过滤条件就强制不显示新建按钮
6105
+ let isHasFilters = (field.filters || field._filtersFunction) ? true : false;
6106
+ if (isAllowCreate && isCreate && !isHasFilters) {
6075
6107
  const new_button = await getSchema$5(refObjectConfig, { appId: ctx.appId, objectName: refObjectConfig.name, formFactor: ctx.formFactor });
6076
6108
  new_button.align = "right";
6077
6109
  // 保持快速搜索放在最左侧,新建按钮往里插,而不是push到最后
@@ -6448,7 +6480,7 @@ async function lookupToAmis(field, readonly, ctx){
6448
6480
  // 此处不参考 steedos 的 enable_enhanced_lookup 规则. 如果默认是开启弹出选择,用户选择过程操作太繁琐, 所以默认是关闭弹出选择.
6449
6481
  // 由于amis picker 目前不支持联动, 配置了depend_on时, 使用使用select ,以支持联动
6450
6482
  // TODO: 确认 amis picker 支持联动时, 清理field.depend_on判断
6451
- if(refObject.enable_enhanced_lookup == true && _$1.isEmpty(field.depend_on)){
6483
+ if(refObject.enable_enhanced_lookup == true){
6452
6484
  return await lookupToAmisPicker(field, readonly, ctx);
6453
6485
  }else if(refObject.enable_tree) {
6454
6486
  return await lookupToAmisTreeSelect(field, readonly, Object.assign({}, ctx, {
@@ -6765,8 +6797,8 @@ function getAmisStaticFieldType(type, readonly, options){
6765
6797
  /*
6766
6798
  * @Author: baozhoutao@steedos.com
6767
6799
  * @Date: 2022-10-28 14:15:09
6768
- * @LastEditors: baozhoutao@steedos.com
6769
- * @LastEditTime: 2022-11-02 18:06:16
6800
+ * @LastEditors: liaodaxue
6801
+ * @LastEditTime: 2023-10-30 17:51:54
6770
6802
  * @Description:
6771
6803
  */
6772
6804
 
@@ -6817,11 +6849,26 @@ const getAmisFileEditSchema = (steedosField)=>{
6817
6849
  useChunk: false, // 关闭分块上传
6818
6850
  receiver: {
6819
6851
  method: "post",
6852
+ dataType: "form-data",
6820
6853
  url: `\${context.rootUrl}/s3/${tableName}`,
6821
- data: {
6822
- $: "$$",
6823
- context: `\${context}`,
6824
- },
6854
+ requestAdaptor: `
6855
+ const { _master, global,context } = api.body;
6856
+ // const { recordId, objectName } = _master;
6857
+ const { spaceId, userId, user } = global;
6858
+ /*
6859
+ record_id: recordId,
6860
+ parent: recordId,
6861
+ object_name: objectName,
6862
+ owner_name: user.name,
6863
+ space: spaceId,
6864
+ owner: userId
6865
+ */
6866
+ // 参考platform 2.2版本,附件字段保存时cfs.files.filerecord、cfs.images.filerecord表中的metadata下只保存space、owner两个属性值。
6867
+ api.data.append('space', spaceId);
6868
+ api.data.append('owner', userId);
6869
+
6870
+ return api;
6871
+ `,
6825
6872
  adaptor: `
6826
6873
  const { context } = api.body;
6827
6874
  var rootUrl = context.rootUrl + "/api/files/${tableName}/";
@@ -7985,7 +8032,7 @@ async function getTableColumns(fields, options){
7985
8032
  {
7986
8033
  "args": {
7987
8034
  "api": {
7988
- "url": "${context.rootUrl}/api/files/files/${versions[0]}?download=true",
8035
+ "url": "${(versions[0] && versions[0].url) ? versions[0].url+'?download=true' : context.rootUrl+'/api/files/files/'+versions[0]+'?download=true'}",
7989
8036
  "method": "get",
7990
8037
  "headers": {
7991
8038
  "Authorization": "Bearer ${context.tenantId},${context.authToken}"
@@ -8465,6 +8512,7 @@ async function getTableSchema$1(fields, options){
8465
8512
  }
8466
8513
  return {
8467
8514
  mode: "cards",
8515
+ perPageAvailable: [5, 10, 20, 50, 100, 500],
8468
8516
  name: "thelist",
8469
8517
  headerToolbarClassName: "py-2 px-2 border-gray-300 border-solid border-b",
8470
8518
  className: "",
@@ -8487,6 +8535,7 @@ async function getTableSchema$1(fields, options){
8487
8535
 
8488
8536
  return {
8489
8537
  mode: "table",
8538
+ perPageAvailable: [5, 10, 20, 50, 100, 500],
8490
8539
  name: "thelist",
8491
8540
  headerToolbarClassName: "py-2 px-2 border-gray-300 border-solid border-b",
8492
8541
  className: "",
@@ -9121,7 +9170,7 @@ async function getEditFormInitApi(object, recordId, fields, options){
9121
9170
  ${getScriptForRewriteValueForFileFields(fields)}
9122
9171
 
9123
9172
  _.each(dataKeys, function(key){
9124
- if(fieldKeys.indexOf(key)<0){
9173
+ if(fieldKeys.indexOf(key)<0 && key !== "_display"){
9125
9174
  delete data[key];
9126
9175
  }
9127
9176
  })
@@ -10461,8 +10510,29 @@ const getFormFields = (objectSchema, formProps)=>{
10461
10510
  return lodash.sortBy(___default.values(fields), "sort_no");
10462
10511
  };
10463
10512
 
10513
+ async function getFormSchemaWithDataFilter(form, options = {}){
10514
+ const { formDataFilter, amisData, env } = options;
10515
+ let onFormDataFilter = options.onFormDataFilter;
10516
+ if (!onFormDataFilter && typeof formDataFilter === 'string') {
10517
+ onFormDataFilter = new Function(
10518
+ 'form',
10519
+ 'env',
10520
+ 'data',
10521
+ formDataFilter
10522
+ );
10523
+ }
10524
+
10525
+ try {
10526
+ onFormDataFilter && (form = await onFormDataFilter(form, env, amisData) || form);
10527
+ } catch (e) {
10528
+ console.warn(e);
10529
+ }
10530
+ return form;
10531
+ }
10532
+
10464
10533
  async function getObjectForm(objectSchema, ctx){
10465
- const { recordId, formFactor, layout = formFactor === 'SMALL' ? 'normal' : "normal", labelAlign, tabId, appId, defaults, submitSuccActions = [] } = ctx;
10534
+ const { recordId, formFactor, layout = formFactor === 'SMALL' ? 'normal' : "normal", labelAlign, tabId, appId, defaults, submitSuccActions = [],
10535
+ formDataFilter, onFormDataFilter, amisData, env } = ctx;
10466
10536
  const fields = ___default.values(objectSchema.fields);
10467
10537
  const formFields = getFormFields(objectSchema, ctx);
10468
10538
  const formSchema = defaults && defaults.formSchema || {};
@@ -10479,7 +10549,8 @@ async function getObjectForm(objectSchema, ctx){
10479
10549
  name: `page_edit_${recordId}`,
10480
10550
  api: await getEditFormInitApi(objectSchema, recordId, fields, ctx),
10481
10551
  data:{
10482
- editFormInited: false
10552
+ editFormInited: false,
10553
+ ...amisData
10483
10554
  },
10484
10555
  // data: {global: getGlobalData('edit'), recordId: recordId, objectName: objectSchema.name, context: {rootUrl: getRootUrl(), tenantId: getTenantId(), authToken: getAuthToken()}},
10485
10556
  initApi: null,
@@ -10546,15 +10617,17 @@ async function getObjectForm(objectSchema, ctx){
10546
10617
  }
10547
10618
  })]
10548
10619
  };
10620
+ amisSchema.body[0] = await getFormSchemaWithDataFilter(amisSchema.body[0], { formDataFilter, onFormDataFilter, amisData, env });
10549
10621
  return amisSchema;
10550
10622
  }
10551
10623
 
10552
10624
  async function getObjectDetail(objectSchema, recordId, ctx){
10553
- const { formFactor, layout = formFactor === 'SMALL' ? 'normal' : "normal", labelAlign } = ctx;
10625
+ const { formFactor, layout = formFactor === 'SMALL' ? 'normal' : "normal", labelAlign,
10626
+ formDataFilter, onFormDataFilter, amisData, env } = ctx;
10554
10627
  const fields = ___default.values(objectSchema.fields);
10555
10628
  const formFields = getFormFields(objectSchema, ctx);
10556
10629
  const serviceId = `service_detail_page`;
10557
- return {
10630
+ const amisSchema = {
10558
10631
  type: 'service',
10559
10632
  name: `page_readonly_${recordId}`,
10560
10633
  id: serviceId,
@@ -10636,7 +10709,10 @@ async function getObjectDetail(objectSchema, recordId, ctx){
10636
10709
  ]
10637
10710
  }
10638
10711
  }
10639
- }
10712
+ };
10713
+
10714
+ amisSchema.body[0].body = await getFormSchemaWithDataFilter(amisSchema.body[0].body, { formDataFilter, onFormDataFilter, amisData, env });
10715
+ return amisSchema;
10640
10716
  }
10641
10717
 
10642
10718
  /*
@@ -10716,7 +10792,7 @@ const getRecordPermissions = async (objectName, recordId)=>{
10716
10792
  * @Author: baozhoutao@steedos.com
10717
10793
  * @Date: 2022-07-05 15:55:39
10718
10794
  * @LastEditors: liaodaxue
10719
- * @LastEditTime: 2023-09-25 17:18:08
10795
+ * @LastEditTime: 2023-10-23 15:55:46
10720
10796
  * @Description:
10721
10797
  */
10722
10798
 
@@ -11007,11 +11083,15 @@ async function getRelatedListSchema(
11007
11083
  ctx
11008
11084
  ) {
11009
11085
  const uiSchema = await getUISchema(objectName);
11086
+ if(!uiSchema){
11087
+ return {}
11088
+ }
11089
+ const listViewNames = map(uiSchema.list_views, 'name');
11010
11090
  const listView = find(
11011
11091
  uiSchema.list_views,
11012
11092
  (listView, name) => {
11013
- // 传入listViewName空值则取第一个
11014
- if(!listViewName){
11093
+ // 传入listViewName空值 或者 不存在 则取第一个
11094
+ if(!listViewName || listViewNames.indexOf(listViewName)<0){
11015
11095
  listViewName = name;
11016
11096
  }
11017
11097
  return name === listViewName || listView._id === listViewName;