@steedos-widgets/amis-lib 1.2.43 → 1.3.0-beta.10

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
@@ -814,7 +814,7 @@ function getScriptForRemoveUrlPrefixForImgFields(fields){
814
814
  if(imgFields[item].multiple){
815
815
  if(imgFieldValue instanceof Array){
816
816
  formData[item] = imgFieldValue.map((value)=>{
817
- let itemValue = value?.split('/');
817
+ let itemValue = value && value.split('/');
818
818
  return itemValue[itemValue.length - 1];
819
819
  });
820
820
  }
@@ -1041,6 +1041,7 @@ var frontend_listview_control_rename_title$1 = "Rename List View";
1041
1041
  var frontend_listview_control_share$1 = "Sharing Settings";
1042
1042
  var frontend_listview_control_sort$1 = "Default sorting rule";
1043
1043
  var frontend_export_excel$1 = "Export Excel";
1044
+ var frontend_export_excel_toast$1 = "Exporting, please wait";
1044
1045
  var frontend_operation$1 = "Operation";
1045
1046
  var frontend_import_data$1 = "Import data";
1046
1047
  var frontend_import_data_object_name$1 = "Import object";
@@ -1125,6 +1126,7 @@ var en_us = {
1125
1126
  frontend_listview_control_share: frontend_listview_control_share$1,
1126
1127
  frontend_listview_control_sort: frontend_listview_control_sort$1,
1127
1128
  frontend_export_excel: frontend_export_excel$1,
1129
+ frontend_export_excel_toast: frontend_export_excel_toast$1,
1128
1130
  frontend_operation: frontend_operation$1,
1129
1131
  frontend_import_data: frontend_import_data$1,
1130
1132
  frontend_import_data_object_name: frontend_import_data_object_name$1,
@@ -1211,6 +1213,7 @@ var frontend_listview_control_rename_title = "重命名 列表视图";
1211
1213
  var frontend_listview_control_share = "共享设置";
1212
1214
  var frontend_listview_control_sort = "默认排序规则";
1213
1215
  var frontend_export_excel = "导出";
1216
+ var frontend_export_excel_toast = "正在导出,请稍后...";
1214
1217
  var frontend_operation = "操作";
1215
1218
  var frontend_import_data = "导入数据";
1216
1219
  var frontend_import_data_object_name = "导入对象";
@@ -1296,6 +1299,7 @@ var zh_cn = {
1296
1299
  frontend_listview_control_share: frontend_listview_control_share,
1297
1300
  frontend_listview_control_sort: frontend_listview_control_sort,
1298
1301
  frontend_export_excel: frontend_export_excel,
1302
+ frontend_export_excel_toast: frontend_export_excel_toast,
1299
1303
  frontend_operation: frontend_operation,
1300
1304
  frontend_import_data: frontend_import_data,
1301
1305
  frontend_import_data_object_name: frontend_import_data_object_name,
@@ -2285,7 +2289,7 @@ const getSchema$2 = (uiSchema) => {
2285
2289
  "Bearer ${context.tenantId},${context.authToken}",
2286
2290
  },
2287
2291
  requestAdaptor:
2288
- "\n const selfData = JSON.parse(JSON.stringify(api.data.$self));\n var filters = [];\n var pageSize = api.data.pageSize || 10;\n var pageNo = api.data.pageNo || 1;\n var skip = (pageNo - 1) * pageSize;\n var orderBy = api.data.orderBy || '';\n var orderDir = api.data.orderDir || '';\n var sort = orderBy + ' ' + orderDir;\n var allowSearchFields = [\"description\"];\n if(api.data.$term){\n filters = [[\"name\", \"contains\", \"'+ api.data.$term +'\"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n if(selfData.value?.indexOf(',') > 0){\n filters = [[\"_id\", \"=\", selfData.value.split(',')]];\n }else{\n filters = [[\"_id\", \"=\", selfData.value]];\n }\n }\n if(allowSearchFields){\n allowSearchFields.forEach(function(key){\n const keyValue = selfData[key];\n if(keyValue){\n filters.push([key, \"contains\", keyValue]);\n }\n })\n }\n\n const filtersFunction = function(filters, values){return ['object_name', '=', values.object_name]};\n\n if(filtersFunction){\n const _filters = filtersFunction(filters, api.data.$self.__super.__super);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\n }\n }\n\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', pageSize).replace('{__skip}', skip).replace('{__sort}', sort.trim());\n return api;\n ",
2292
+ "\n const selfData = JSON.parse(JSON.stringify(api.data.$self));\n var filters = [];\n var pageSize = api.data.pageSize || 10;\n var pageNo = api.data.pageNo || 1;\n var skip = (pageNo - 1) * pageSize;\n var orderBy = api.data.orderBy || '';\n var orderDir = api.data.orderDir || '';\n var sort = orderBy + ' ' + orderDir;\n var allowSearchFields = [\"description\"];\n if(api.data.$term){\n filters = [[\"name\", \"contains\", \"'+ api.data.$term +'\"]];\n }else if(selfData.op === 'loadOptions' && selfData.value){\n if(selfData.value && selfData.value.indexOf(',') > 0){\n filters = [[\"_id\", \"=\", selfData.value.split(',')]];\n }else{\n filters = [[\"_id\", \"=\", selfData.value]];\n }\n }\n if(allowSearchFields){\n allowSearchFields.forEach(function(key){\n const keyValue = selfData[key];\n if(keyValue){\n filters.push([key, \"contains\", keyValue]);\n }\n })\n }\n\n const filtersFunction = function(filters, values){return ['object_name', '=', values.object_name]};\n\n if(filtersFunction){\n const _filters = filtersFunction(filters, api.data.$self.__super.__super);\n if(_filters && _filters.length > 0){\n filters.push(_filters);\n }\n }\n\n api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', pageSize).replace('{__skip}', skip).replace('{__sort}', sort.trim());\n return api;\n ",
2289
2293
  adaptor:
2290
2294
  "\n const enable_tree = undefined;\n if(enable_tree){\n const records = payload.data.rows;\n const treeRecords = [];\n const getChildren = (records, childrenIds)=>{\n if(!childrenIds){\n return;\n }\n const children = _.filter(records, (record)=>{\n return _.includes(childrenIds, record._id)\n });\n _.each(children, (item)=>{\n if(item.children){\n item.children = getChildren(records, item.children)\n }\n })\n return children;\n }\n\n _.each(records, (record)=>{\n if(!record.parent){\n treeRecords.push(Object.assign({}, record, {children: getChildren(records, record.children)}));\n }\n });\n payload.data.rows = treeRecords;\n }\n return payload;\n ",
2291
2295
  },
@@ -2464,7 +2468,7 @@ const getSchema$2 = (uiSchema) => {
2464
2468
  * @Author: baozhoutao@steedos.com
2465
2469
  * @Date: 2022-11-07 17:00:38
2466
2470
  * @LastEditors: baozhoutao@steedos.com
2467
- * @LastEditTime: 2022-11-07 17:12:20
2471
+ * @LastEditTime: 2023-08-24 16:44:42
2468
2472
  * @Description:
2469
2473
  */
2470
2474
 
@@ -2484,7 +2488,7 @@ const getSchema$1 = (uiSchema)=>{
2484
2488
  "componentId": "",
2485
2489
  "args": {
2486
2490
  "blank": false,
2487
- "url": "/app/${app_id}/${objectName}/view/${_id}"
2491
+ "url": "/app/${app_id}/${objectName}/view/${_id}?side_object=${objectName}&side_listview_id=${listName}"
2488
2492
  },
2489
2493
  "actionType": "link"
2490
2494
  }
@@ -2501,90 +2505,69 @@ const getSchema$1 = (uiSchema)=>{
2501
2505
  };
2502
2506
 
2503
2507
  const getSchema = async (uiSchema, ctx) => {
2504
- const requestAdaptor = `
2505
- // 获取列表视图的属性
2506
- let uiSchema = api.body.uiSchema;
2507
- let list_views = uiSchema.list_views;
2508
- let list_views_name = api.body.listName;
2509
- let col = list_views[list_views_name].columns;
2510
- let sort_test = list_views[list_views_name].sort;
2511
-
2512
- // 获取下载字段
2513
- let select = [];
2514
- _.each(col, (col) => {
2515
- if (col.field == undefined)
2516
- select.push(col);
2517
- else select.push(col.field);
2518
- });
2519
-
2520
- // 获取排序字段
2521
-
2522
- let sort = [];
2523
- _.forEach(sort_test, (sortField) => {
2524
- if (sortField.field_name == undefined)
2525
- sort.push(sortField);
2526
- else sort.push([sortField.field_name, sortField.order]);
2527
- })
2528
-
2529
- let orders = [];
2530
- _.map(sort, (value) => {
2531
- let order_tmp = [];
2532
- if (value[1] == "desc")
2533
- order_tmp = value[0] + ' desc';
2534
- else
2535
- order_tmp = value[0];
2536
- orders.push(order_tmp);
2537
- });
2538
- let order = orders.join(',');
2539
-
2540
- let filename = uiSchema.label + "-" + list_views[list_views_name].label;
2541
-
2542
- url_tmp = api.url.split('?')[0];
2543
- api.url = url_tmp + "?$select=" + encodeURIComponent(select.toString()) + "&filename=" + encodeURIComponent(filename);
2544
-
2545
- // 判断sort 和 filters
2546
- if (sort.length > 0) {
2547
- api.url += "&$orderby=" + encodeURIComponent(order);
2548
- }
2549
- let filters = list_views[list_views_name].filters;
2550
- if (filters && filters.length > 0) {
2551
- api.url = api.url + "&filters=" + encodeURIComponent(JSON.stringify(filters));
2552
- }
2553
- return api;
2554
- `;
2508
+ const requestAdaptor = function () {
2509
+ let uiSchema = api.body.uiSchema;
2510
+ let list_views_name = api.body.listName;
2511
+ let list_views = uiSchema.list_views;
2512
+ const listViewPropsStoreKey = location.pathname + "/crud/query";
2513
+ const query = JSON.parse(sessionStorage.getItem(listViewPropsStoreKey));
2514
+ const { filters, sort, fields: select } = query;
2515
+ let filename = uiSchema.label + "-" + list_views[list_views_name].label;
2516
+
2517
+ var url_tmp = api.url.split('?')[0];
2518
+ api.url = url_tmp + "?$select=" + encodeURIComponent(select.toString()) + "&filename=" + encodeURIComponent(filename);
2519
+ // 判断sort filters
2520
+ if (sort.length > 0) {
2521
+ api.url += "&$orderby=" + encodeURIComponent(sort);
2522
+ }
2523
+ if (filters && filters.length > 0) {
2524
+ api.url = api.url + "&filters=" + encodeURIComponent(JSON.stringify(filters));
2525
+ }
2526
+ return api;
2527
+ };
2555
2528
  return {
2556
2529
  "type": "service",
2557
- "body": [{
2558
- "type": "button",
2559
- "label": i18next__default["default"].t('frontend_export_excel'),
2560
- "id": "u:standard_export_excel",
2561
- "level": "default",
2562
- "onEvent": {
2563
- "click": {
2564
- "weight": 0,
2565
- "actions": [
2566
- {
2567
- "args": {
2568
- "api": {
2569
- "url": "${context.rootUrl}/api/record/export/${objectName}",
2570
- "method": "get",
2571
- "messages": {},
2572
- "requestAdaptor": requestAdaptor,
2573
- "data": {
2574
- "uiSchema": "${uiSchema}",
2575
- "listName": "${listName}"
2576
- },
2577
- "headers": {
2578
- "Authorization": "Bearer ${context.tenantId},${context.authToken}"
2530
+ "body": [
2531
+ {
2532
+ "type": "button",
2533
+ "label": i18next__default["default"].t('frontend_export_excel'),
2534
+ "id": "u:standard_export_excel",
2535
+ "level": "default",
2536
+ "disabledTip": i18next__default["default"].t('frontend_export_excel_toast'),
2537
+ "onEvent": {
2538
+ "click": {
2539
+ "weight": 0,
2540
+ "actions": [{
2541
+ "componentId": "u:standard_export_excel",
2542
+ "actionType": "disabled"
2543
+ },
2544
+ {
2545
+ "args": {
2546
+ "api": {
2547
+ "url": "${context.rootUrl}/api/record/export/${objectName}",
2548
+ "method": "get",
2549
+ "messages": {},
2550
+ "requestAdaptor": requestAdaptor.toString().match(/function[^{]+\{([\s\S]*)\}$/)[1],
2551
+ "data": {
2552
+ "uiSchema": "${uiSchema}",
2553
+ "listName": "${listName}"
2554
+ },
2555
+ "headers": {
2556
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
2557
+ }
2579
2558
  }
2580
- }
2559
+ },
2560
+ "actionType": "download"
2581
2561
  },
2582
- "actionType": "download"
2583
- }
2584
- ]
2562
+ {
2563
+ "componentId": "u:standard_export_excel",
2564
+ "actionType": "enabled"
2565
+ }
2566
+ ]
2567
+ }
2585
2568
  }
2586
2569
  }
2587
- }]
2570
+ ]
2588
2571
  }
2589
2572
  };
2590
2573
 
@@ -3667,7 +3650,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
3667
3650
  const selfData = api.body.$self;
3668
3651
  const uiSchema = selfData.uiSchema;
3669
3652
  const fields = uiSchema.fields;
3670
- const options = (payload.data?.options || []).filter(function(item){
3653
+ const options = ((payload.data && payload.data.options) || []).filter(function(item){
3671
3654
  let field = fields[item.value];
3672
3655
  // TODO: 暂时禁用location类型字段的列表搜索
3673
3656
  return !!field && window.isFieldTypeSearchable(field.type) && field.type !== 'location'
@@ -4070,7 +4053,7 @@ async function getObjectRecordDetailHeader(objectSchema, recordId, options) {
4070
4053
  "actions": [
4071
4054
  {
4072
4055
  "actionType": "custom",
4073
- "script": "Steedos.goBack()"
4056
+ "script": "window.goBack()"
4074
4057
  }
4075
4058
  ]
4076
4059
  }
@@ -4946,10 +4929,10 @@ function apiRequestAdaptor$1(){
4946
4929
  const recordId_tmp = api.body.recordId;
4947
4930
 
4948
4931
  if (typeof formData_tmp.columns == 'string') {
4949
- formData_tmp.columns = formData_tmp.columns?.split(',');
4932
+ formData_tmp.columns = formData_tmp.columns && formData_tmp.columns.split(',');
4950
4933
  }
4951
4934
  if (typeof formData_tmp.mobile_columns == 'string') {
4952
- formData_tmp.mobile_columns = formData_tmp.mobile_columns?.split(',');
4935
+ formData_tmp.mobile_columns = formData_tmp.mobile_columns && formData_tmp.mobile_columns.split(',');
4953
4936
  }
4954
4937
 
4955
4938
  // 数据格式转换
@@ -5082,7 +5065,7 @@ function apiRequestAdaptor(){
5082
5065
  const recordId = api.body.recordId;
5083
5066
  //数据格式转换
5084
5067
  if (typeof formData.sort == 'string') {
5085
- formData.sort = formData.sort?.split(',');
5068
+ formData.sort = formData.sort && formData.sort.split(',');
5086
5069
  }
5087
5070
  formData.sort = lodash.map(formData.sort, (item) => {
5088
5071
  const arr = item.split(':');
@@ -5272,7 +5255,7 @@ crudService && crudService.setData({showFieldsFilter: toShowFieldsFilter});
5272
5255
 
5273
5256
  function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLookup = false, keywordsSearchBoxName = "__keywords" } = {}){
5274
5257
  const searchableFieldsLabel = [];
5275
- _.each(fields, function (field) {
5258
+ _.each(mainObject.fields, function (field) {
5276
5259
  if (isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {
5277
5260
  searchableFieldsLabel.push(field.label);
5278
5261
  }
@@ -5464,8 +5447,14 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {
5464
5447
 
5465
5448
  function getObjectFooterToolbar(mainObject, formFactor, options) {
5466
5449
  if (formFactor === 'SMALL') {
5450
+ // return [
5451
+ // "load-more",
5452
+ // ]
5467
5453
  return [
5468
- "load-more",
5454
+ {
5455
+ "type": "pagination",
5456
+ "maxButtons": 5
5457
+ }
5469
5458
  ]
5470
5459
  }
5471
5460
  else {
@@ -5864,13 +5853,16 @@ async function lookupToAmisPicker(field, readonly, ctx){
5864
5853
  })){
5865
5854
  i++;
5866
5855
  tableFields.push(field);
5867
- if(isFieldQuickSearchable(field, refObjectConfig.NAME_FIELD_KEY)){
5868
- searchableFields.push(field.name);
5869
- }
5870
5856
  }
5871
5857
  }
5872
5858
  });
5873
5859
 
5860
+ ___namespace.each(refObjectConfig.fields, function (field) {
5861
+ if(isFieldQuickSearchable(field, refObjectConfig.NAME_FIELD_KEY)){
5862
+ searchableFields.push(field.name);
5863
+ }
5864
+ });
5865
+
5874
5866
  const fields = {
5875
5867
  [referenceTo.labelField.name]: referenceTo.labelField,
5876
5868
  [referenceTo.valueField.name]: referenceTo.valueField
@@ -5922,7 +5914,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
5922
5914
  if(api.data.$term){
5923
5915
  filters = [["name", "contains", "'+ api.data.$term +'"]];
5924
5916
  }else if(selfData.op === 'loadOptions' && selfData.value){
5925
- if(selfData.value?.indexOf(',') > 0){
5917
+ if(selfData.value && selfData.value.indexOf(',') > 0){
5926
5918
  fieldValue = selfData.value.split(',');
5927
5919
  filters = [["${referenceTo.valueField.name}", "=", fieldValue]];
5928
5920
  }else{
@@ -6117,7 +6109,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
6117
6109
  {
6118
6110
  "actionType": "custom",
6119
6111
  "script": `
6120
- const masterRecord = event.data._master?.record;
6112
+ const masterRecord = event.data._master && event.data._master.record;
6121
6113
  const fieldConfig = ${JSON.stringify(field)};
6122
6114
  let reference_to = fieldConfig.reference_to;
6123
6115
  let saveValue;
@@ -6500,7 +6492,7 @@ async function getIdsPickerSchema(field, readonly, ctx){
6500
6492
  var pageNo = api.data.pageNo || 1;
6501
6493
  var skip = (pageNo - 1) * pageSize;
6502
6494
  if(selfData.op === 'loadOptions' && selfData.value){
6503
- if(selfData.value?.indexOf(',') > 0){
6495
+ if(selfData.value && selfData.value.indexOf(',') > 0){
6504
6496
  filters = [["${referenceTo.valueField.name}", "=", selfData.value.split(',')]];
6505
6497
  }else{
6506
6498
  filters = [["${referenceTo.valueField.name}", "=", selfData.value]];
@@ -6703,6 +6695,9 @@ function getAmisStaticFieldType(type, readonly, options){
6703
6695
  return type;
6704
6696
  }
6705
6697
  if(___namespace.includes(['text','image'], type)){
6698
+ if('text' === type && options && options.amis && options.amis.tpl){
6699
+ return 'static';
6700
+ }
6706
6701
  if('image' === type && options && options.multiple){
6707
6702
  return `static-images`;
6708
6703
  }
@@ -6973,7 +6968,7 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
6973
6968
  // }
6974
6969
  switch (field.type) {
6975
6970
  case 'text':
6976
- convertData.type = getAmisStaticFieldType('text', readonly);
6971
+ convertData.type = getAmisStaticFieldType('text', readonly, field);
6977
6972
  break;
6978
6973
  case 'textarea':
6979
6974
  convertData.type = getAmisStaticFieldType('textarea', readonly);
@@ -7739,7 +7734,7 @@ async function getQuickEditSchema(field, options){
7739
7734
  case "number":
7740
7735
  case "currency":
7741
7736
  TempDisplayField = `
7742
- _display["${field.name}"] = event.data.value?.toFixed(${field.scale});
7737
+ _display["${field.name}"] = event.data.value && event.data.value.toFixed(${field.scale});
7743
7738
  `;
7744
7739
  quickEditSchema.body[0].onEvent["change"] = quickEditOnEvent(TempDisplayField);
7745
7740
 
@@ -7927,13 +7922,15 @@ async function getTableColumns(fields, options){
7927
7922
  }
7928
7923
  },
7929
7924
  "actionType": "download",
7930
- "expression": "!!!window?.nw?.require"//浏览器上直接下载
7925
+ // "expression": "!!!window?.nw?.require"//浏览器上直接下载
7926
+ "expression": "!!!(window && window.nw && window.nw.require)"//浏览器上直接下载
7931
7927
  },
7932
7928
  {
7933
7929
  "args": {},
7934
7930
  "actionType": "custom",
7935
7931
  "script": previewFileScript,
7936
- "expression": "!!window?.nw?.require" //PC客户端预览附件
7932
+ // "expression": "!!window?.nw?.require" //PC客户端预览附件
7933
+ "expression": "!!!(window && window.nw && window.nw.require)"//PC客户端预览附件
7937
7934
  }
7938
7935
  ]
7939
7936
  }
@@ -8054,7 +8051,7 @@ async function getTableColumns(fields, options){
8054
8051
  */
8055
8052
  function getMobileLines(tpls){
8056
8053
  let lines = [];
8057
- let maxLineCount = 2;
8054
+ let maxLineCount = 3;
8058
8055
  let lineChildren = [];
8059
8056
  let isNewLine = false;
8060
8057
  let isLeft = true;
@@ -8072,10 +8069,10 @@ function getMobileLines(tpls){
8072
8069
  }
8073
8070
  if(isLeft){
8074
8071
  // 左侧半行
8075
- lineChildrenClassName = "steedos-listview-item-left two-lines-truncate";
8072
+ lineChildrenClassName = "steedos-listview-item-left truncate";
8076
8073
  if(item.field.is_wide){
8077
- // 左侧全行样式可以单独写
8078
- lineChildrenClassName = "steedos-listview-item-wide truncate";
8074
+ // 左侧全行样式可以单独写,如果需要配置两行省略号效果,可以加样式类 two-lines-truncate
8075
+ lineChildrenClassName = "steedos-listview-item-wide";
8079
8076
  }
8080
8077
  if(lines.length === 0){
8081
8078
  // 第一个字段加粗黑色显示
@@ -8083,7 +8080,7 @@ function getMobileLines(tpls){
8083
8080
  }
8084
8081
  }
8085
8082
  else {
8086
- // 右侧半行
8083
+ // 右侧半行,这里加样式类 flex flex-shrink-0,是为了省略号只显示在左半行,右半行文字一般比较短,如果也加省略号效果的话,左侧文字多的话,右侧没几个字就显示省略号了
8087
8084
  lineChildrenClassName = "steedos-listview-item-right truncate ml-2 flex flex-shrink-0";
8088
8085
  }
8089
8086
  lineChildren.push({
@@ -8137,7 +8134,8 @@ async function getMobileTableColumns(fields, options){
8137
8134
  tpl = await getFieldTpl(field, options);
8138
8135
  }
8139
8136
  if(!tpl){
8140
- tpl = `\${${field.name}}`;
8137
+ //qhd需求简易处理,加上raw以支持审批王名称字段通过颜色区分缓急,若之后手机端列表支持配置amis,则可以去掉
8138
+ tpl = `\${${field.name} | raw}`;
8141
8139
  }
8142
8140
  if(!field.hidden && !field.extra){
8143
8141
  tpls.push({ field, tpl });
@@ -8328,6 +8326,7 @@ async function getTableOperation(ctx){
8328
8326
 
8329
8327
  async function getTableSchema$1(fields, options){
8330
8328
  let isLookup = options && options.isLookup;
8329
+ let hiddenColumnOperation = options && options.hiddenColumnOperation;
8331
8330
  if(!options){
8332
8331
  options = {};
8333
8332
  }
@@ -8337,10 +8336,11 @@ async function getTableSchema$1(fields, options){
8337
8336
  }
8338
8337
  else {
8339
8338
  columns = await getTableColumns(fields, options);
8340
- if(!isLookup){
8339
+ if(!isLookup && !hiddenColumnOperation){
8341
8340
  columns.push(await getTableOperation(options));
8342
8341
  }
8343
8342
  }
8343
+
8344
8344
  return {
8345
8345
  mode: "table",
8346
8346
  name: "thelist",
@@ -8388,7 +8388,7 @@ async function getTableApi(mainObject, fields, options){
8388
8388
  baseFilters = filter;
8389
8389
  }
8390
8390
 
8391
- ___namespace.each(fields, function (field) {
8391
+ ___namespace.each(mainObject.fields, function (field) {
8392
8392
  if (isFieldQuickSearchable(field, mainObject.NAME_FIELD_KEY)) {
8393
8393
  searchableFields.push(field.name);
8394
8394
  }
@@ -8450,7 +8450,9 @@ async function getTableApi(mainObject, fields, options){
8450
8450
  // 如果是第一次加载组件始终让翻页页码从本地存储中取值
8451
8451
  let formFactor = "${options.formFactor}";
8452
8452
  // 移动端不识别本地存储中的翻页页码,否则点击加载更多按钮后无法刷新回第一页
8453
- api.data.pageNo = formFactor === "SMALL" ? 1 : (localListViewProps.page || 1);
8453
+ // api.data.pageNo = formFactor === "SMALL" ? 1 : (localListViewProps.page || 1);
8454
+ // 移动端暂时去除加载更多,放开翻页
8455
+ api.data.pageNo = localListViewProps.page || 1;
8454
8456
  }
8455
8457
  }
8456
8458
  }
@@ -8571,7 +8573,17 @@ async function getTableApi(mainObject, fields, options){
8571
8573
  api.data = {
8572
8574
  query: api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__top}', pageSize).replace('{__skip}', skip).replace('{__sort}', sort.trim())
8573
8575
  }
8574
- ${options.requestAdaptor || ''}
8576
+ ${options.requestAdaptor || ''};
8577
+
8578
+ //写入本次存储filters、sort
8579
+ const listViewPropsStoreKey = location.pathname + "/crud/query";
8580
+ sessionStorage.setItem(listViewPropsStoreKey, JSON.stringify({
8581
+ filters: filters,
8582
+ sort: sort.trim(),
8583
+ pageSize: pageSize,
8584
+ skip: skip,
8585
+ fields: ${JSON.stringify(___namespace.map(fields, 'name'))}
8586
+ }));
8575
8587
  return api;
8576
8588
  `;
8577
8589
  api.adaptor = `
@@ -8650,7 +8662,8 @@ async function getTableApi(mainObject, fields, options){
8650
8662
  // 如果是第一次加载组件始终让翻页页码从本地存储中取值
8651
8663
  let formFactor = "${options.formFactor}";
8652
8664
  // 移动端不识别本地存储中的翻页页码,否则点击加载更多按钮后无法刷新回第一页
8653
- selfData.page = formFactor === "SMALL" ? 1 : (localListViewProps.page || 1);
8665
+ // selfData.page = formFactor === "SMALL" ? 1 : (localListViewProps.page || 1);
8666
+ selfData.page = localListViewProps.page || 1;
8654
8667
  }
8655
8668
  }
8656
8669
  delete selfData.context;
@@ -8668,7 +8681,13 @@ async function getTableApi(mainObject, fields, options){
8668
8681
  const setDataToComponentId = "${setDataToComponentId}";
8669
8682
  if(setDataToComponentId){
8670
8683
  //https://github.com/baidu/amis/pull/6807 .parent的改动是为适应3.2getComponentById的规则改动,不影响2.9
8671
- SteedosUI.getRef(api.body.$self.$scopeId)?.parent?.getComponentById(setDataToComponentId)?.setData({$count: payload.data.count})
8684
+ var scope = SteedosUI.getRef(api.body.$self.$scopeId);
8685
+ var scopeParent = scope && scope.parent;
8686
+ var setDataToComponent = scopeParent && scopeParent.getComponentById(setDataToComponentId);
8687
+ if(setDataToComponent){
8688
+ setDataToComponent.setData({$count: payload.data.count});
8689
+ }
8690
+ // SteedosUI.getRef(api.body.$self.$scopeId)?.parent?.getComponentById(setDataToComponentId)?.setData({$count: payload.data.count})
8672
8691
  };
8673
8692
  ${options.adaptor || ''}
8674
8693
  return payload;
@@ -8954,7 +8973,7 @@ async function getEditFormInitApi(object, recordId, fields, options){
8954
8973
  var uiSchema = api.body.uiSchema;
8955
8974
  var defaultData = api.body.defaultData;
8956
8975
  var defaultValues = {};
8957
- _.each(uiSchema?.fields, function(field){
8976
+ _.each(uiSchema && uiSchema.fields, function(field){
8958
8977
  var value = SteedosUI.getFieldDefaultValue(field, api.body.global);
8959
8978
  if(value){
8960
8979
  defaultValues[field.name] = value;
@@ -9173,7 +9192,12 @@ async function getCalendarApi(mainObject, fields, options) {
9173
9192
  window.postMessage(Object.assign({type: "listview.loaded"}), "*");
9174
9193
  const setDataToComponentId = "${setDataToComponentId}";
9175
9194
  if(setDataToComponentId){
9176
- SteedosUI.getRef(api.body.$self.scopeId)?.getComponentById(setDataToComponentId)?.setData({$count: payload.data.count})
9195
+ var scope = SteedosUI.getRef(api.body.$self.scopeId);
9196
+ var setDataToComponent = scope && scope.getComponentById(setDataToComponentId);
9197
+ if(setDataToComponent){
9198
+ setDataToComponent.setData({$count: payload.data.count});
9199
+ }
9200
+ // SteedosUI.getRef(api.body.$self.scopeId)?.getComponentById(setDataToComponentId)?.setData({$count: payload.data.count})
9177
9201
  }
9178
9202
  const rows = payload.data.rows || [];
9179
9203
  const selfData = api.data.$self;
@@ -9920,6 +9944,10 @@ async function getObjectCRUD(objectSchema, fields, options){
9920
9944
  }
9921
9945
  }
9922
9946
  `;
9947
+ let autoFillHeight = true;
9948
+ if(options.isRelated || Steedos.isMobile()){
9949
+ autoFillHeight = false;
9950
+ }
9923
9951
 
9924
9952
  body = Object.assign({}, table, {
9925
9953
  type: 'crud',
@@ -9930,7 +9958,7 @@ async function getObjectCRUD(objectSchema, fields, options){
9930
9958
  keepItemSelectionOnPageChange: true,
9931
9959
  api: await getTableApi(objectSchema, fields, options),
9932
9960
  hiddenOn: options.tableHiddenOn,
9933
- autoFillHeight: options.isRelated ? false : true,
9961
+ autoFillHeight,
9934
9962
  className: `flex-auto ${crudClassName || ""}`,
9935
9963
  bodyClassName: "bg-white",
9936
9964
  crudClassName: crudClassName,
@@ -10173,7 +10201,7 @@ async function getObjectDetail(objectSchema, recordId, ctx){
10173
10201
  // "blank": false
10174
10202
  // },
10175
10203
  "actionType": "custom",
10176
- "script": "Steedos.goBack()",
10204
+ "script": "window.goBack()",
10177
10205
  "expression": "this.__deletedRecord === true"
10178
10206
  }
10179
10207
  ]
@@ -10636,8 +10664,8 @@ async function getRelatedListSchema(
10636
10664
  /*
10637
10665
  * @Author: baozhoutao@steedos.com
10638
10666
  * @Date: 2022-07-05 15:55:39
10639
- * @LastEditors: baozhoutao@steedos.com
10640
- * @LastEditTime: 2023-08-17 18:03:51
10667
+ * @LastEditors: liaodaxue
10668
+ * @LastEditTime: 2023-08-25 11:55:15
10641
10669
  * @Description:
10642
10670
  */
10643
10671
 
@@ -10902,7 +10930,7 @@ async function getListSchema(
10902
10930
  * 本次存储代码段
10903
10931
  */
10904
10932
  try {
10905
- const listViewPropsStoreKey = location.pathname + "/crud/" + (listViewName || "");
10933
+ const listViewPropsStoreKey = location.pathname + "/crud";
10906
10934
  let localListViewProps = sessionStorage.getItem(listViewPropsStoreKey);
10907
10935
  /**
10908
10936
  * localListViewProps规范来自crud请求api中api.data.$self参数值的。
@@ -10924,11 +10952,12 @@ async function getListSchema(
10924
10952
  if(localListViewProps.orderDir){
10925
10953
  listSchema.orderDir = localListViewProps.orderDir;
10926
10954
  }
10927
- // if(localListViewProps.perPage){
10928
- // listSchema.defaultParams = {
10929
- // perPage: localListViewProps.perPage
10930
- // }
10931
- // }
10955
+
10956
+ if(localListViewProps.perPage){
10957
+ listSchema.defaultParams = {
10958
+ perPage: localListViewProps.perPage
10959
+ };
10960
+ }
10932
10961
  defaults.listSchema = _$1.defaultsDeep({}, listSchema, defaults.listSchema || {});
10933
10962
  }
10934
10963
  }
@@ -12281,7 +12310,7 @@ const getNextStepUsersInput = async (instance) => {
12281
12310
  id: "u:ffff15b76c89",
12282
12311
  className: "b-a b-1x p-xs m-b-none m-l-none m-r-none m-t-sm",
12283
12312
  subFormMode: "",
12284
- hiddenOn: "!!!this.new_next_step || this.new_next_step?.step_type === 'end'"
12313
+ hiddenOn: "!!!this.new_next_step || (this.new_next_step && this.new_next_step.step_type === 'end')"
12285
12314
  };
12286
12315
  };
12287
12316
 
@@ -13201,7 +13230,7 @@ const getFieldReadonlyTpl = async (field, label)=>{
13201
13230
  map[item.value] = item.label;
13202
13231
  });
13203
13232
  tpl.type = 'static';
13204
- tpl.tpl = `<% var options = ${JSON.stringify(map)}; return options?.[data.${field.code}] || ''%>`;
13233
+ tpl.tpl = `<% var options = ${JSON.stringify(map)}; return (options && options[data.${field.code}]) || ''%>`;
13205
13234
  }else if(field.type === 'odata'){
13206
13235
  tpl.type = 'static';
13207
13236
  tpl.tpl = `<div>\${${field.code}['@label']}</div>`;
@@ -13231,7 +13260,7 @@ const getFieldReadonlyTpl = async (field, label)=>{
13231
13260
  if(field.is_multiselect){
13232
13261
  tpl.tpl = `\${_.map(${field.code}, 'name')}`;
13233
13262
  }else {
13234
- tpl.tpl = `\${${field.code}?.name}`;
13263
+ tpl.tpl = `\${${field.code} && ${field.code}.name}`;
13235
13264
  }
13236
13265
  }else if(field.type === 'group'){
13237
13266
  tpl.type = 'static';