@steedos-widgets/amis-lib 1.2.3 → 1.2.6-beta.9

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.umd.js CHANGED
@@ -360,7 +360,7 @@
360
360
  * @Author: baozhoutao@steedos.com
361
361
  * @Date: 2022-08-16 17:02:08
362
362
  * @LastEditors: baozhoutao@steedos.com
363
- * @LastEditTime: 2023-04-17 15:24:21
363
+ * @LastEditTime: 2023-04-19 15:25:50
364
364
  * @Description:
365
365
  */
366
366
 
@@ -372,7 +372,7 @@
372
372
  return urlSearch.get('display')
373
373
  }
374
374
  // const key = `tab.${tab_id}.display`;
375
- const key = `page.display`;
375
+ const key = `page_display`;
376
376
  const value = localStorage.getItem(key);
377
377
  return value ? value : 'grid'
378
378
  },
@@ -1394,8 +1394,8 @@
1394
1394
  /*
1395
1395
  * @Author: baozhoutao@steedos.com
1396
1396
  * @Date: 2022-11-01 15:51:00
1397
- * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
1398
- * @LastEditTime: 2023-04-16 17:04:16
1397
+ * @LastEditors: baozhoutao@steedos.com
1398
+ * @LastEditTime: 2023-04-19 20:26:27
1399
1399
  * @Description:
1400
1400
  */
1401
1401
 
@@ -1505,7 +1505,27 @@
1505
1505
  "id": "u:e11347411d2d",
1506
1506
  "closeOnEsc": false,
1507
1507
  "closeOnOutside": false,
1508
- "size": "lg"
1508
+ "size": "lg",
1509
+ "actions": [
1510
+ {
1511
+ type: 'button',
1512
+ actionType: 'cancel',
1513
+ label: "取消"
1514
+ },
1515
+ {
1516
+ type: 'button',
1517
+ label: "保存并新建",
1518
+ actionType: 'confirm',
1519
+ close: false,
1520
+ id: "confirmAndNew"
1521
+ },
1522
+ {
1523
+ type: 'button',
1524
+ actionType: 'confirm',
1525
+ label: "保存",
1526
+ primary: true
1527
+ },
1528
+ ]
1509
1529
  }
1510
1530
  }
1511
1531
  ]
@@ -2407,96 +2427,97 @@
2407
2427
  }
2408
2428
  }
2409
2429
 
2410
- async function getObjectFieldsFilterFormSchema(objectSchema, fields, ctx) {
2411
- if(!ctx){
2430
+ async function getObjectFieldsFilterFormSchema(ctx) {
2431
+
2432
+ if (!ctx) {
2412
2433
  ctx = {};
2413
2434
  }
2414
- const body = [];
2415
- for (let field of fields) {
2416
- if (
2417
- !_$1.includes(
2418
- [
2419
- "grid",
2420
- "avatar",
2421
- "image",
2422
- "object",
2423
- "[object]",
2424
- "[Object]",
2425
- "[grid]",
2426
- "[text]",
2427
- "audio",
2428
- "file",
2429
- ],
2430
- field.type
2431
- )
2432
- ) {
2433
- delete field.defaultValue;
2434
- delete field.required;
2435
- delete field.is_wide;
2436
- delete field.readonly;
2437
- delete field.hidden;
2438
- delete field.omit;
2439
- const amisField = await getFieldSearchable(field, fields, ctx);
2440
- if (amisField) {
2441
- body.push(amisField);
2435
+ const formSchema = {
2436
+ "type": "service",
2437
+ "visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
2438
+ "className": ctx.formFactor === 'SMALL' ? "slds-filters__body p-0 mb-2" : "slds-filters__body p-0 sm:grid sm:gap-2 sm:grid-cols-4 mb-2",
2439
+ "schemaApi": {
2440
+ method: 'post',
2441
+ url: `\${context.rootUrl}/graphql?reload=\${filterFormSearchableFields|join}`,
2442
+ data: {
2443
+ $self: "$$",
2444
+ query: "{\n data: objects(filters: [[\"_id\",\"=\",null]],top: 1, skip: 0){_id}\n }"
2445
+ },
2446
+ requestAdaptor: `
2447
+ return {
2448
+ ...api,
2449
+ data: {
2450
+ query: api.data.query
2451
+ }
2452
+ };
2453
+ `,
2454
+ adaptor: `
2455
+ if(payload.errors){
2456
+ payload.status = 2;
2457
+ payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;
2458
+ }
2459
+ const selfData = api.body.$self;
2460
+ const filterFormSearchableFields = selfData.filterFormSearchableFields;
2461
+ const uiSchema = selfData.uiSchema;
2462
+ const fields = uiSchema.fields;
2463
+ const searchableFields = [];
2464
+
2465
+ const resolveAll = function(values){
2466
+ payload.data = {
2467
+ "body": values
2468
+ };
2469
+ return payload;
2470
+ }
2471
+
2472
+ const rejectAll = function(){
2473
+ console.warn("run function getFieldSearchable failed.");
2474
+ }
2475
+
2476
+ return Promise.all(filterFormSearchableFields.map(function (item) {
2477
+ const field = _.clone(fields[item]);
2478
+ if (
2479
+ !_.includes(
2480
+ [
2481
+ "grid",
2482
+ "avatar",
2483
+ "image",
2484
+ "object",
2485
+ "[object]",
2486
+ "[Object]",
2487
+ "[grid]",
2488
+ "[text]",
2489
+ "audio",
2490
+ "file",
2491
+ ],
2492
+ field.type
2493
+ )
2494
+ ) {
2495
+ delete field.defaultValue;
2496
+ delete field.required;
2497
+ delete field.is_wide;
2498
+ delete field.readonly;
2499
+ delete field.hidden;
2500
+ delete field.omit;
2501
+ var ctx = ${JSON.stringify(ctx)};
2502
+ const amisField = window.getFieldSearchable(field, fields, ctx);
2503
+ return amisField;
2504
+ }
2505
+ })).then(resolveAll, rejectAll);
2506
+ `,
2507
+ headers: {
2508
+ Authorization: "Bearer ${context.tenantId},${context.authToken}"
2442
2509
  }
2443
2510
  }
2444
- }
2445
- _$1.map(body, "name");
2446
- if(ctx.enableSearchableFieldsVisibleOn){
2447
- body.forEach(function(fieldItem){
2448
- fieldItem.visibleOn = `this.filterFormSearchableFields && this.filterFormSearchableFields.indexOf("${fieldItem.fieldName}") > -1`;
2449
- // fieldItem.clearValueOnHidden = true;//这个属性会把form字段值删除,但是点击搜索时crud还是把值给传递到过滤条件(api.requestAdaptor的data.$self)中了,应该是crud的bug
2450
- });
2451
- }
2452
-
2453
- // const onBroadcastSearchableFieldsChangeScript = `
2454
- // const data = event.data;
2455
- // const listViewId = data.listViewId;
2456
- // const searchableFields = data.fields;
2457
- // const preSearchableFields = data.__super.__super.fields;
2458
- // const removedFields = _.difference(preSearchableFields, searchableFields);
2459
- // const listViewPropsStoreKey = location.pathname + "/crud/" + listViewId ;
2460
- // let localListViewProps = localStorage.getItem(listViewPropsStoreKey);
2461
- // if(localListViewProps){
2462
- // // 当变更可搜索字段时,如果被移除的可搜索字段在本地存储中已经存入过滤条件中则应该清除本地存储中相关字段的过滤条件。
2463
- // localListViewProps = JSON.parse(localListViewProps);
2464
- // let removedKeys = [];
2465
- // _.each(localListViewProps, function(n,k){
2466
- // // __searchable__开头的不在searchableFields范围则清除其值
2467
- // let isRemoved = !!removedFields.find(function(fieldName){
2468
- // return new RegExp("__searchable__\.*" + fieldName + "$").test(k);
2469
- // });
2470
- // if(isRemoved){
2471
- // removedKeys.push(k);
2472
- // }
2473
- // });
2474
- // const removedValues = {};
2475
- // removedKeys.forEach(function(key){
2476
- // delete localListViewProps[key];
2477
- // removedValues[key] = "";
2478
- // });
2479
- // doAction({
2480
- // actionType: 'setValue',
2481
- // args: {
2482
- // value: removedValues
2483
- // }
2484
- // });
2485
- // localStorage.setItem(listViewPropsStoreKey, JSON.stringify(localListViewProps));
2486
- // }
2487
- // `;
2511
+ };
2488
2512
 
2489
- return body;
2513
+ return formSchema;
2490
2514
  }
2491
2515
 
2492
- async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
2493
- // console.log(ctx)
2494
- if(!ctx){
2516
+ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
2517
+ if (!ctx) {
2495
2518
  ctx = {};
2496
2519
  }
2497
- const filterFormSchema = await getObjectFieldsFilterFormSchema(objectSchema, fields, Object.assign({}, {
2498
- enableSearchableFieldsVisibleOn: true
2499
- }, ctx));
2520
+ const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);
2500
2521
  const onSearchScript = `
2501
2522
  const scope = event.context.scoped;
2502
2523
  var filterForm = scope.parent.parent.getComponents().find(function(n){
@@ -2529,18 +2550,21 @@
2529
2550
  searchableFieldsStoreKey += listViewId;
2530
2551
  }
2531
2552
  let defaultSearchableFields = sessionStorage.getItem(searchableFieldsStoreKey);
2532
- if(!defaultSearchableFields && data.uiSchema){
2553
+ if(defaultSearchableFields){
2554
+ defaultSearchableFields = defaultSearchableFields.split(",");
2555
+ }
2556
+ if(_.isEmpty(defaultSearchableFields) && data.uiSchema){
2533
2557
  let listView = data.uiSchema.list_views[data.listName];
2534
- defaultSearchableFields = listView && listView.searchable_fields;
2535
- if(defaultSearchableFields && defaultSearchableFields.length){
2536
- defaultSearchableFields = _.map(defaultSearchableFields, 'field');
2558
+ const sFields = listView && listView.searchable_fields;
2559
+ if(sFields && sFields.length){
2560
+ defaultSearchableFields = _.map(sFields, 'field');
2537
2561
  }
2538
2562
  }
2539
2563
  if(_.isEmpty(defaultSearchableFields) && data.uiSchema){
2540
2564
  defaultSearchableFields = _.map(
2541
- _.filter(_.values(data.uiSchema.fields), (field) => {
2565
+ _.sortBy(_.filter(_.values(data.uiSchema.fields), (field) => {
2542
2566
  return field.searchable;
2543
- }),
2567
+ }), "sort_no"),
2544
2568
  "name"
2545
2569
  );
2546
2570
  }
@@ -2678,7 +2702,7 @@
2678
2702
  // "filterFormValues": {"__searchable__name": "xxx"},//搜索项表单值
2679
2703
  // "listViewId": "${listViewId}"
2680
2704
  },
2681
- "id": `service_listview_filter_form_${objectSchema.name}`,
2705
+ // "id": `service_listview_filter_form_${objectSchema.name}`,
2682
2706
  "dataProvider": {
2683
2707
  "inited": dataProviderInited
2684
2708
  },
@@ -2686,15 +2710,7 @@
2686
2710
  "type": "wrapper",
2687
2711
  "body": {
2688
2712
  "type": "wrapper",
2689
- "body": [{
2690
- "type": "wrapper",
2691
- "body": [
2692
- filterFormSchema
2693
- ],
2694
- "size": "xs",
2695
- "visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
2696
- "className": ctx.formFactor === 'SMALL' ? "slds-filters__body p-0 mb-2": "slds-filters__body p-0 sm:grid sm:gap-2 sm:grid-cols-4 mb-2"
2697
- }, {
2713
+ "body": [filterFormSchema, {
2698
2714
  "type": "wrapper",
2699
2715
  "body": {
2700
2716
  "type": "wrapper",
@@ -3053,16 +3069,7 @@
3053
3069
  * @returns amisSchema
3054
3070
  */
3055
3071
  async function getObjectListHeaderFieldsFilterBar(objectSchema, listViewName, ctx) {
3056
- const searchableFields = _$1.keys(objectSchema.fields);
3057
- const fields = _$1.sortBy(
3058
- _$1.compact(
3059
- _$1.map(searchableFields, (fieldName) => {
3060
- return objectSchema.fields[fieldName];
3061
- })
3062
- ),
3063
- "sort_no"
3064
- );
3065
- const fieldsFilterBarSchema = await getObjectFieldsFilterBarSchema(objectSchema, fields, ctx);
3072
+ const fieldsFilterBarSchema = await getObjectFieldsFilterBarSchema(objectSchema, ctx);
3066
3073
  return fieldsFilterBarSchema;
3067
3074
  }
3068
3075
 
@@ -3841,12 +3848,11 @@ setTimeout(()=>{
3841
3848
  "objectApiName": "object_listviews",
3842
3849
  "recordId": "${recordId}",
3843
3850
  "mode": "edit",
3844
- "initApiAdaptor": "",
3845
3851
  "fields": [
3846
3852
  "filters"
3847
3853
  ],
3848
3854
  "initApiRequestAdaptor": "",
3849
- "initApiAdaptor": "const recordId_tmp = api.body.recordId;\nlet data_tmp;\nif (recordId_tmp) {\n data_tmp = payload.data.initialValues;\n // 数据格式转换\n if (data_tmp) {\n if (data_tmp.filters && lodash.isString(data_tmp.filters)) {\n try {\n data_tmp.filters = JSON.parse(data_tmp.filters);\n } catch (e) { }\n }\n\n if (data_tmp.filters && lodash.isString(data_tmp.filters)) {\n data_tmp._filters_type_controller = 'function';\n } else {\n data_tmp._filters_type_controller = 'conditions'\n }\n\n if (data_tmp._filters_type_controller === 'conditions') {\n data_tmp._filters_conditions = window.amisConvert.filtersToConditions(data_tmp.filters || []);\n data_tmp.filters = data_tmp._filters_conditions;\n } else {\n data_tmp._filters_function = data_tmp.filters;\n }\n }\n}\nfor (key in data_tmp) {\n if (data_tmp[key] === null) {\n delete data_tmp[key];\n }\n}\npayload.data.initialValues = Object.assign(payload.data.initialValues, data_tmp);\ndelete payload.extensions;",
3855
+ "initApiAdaptor": "const recordId_tmp = api.body.recordId;\nlet data_tmp;\nif (recordId_tmp) {\n data_tmp = payload.data;\n // 数据格式转换\n if (data_tmp) {\n if (data_tmp.filters && lodash.isString(data_tmp.filters)) {\n try {\n data_tmp.filters = JSON.parse(data_tmp.filters);\n } catch (e) { }\n }\n\n if (data_tmp.filters && lodash.isString(data_tmp.filters)) {\n data_tmp._filters_type_controller = 'function';\n } else {\n data_tmp._filters_type_controller = 'conditions'\n }\n\n if (data_tmp._filters_type_controller === 'conditions') {\n data_tmp._filters_conditions = window.amisConvert.filtersToConditions(data_tmp.filters || []);\n data_tmp.filters = data_tmp._filters_conditions;\n } else {\n data_tmp._filters_function = data_tmp.filters;\n }\n }\n}\nfor (key in data_tmp) {\n if (data_tmp[key] === null) {\n delete data_tmp[key];\n }\n}\npayload.data = Object.assign(payload.data, data_tmp);\ndelete payload.extensions;",
3850
3856
  "apiRequestAdaptor": "const recordId = api.body.recordId;\nif (formData._filters_type_controller === 'conditions' && formData._filters_conditions) {\n formData.filters = window.amisConvert.conditionsToFilters(formData.filters);\n} else {\n formData.filters = formData._filters_function || null;\n}\n\ndelete formData._filters_type_controller;\ndelete formData._filters_conditions;\ndelete formData._filters_function;\n// 字符串拼接(不支持ES6``语法)\nquery = 'mutation{record: ' + objectName + '__insert(doc: {__saveData}){_id}}';\nif (api.body.recordId) {\n query = 'mutation{record: ' + objectName + '__update(id: \"' + recordId + '\", doc: {__saveData}){_id}}';\n};\n__saveData = JSON.stringify(JSON.stringify(formData));\napi.data = { query: query.replace('{__saveData}', __saveData) };\n",
3851
3857
  "fieldsExtend": "{\"filters\": {\n \"visible_on\": \"true\",\n \"amis\": {\n \"type\": \"condition-builder\",\n \"label\": \"条件组件\",\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-listviews/getFilterFields?objectName=${objectName}\",\n \"dataType\": \"json\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n }\n}",
3852
3858
  "onEvent": {
@@ -3906,7 +3912,7 @@ setTimeout(()=>{
3906
3912
  "recordId": "${recordId}",
3907
3913
  "mode": "edit",
3908
3914
  "fieldsExtend": "{\n \"columns\": {\n \"amis\": {\n \"type\": \"transfer\",\n \"sortable\": true,\n \"searchable\": true,\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-objects/objects/${objectName}/fields/options\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n },\n \"mobile_columns\": {\n \"group\": \"手机端\",\n \"amis\": {\n \"type\": \"transfer\",\n \"sortable\": true,\n \"searchable\": true,\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-objects/objects/${objectName}/fields/options\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n }\n}",
3909
- "initApiAdaptor": "const recordId_tmp = api.body.recordId;\nlet columns_tmp = {}, mobile_columns_tmp = {};\nif (recordId_tmp) {\n columns_tmp = payload.data.initialValues.columns;\n mobile_columns_tmp = payload.data.initialValues.mobile_columns;\n if (columns_tmp) {\n columns_tmp = lodash.map(columns_tmp, 'field');\n }\n if (mobile_columns_tmp) {\n mobile_columns_tmp = lodash.map(mobile_columns_tmp, 'field');\n }\n}\npayload.data.initialValues.columns = columns_tmp;\npayload.data.initialValues.mobile_columns = mobile_columns_tmp;\n\ndelete payload.extensions;\nreturn payload;",
3915
+ "initApiAdaptor": "const recordId_tmp = api.body.recordId;\nlet columns_tmp = {}, mobile_columns_tmp = {};\nif (recordId_tmp) {\n columns_tmp = payload.data.columns;\n mobile_columns_tmp = payload.data.mobile_columns;\n if (columns_tmp) {\n columns_tmp = lodash.map(columns_tmp, 'field');\n }\n if (mobile_columns_tmp) {\n mobile_columns_tmp = lodash.map(mobile_columns_tmp, 'field');\n }\n}\npayload.data.columns = columns_tmp;\npayload.data.mobile_columns = mobile_columns_tmp;\n\ndelete payload.extensions;\nreturn payload;",
3910
3916
  "apiRequestAdaptor": "const formData_tmp = api.body.$;\nconst objectName_tmp = api.body.objectName;\nconst recordId_tmp = api.body.recordId;\n\nif (typeof formData_tmp.columns == 'string') {\n formData_tmp.columns = formData_tmp.columns?.split(',');\n}\nif (typeof formData_tmp.mobile_columns == 'string') {\n formData_tmp.mobile_columns = formData_tmp.mobile_columns?.split(',');\n}\n\n// 数据格式转换\nformData_tmp.columns = lodash.map(formData_tmp.columns, (item) => {\n return { field: item };\n});\nformData.mobile_columns = lodash.map(formData.mobile_columns, (item) => {\n return { field: item };\n});\n\n// 字符串拼接(不支持ES6语法)\nlet query_tmp = 'mutation{record: ' + objectName_tmp + '__insert(doc: {__saveData}){_id}}';\nif (api.body.recordId) {\n query_tmp = 'mutation{record: ' + objectName_tmp + '__update(id: \"' + recordId_tmp +'\", doc: {__saveData}){_id}}';\n};\ndelete formData_tmp._id;\nlet __saveData_tmp = JSON.stringify(JSON.stringify(formData_tmp));\napi.data = { query: query_tmp.replace('{__saveData}', __saveData_tmp) };\n\nreturn api;",
3911
3917
  "fields": [
3912
3918
  "columns",
@@ -3988,7 +3994,7 @@ setTimeout(()=>{
3988
3994
  }
3989
3995
  },
3990
3996
  "fieldsExtend": "{\n \"sort\": {\n \"amis\": {\n \"type\": \"tabs-transfer\",\n \"sortable\": true,\n \"searchable\": true,\n \"source\": {\n \"method\": \"get\",\n \"url\": \"${context.rootUrl}/service/api/amis-metadata-objects/objects/${objectName}/sortFields/options\",\n \"headers\": {\n \"Authorization\": \"Bearer ${context.tenantId},${context.authToken}\"\n }\n }\n }\n }\n}",
3991
- "initApiAdaptor": "let sort;\nif (recordId) {\n sort = payload.data.initialValues.sort;\n //数据格式转换\n if (sort instanceof Array) {\n sort = lodash.map(sort, (item) => {\n return item.field_name + ':' + (item.order || 'asc')\n });\n }\n}\npayload.data.initialValues.sort = sort;\ndelete payload.extensions;",
3997
+ "initApiAdaptor": "let sort;\nif (recordId) {\n sort = payload.data.sort;\n //数据格式转换\n if (sort instanceof Array) {\n sort = lodash.map(sort, (item) => {\n return item.field_name + ':' + (item.order || 'asc')\n });\n }\n}\npayload.data.sort = sort;\ndelete payload.extensions;",
3992
3998
  "apiRequestAdaptor": "const recordId = api.body.recordId;\n//数据格式转换\nif (typeof formData.sort == 'string') {\n formData.sort = formData.sort?.split(',');\n}\nformData.sort = lodash.map(formData.sort, (item) => {\n const arr = item.split(':');\n return { field_name: arr[0], order: arr[1] };\n});\nif (recordId) {\n query = 'mutation{record: ' + objectName + '__update(id: \"' + recordId + '\", doc: {__saveData}){_id}}';\n}\n__saveData = JSON.stringify(JSON.stringify(formData));\napi.data = { query: query.replace('{__saveData}', __saveData) };\n"
3993
3999
  }
3994
4000
  ],
@@ -4687,13 +4693,9 @@ setTimeout(()=>{
4687
4693
  //TODO: 等待放大镜bug修复,if会去掉,始终显示放大镜
4688
4694
  if(referenceTo.objectName != "space_users" || field.reference_to_field != "user"){
4689
4695
  if (ctx.filterVisible !== false) {
4690
- let filterLoopCount = ctx.filterLoopCount || 0;
4691
- filterLoopCount++;
4692
- // 可以传入filterVisible为false防止死循环
4693
4696
  pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {
4694
4697
  isLookup: true,
4695
- ...ctx,
4696
- filterLoopCount,
4698
+ ...ctx
4697
4699
  });
4698
4700
  }
4699
4701
  }
@@ -5751,6 +5753,14 @@ setTimeout(()=>{
5751
5753
  convertData.visibleOn = `${field.visible_on.replace(/formData./g, 'data.')}`;
5752
5754
  }
5753
5755
  }
5756
+
5757
+ if(___namespace.isString(baseData.required)){
5758
+ if(baseData.required.startsWith("{{")){
5759
+ baseData.requiredOn = `${baseData.required.substring(2, baseData.required.length -2).replace(/formData./g, 'data.')}`;
5760
+ delete baseData.required;
5761
+ }
5762
+ }
5763
+
5754
5764
  if(convertData.type === 'group'){
5755
5765
  convertData.body[0] = Object.assign({}, baseData, convertData.body[0], { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name});
5756
5766
  return convertData
@@ -5765,8 +5775,9 @@ setTimeout(()=>{
5765
5775
  }
5766
5776
 
5767
5777
  async function getFieldSearchable(perField, permissionFields, ctx){
5768
- const filterLoopCount = ctx.filterLoopCount || 0;
5769
- const maxFilterLoopCount = 5;
5778
+ if(!ctx){
5779
+ ctx = {};
5780
+ }
5770
5781
  let field = perField;
5771
5782
  if(field.type === 'grid'){
5772
5783
  field = await getGridFieldSubFields(perField, permissionFields);
@@ -5827,14 +5838,17 @@ setTimeout(()=>{
5827
5838
  _field.multiple = true;
5828
5839
  _field.is_wide = false;
5829
5840
  _field.defaultValue = undefined;
5830
- // filterVisible: false不再生成lookup字段时的filter,否则会死循环
5831
- const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true, filterVisible: filterLoopCount < maxFilterLoopCount}));
5841
+ const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true}));
5832
5842
  if(amisField){
5833
5843
  return amisField;
5834
5844
  }
5835
5845
  }
5836
5846
  }
5837
5847
 
5848
+ if(typeof window != 'undefined'){
5849
+ window.getFieldSearchable = getFieldSearchable;
5850
+ }
5851
+
5838
5852
  var index = /*#__PURE__*/Object.freeze({
5839
5853
  __proto__: null,
5840
5854
  OMIT_FIELDS: OMIT_FIELDS,
@@ -6095,12 +6109,12 @@ setTimeout(()=>{
6095
6109
  if(uiSchema.form){
6096
6110
  try{
6097
6111
  var objectFormConfig = JSON.parse(uiSchema.form);
6098
- initialValues = objectFormConfig.initialValues;
6099
- if(initialValues){
6100
- initialValues = new Function("return " + initialValues)();
6112
+ var formInitialValuesFun = objectFormConfig.initialValues;
6113
+ if(formInitialValuesFun){
6114
+ formInitialValuesFun = new Function("return " + formInitialValuesFun)();
6101
6115
  }
6102
- if(typeof initialValues === "function"){
6103
- initialValues = initialValues.apply({doc: defaultValues || {} })
6116
+ if(typeof formInitialValuesFun === "function"){
6117
+ initialValues = formInitialValuesFun.apply({doc: defaultValues || {} , global: api.body.global})
6104
6118
  }
6105
6119
  }
6106
6120
  catch(ex){
@@ -6117,12 +6131,15 @@ setTimeout(()=>{
6117
6131
  }
6118
6132
  // data下的变量需要在保存接口(getSaveApi)中被删除。
6119
6133
  payload.data = {
6120
- initialValues,
6121
- editFormInited: true
6134
+ ...initialValues
6122
6135
  }
6123
6136
  ${options.initApiAdaptor || ''}
6124
6137
  return payload;
6125
6138
  `,
6139
+ responseData: {
6140
+ initialValues: "$$",
6141
+ editFormInited: true
6142
+ },
6126
6143
  data: data,
6127
6144
  headers: {
6128
6145
  Authorization: "Bearer ${context.tenantId},${context.authToken}"
@@ -6529,6 +6546,8 @@ setTimeout(()=>{
6529
6546
  },
6530
6547
  labelAlign,
6531
6548
  persistData: false,
6549
+ resetAfterSubmit: true,
6550
+ preventEnterSubmit: true,
6532
6551
  promptPageLeave: true,
6533
6552
  canAccessSuperData: false,
6534
6553
  name: `form_edit_${recordId}`,
@@ -6566,10 +6585,14 @@ setTimeout(()=>{
6566
6585
  },
6567
6586
  "expression": `\${_master.objectName != '${objectSchema.name}' && _master.objectName}`
6568
6587
  },
6569
- {
6570
- "args": {},
6571
- "actionType": "closeDialog"
6572
- }
6588
+ // {
6589
+ // "actionType": "custom",
6590
+ // "script": "debugger;"
6591
+ // },
6592
+ // {
6593
+ // "args": {},
6594
+ // "actionType": "closeDialog"
6595
+ // }
6573
6596
  ]
6574
6597
  }
6575
6598
  }
@@ -7087,13 +7110,17 @@ setTimeout(()=>{
7087
7110
  }
7088
7111
 
7089
7112
  api.data.$term = "$term";
7113
+ api.data.term = "$term";
7090
7114
  api.data.$self = "$$";
7115
+ api.data.self = "$$";
7091
7116
  api.data.filter = "$filter";
7092
7117
  api.data.loaded = "${loaded}";
7093
7118
  api.data.listViewId = "${listViewId}";
7094
7119
  api.requestAdaptor = `
7095
7120
  // selfData 中的数据由 CRUD 控制. selfData中,只能获取到 CRUD 给定的data. 无法从数据链中获取数据.
7096
7121
  let selfData = JSON.parse(JSON.stringify(api.data.$self));
7122
+ // 保留一份初始data,以供自定义发送适配器中获取原始数据。
7123
+ const data = _.cloneDeep(api.data);
7097
7124
  try{
7098
7125
  // TODO: 不应该直接在这里取localStorage,应该从外面传入
7099
7126
  const listViewId = api.data.listViewId;
@@ -7277,29 +7304,9 @@ setTimeout(()=>{
7277
7304
  })
7278
7305
 
7279
7306
  if(enable_tree){
7280
- const records = payload.data.rows;
7281
- const treeRecords = [];
7282
- const getChildren = (records, childrenIds)=>{
7283
- if(!childrenIds){
7284
- return;
7285
- }
7286
- const children = _.filter(records, (record)=>{
7287
- return _.includes(childrenIds, record._id)
7288
- });
7289
- _.each(children, (item)=>{
7290
- if(item.children){
7291
- item.children = getChildren(records, item.children)
7292
- }
7293
- })
7294
- return children;
7295
- }
7296
-
7297
- _.each(records, (record)=>{
7298
- if(!record.parent){
7299
- treeRecords.push(Object.assign({}, record, {children: getChildren(records, record.children)}));
7300
- }
7301
- });
7302
- payload.data.rows = treeRecords;
7307
+ const records = payload.data.rows || [];
7308
+ const getTreeOptions = SteedosUI.getTreeOptions
7309
+ payload.data.rows = getTreeOptions(records,{"valueField":"_id"});
7303
7310
  }
7304
7311
 
7305
7312
 
@@ -7992,7 +7999,7 @@ setTimeout(()=>{
7992
7999
  * @Author: baozhoutao@steedos.com
7993
8000
  * @Date: 2022-07-05 15:55:39
7994
8001
  * @LastEditors: Please set LastEditors
7995
- * @LastEditTime: 2023-04-11 13:13:00
8002
+ * @LastEditTime: 2023-04-20 11:43:14
7996
8003
  * @Description:
7997
8004
  */
7998
8005
 
@@ -8089,10 +8096,12 @@ setTimeout(()=>{
8089
8096
  mainRelated[arr[0]] = arr[1];
8090
8097
  }
8091
8098
  }else {
8092
- const details = mainObjectUiSchema.details || [];
8099
+ const details = _$1.union(mainObjectUiSchema.details,mainObjectUiSchema.lookup_details) || [];
8093
8100
  for (const detail of details) {
8094
8101
  const arr = detail.split(".");
8095
- mainRelated[arr[0]] = arr[1];
8102
+ if(!_$1.has(mainRelated,arr[0])){
8103
+ mainRelated[arr[0]] = arr[1];
8104
+ }
8096
8105
  }
8097
8106
  }
8098
8107
  }
@@ -8297,13 +8306,17 @@ setTimeout(()=>{
8297
8306
  delete ctx.globalFilter;
8298
8307
 
8299
8308
  const adaptor = `
8300
- if(setDataToComponentId){
8301
- if(payload.data.count){
8302
- setTimeout(function(){
8303
- window.$("." + setDataToComponentId + " .antd-Crud").removeClass("hidden");
8304
- }, 10);
8305
- }
8306
- };
8309
+ try{
8310
+ if(setDataToComponentId){
8311
+ if(payload.data.count){
8312
+ setTimeout(function(){
8313
+ window.$("." + setDataToComponentId + " .antd-Crud").removeClass("hidden");
8314
+ }, 10);
8315
+ }
8316
+ };
8317
+ }catch(e){
8318
+ console.log(e);
8319
+ }
8307
8320
  `;
8308
8321
  const amisSchema = {
8309
8322
  "type": "steedos-object-table",
@@ -8314,7 +8327,8 @@ setTimeout(()=>{
8314
8327
  "filtersFunction": filtersFunction,
8315
8328
  "sort": listViewSort,
8316
8329
  "filterVisible": false,
8317
- adaptor,
8330
+ "requestAdaptor": ctx.requestAdaptor,
8331
+ "adaptor": adaptor + ctx.adaptor || '',
8318
8332
  "ctx": ctx
8319
8333
  };
8320
8334
  // console.log(`getRelatedListSchema amisSchema`, amisSchema);