@steedos-widgets/amis-lib 6.3.0-beta.16 → 6.3.0-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.cjs.js CHANGED
@@ -1183,6 +1183,29 @@ function getAmisStaticFieldType(type, readonly, options){
1183
1183
  }
1184
1184
  }
1185
1185
 
1186
+ /*
1187
+ * @Author: baozhoutao@steedos.com
1188
+ * @Date: 2022-07-13 15:18:03
1189
+ * @LastEditors: baozhoutao@steedos.com
1190
+ * @LastEditTime: 2023-04-11 10:34:26
1191
+ * @Description:
1192
+ */
1193
+
1194
+ async function getPage({type, pageId = '', appId, objectName = '', recordId = '', formFactor = 'LARGE'}){
1195
+ const api = `/api/pageSchema/${type}?app=${appId}&objectApiName=${objectName}&recordId=${recordId}&pageId=${pageId}&formFactor=${formFactor}`;
1196
+ const page = await fetchAPI(api);
1197
+ if (page && page.schema) {
1198
+ page.schema = JSON.parse(page.schema);
1199
+ if(page.schema.data){
1200
+ delete page.schema.data.recordId;
1201
+ delete page.schema.data.objectName;
1202
+ delete page.schema.data.context;
1203
+ delete page.schema.data.global;
1204
+ }
1205
+ return page;
1206
+ }
1207
+ }
1208
+
1186
1209
  /*
1187
1210
  * @Author: baozhoutao@steedos.com
1188
1211
  * @Date: 2022-10-28 14:15:09
@@ -1206,9 +1229,74 @@ const getAmisFieldType$1 = (steedosField, readonly)=>{
1206
1229
  return getAmisStaticFieldType(steedosField.type === 'avatar' ? 'image' : steedosField.type, readonly, {multiple: steedosField.multiple});
1207
1230
  };
1208
1231
 
1209
- const getAmisFileReadonlySchema = (steedosField)=>{
1232
+ async function getLookupLinkOnClick(field, options) {
1233
+ const recordPage = await getPage({ type: 'record', appId: options.appId, objectName: options.objectName, formFactor: options.formFactor });
1234
+
1235
+ const drawerRecordDetailSchema = recordPage ? Object.assign({}, recordPage.schema, {
1236
+ "recordId": "${value}",
1237
+ "data": {
1238
+ ...recordPage.schema.data,
1239
+ "_inDrawer": true, // 用于判断是否在抽屉中
1240
+ "recordLoaded": false, // 重置数据加载状态
1241
+ "objectName": options.objectName,
1242
+ }
1243
+ }) : {
1244
+ "type": "steedos-record-detail",
1245
+ "objectApiName": options.objectName,
1246
+ "recordId": "${value}",
1247
+ "showBackButton": false,
1248
+ "showButtons": true,
1249
+ "data": {
1250
+ "_inDrawer": true, // 用于判断是否在抽屉中
1251
+ "recordLoaded": false, // 重置数据加载状态
1252
+ }
1253
+ };
1254
+ return {
1255
+ "click": {
1256
+ "actions": [
1257
+ // {
1258
+ // "type": "custom",
1259
+ // "script": `
1260
+ // let fileRecordId = url.match(${regFileRecordId})[2];
1261
+ // console.log('fileRecordId:',fileRecordId);
1262
+ // event.data.recordId = fileRecordId;
1263
+ // `,
1264
+ // },
1265
+ {
1266
+ "actionType": "drawer",
1267
+ "drawer": {
1268
+ "type": "drawer",
1269
+ "title": " ",
1270
+ "headerClassName": "hidden",
1271
+ "size": "lg",
1272
+ "bodyClassName": "p-0 m-0 bg-gray-100",
1273
+ "closeOnEsc": true,
1274
+ "closeOnOutside": true,
1275
+ "resizable": true,
1276
+ "actions": [],
1277
+ "body": [
1278
+ drawerRecordDetailSchema
1279
+ ],
1280
+ "className": "steedos-record-detail-drawer app-popover"
1281
+ },
1282
+ "preventDefault": true
1283
+ }
1284
+ ]
1285
+ }
1286
+ }
1287
+ }
1288
+
1289
+ const getAmisFileReadonlySchema = async (steedosField,ctx)=>{
1210
1290
  const type = steedosField.type;
1291
+ const { appId, formFactor } = ctx.amisData || {};
1211
1292
  const amisFieldType = getAmisFieldType$1(steedosField, true);
1293
+
1294
+ let lookupATagClick = 'onclick="return false;"';
1295
+
1296
+ if(window.innerWidth < 768){
1297
+ lookupATagClick = "";
1298
+ }
1299
+
1212
1300
  if(_.includes(['avatar','image'], type)){
1213
1301
  return {
1214
1302
  type: amisFieldType,
@@ -1243,13 +1331,34 @@ const getAmisFileReadonlySchema = (steedosField)=>{
1243
1331
  }
1244
1332
  }
1245
1333
  } : {
1246
- type: amisFieldType,
1247
- tpl: `
1248
- <% let fileData = data._display.${steedosField.name}; if (fileData) { %>
1249
- <% if(!Array.isArray(fileData)){ fileData = [fileData]} %>
1250
- <% fileData.forEach(function(item) { %>
1251
- <a href='<%= item.url %>' target='_self' class='block'><%= item.name %></a>
1252
- <% });} %>`
1334
+ // type: amisFieldType,
1335
+ // tpl: `
1336
+ // <% let fileData = data._display.${steedosField.name}; if (fileData) { %>
1337
+ // <% if(!Array.isArray(fileData)){ fileData = [fileData]} %>
1338
+ // <% fileData.forEach(function(item) { %>
1339
+ // <a href='<%= item.url %>' target='_self' class='block'><%= item.name %></a>
1340
+ // <% });} %>`
1341
+ "type": "control",
1342
+ "body": {
1343
+ type: 'each',
1344
+ placeholder: "",
1345
+ // className: `steedos-field-lookup-each flex flex-wrap gap-2`,
1346
+ source: `\${_display.${steedosField.name}|asArray}`,
1347
+ items: {
1348
+ type: 'static',
1349
+ labelClassName: "hidden",
1350
+ label: false,
1351
+ className: 'm-0',
1352
+ tpl: `<a href="/app/-/cfs_files_filerecord/view/\${value}" ${lookupATagClick}>\${name}</a>`,
1353
+ // tpl: "<%= item.name >",
1354
+ // onEvent: window.innerWidth < 768 ? null : REFERENCE_VALUE_ITEM_ONCLICK
1355
+ onEvent: window.innerWidth < 768 ? null : await getLookupLinkOnClick(steedosField, {
1356
+ appId,
1357
+ objectName: "cfs_files_filerecord",
1358
+ formFactor
1359
+ })
1360
+ }
1361
+ }
1253
1362
  }
1254
1363
  }
1255
1364
  };
@@ -1311,8 +1420,8 @@ const getAmisFileEditSchema = (steedosField)=>{
1311
1420
  return convertData;
1312
1421
  };
1313
1422
 
1314
- const getAmisFileSchema = (steedosField, readonly)=>{
1315
- return readonly ? getAmisFileReadonlySchema(steedosField) : getAmisFileEditSchema(steedosField);
1423
+ const getAmisFileSchema = async (steedosField, readonly, ctx)=>{
1424
+ return readonly ? await getAmisFileReadonlySchema(steedosField,ctx) : getAmisFileEditSchema(steedosField);
1316
1425
  };
1317
1426
 
1318
1427
  var frontend_field_group_generalization$1 = "General";
@@ -1707,29 +1816,6 @@ i18next__default["default"]
1707
1816
  }
1708
1817
  });
1709
1818
 
1710
- /*
1711
- * @Author: baozhoutao@steedos.com
1712
- * @Date: 2022-07-13 15:18:03
1713
- * @LastEditors: baozhoutao@steedos.com
1714
- * @LastEditTime: 2023-04-11 10:34:26
1715
- * @Description:
1716
- */
1717
-
1718
- async function getPage({type, pageId = '', appId, objectName = '', recordId = '', formFactor = 'LARGE'}){
1719
- const api = `/api/pageSchema/${type}?app=${appId}&objectApiName=${objectName}&recordId=${recordId}&pageId=${pageId}&formFactor=${formFactor}`;
1720
- const page = await fetchAPI(api);
1721
- if (page && page.schema) {
1722
- page.schema = JSON.parse(page.schema);
1723
- if(page.schema.data){
1724
- delete page.schema.data.recordId;
1725
- delete page.schema.data.objectName;
1726
- delete page.schema.data.context;
1727
- delete page.schema.data.global;
1728
- }
1729
- return page;
1730
- }
1731
- }
1732
-
1733
1819
  async function getQuickEditSchema(object, columnField, options){
1734
1820
  let field = object.fields[columnField.name];
1735
1821
  //判断在amis3.2以上环境下,放开批量编辑与lookup的单元格编辑
@@ -5734,21 +5820,16 @@ const getDropdown = (dropdownButtons)=>{
5734
5820
  "hideCaret": true,
5735
5821
  "className": "mr-0 steedos-mobile-header-drop-down",
5736
5822
  "closeOnClick": true,
5737
- "menuClassName": "buttons-drawer fixed inset-0 bg-none border-0 shadow-none",
5823
+ "menuClassName": "buttons-drawer fixed bg-none border-0 shadow-none",
5738
5824
  "align": "right",
5739
5825
  "body": [
5740
5826
  {
5741
5827
  "type": "action",
5742
5828
  "style": {
5743
- "position": "fixed",
5744
- "top": 0,
5745
- "right": 0,
5746
- "bottom": 0,
5747
- "left": 0,
5748
5829
  "z-index": 1,
5749
5830
  "background": "var(--Drawer-overlay-bg)",
5750
- "height": "unset",
5751
- "width": "unset",
5831
+ "height": "100%",
5832
+ "width": "100%",
5752
5833
  "padding": "0",
5753
5834
  "margin": "0",
5754
5835
  "border-radius": "0"
@@ -6542,103 +6623,785 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6542
6623
  };
6543
6624
  }
6544
6625
 
6545
- /**
6546
- * 列表视图顶部第一行amisSchema
6547
- * @param {*} objectSchema 对象UISchema
6548
- * @returns amisSchema
6549
- */
6550
- function getObjectListHeaderFirstLine(objectSchema, listViewName, ctx) {
6551
- const { icon, label } = objectSchema;
6552
- const disabled_list_views = objectSchema.permissions.disabled_list_views;
6553
- const listViewButtonOptions = [];
6554
- _$1.each(
6555
- objectSchema.list_views,
6556
- (listView, name) => {
6557
- if(name === "lookup" || (disabled_list_views && disabled_list_views.indexOf(listView._id)>-1)){
6558
- // 内置lookup为弹出选择专用视图,根据用户权限被禁用的视图,不显示在列表切换区域
6559
- return;
6560
- }
6561
- listViewButtonOptions.push({
6562
- type: "button",
6563
- label: listView.label,
6564
- actionType: "link",
6565
- link: `/app/\${appId}/${objectSchema.name}/grid/${name}`
6566
- });
6567
- }
6568
- );
6569
-
6570
- let amisButtonsSchema = getObjectListViewButtonsSchemas(objectSchema, {formFactor: ctx.formFactor});
6571
- const reg = new RegExp('_', 'g');
6572
- const standardIcon = icon && icon.replace(reg, '-');
6573
- const standardNewButton = _.find(amisButtonsSchema, { name: "standard_new" });
6574
- const buttonSchema = [{
6575
- "type": "flex",
6576
- "items": amisButtonsSchema,
6577
- "visibleOn": "${display == 'split'?false:true}"
6578
- }];
6579
- if(ctx.formFactor !== 'SMALL'){
6580
- const restButtons = Array.isArray(amisButtonsSchema) ? amisButtonsSchema.filter(obj => obj.name !== "standard_new"):[];
6581
- buttonSchema.push({
6582
- "type": "flex",
6583
- "items":[
6584
- standardNewButton,
6585
- (restButtons.length > 0) && {
6586
- "type": "dropdown-button",
6587
- "buttons": restButtons,
6588
- "className": " ml-1",
6589
- "menuClassName": "p-none split-dropdown-buttons",
6590
- "align": "right",
6591
- "size": "sm"
6592
- }
6593
- ],
6594
- "visibleOn": "${display == 'split'?true:false}"
6595
- });
6596
- }
6597
- return {
6598
- "type": "grid",
6599
- "columns": [
6600
- {
6601
- "body": [
6602
- {
6603
- "type": "grid",
6604
- "columns": [
6605
- {
6606
- "body": {
6607
- "type": "tpl",
6608
- "className": "block",
6609
- "tpl":`<svg class="slds-icon slds-icon_container slds-icon-standard-${standardIcon} slds-page-header__icon" aria-hidden="true"><use xlink:href="/assets/icons/standard-sprite/svg/symbols.svg#${icon}"></use></svg>`
6610
- },
6611
- "md": "auto",
6612
- "className": "",
6613
- "columnClassName": "flex justify-center items-center",
6614
- "valign": "middle",
6615
- },
6626
+ const getNewListviewButtonSchema = ()=>{
6627
+ return {
6628
+ "type": "button",
6629
+ "label": i18next__default["default"].t('frontend_listview_control_new_label'),
6630
+ "className": "steedos-listview-new-button",
6631
+ "onEvent": {
6632
+ "click": {
6633
+ "weight": 0,
6634
+ "actions": [
6616
6635
  {
6617
- "body": [
6618
- {
6619
- "type": "tpl",
6620
- "tpl": `${label}`,
6621
- "inline": false,
6622
- "wrapperComponent": "",
6623
- "className": "text-md leading-none text-black",
6636
+ "dialog": {
6637
+ "type": "dialog",
6638
+ "title": i18next__default["default"].t('frontend_listview_control_new_title'),
6639
+ "data": {
6640
+ //"&":"$$",2.7、2.9、3.0在此处失效
6641
+ "all": "${uiSchema.list_views.all}",
6642
+ "list_view": "${uiSchema.list_views[listName]}",
6643
+ "appId": "${appId}",
6644
+ "global": "${global}",
6645
+ "targetObjectName": "${objectName}",
6646
+ "context": "${context}"
6624
6647
  },
6625
- {
6626
- "type": "dropdown-button",
6627
- "className": "",
6628
- "label": "\${listName ? uiSchema.list_views[listName].label : uiSchema.list_views[defaultListName].label}",
6629
- "rightIcon": "fa fa-caret-down",
6630
- "size": "sm",
6631
- "hideCaret": true,
6632
- "closeOnClick": true,
6633
- "btnClassName": "!bg-transparent !border-none !hover:border-none text-lg h-5 font-bold p-0 text-black leading-none",
6634
- "buttons": listViewButtonOptions
6635
- }
6636
- ],
6637
- "md": "",
6638
- "columnClassName": "p-l-xs"
6648
+ "body": [
6649
+ {
6650
+ "type": "steedos-object-form",
6651
+ "label": "对象表单",
6652
+ "objectApiName": "object_listviews",
6653
+ "recordId": "",
6654
+ "mode": "edit",
6655
+ "layout": "normal",
6656
+ "defaultData": {
6657
+ "&": "${list_view}",
6658
+ "name":"",
6659
+ "label":"",
6660
+ "filters":"",
6661
+ "shared":false,
6662
+ "object_name": "${targetObjectName}",
6663
+ "_id":"",
6664
+ "shared_to": null,
6665
+ "shared_to_organizations": null,
6666
+ "locked": false,
6667
+ "owner": null,
6668
+ "company_id": null,
6669
+ "company_ids": null,
6670
+ "is_system": false
6671
+ },
6672
+ "fieldsExtend": fieldsExtend$5(),
6673
+ "fields": fields$1(),
6674
+ "onEvent": {
6675
+ "submitSucc": {
6676
+ "weight": 0,
6677
+ "actions": [
6678
+ {
6679
+ "args": {
6680
+ // 直接使用recordId不能拿到数据,只能通过result里面拿数据
6681
+ "url": "${context.rootUrl}/app/${appId}/${targetObjectName}/grid/listview_${result.data.recordId|lowerCase}",
6682
+ "blank": false
6683
+ },
6684
+ "actionType": "url",
6685
+ }
6686
+ ]
6687
+ }
6688
+ },
6689
+ "messages": {
6690
+ "success": i18next__default["default"].t('frontend_listview_control_new_message_success'),
6691
+ "failed": i18next__default["default"].t('frontend_listview_control_new_message_failed')
6692
+ },
6693
+ }
6694
+ ],
6695
+ "showCloseButton": true,
6696
+ "showErrorMsg": true,
6697
+ "showLoading": true,
6698
+ "closeOnEsc": false,
6699
+ "dataMapSwitch": false,
6700
+ "size": "lg"
6701
+ },
6702
+ "actionType": "dialog"
6639
6703
  }
6640
- ],
6641
- "className": "flex justify-between"
6704
+ ]
6705
+ }
6706
+ }
6707
+ }
6708
+ };
6709
+
6710
+ function fields$1(){
6711
+ return [
6712
+ "label",
6713
+ "name",
6714
+ "object_name",
6715
+ "filter_scope",
6716
+ "show_count",
6717
+ "columns",
6718
+ "sort",
6719
+ "filters",
6720
+ "mobile_columns",
6721
+ "searchable_fields",
6722
+ "is_system",
6723
+ "shared",
6724
+ "shared_to",
6725
+ "shared_to_organizations"
6726
+ ]
6727
+ }
6728
+
6729
+ function fieldsExtend$5(){
6730
+ return {
6731
+ "group": "",
6732
+ "label": {
6733
+ "group": "",
6734
+ "is_wide": true
6735
+ },
6736
+ "name": {
6737
+ "group": "",
6738
+ "amis": {
6739
+ "hidden": true,
6740
+ "required": false
6741
+ }
6742
+ },
6743
+ "object_name": {
6744
+ "group": "",
6745
+ "amis": {
6746
+ "hidden": true
6747
+ }
6748
+ },
6749
+ "filter_scope": {
6750
+ "group": "",
6751
+ "amis": {
6752
+ "hidden": true,
6753
+ "required": false
6754
+ }
6755
+ },
6756
+ "columns": {
6757
+ "group": "",
6758
+ "amis": {
6759
+ "hidden": true,
6760
+ "required": false
6761
+ }
6762
+ },
6763
+ "mobile_columns":{
6764
+ "group": "",
6765
+ "amis": {
6766
+ "hidden": true,
6767
+ "required": false
6768
+ }
6769
+ },
6770
+ "searchable_fields":{
6771
+ "group": "",
6772
+ "amis": {
6773
+ "hidden": true,
6774
+ "required": false
6775
+ }
6776
+ },
6777
+ "filter_fields": {
6778
+ "group": "",
6779
+ "amis": {
6780
+ "hidden": true,
6781
+ "required": false
6782
+ }
6783
+ },
6784
+ "scrolling_mode": {
6785
+ "group": "",
6786
+ "amis": {
6787
+ "hidden": true,
6788
+ "required": false
6789
+ }
6790
+ },
6791
+ "sort": {
6792
+ "group": "",
6793
+ "amis": {
6794
+ "hidden": true,
6795
+ "required": false
6796
+ }
6797
+ },
6798
+ "show_count": {
6799
+ "group": "",
6800
+ "amis": {
6801
+ "hidden": true,
6802
+ "required": false
6803
+ }
6804
+ },
6805
+ "type": {
6806
+ "group": "",
6807
+ "amis": {
6808
+ "hidden": true,
6809
+ "required": false
6810
+ }
6811
+ },
6812
+ "shared": {
6813
+ "group": "",
6814
+ "amis": {
6815
+ "visibleOn": "${false}"
6816
+ }
6817
+ },
6818
+ "shared_to": {
6819
+ "group": "",
6820
+ "amis":{
6821
+ "type": "radios",
6822
+ "inline": false
6823
+ }
6824
+ },
6825
+ "shared_to_organizations": {
6826
+ "group": ""
6827
+ },
6828
+ "filters": {
6829
+ "group": "",
6830
+ "amis": {
6831
+ "hidden": true
6832
+ }
6833
+ }
6834
+ }
6835
+ }
6836
+
6837
+ /**
6838
+ * 列表视图顶部第一行amisSchema
6839
+ * @param {*} objectSchema 对象UISchema
6840
+ * @returns amisSchema
6841
+ */
6842
+ function getObjectListHeaderFirstLine(objectSchema, listViewName, ctx) {
6843
+ const { icon, label } = objectSchema;
6844
+ const disabled_list_views = objectSchema.permissions.disabled_list_views;
6845
+ const listViewButtonOptions = [];
6846
+ const initApiAdaptor = `
6847
+ var data;
6848
+ if (recordId) {
6849
+ data = payload.data || { _filters_type_controller: 'conditions' };
6850
+ //数据格式转换
6851
+ if (data) {
6852
+ data.sort = lodash.map(data.sort, (item) => {
6853
+ return item.field_name + ":" + item.order;
6854
+ });
6855
+ data.searchable_fields = lodash.map(data.searchable_fields, 'field');
6856
+
6857
+ if (data.filters && lodash.isString(data.filters)) {
6858
+ try {
6859
+ data.filters = JSON.parse(data.filters);
6860
+ } catch (e) { }
6861
+ }
6862
+
6863
+ if (data.filters && lodash.isString(data.filters)) {
6864
+ data._filters_type_controller = 'function';
6865
+ } else {
6866
+ data._filters_type_controller = 'conditions'
6867
+ }
6868
+
6869
+ if (data._filters_type_controller === 'conditions') {
6870
+ data._filters_conditions = window.amisConvert.filtersToConditions(data.filters || []);
6871
+ } else {
6872
+ data._filters_function = data.filters;
6873
+ }
6874
+ }
6875
+ } else {
6876
+ const uiSchema = api.body.uiSchema;
6877
+ const contextDefaultData = context && context.data && context.data.defaultData; const defaultData = api.body.defaultData || contextDefaultData;
6878
+ let defaultValues = {};
6879
+ _.each(uiSchema && uiSchema.fields, function (field) {
6880
+ var value = SteedosUI.getFieldDefaultValue(field, api.body.global);
6881
+ if (!_.isNil(value)) {
6882
+ defaultValues[field.name] = value;
6883
+ }
6884
+ });
6885
+ if (defaultData && _.isObject(defaultData) && !_.isArray(defaultData)) {
6886
+ data = Object.assign({}, defaultValues, defaultData);
6887
+ }else{data = Object.assign({}, defaultValues) }
6888
+ }
6889
+ for (key in data) {
6890
+ if (data[key] === null) {
6891
+ delete data[key];
6892
+ }
6893
+ }
6894
+ payload.data = data;
6895
+ delete payload.extensions; if (data.is_enable != false) { data.is_enable = true; };
6896
+ return payload;
6897
+ `;
6898
+ const apiRequestAdaptor = `
6899
+ delete formData.created;
6900
+ delete formData.created_by;
6901
+ delete formData.modified;
6902
+ delete formData.modified_by;
6903
+ delete formData._display;
6904
+
6905
+ //数据格式转换
6906
+ formData.sort = lodash.map(formData.sort, (item) => {
6907
+ const arr = item.split(':');
6908
+ return { field_name: arr[0], order: arr[1] };
6909
+ });
6910
+
6911
+ formData.searchable_fields = lodash.map(formData.searchable_fields, (item) => {
6912
+ return { field: item };
6913
+ });
6914
+
6915
+ if (!formData._filters_type_controller) {
6916
+ formData._filters_type_controller = 'conditions';
6917
+ }
6918
+
6919
+ if (formData._filters_type_controller === 'conditions' && formData._filters_conditions) {
6920
+ formData.filters = window.amisConvert.conditionsToFilters(formData._filters_conditions);
6921
+ // formData.filters = JSON.stringify(window.amisConvert.conditionsToFilters(formData._filters_conditions), null, 4);
6922
+ } else {
6923
+ formData.filters = formData._filters_function || null;
6924
+ }
6925
+
6926
+ delete formData._filters_type_controller;
6927
+ delete formData._filters_conditions;
6928
+ delete formData._filters_function;
6929
+
6930
+ query = \`mutation{record: object_listviews__insert(doc: {__saveData}){_id}}\`;
6931
+ if (formData.recordId) {
6932
+ query = \`mutation{record: object_listviews__update(id: "\` + formData._id + \`", doc: {__saveData}){_id}}\`;
6933
+ };
6934
+ __saveData = JSON.stringify(JSON.stringify(formData));
6935
+
6936
+ api.data = { query: query.replace('{__saveData}', __saveData) };
6937
+ return api;
6938
+ `;
6939
+ _$1.each(
6940
+ objectSchema.list_views,
6941
+ (listView, name) => {
6942
+ if(name === "lookup" || (disabled_list_views && disabled_list_views.indexOf(listView._id)>-1)){
6943
+ // 内置lookup为弹出选择专用视图,根据用户权限被禁用的视图,不显示在列表切换区域
6944
+ return;
6945
+ }
6946
+ listViewButtonOptions.push({
6947
+ type: "button",
6948
+ label: listView.label,
6949
+ body: [
6950
+ {
6951
+ "type": "flex",
6952
+ "alignItems": "center",
6953
+ "justify": "space-between",
6954
+ "items": [
6955
+ {
6956
+ "type": "tpl",
6957
+ "tpl": listView.label
6958
+ },
6959
+ {
6960
+ "type": "button",
6961
+ "className": "steedos-listview-edit-button",
6962
+ "icon": "fa fa-edit",
6963
+ "actionType": "dialog",
6964
+ "hiddenOn": `!((global.user.is_space_admin || global.userId == '${listView.owner || ""}') && !!'${listView.owner || ""}')`,
6965
+ "dialog": {
6966
+ "type": "dialog",
6967
+ "title": "编辑 列表视图",
6968
+ "data": {
6969
+ "object_name": "${objectName}",
6970
+ "recordId": listView._id,
6971
+ "listName": "${listName}",
6972
+ "appId": "${appId}",
6973
+ "context": "${context}",
6974
+ "global": "${global}",
6975
+ "_id": listView._id
6976
+ },
6977
+ "body": [
6978
+ {
6979
+ "type": "steedos-object-form",
6980
+ "label": "对象表单",
6981
+ "objectApiName": "object_listviews",
6982
+ "recordId": "${recordId}",
6983
+ "className": "sm:rounded sm:border-gray-300 bg-white",
6984
+ "layout": "horizontal",
6985
+ "form": {
6986
+ "id": "form_object_listviews"
6987
+ },
6988
+ "mode": "edit",
6989
+ "enableTabs": true,
6990
+ "fields": [
6991
+ "label",
6992
+ "sort_no",
6993
+ "crud_mode",
6994
+ "shared",
6995
+ "shared_to",
6996
+ 'shared_to_organizations',
6997
+ "columns",
6998
+ "columns.$",
6999
+ "columns.$.field",
7000
+ "columns.$.width",
7001
+ "columns.$.wrap",
7002
+ "mobile_columns",
7003
+ "mobile_columns.$",
7004
+ "mobile_columns.$.field",
7005
+ "sort",
7006
+ "sort.$",
7007
+ "sort.$.field_name",
7008
+ "sort.$.order",
7009
+ "filters",
7010
+ "searchable_fields",
7011
+ "searchable_fields.$",
7012
+ "searchable_fields.$.field",
7013
+ ],
7014
+ "tabsMode": "line",
7015
+ "fieldsExtend": {
7016
+ "columns": {
7017
+ "amis": {
7018
+ "showIndex": true,
7019
+ "footerToolbar": [
7020
+ {
7021
+ "type": "button",
7022
+ "label": "${'object_listviews.listview_form.field_set' | t}",
7023
+ "actionType": "dialog",
7024
+ "dialog": {
7025
+ "type": "dialog",
7026
+ "title": "${'object_listviews.listview_form.displayed_columns' | t}",
7027
+ "size": "md",
7028
+ "body": [
7029
+ {
7030
+ "type": "transfer",
7031
+ "options": [
7032
+ ],
7033
+ "multiple": true,
7034
+ "id": "u:92c0b3cccca0",
7035
+ "required": true,
7036
+ "placeholder": "-",
7037
+ "className": "col-span-2 m-0",
7038
+ "checkAll": false,
7039
+ "searchable": true,
7040
+ "sortable": true,
7041
+ "itemHeight": 40,
7042
+ "source": {
7043
+ "method": "get",
7044
+ "url": "${context.rootUrl}/service/api/amis-metadata-objects/objects/${object_name}/fields/options",
7045
+ "headers": {
7046
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
7047
+ },
7048
+ "requestAdaptor": "",
7049
+ "adaptor": ""
7050
+ },
7051
+ "joinValues": false,
7052
+ "extractValue": true,
7053
+ "name": "columns_quick_select",
7054
+ "value": "${columns|pick:field|split}"
7055
+ }
7056
+ ],
7057
+ "onEvent": {
7058
+ "confirm": {
7059
+ "actions": [
7060
+ {
7061
+ "actionType": "custom",
7062
+ "script": "const columns = [];\nconst columns_quick_select = _.cloneDeep(event.data.columns_quick_select);\n_.forEach(columns_quick_select, function (field) {\n const column_field = _.find(event.data.columns, { field });\n if (column_field) {\n columns.push(column_field)\n } else {\n columns.push({\n field\n })\n }\n});\ndoAction({\n \"componentId\": \"form_object_listviews\",\n \"actionType\": \"setValue\",\n \"args\": {\n \"value\": {\n columns\n }\n }\n});"
7063
+ }
7064
+ ]
7065
+ }
7066
+ }
7067
+ }
7068
+ }
7069
+ ],
7070
+ "addable": false,
7071
+ "draggable": false,
7072
+ "columns": [
7073
+ {
7074
+ "name": "field",
7075
+ "inlineEditMode": false
7076
+ },
7077
+ {
7078
+ "name": "width",
7079
+ "width": 100
7080
+ },
7081
+ {
7082
+ "name": "wrap",
7083
+ "width": 50
7084
+ }
7085
+ ],
7086
+ "enableDialog": false
7087
+ }
7088
+ },
7089
+ "sort": {
7090
+ "label": "",
7091
+ "amis": {
7092
+ "type": "tabs-transfer",
7093
+ "options": [
7094
+ ],
7095
+ "id": "u:32f3e4e73115",
7096
+ "strictMode": true,
7097
+ "itemHeight": 40,
7098
+ "source": {
7099
+ "method": "get",
7100
+ "url": "${context.rootUrl}/service/api/amis-metadata-objects/objects/${object_name}/sortFields/options",
7101
+ "headers": {
7102
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
7103
+ },
7104
+ "data": null,
7105
+ "requestAdaptor": "",
7106
+ "adaptor": "",
7107
+ "sendOn": "!!this.object_name"
7108
+ },
7109
+ "visibleOn": "!!this.object_name",
7110
+ "sortable": true,
7111
+ "className": "col-span-2 m-0",
7112
+ "searchable": true,
7113
+ "checkAll": false,
7114
+ "clearValueOnHidden": false,
7115
+ "joinValues": false,
7116
+ "extractValue": true,
7117
+ "en-US": {
7118
+ "label": "Default Sort Order"
7119
+ },
7120
+ "multiple": true
7121
+ }
7122
+ },
7123
+ "filters": {
7124
+ "label": "",
7125
+ "amis": {
7126
+ "type": "group",
7127
+ "body": [
7128
+ {
7129
+ "type": "radios",
7130
+ "label": "${'object_listviews.listview_form.filter_configuration_method' | t}",
7131
+ "name": "_filters_type_controller",
7132
+ "options": [
7133
+ {
7134
+ "label": "${'object_listviews.listview_form.conditions_combination' | t}",
7135
+ "value": "conditions"
7136
+ },
7137
+ {
7138
+ "label": "${'object_listviews.listview_form.javascript' | t}",
7139
+ "value": "function"
7140
+ }
7141
+ ],
7142
+ "id": "u:318671bc196c",
7143
+ "joinValues": true,
7144
+ "className": "col-span-2 m-0",
7145
+ "language": "javascript",
7146
+ "visibleOn": "false",
7147
+ "en-US": {
7148
+ "label": "Controller"
7149
+ }
7150
+ },
7151
+ {
7152
+ "type": "condition-builder",
7153
+ "label": "",
7154
+ "labelClassName": "none",
7155
+ "name": "_filters_conditions",
7156
+ "description": "",
7157
+ "id": "u:a9f2232e30d7",
7158
+ "source": {
7159
+ "method": "get",
7160
+ "url": "${context.rootUrl}/service/api/amis-metadata-listviews/getFilterFields?objectName=${object_name}",
7161
+ "dataType": "json",
7162
+ "headers": {
7163
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
7164
+ }
7165
+ },
7166
+ "disabled": false,
7167
+ "className": "col-span-2 m-0",
7168
+ "visibleOn": "!!this.object_name",
7169
+ "en-US": {
7170
+ "label": "Filters Conditions"
7171
+ }
7172
+ },
7173
+ {
7174
+ "type": "editor",
7175
+ "label": "${'object_listviews.listview_form.javascript' | t}",
7176
+ "name": "_filters_function",
7177
+ "id": "u:84714ec9abba",
7178
+ "visibleOn": "!!this.object_name && !!this._filters_type_controller && _filters_type_controller== 'function'",
7179
+ "className": "col-span-2 m-0",
7180
+ "labelClassName": "hidden"
7181
+ }
7182
+ ]
7183
+ }
7184
+ },
7185
+ "mobile_columns": {
7186
+ "amis": {
7187
+ "showIndex": true,
7188
+ "footerToolbar": [
7189
+ {
7190
+ "type": "button",
7191
+ "label": "${'object_listviews.listview_form.field_set' | t}",
7192
+ "actionType": "dialog",
7193
+ "dialog": {
7194
+ "type": "dialog",
7195
+ "title": "${'object_listviews.listview_form.displayed_columns' | t}",
7196
+ "size": "md",
7197
+ "body": [
7198
+ {
7199
+ "type": "transfer",
7200
+ "options": [
7201
+ ],
7202
+ "multiple": true,
7203
+ "id": "u:92c0b3cccca0",
7204
+ "required": true,
7205
+ "placeholder": "-",
7206
+ "className": "col-span-2 m-0",
7207
+ "itemHeight": 40,
7208
+ "checkAll": false,
7209
+ "searchable": true,
7210
+ "sortable": true,
7211
+ "source": {
7212
+ "method": "get",
7213
+ "url": "${context.rootUrl}/service/api/amis-metadata-objects/objects/${object_name}/fields/options",
7214
+ "headers": {
7215
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
7216
+ },
7217
+ "requestAdaptor": "",
7218
+ "adaptor": ""
7219
+ },
7220
+ "joinValues": false,
7221
+ "extractValue": true,
7222
+ "name": "columns_quick_select",
7223
+ "value": "${mobile_columns|pick:field|split}"
7224
+ }
7225
+ ],
7226
+ "onEvent": {
7227
+ "confirm": {
7228
+ "actions": [
7229
+ {
7230
+ "actionType": "custom",
7231
+ "script": "const mobile_columns = [];\nconst columns_quick_select = _.cloneDeep(event.data.columns_quick_select);\n_.forEach(columns_quick_select, function (field) {\n const column_field = _.find(event.data.mobile_columns, { field });\n if (column_field) {\n mobile_columns.push(column_field)\n } else {\n mobile_columns.push({\n field\n })\n }\n});\ndoAction({\n \"componentId\": \"form_object_listviews\",\n \"actionType\": \"setValue\",\n \"args\": {\n \"value\": {\n mobile_columns\n }\n }\n});"
7232
+ }
7233
+ ]
7234
+ }
7235
+ }
7236
+ }
7237
+ }
7238
+ ],
7239
+ "columns": [
7240
+ {
7241
+ "name": "field",
7242
+ "inlineEditMode": false
7243
+ }
7244
+ ],
7245
+ "addable": false,
7246
+ "draggable": false,
7247
+ "enableDialog": false
7248
+ }
7249
+ },
7250
+ "searchable_fields": {
7251
+ "label": "",
7252
+ "amis": {
7253
+ "type": "transfer",
7254
+ "options": [
7255
+ ],
7256
+ "selectMode": "list",
7257
+ "searchable": true,
7258
+ "searchApi": "",
7259
+ "sortable": true,
7260
+ "mode": "normal",
7261
+ "searchResultMode": "list",
7262
+ "joinValues": false,
7263
+ "extractValue": true,
7264
+ "itemHeight": 40,
7265
+ "source": {
7266
+ "method": "get",
7267
+ "url": "${context.rootUrl}/service/api/amis-metadata-objects/objects/${object_name}/fields/options",
7268
+ "headers": {
7269
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
7270
+ },
7271
+ "data": null,
7272
+ "requestAdaptor": "",
7273
+ "adaptor": "",
7274
+ "sendOn": "!!this.object_name"
7275
+ },
7276
+ "visibleOn": "!!this.object_name",
7277
+ "className": "col-span-2 m-0",
7278
+ "multiple": true,
7279
+ "id": "u:adb91066539e"
7280
+ }
7281
+ },
7282
+ "shared_to": {
7283
+ "amis":{
7284
+ "type": "radios",
7285
+ "inline": false
7286
+ },
7287
+ "group": "",
7288
+ "is_wide": true
7289
+ }
7290
+ },
7291
+ initApiAdaptor,
7292
+ apiRequestAdaptor,
7293
+ "onEvent": {
7294
+ "submitSucc": {
7295
+ "weight": 0,
7296
+ "actions": [
7297
+ {
7298
+ "args": {
7299
+ "url": "${context.rootUrl}/app/${appId}/${object_name}/grid/${name}",
7300
+ "blank": false
7301
+ },
7302
+ "actionType": "url",
7303
+ },
7304
+ ]
7305
+ }
7306
+ },
7307
+ "id": "u:ce9e3fcc411a"
7308
+ }
7309
+ ],
7310
+ "className": "steedos-overflow-visible-dialog",
7311
+ "showCloseButton": true,
7312
+ "showErrorMsg": true,
7313
+ "showLoading": true,
7314
+ "closeOnEsc": false,
7315
+ "dataMapSwitch": false,
7316
+ "size": "lg"
7317
+ }
7318
+ }
7319
+ ]
7320
+ }
7321
+ ],
7322
+ actionType: "link",
7323
+ link: `/app/\${appId}/${objectSchema.name}/grid/${name}`
7324
+ });
7325
+ }
7326
+ );
7327
+
7328
+ let amisButtonsSchema = getObjectListViewButtonsSchemas(objectSchema, {formFactor: ctx.formFactor});
7329
+ const reg = new RegExp('_', 'g');
7330
+ const standardIcon = icon && icon.replace(reg, '-');
7331
+ const standardNewButton = _.find(amisButtonsSchema, { name: "standard_new" });
7332
+ const buttonSchema = [{
7333
+ "type": "flex",
7334
+ "items": amisButtonsSchema,
7335
+ "visibleOn": "${display == 'split'?false:true}"
7336
+ }];
7337
+ if(ctx.formFactor !== 'SMALL'){
7338
+ const restButtons = Array.isArray(amisButtonsSchema) ? amisButtonsSchema.filter(obj => obj.name !== "standard_new"):[];
7339
+ buttonSchema.push({
7340
+ "type": "flex",
7341
+ "items":[
7342
+ standardNewButton,
7343
+ (restButtons.length > 0) && {
7344
+ "type": "dropdown-button",
7345
+ "buttons": restButtons,
7346
+ "className": " ml-1",
7347
+ "menuClassName": "p-none split-dropdown-buttons",
7348
+ "align": "right",
7349
+ "size": "sm"
7350
+ }
7351
+ ],
7352
+ "visibleOn": "${display == 'split'?true:false}"
7353
+ });
7354
+ }
7355
+ const listviewNewButton = getNewListviewButtonSchema();
7356
+ listviewNewButton.visibleOn = "global.user.is_space_admin";
7357
+ return {
7358
+ "type": "grid",
7359
+ "columns": [
7360
+ {
7361
+ "body": [
7362
+ {
7363
+ "type": "grid",
7364
+ "columns": [
7365
+ {
7366
+ "body": {
7367
+ "type": "tpl",
7368
+ "className": "block",
7369
+ "tpl":`<svg class="slds-icon slds-icon_container slds-icon-standard-${standardIcon} slds-page-header__icon" aria-hidden="true"><use xlink:href="/assets/icons/standard-sprite/svg/symbols.svg#${icon}"></use></svg>`
7370
+ },
7371
+ "md": "auto",
7372
+ "className": "",
7373
+ "columnClassName": "flex justify-center items-center",
7374
+ "valign": "middle",
7375
+ },
7376
+ {
7377
+ "body": [
7378
+ {
7379
+ "type": "tpl",
7380
+ "tpl": `${label}`,
7381
+ "inline": false,
7382
+ "wrapperComponent": "",
7383
+ "className": "text-md leading-none text-black",
7384
+ },
7385
+ {
7386
+ "type": "dropdown-button",
7387
+ "className": "steedos-listview-change-button",
7388
+ "label": "\${listName ? uiSchema.list_views[listName].label : uiSchema.list_views[defaultListName].label}",
7389
+ "rightIcon": "fa fa-caret-down",
7390
+ "size": "sm",
7391
+ "hideCaret": true,
7392
+ "closeOnClick": true,
7393
+ "btnClassName": "!bg-transparent !border-none !hover:border-none text-lg h-5 font-bold p-0 text-black leading-none",
7394
+ "buttons": [
7395
+ ...listViewButtonOptions,
7396
+ listviewNewButton
7397
+ ]
7398
+ }
7399
+ ],
7400
+ "md": "",
7401
+ "columnClassName": "p-l-xs"
7402
+ }
7403
+ ],
7404
+ "className": "flex justify-between"
6642
7405
  }
6643
7406
  ],
6644
7407
  "md": "auto"
@@ -7159,216 +7922,6 @@ async function getObjectRecordDetailRelatedListHeader(relatedObjectSchema, relat
7159
7922
  async function getObjectRelatedListHeader(objectSchema, recordId, relatedObjectName) {
7160
7923
  }
7161
7924
 
7162
- const getNewListviewButtonSchema = ()=>{
7163
- return {
7164
- "type": "button",
7165
- "label": i18next__default["default"].t('frontend_listview_control_new_label'),
7166
- "onEvent": {
7167
- "click": {
7168
- "weight": 0,
7169
- "actions": [
7170
- {
7171
- "dialog": {
7172
- "type": "dialog",
7173
- "title": i18next__default["default"].t('frontend_listview_control_new_title'),
7174
- "data": {
7175
- //"&":"$$",2.7、2.9、3.0在此处失效
7176
- "all": "${uiSchema.list_views.all}",
7177
- "list_view": "${uiSchema.list_views[listName]}",
7178
- "appId": "${appId}",
7179
- "global": "${global}",
7180
- "targetObjectName": "${objectName}",
7181
- "context": "${context}"
7182
- },
7183
- "body": [
7184
- {
7185
- "type": "steedos-object-form",
7186
- "label": "对象表单",
7187
- "objectApiName": "object_listviews",
7188
- "recordId": "",
7189
- "mode": "edit",
7190
- "layout": "normal",
7191
- "defaultData": {
7192
- "&": "${list_view}",
7193
- "name":"",
7194
- "label":"",
7195
- "filters":"",
7196
- "shared":false,
7197
- "object_name": "${targetObjectName}",
7198
- "_id":"",
7199
- "shared_to": null,
7200
- "shared_to_organizations": null,
7201
- "locked": false,
7202
- "owner": null,
7203
- "company_id": null,
7204
- "company_ids": null,
7205
- "is_system": false
7206
- },
7207
- "fieldsExtend": fieldsExtend$5(),
7208
- "fields": fields$1(),
7209
- "onEvent": {
7210
- "submitSucc": {
7211
- "weight": 0,
7212
- "actions": [
7213
- {
7214
- "args": {
7215
- // 直接使用recordId不能拿到数据,只能通过result里面拿数据
7216
- "url": "${context.rootUrl}/app/${appId}/${targetObjectName}/grid/listview_${result.data.recordId|lowerCase}",
7217
- "blank": false
7218
- },
7219
- "actionType": "url",
7220
- }
7221
- ]
7222
- }
7223
- },
7224
- "messages": {
7225
- "success": i18next__default["default"].t('frontend_listview_control_new_message_success'),
7226
- "failed": i18next__default["default"].t('frontend_listview_control_new_message_failed')
7227
- },
7228
- }
7229
- ],
7230
- "showCloseButton": true,
7231
- "showErrorMsg": true,
7232
- "showLoading": true,
7233
- "closeOnEsc": false,
7234
- "dataMapSwitch": false,
7235
- "size": "lg"
7236
- },
7237
- "actionType": "dialog"
7238
- }
7239
- ]
7240
- }
7241
- }
7242
- }
7243
- };
7244
-
7245
- function fields$1(){
7246
- return [
7247
- "label",
7248
- "name",
7249
- "object_name",
7250
- "filter_scope",
7251
- "show_count",
7252
- "columns",
7253
- "sort",
7254
- "filters",
7255
- "mobile_columns",
7256
- "searchable_fields",
7257
- "is_system",
7258
- "shared",
7259
- "shared_to",
7260
- "shared_to_organizations"
7261
- ]
7262
- }
7263
-
7264
- function fieldsExtend$5(){
7265
- return {
7266
- "group": "",
7267
- "label": {
7268
- "group": "",
7269
- "is_wide": true
7270
- },
7271
- "name": {
7272
- "group": "",
7273
- "amis": {
7274
- "hidden": true,
7275
- "required": false
7276
- }
7277
- },
7278
- "object_name": {
7279
- "group": "",
7280
- "amis": {
7281
- "hidden": true
7282
- }
7283
- },
7284
- "filter_scope": {
7285
- "group": "",
7286
- "amis": {
7287
- "hidden": true,
7288
- "required": false
7289
- }
7290
- },
7291
- "columns": {
7292
- "group": "",
7293
- "amis": {
7294
- "hidden": true,
7295
- "required": false
7296
- }
7297
- },
7298
- "mobile_columns":{
7299
- "group": "",
7300
- "amis": {
7301
- "hidden": true,
7302
- "required": false
7303
- }
7304
- },
7305
- "searchable_fields":{
7306
- "group": "",
7307
- "amis": {
7308
- "hidden": true,
7309
- "required": false
7310
- }
7311
- },
7312
- "filter_fields": {
7313
- "group": "",
7314
- "amis": {
7315
- "hidden": true,
7316
- "required": false
7317
- }
7318
- },
7319
- "scrolling_mode": {
7320
- "group": "",
7321
- "amis": {
7322
- "hidden": true,
7323
- "required": false
7324
- }
7325
- },
7326
- "sort": {
7327
- "group": "",
7328
- "amis": {
7329
- "hidden": true,
7330
- "required": false
7331
- }
7332
- },
7333
- "show_count": {
7334
- "group": "",
7335
- "amis": {
7336
- "hidden": true,
7337
- "required": false
7338
- }
7339
- },
7340
- "type": {
7341
- "group": "",
7342
- "amis": {
7343
- "hidden": true,
7344
- "required": false
7345
- }
7346
- },
7347
- "shared": {
7348
- "group": "",
7349
- "amis": {
7350
- "visibleOn": "${false}"
7351
- }
7352
- },
7353
- "shared_to": {
7354
- "group": "",
7355
- "amis":{
7356
- "type": "radios",
7357
- "inline": false
7358
- }
7359
- },
7360
- "shared_to_organizations": {
7361
- "group": ""
7362
- },
7363
- "filters": {
7364
- "group": "",
7365
- "amis": {
7366
- "hidden": true
7367
- }
7368
- }
7369
- }
7370
- }
7371
-
7372
7925
  const getCopyListviewButtonSchema = ()=>{
7373
7926
  return {
7374
7927
  "type": "button",
@@ -13061,13 +13614,13 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
13061
13614
  };
13062
13615
  break;
13063
13616
  case 'avatar':
13064
- convertData = getAmisFileSchema(field, readonly);
13617
+ convertData = await getAmisFileSchema(field, readonly, ctx);
13065
13618
  break;
13066
13619
  case 'image':
13067
- convertData = getAmisFileSchema(field, readonly);
13620
+ convertData = await getAmisFileSchema(field, readonly, ctx);
13068
13621
  break;
13069
13622
  case 'file':
13070
- convertData = getAmisFileSchema(field, readonly);
13623
+ convertData = await getAmisFileSchema(field, readonly, ctx);
13071
13624
  break;
13072
13625
  case 'formula':
13073
13626
  if(readonly){