@steedos-widgets/amis-object 1.2.3 → 1.2.5

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.
@@ -721,7 +721,7 @@ const getSteedosAuth = () => {
721
721
  * @Author: baozhoutao@steedos.com
722
722
  * @Date: 2022-08-16 17:02:08
723
723
  * @LastEditors: baozhoutao@steedos.com
724
- * @LastEditTime: 2023-04-17 15:24:21
724
+ * @LastEditTime: 2023-04-19 15:25:50
725
725
  * @Description:
726
726
  */
727
727
 
@@ -733,7 +733,7 @@ const Router$1 = {
733
733
  return urlSearch.get('display')
734
734
  }
735
735
  // const key = `tab.${tab_id}.display`;
736
- const key = `page.display`;
736
+ const key = `page_display`;
737
737
  const value = localStorage.getItem(key);
738
738
  return value ? value : 'grid'
739
739
  },
@@ -1755,8 +1755,8 @@ var config = {
1755
1755
  /*
1756
1756
  * @Author: baozhoutao@steedos.com
1757
1757
  * @Date: 2022-11-01 15:51:00
1758
- * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
1759
- * @LastEditTime: 2023-04-16 17:04:16
1758
+ * @LastEditors: baozhoutao@steedos.com
1759
+ * @LastEditTime: 2023-04-19 20:26:27
1760
1760
  * @Description:
1761
1761
  */
1762
1762
 
@@ -1866,7 +1866,27 @@ const getSchema$4 = async (uiSchema, ctx) => {
1866
1866
  "id": "u:e11347411d2d",
1867
1867
  "closeOnEsc": false,
1868
1868
  "closeOnOutside": false,
1869
- "size": "lg"
1869
+ "size": "lg",
1870
+ "actions": [
1871
+ {
1872
+ type: 'button',
1873
+ actionType: 'cancel',
1874
+ label: "取消"
1875
+ },
1876
+ {
1877
+ type: 'button',
1878
+ label: "保存并新建",
1879
+ actionType: 'confirm',
1880
+ close: false,
1881
+ id: "confirmAndNew"
1882
+ },
1883
+ {
1884
+ type: 'button',
1885
+ actionType: 'confirm',
1886
+ label: "保存",
1887
+ primary: true
1888
+ },
1889
+ ]
1870
1890
  }
1871
1891
  }
1872
1892
  ]
@@ -2768,96 +2788,97 @@ async function getObjectFieldsFilterButtonSchema(objectSchema) {
2768
2788
  }
2769
2789
  }
2770
2790
 
2771
- async function getObjectFieldsFilterFormSchema(objectSchema, fields, ctx) {
2772
- if(!ctx){
2791
+ async function getObjectFieldsFilterFormSchema(ctx) {
2792
+
2793
+ if (!ctx) {
2773
2794
  ctx = {};
2774
2795
  }
2775
- const body = [];
2776
- for (let field of fields) {
2777
- if (
2778
- !___default.includes(
2779
- [
2780
- "grid",
2781
- "avatar",
2782
- "image",
2783
- "object",
2784
- "[object]",
2785
- "[Object]",
2786
- "[grid]",
2787
- "[text]",
2788
- "audio",
2789
- "file",
2790
- ],
2791
- field.type
2792
- )
2793
- ) {
2794
- delete field.defaultValue;
2795
- delete field.required;
2796
- delete field.is_wide;
2797
- delete field.readonly;
2798
- delete field.hidden;
2799
- delete field.omit;
2800
- const amisField = await getFieldSearchable(field, fields, ctx);
2801
- if (amisField) {
2802
- body.push(amisField);
2796
+ const formSchema = {
2797
+ "type": "service",
2798
+ "visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
2799
+ "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",
2800
+ "schemaApi": {
2801
+ method: 'post',
2802
+ url: `\${context.rootUrl}/graphql?reload=\${filterFormSearchableFields|join}`,
2803
+ data: {
2804
+ $self: "$$",
2805
+ query: "{\n data: objects(filters: [[\"_id\",\"=\",null]],top: 1, skip: 0){_id}\n }"
2806
+ },
2807
+ requestAdaptor: `
2808
+ return {
2809
+ ...api,
2810
+ data: {
2811
+ query: api.data.query
2812
+ }
2813
+ };
2814
+ `,
2815
+ adaptor: `
2816
+ if(payload.errors){
2817
+ payload.status = 2;
2818
+ payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;
2819
+ }
2820
+ const selfData = api.body.$self;
2821
+ const filterFormSearchableFields = selfData.filterFormSearchableFields;
2822
+ const uiSchema = selfData.uiSchema;
2823
+ const fields = uiSchema.fields;
2824
+ const searchableFields = [];
2825
+
2826
+ const resolveAll = function(values){
2827
+ payload.data = {
2828
+ "body": values
2829
+ };
2830
+ return payload;
2831
+ }
2832
+
2833
+ const rejectAll = function(){
2834
+ console.warn("run function getFieldSearchable failed.");
2835
+ }
2836
+
2837
+ return Promise.all(filterFormSearchableFields.map(function (item) {
2838
+ const field = _.clone(fields[item]);
2839
+ if (
2840
+ !_.includes(
2841
+ [
2842
+ "grid",
2843
+ "avatar",
2844
+ "image",
2845
+ "object",
2846
+ "[object]",
2847
+ "[Object]",
2848
+ "[grid]",
2849
+ "[text]",
2850
+ "audio",
2851
+ "file",
2852
+ ],
2853
+ field.type
2854
+ )
2855
+ ) {
2856
+ delete field.defaultValue;
2857
+ delete field.required;
2858
+ delete field.is_wide;
2859
+ delete field.readonly;
2860
+ delete field.hidden;
2861
+ delete field.omit;
2862
+ var ctx = ${JSON.stringify(ctx)};
2863
+ const amisField = window.getFieldSearchable(field, fields, ctx);
2864
+ return amisField;
2865
+ }
2866
+ })).then(resolveAll, rejectAll);
2867
+ `,
2868
+ headers: {
2869
+ Authorization: "Bearer ${context.tenantId},${context.authToken}"
2803
2870
  }
2804
2871
  }
2805
- }
2806
- ___default.map(body, "name");
2807
- if(ctx.enableSearchableFieldsVisibleOn){
2808
- body.forEach(function(fieldItem){
2809
- fieldItem.visibleOn = `this.filterFormSearchableFields && this.filterFormSearchableFields.indexOf("${fieldItem.fieldName}") > -1`;
2810
- // fieldItem.clearValueOnHidden = true;//这个属性会把form字段值删除,但是点击搜索时crud还是把值给传递到过滤条件(api.requestAdaptor的data.$self)中了,应该是crud的bug
2811
- });
2812
- }
2813
-
2814
- // const onBroadcastSearchableFieldsChangeScript = `
2815
- // const data = event.data;
2816
- // const listViewId = data.listViewId;
2817
- // const searchableFields = data.fields;
2818
- // const preSearchableFields = data.__super.__super.fields;
2819
- // const removedFields = _.difference(preSearchableFields, searchableFields);
2820
- // const listViewPropsStoreKey = location.pathname + "/crud/" + listViewId ;
2821
- // let localListViewProps = localStorage.getItem(listViewPropsStoreKey);
2822
- // if(localListViewProps){
2823
- // // 当变更可搜索字段时,如果被移除的可搜索字段在本地存储中已经存入过滤条件中则应该清除本地存储中相关字段的过滤条件。
2824
- // localListViewProps = JSON.parse(localListViewProps);
2825
- // let removedKeys = [];
2826
- // _.each(localListViewProps, function(n,k){
2827
- // // __searchable__开头的不在searchableFields范围则清除其值
2828
- // let isRemoved = !!removedFields.find(function(fieldName){
2829
- // return new RegExp("__searchable__\.*" + fieldName + "$").test(k);
2830
- // });
2831
- // if(isRemoved){
2832
- // removedKeys.push(k);
2833
- // }
2834
- // });
2835
- // const removedValues = {};
2836
- // removedKeys.forEach(function(key){
2837
- // delete localListViewProps[key];
2838
- // removedValues[key] = "";
2839
- // });
2840
- // doAction({
2841
- // actionType: 'setValue',
2842
- // args: {
2843
- // value: removedValues
2844
- // }
2845
- // });
2846
- // localStorage.setItem(listViewPropsStoreKey, JSON.stringify(localListViewProps));
2847
- // }
2848
- // `;
2872
+ };
2849
2873
 
2850
- return body;
2874
+ return formSchema;
2851
2875
  }
2852
2876
 
2853
- async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
2854
- // console.log(ctx)
2855
- if(!ctx){
2877
+ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
2878
+ if (!ctx) {
2856
2879
  ctx = {};
2857
2880
  }
2858
- const filterFormSchema = await getObjectFieldsFilterFormSchema(objectSchema, fields, Object.assign({}, {
2859
- enableSearchableFieldsVisibleOn: true
2860
- }, ctx));
2881
+ const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);
2861
2882
  const onSearchScript = `
2862
2883
  const scope = event.context.scoped;
2863
2884
  var filterForm = scope.parent.parent.getComponents().find(function(n){
@@ -2890,18 +2911,21 @@ async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
2890
2911
  searchableFieldsStoreKey += listViewId;
2891
2912
  }
2892
2913
  let defaultSearchableFields = sessionStorage.getItem(searchableFieldsStoreKey);
2893
- if(!defaultSearchableFields && data.uiSchema){
2914
+ if(defaultSearchableFields){
2915
+ defaultSearchableFields = defaultSearchableFields.split(",");
2916
+ }
2917
+ if(_.isEmpty(defaultSearchableFields) && data.uiSchema){
2894
2918
  let listView = data.uiSchema.list_views[data.listName];
2895
- defaultSearchableFields = listView && listView.searchable_fields;
2896
- if(defaultSearchableFields && defaultSearchableFields.length){
2897
- defaultSearchableFields = _.map(defaultSearchableFields, 'field');
2919
+ const sFields = listView && listView.searchable_fields;
2920
+ if(sFields && sFields.length){
2921
+ defaultSearchableFields = _.map(sFields, 'field');
2898
2922
  }
2899
2923
  }
2900
2924
  if(_.isEmpty(defaultSearchableFields) && data.uiSchema){
2901
2925
  defaultSearchableFields = _.map(
2902
- _.filter(_.values(data.uiSchema.fields), (field) => {
2926
+ _.sortBy(_.filter(_.values(data.uiSchema.fields), (field) => {
2903
2927
  return field.searchable;
2904
- }),
2928
+ }), "sort_no"),
2905
2929
  "name"
2906
2930
  );
2907
2931
  }
@@ -3039,7 +3063,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
3039
3063
  // "filterFormValues": {"__searchable__name": "xxx"},//搜索项表单值
3040
3064
  // "listViewId": "${listViewId}"
3041
3065
  },
3042
- "id": `service_listview_filter_form_${objectSchema.name}`,
3066
+ // "id": `service_listview_filter_form_${objectSchema.name}`,
3043
3067
  "dataProvider": {
3044
3068
  "inited": dataProviderInited
3045
3069
  },
@@ -3047,15 +3071,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
3047
3071
  "type": "wrapper",
3048
3072
  "body": {
3049
3073
  "type": "wrapper",
3050
- "body": [{
3051
- "type": "wrapper",
3052
- "body": [
3053
- filterFormSchema
3054
- ],
3055
- "size": "xs",
3056
- "visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
3057
- "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"
3058
- }, {
3074
+ "body": [filterFormSchema, {
3059
3075
  "type": "wrapper",
3060
3076
  "body": {
3061
3077
  "type": "wrapper",
@@ -3414,16 +3430,7 @@ async function getObjectListHeaderSecordLine(objectSchema, listViewName, ctx) {
3414
3430
  * @returns amisSchema
3415
3431
  */
3416
3432
  async function getObjectListHeaderFieldsFilterBar(objectSchema, listViewName, ctx) {
3417
- const searchableFields = ___default.keys(objectSchema.fields);
3418
- const fields = ___default.sortBy(
3419
- ___default.compact(
3420
- ___default.map(searchableFields, (fieldName) => {
3421
- return objectSchema.fields[fieldName];
3422
- })
3423
- ),
3424
- "sort_no"
3425
- );
3426
- const fieldsFilterBarSchema = await getObjectFieldsFilterBarSchema(objectSchema, fields, ctx);
3433
+ const fieldsFilterBarSchema = await getObjectFieldsFilterBarSchema(objectSchema, ctx);
3427
3434
  return fieldsFilterBarSchema;
3428
3435
  }
3429
3436
 
@@ -4202,12 +4209,11 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
4202
4209
  "objectApiName": "object_listviews",
4203
4210
  "recordId": "${recordId}",
4204
4211
  "mode": "edit",
4205
- "initApiAdaptor": "",
4206
4212
  "fields": [
4207
4213
  "filters"
4208
4214
  ],
4209
4215
  "initApiRequestAdaptor": "",
4210
- "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;",
4216
+ "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;",
4211
4217
  "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",
4212
4218
  "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}",
4213
4219
  "onEvent": {
@@ -4267,7 +4273,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
4267
4273
  "recordId": "${recordId}",
4268
4274
  "mode": "edit",
4269
4275
  "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}",
4270
- "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;",
4276
+ "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;",
4271
4277
  "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;",
4272
4278
  "fields": [
4273
4279
  "columns",
@@ -4349,7 +4355,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
4349
4355
  }
4350
4356
  },
4351
4357
  "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}",
4352
- "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;",
4358
+ "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;",
4353
4359
  "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"
4354
4360
  }
4355
4361
  ],
@@ -5048,13 +5054,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
5048
5054
  //TODO: 等待放大镜bug修复,if会去掉,始终显示放大镜
5049
5055
  if(referenceTo.objectName != "space_users" || field.reference_to_field != "user"){
5050
5056
  if (ctx.filterVisible !== false) {
5051
- let filterLoopCount = ctx.filterLoopCount || 0;
5052
- filterLoopCount++;
5053
- // 可以传入filterVisible为false防止死循环
5054
5057
  pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {
5055
5058
  isLookup: true,
5056
- ...ctx,
5057
- filterLoopCount,
5059
+ ...ctx
5058
5060
  });
5059
5061
  }
5060
5062
  }
@@ -6112,6 +6114,14 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
6112
6114
  convertData.visibleOn = `${field.visible_on.replace(/formData./g, 'data.')}`;
6113
6115
  }
6114
6116
  }
6117
+
6118
+ if(___default__namespace.isString(baseData.required)){
6119
+ if(baseData.required.startsWith("{{")){
6120
+ baseData.requiredOn = `${baseData.required.substring(2, baseData.required.length -2).replace(/formData./g, 'data.')}`;
6121
+ delete baseData.required;
6122
+ }
6123
+ }
6124
+
6115
6125
  if(convertData.type === 'group'){
6116
6126
  convertData.body[0] = Object.assign({}, baseData, convertData.body[0], { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name});
6117
6127
  return convertData
@@ -6126,8 +6136,9 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
6126
6136
  }
6127
6137
 
6128
6138
  async function getFieldSearchable(perField, permissionFields, ctx){
6129
- const filterLoopCount = ctx.filterLoopCount || 0;
6130
- const maxFilterLoopCount = 5;
6139
+ if(!ctx){
6140
+ ctx = {};
6141
+ }
6131
6142
  let field = perField;
6132
6143
  if(field.type === 'grid'){
6133
6144
  field = await getGridFieldSubFields(perField, permissionFields);
@@ -6188,14 +6199,17 @@ async function getFieldSearchable(perField, permissionFields, ctx){
6188
6199
  _field.multiple = true;
6189
6200
  _field.is_wide = false;
6190
6201
  _field.defaultValue = undefined;
6191
- // filterVisible: false不再生成lookup字段时的filter,否则会死循环
6192
- const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true, filterVisible: filterLoopCount < maxFilterLoopCount}));
6202
+ const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true}));
6193
6203
  if(amisField){
6194
6204
  return amisField;
6195
6205
  }
6196
6206
  }
6197
6207
  }
6198
6208
 
6209
+ if(typeof window != 'undefined'){
6210
+ window.getFieldSearchable = getFieldSearchable;
6211
+ }
6212
+
6199
6213
  var index = /*#__PURE__*/Object.freeze({
6200
6214
  __proto__: null,
6201
6215
  OMIT_FIELDS: OMIT_FIELDS,
@@ -6456,12 +6470,12 @@ async function getEditFormInitApi(object, recordId, fields, options){
6456
6470
  if(uiSchema.form){
6457
6471
  try{
6458
6472
  var objectFormConfig = JSON.parse(uiSchema.form);
6459
- initialValues = objectFormConfig.initialValues;
6460
- if(initialValues){
6461
- initialValues = new Function("return " + initialValues)();
6473
+ var formInitialValuesFun = objectFormConfig.initialValues;
6474
+ if(formInitialValuesFun){
6475
+ formInitialValuesFun = new Function("return " + formInitialValuesFun)();
6462
6476
  }
6463
- if(typeof initialValues === "function"){
6464
- initialValues = initialValues.apply({doc: defaultValues || {} })
6477
+ if(typeof formInitialValuesFun === "function"){
6478
+ initialValues = formInitialValuesFun.apply({doc: defaultValues || {} , global: api.body.global})
6465
6479
  }
6466
6480
  }
6467
6481
  catch(ex){
@@ -6478,12 +6492,15 @@ async function getEditFormInitApi(object, recordId, fields, options){
6478
6492
  }
6479
6493
  // data下的变量需要在保存接口(getSaveApi)中被删除。
6480
6494
  payload.data = {
6481
- initialValues,
6482
- editFormInited: true
6495
+ ...initialValues
6483
6496
  }
6484
6497
  ${options.initApiAdaptor || ''}
6485
6498
  return payload;
6486
6499
  `,
6500
+ responseData: {
6501
+ initialValues: "$$",
6502
+ editFormInited: true
6503
+ },
6487
6504
  data: data,
6488
6505
  headers: {
6489
6506
  Authorization: "Bearer ${context.tenantId},${context.authToken}"
@@ -6890,6 +6907,8 @@ async function getObjectForm(objectSchema, ctx){
6890
6907
  },
6891
6908
  labelAlign,
6892
6909
  persistData: false,
6910
+ resetAfterSubmit: true,
6911
+ preventEnterSubmit: true,
6893
6912
  promptPageLeave: true,
6894
6913
  canAccessSuperData: false,
6895
6914
  name: `form_edit_${recordId}`,
@@ -6927,10 +6946,14 @@ async function getObjectForm(objectSchema, ctx){
6927
6946
  },
6928
6947
  "expression": `\${_master.objectName != '${objectSchema.name}' && _master.objectName}`
6929
6948
  },
6930
- {
6931
- "args": {},
6932
- "actionType": "closeDialog"
6933
- }
6949
+ // {
6950
+ // "actionType": "custom",
6951
+ // "script": "debugger;"
6952
+ // },
6953
+ // {
6954
+ // "args": {},
6955
+ // "actionType": "closeDialog"
6956
+ // }
6934
6957
  ]
6935
6958
  }
6936
6959
  }
@@ -7448,13 +7471,17 @@ async function getTableApi(mainObject, fields, options){
7448
7471
  }
7449
7472
 
7450
7473
  api.data.$term = "$term";
7474
+ api.data.term = "$term";
7451
7475
  api.data.$self = "$$";
7476
+ api.data.self = "$$";
7452
7477
  api.data.filter = "$filter";
7453
7478
  api.data.loaded = "${loaded}";
7454
7479
  api.data.listViewId = "${listViewId}";
7455
7480
  api.requestAdaptor = `
7456
7481
  // selfData 中的数据由 CRUD 控制. selfData中,只能获取到 CRUD 给定的data. 无法从数据链中获取数据.
7457
7482
  let selfData = JSON.parse(JSON.stringify(api.data.$self));
7483
+ // 保留一份初始data,以供自定义发送适配器中获取原始数据。
7484
+ const data = _.cloneDeep(api.data);
7458
7485
  try{
7459
7486
  // TODO: 不应该直接在这里取localStorage,应该从外面传入
7460
7487
  const listViewId = api.data.listViewId;
@@ -7638,29 +7665,9 @@ async function getTableApi(mainObject, fields, options){
7638
7665
  })
7639
7666
 
7640
7667
  if(enable_tree){
7641
- const records = payload.data.rows;
7642
- const treeRecords = [];
7643
- const getChildren = (records, childrenIds)=>{
7644
- if(!childrenIds){
7645
- return;
7646
- }
7647
- const children = _.filter(records, (record)=>{
7648
- return _.includes(childrenIds, record._id)
7649
- });
7650
- _.each(children, (item)=>{
7651
- if(item.children){
7652
- item.children = getChildren(records, item.children)
7653
- }
7654
- })
7655
- return children;
7656
- }
7657
-
7658
- _.each(records, (record)=>{
7659
- if(!record.parent){
7660
- treeRecords.push(Object.assign({}, record, {children: getChildren(records, record.children)}));
7661
- }
7662
- });
7663
- payload.data.rows = treeRecords;
7668
+ const records = payload.data.rows || [];
7669
+ const getTreeOptions = SteedosUI.getTreeOptions
7670
+ payload.data.rows = getTreeOptions(records,{"valueField":"_id"});
7664
7671
  }
7665
7672
 
7666
7673
 
@@ -8353,7 +8360,7 @@ const getRecordPermissions = async (objectName, recordId)=>{
8353
8360
  * @Author: baozhoutao@steedos.com
8354
8361
  * @Date: 2022-07-05 15:55:39
8355
8362
  * @LastEditors: Please set LastEditors
8356
- * @LastEditTime: 2023-04-11 13:13:00
8363
+ * @LastEditTime: 2023-04-20 11:43:14
8357
8364
  * @Description:
8358
8365
  */
8359
8366
 
@@ -8450,10 +8457,12 @@ async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObj
8450
8457
  mainRelated[arr[0]] = arr[1];
8451
8458
  }
8452
8459
  }else {
8453
- const details = mainObjectUiSchema.details || [];
8460
+ const details = ___default.union(mainObjectUiSchema.details,mainObjectUiSchema.lookup_details) || [];
8454
8461
  for (const detail of details) {
8455
8462
  const arr = detail.split(".");
8456
- mainRelated[arr[0]] = arr[1];
8463
+ if(!___default.has(mainRelated,arr[0])){
8464
+ mainRelated[arr[0]] = arr[1];
8465
+ }
8457
8466
  }
8458
8467
  }
8459
8468
  }
@@ -8658,13 +8667,17 @@ async function getRelatedListSchema(
8658
8667
  delete ctx.globalFilter;
8659
8668
 
8660
8669
  const adaptor = `
8661
- if(setDataToComponentId){
8662
- if(payload.data.count){
8663
- setTimeout(function(){
8664
- window.$("." + setDataToComponentId + " .antd-Crud").removeClass("hidden");
8665
- }, 10);
8666
- }
8667
- };
8670
+ try{
8671
+ if(setDataToComponentId){
8672
+ if(payload.data.count){
8673
+ setTimeout(function(){
8674
+ window.$("." + setDataToComponentId + " .antd-Crud").removeClass("hidden");
8675
+ }, 10);
8676
+ }
8677
+ };
8678
+ }catch(e){
8679
+ console.log(e);
8680
+ }
8668
8681
  `;
8669
8682
  const amisSchema = {
8670
8683
  "type": "steedos-object-table",
@@ -8675,7 +8688,8 @@ async function getRelatedListSchema(
8675
8688
  "filtersFunction": filtersFunction,
8676
8689
  "sort": listViewSort,
8677
8690
  "filterVisible": false,
8678
- adaptor,
8691
+ "requestAdaptor": ctx.requestAdaptor,
8692
+ "adaptor": adaptor + ctx.adaptor || '',
8679
8693
  "ctx": ctx
8680
8694
  };
8681
8695
  // console.log(`getRelatedListSchema amisSchema`, amisSchema);
@@ -12711,7 +12725,7 @@ var AmisObjectListView = function (props) { return __awaiter(void 0, void 0, voi
12711
12725
  "actions": [
12712
12726
  {
12713
12727
  "args": {
12714
- "url": "/app/${appId}/${objectName}/view/${event.data.result.data.recordId}?display=${ls:page.display || 'grid'}&side_object=${objectName}&side_listview_id=${listName}",
12728
+ "url": "/app/${appId}/${objectName}/view/${event.data.result.data.recordId}?display=${ls:page_display || 'grid'}&side_object=${objectName}&side_listview_id=${listName}",
12715
12729
  "blank": false
12716
12730
  },
12717
12731
  "actionType": "link",
@@ -13001,11 +13015,11 @@ var AmisRecordService = function (props) { return __awaiter(void 0, void 0, void
13001
13015
  }); };
13002
13016
 
13003
13017
  var AmisRecordDetailRelatedList = function (props) { return __awaiter(void 0, void 0, void 0, function () {
13004
- var objectApiName, recordId, relatedObjectApiName, relatedKey, top, perPage, appId, relatedLabel, _a, className, columns, sort, filters, visible_on, formFactor, schema;
13018
+ var objectApiName, recordId, relatedObjectApiName, relatedKey, top, perPage, hiddenEmptyTable, appId, relatedLabel, _a, className, columns, sort, filters, visible_on, requestAdaptor, adaptor, formFactor, schema;
13005
13019
  return __generator(this, function (_b) {
13006
13020
  switch (_b.label) {
13007
13021
  case 0:
13008
- objectApiName = props.objectApiName, recordId = props.recordId, relatedObjectApiName = props.relatedObjectApiName, props.data, relatedKey = props.relatedKey, top = props.top, perPage = props.perPage, appId = props.appId, relatedLabel = props.relatedLabel, _a = props.className, className = _a === void 0 ? '' : _a, columns = props.columns, sort = props.sort, filters = props.filters, visible_on = props.visible_on;
13022
+ objectApiName = props.objectApiName, recordId = props.recordId, relatedObjectApiName = props.relatedObjectApiName, props.data, relatedKey = props.relatedKey, top = props.top, perPage = props.perPage, hiddenEmptyTable = props.hiddenEmptyTable, appId = props.appId, relatedLabel = props.relatedLabel, _a = props.className, className = _a === void 0 ? '' : _a, columns = props.columns, sort = props.sort, filters = props.filters, visible_on = props.visible_on, requestAdaptor = props.requestAdaptor, adaptor = props.adaptor;
13009
13023
  formFactor = props.formFactor;
13010
13024
  if (!formFactor) {
13011
13025
  formFactor = window.innerWidth < 768 ? 'SMALL' : 'LARGE';
@@ -13020,7 +13034,7 @@ var AmisRecordDetailRelatedList = function (props) { return __awaiter(void 0, vo
13020
13034
  "className": "mb-3"
13021
13035
  }];
13022
13036
  }
13023
- return [4 /*yield*/, getRecordDetailRelatedListSchema(objectApiName, recordId, relatedObjectApiName, relatedKey, { top: top, perPage: perPage, appId: appId, relatedLabel: relatedLabel, className: className, formFactor: formFactor, columns: columns, sort: sort, filters: filters, visible_on: visible_on, isRelated: true })];
13037
+ return [4 /*yield*/, getRecordDetailRelatedListSchema(objectApiName, recordId, relatedObjectApiName, relatedKey, { top: top, perPage: perPage, appId: appId, relatedLabel: relatedLabel, className: className, formFactor: formFactor, columns: columns, sort: sort, filters: filters, visible_on: visible_on, isRelated: true, hiddenEmptyTable: hiddenEmptyTable, requestAdaptor: requestAdaptor, adaptor: adaptor })];
13024
13038
  case 1:
13025
13039
  schema = (_b.sent()).amisSchema;
13026
13040
  return [2 /*return*/, schema];
@@ -13446,31 +13460,37 @@ var AmisLogo = function (props) { return __awaiter(void 0, void 0, void 0, funct
13446
13460
  }); };
13447
13461
 
13448
13462
  var AmisAppMenu = function (props) { return __awaiter(void 0, void 0, void 0, function () {
13449
- var _a, stacked, overflow, appId, data, _b, links, _c, showIcon, _d, className, _e, indentSize, selectedId;
13463
+ var _a, stacked, overflow, appId, data, _b, links, _c, showIcon, _d, className, _e, indentSize, selectedId, schema;
13450
13464
  return __generator(this, function (_f) {
13451
13465
  _a = props.stacked, stacked = _a === void 0 ? false : _a, overflow = props.overflow, appId = props.appId, data = props.data, _b = props.links, links = _b === void 0 ? null : _b, _c = props.showIcon, showIcon = _c === void 0 ? true : _c, _d = props.className, className = _d === void 0 ? '' : _d, _e = props.indentSize, indentSize = _e === void 0 ? 12 : _e, selectedId = props.selectedId;
13452
13466
  if (!appId) {
13453
13467
  appId = data.context.appId || 'admin';
13454
13468
  }
13455
13469
  // console.log(`AmisAppMenu appId`, appId)
13456
- // console.log(`AmisAppMenu`, props)
13457
- return [2 /*return*/, {
13458
- "type": "nav",
13459
- className: "".concat(className),
13460
- "stacked": stacked,
13461
- "overflow": overflow,
13462
- "indentSize": indentSize,
13463
- "links": links,
13464
- "source": {
13465
- "method": "get",
13466
- "url": "${context.rootUrl}/service/api/apps/".concat(appId, "/menus"),
13467
- "adaptor": "\n try {\n const data = { nav: [] };\n const stacked = ".concat(stacked, ";\n const showIcon = ").concat(showIcon, ";\n const selectedId = '").concat(selectedId, "';\n if(stacked){\n _.each(_.groupBy(payload.children, 'group'), (tabs, groupName) => {\n if (groupName === 'undefined' || groupName === '') {\n _.each(tabs, (tab) => {\n data.nav.push({\n \"label\": showIcon ? {\n type: 'tpl',\n tpl: `<span class='fill-slate-500 text-slate-700 block -ml-px no-underline group flex items-center text-[15px] font-medium rounded-md'><svg class=\"mr-1 flex-shrink-0 h-6 w-6\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || 'account'}\"></use></svg>${tab.name}</span>`\n } : tab.name,\n \"to\": tab.path,\n // active: selectedId === tab.id,\n })\n })\n } else {\n data.nav.push({\n \"label\": groupName,\n \"unfolded\": true,\n \"children\": _.map(tabs, (tab) => {\n return {\n \"label\": showIcon ? {\n type: 'tpl',\n tpl: `<span class='fill-slate-500 text-slate-700 block -ml-px no-underline group flex items-center text-[15px] font-medium rounded-md'><svg class=\"mr-1 flex-shrink-0 h-6 w-6\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || 'account'}\"></use></svg>${tab.name}</span>`\n } : tab.name,\n \"to\": tab.path,\n // active: selectedId === tab.id,\n }\n })\n }) \n }\n });\n }else{\n _.each(payload.children, (tab)=>{\n data.nav.push({\n \"label\": showIcon ? {\n type: 'tpl',\n tpl: `<span class='fill-slate-500 text-slate-700 block -ml-px no-underline group flex items-center text-[15px] font-medium rounded-md'><svg class=\"mr-1 flex-shrink-0 h-6 w-6\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || 'account'}\"></use></svg>${tab.name}</span>`\n } : tab.name,\n \"to\": tab.path,\n // active: selectedId === tab.id,\n });\n })\n }\n \n payload.data = data.nav;\n } catch (error) {\n console.log(`error`, error)\n }\n return payload;\n "),
13468
- "headers": {
13469
- "Authorization": "Bearer ${context.tenantId},${context.authToken}"
13470
- },
13471
- "sendOn": "".concat(!!!links)
13472
- },
13473
- }];
13470
+ console.log("AmisAppMenu", appId, props);
13471
+ if (links) {
13472
+ return [2 /*return*/, {
13473
+ "type": "nav",
13474
+ className: "".concat(className),
13475
+ "stacked": stacked,
13476
+ "overflow": overflow,
13477
+ "indentSize": indentSize,
13478
+ "links": links
13479
+ }];
13480
+ }
13481
+ schema = {
13482
+ type: 'service',
13483
+ schemaApi: {
13484
+ "method": "get",
13485
+ "url": "${context.rootUrl}/service/api/apps/".concat(appId, "/menus?try=1111111"),
13486
+ "adaptor": "\n try {\n console.log('payload====>', payload)\n if(payload.nav_schema){\n payload.data = payload.nav_schema;\n return payload\n }\n\n const data = { nav: [] };\n const stacked = ".concat(stacked, ";\n const showIcon = ").concat(showIcon, ";\n const selectedId = '").concat(selectedId, "';\n if(stacked){\n _.each(_.groupBy(payload.children, 'group'), (tabs, groupName) => {\n if (groupName === 'undefined' || groupName === '') {\n _.each(tabs, (tab) => {\n data.nav.push({\n \"label\": showIcon ? {\n type: 'tpl',\n tpl: `<span class='fill-slate-500 text-slate-700 block -ml-px no-underline group flex items-center text-[15px] font-medium rounded-md'><svg class=\"mr-1 flex-shrink-0 h-6 w-6\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || 'account'}\"></use></svg>${tab.name}</span>`\n } : tab.name,\n \"to\": tab.path,\n \"target\":tab.target\n // active: selectedId === tab.id,\n })\n })\n } else {\n data.nav.push({\n \"label\": groupName,\n \"unfolded\": true,\n \"children\": _.map(tabs, (tab) => {\n return {\n \"label\": showIcon ? {\n type: 'tpl',\n tpl: `<span class='fill-slate-500 text-slate-700 block -ml-px no-underline group flex items-center text-[15px] font-medium rounded-md'><svg class=\"mr-1 flex-shrink-0 h-6 w-6\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || 'account'}\"></use></svg>${tab.name}</span>`\n } : tab.name,\n \"to\": tab.path,\n \"target\":tab.target\n // active: selectedId === tab.id,\n }\n })\n }) \n }\n });\n }else{\n _.each(payload.children, (tab)=>{\n data.nav.push({\n \"label\": showIcon ? {\n type: 'tpl',\n tpl: `<span class='fill-slate-500 text-slate-700 block -ml-px no-underline group flex items-center text-[15px] font-medium rounded-md'><svg class=\"mr-1 flex-shrink-0 h-6 w-6\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || 'account'}\"></use></svg>${tab.name}</span>`\n } : tab.name,\n \"to\": tab.path,\n \"target\":tab.target\n // active: selectedId === tab.id,\n });\n })\n }\n payload.data = {\n \"type\": \"nav\",\n className: \"").concat(className, "\",\n \"stacked\": ").concat(stacked, ",\n \"overflow\": ").concat(JSON.stringify(overflow), ",\n \"indentSize\": ").concat(indentSize, ",\n \"links\": data.nav,\n };\n } catch (error) {\n console.log(`error`, error)\n }\n console.log('payload===2==>', payload)\n return payload;\n "),
13487
+ "headers": {
13488
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
13489
+ }
13490
+ }
13491
+ };
13492
+ console.log("schema=====>", schema);
13493
+ return [2 /*return*/, schema];
13474
13494
  });
13475
13495
  }); };
13476
13496
 
@@ -13722,6 +13742,10 @@ var AmisGlobalHeader = function (props) { return __awaiter(void 0, void 0, void
13722
13742
  "color": "#FFFFFF"
13723
13743
  },
13724
13744
  size: 30
13745
+ },
13746
+ {
13747
+ "type": "tpl",
13748
+ "tpl": "<span id=\"headerName\" class=\"user-name text-overflow \" style=\"display: none;height: 30px;line-height: 30px;font-size: 16px;font-weight: bold;margin-left: 10px;\">${global.user.name}<i class=\"fa fa-angle-down\" style=\"margin-left: 4px;\"></i></span>"
13725
13749
  }
13726
13750
  ],
13727
13751
  "overlay": [
@@ -14157,7 +14181,7 @@ var PageObject = function (props) { return __awaiter(void 0, void 0, void 0, fun
14157
14181
  });
14158
14182
  }); };
14159
14183
 
14160
- var __assign=function(){return (__assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},StandardObjects={Base:{Actions:{standard_query:{visible:function(e,t,r){return !1}},standard_new:{visible:function(e,t,r){return "cms_files"!==e&&"instances"!==e&&(r?r.allowCreate:void 0)}},standard_edit:{visible:function(e,t,r){if(r)return r.allowEdit}},standard_delete:{visible:function(e,t,r){if(r)return r.allowDelete}},standard_import_data:{visible:function(e,t,r){var n=this.object;if(r)return r.allowCreate&&n.hasImportTemplates}},standard_approve:{visible:function(e,t,r){return !1}},standard_view_instance:{visible:function(e,t,r){return !1}},standard_submit_for_approval:{visible:function(e,t,r){return window.Steedos.ProcessManager.allowSubmit.apply(this,[e,t])},todo:function(e,t){return window.Steedos.ProcessManager.submit.apply(this,[e,t])}},standard_follow:{visible:function(e,t,r){return !1}},standard_delete_many:{visible:function(e,t,r){return !RegExp("\\w+/view/\\w+").test(location.pathname)&&(r?r.allowDelete:void 0)}}}}},authRequest=function(e,t){var a=null;e=Steedos.absoluteUrl(e);try{var r=[{name:"Content-Type",value:"application/json"},{name:"Authorization",value:Steedos.getAuthorization()}],n={type:"get",url:e,dataType:"json",contentType:"application/json",beforeSend:function(t){if(r&&r.length)return r.forEach(function(e){return t.setRequestHeader(e.name,e.value)})},success:function(e){a=e;},error:function(e,t,r){var n,o;e.responseJSON&&e.responseJSON.error?(n=e.responseJSON.error,o=void(a={error:n}),o=n.reason||n.message||n,console.error(o)):console.error(e.responseJSON);}};return $.ajax(Object.assign({},n,t)),a}catch(e){console.error(e);}};function _extends(){return (_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r,n=arguments[t];for(r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r]);}return e}).apply(this,arguments)}const newFunctionComponent=o=>e=>{const[t,r]=React.useState(!0);var n=()=>{r(!1);};return ___default.has(e,"ref")||(window.SteedosUI.refs[e.name]={show:()=>{r(!0);},close:n}),React__default["default"].createElement(o,_extends({visible:t,onCancel:n,onClose:n},{width:"70%",style:{width:"70%",maxWidth:"950px",minWidth:"480px"}},e))},newComponentRender=(r,n)=>(e,t)=>{e.name||(e.name=r+"-"+(e.name||"default")),(t=t||document.getElementById(`steedos-${r}-root-`+e.name))||((t=document.createElement("div")).setAttribute("id",`steedos-${r}-root-`+e.name),document.body.appendChild(t));e=React__default["default"].createElement(newFunctionComponent(n),e);ReactDOM.createRoot(t).render(e);},Modal=___default.assign(newComponentRender("modal",antd.Modal),{info:antd.Modal.info,success:antd.Modal.success,error:antd.Modal.error,warning:antd.Modal.warning,confirm:antd.Modal.confirm}),Drawer=newComponentRender("drawer",antd.Drawer),getGraphqlFieldsQuery=e=>{const t=["_id"];return e.push("record_permissions"),___default.each(e,e=>{-1<e.indexOf(".")&&(e=e.split(".")[0]),t.push(""+e);}),""+t.join(" ")},getFindOneQuery=(e,t,r)=>{e=e.replace(/\./g,"_");r=getGraphqlFieldsQuery(r);let n="";t=[`id: "${t}"`];return `{record:${e}__findOne${n=0<t.length?`(${t.join(",")})`:n}{${r}}}`},SObject={getRecord:async(e,t,r)=>{return (await fetchAPI("/graphql",{method:"post",body:JSON.stringify({query:getFindOneQuery(e,t,r)})})).data.record},getUISchema:async(e,t)=>getUISchema(e,t)},canSaveFilter=e=>!(!e._id||e.owner!==getSteedosAuth()?.userId),ListView={showFilter:(e,{listView:t,data:r})=>{canSaveFilter(t);r.filters&&(r.filters=filtersToConditions(r.filters));},getVisibleFilter:(e,t)=>{return t||(canSaveFilter(e)?e.filters:void 0)},getQueryFilter:(e,t)=>{return canSaveFilter(e)?ListView.getVisibleFilter(e,t):___default.isEmpty(t)?e.filters:[e.filters,"and",t]},getFirstListView:async e=>{e=await window.getUISchema(e);return _.first(_.sortBy(_.values(e.list_views),"sort_no"))}},Router={getAppPath({appId:e}){return "/app/"+e},getPagePath(){},getObjectListViewPath({appId:e,objectName:t,listViewName:r}){return `/app/${e}/${t}/grid/`+r},getObjectDetailPath({appId:e,objectName:t,recordId:r}){return `/app/${e}/${t}/view/`+r},getObjectRelatedViewPath({appId:e,masterObjectName:t,masterRecordId:r,objectName:n,foreignKey:o}){return `/app/${e}/${t}/${r}/${n}/grid?related_field_name=`+o}};var withModalWrap=function(t,e){return function(e){return React.createElement(t,e)}},render=function(e,t,r,n){e=withModalWrap(e),e=React.createElement(e,__assign({},t));return ReactDOM__default["default"].render(e,r)};const safeRunFunction=(t,r,n,o)=>{try{var a=window.Creator;if(!!(!a||!a.getObjectUrl)&&/\bSteedos\b|\bCreator\b|\bMeteor\b|\bSession\b/.test(t))return console.info("调用了Creator|Steedos|Meteor|Session变量的脚本不执行,直接按空值处理。"),"";let e=[];return ___default.isNil(r)||(e=___default.isArray(r)?r:[r]),t.bind(o||{})(...e)}catch(e){return console.log(e),n}};function safeEval(js){try{return eval(js)}catch(e){console.error(e,js);}}const isExpression=function(e){var t,r;return "string"==typeof e&&(t=/^{{(function.+)}}$/,r=/^{{(.+=>.+)}}$/,!("string"!=typeof e||!e.match(/^{{(.+)}}$/)||e.match(t)||e.match(r)))},parseSingleExpression=function(t,e,r,n){var o,a=function(e,t){return "#"!==t&&t?"string"==typeof t?_.get(e,t):void console.error("path has to be a string"):e||{}}(e=void 0===e?{}:e,function(e){return "string"!=typeof e||1===(e=e.split(".")).length?"#":(e.pop(),e.join("."))}(r))||{};if("string"!=typeof t)return t;o="__G_L_O_B_A_L__",e="\n return "+t.substring(2,t.length-2).replace(/\bformData\b/g,JSON.stringify(e).replace(/\bglobal\b/g,o)).replace(/\bglobal\b/g,JSON.stringify(n)).replace(new RegExp("\\b"+o+"\\b","g"),"global").replace(/rootValue/g,JSON.stringify(a));try{return Function(e)()}catch(e){return console.log(e,t,r),t}};var Expression=Object.freeze({__proto__:null,isExpression:isExpression,parseSingleExpression:parseSingleExpression});const getCompatibleDefaultValueExpression=(e,t)=>{let r=e;return /^\{\w+(\.*\w+)*\}$/.test(e)&&(r=-1<e.indexOf("userId")||-1<e.indexOf("spaceId")||-1<e.indexOf("user.")||-1<e.indexOf("now")?`{${e}}`.replace("{{","{{global."):`{${e}}`.replace("{{","{{formData."),t&&(r=r.replace(/\{\{(.+)\}\}/,"{{[$1]}}"))),r},getFieldDefaultValue=(e,t)=>{if(!e)return null;let r=e.defaultValue;e._defaultValue&&(r=safeEval(`(${e._defaultValue})`)),___default.isFunction(r)&&(r=safeRunFunction(r,[],null,{name:e.name})),___default.isString(r)&&(r=getCompatibleDefaultValueExpression(r,e.multiple));var n=isExpression(r);return n&&(r=parseSingleExpression(r,{},"#",t)),"select"===e.type&&(t=e.data_type||"text",!r||n||e.multiple||("text"!==t||___default.isString(r)?"number"!==t||___default.isNumber(r)?"boolean"!==t||___default.isBoolean(r)||(r="true"===r):r=Number(r):r=String(r))),r};function getTreeOptions(t,e){const r=e?.unfoldedNum||1,n=[],o=(t,r,n)=>{var e;if(r)return e=_.filter(t,e=>_.includes(r,e.value)),_.each(e,e=>{1<=n?(e.unfolded=!0,e.children&&(e.children=o(t,e.children,n-1))):e.children&&(e.children=o(t,e.children,n));}),e};for(var a=t,i=0;i<a.length;i++)if(a[i].noParent=0,a[i].unfolded=!1,a[i].parent){let e=1;for(var s=0;s<a.length;s++)a[i].parent==a[s].value&&(e=0);1==e&&(a[i].noParent=1);}else a[i].noParent=1;return _.each(t,e=>{1==e.noParent&&(1<=r?(e.unfolded=!0,n.push(Object.assign({},e,{children:o(t,e.children,r-1)}))):n.push(Object.assign({},e,{children:o(t,e.children,r)})));}),n}const SteedosUI$1=Object.assign({},{render:render,Router:Router,ListView:ListView,Object:SObject,Modal:Modal,Drawer:Drawer,refs:{},getRef(e){return SteedosUI$1.refs[e]},router:{go:(e,t)=>{var r=window.FlowRouter;if(t)return r?r.go(t):window.open(t);r?r.reload():console.warn("暂不支持自动跳转",e);},reload:()=>{console.log("reload");}},message:antd.message,notification:antd.notification,components:{Button:antd.Button,Space:antd.Space},getRefId:({type:e,appId:t,name:r})=>{switch(e){case"listview":return `amis-${t}-${r}-listview`;case"form":return `amis-${t}-${r}-form`;case"detail":return `amis-${t}-${r}-detail`;default:return `amis-${t}-${r}-`+e}},reloadRecord:()=>{if(window.FlowRouter)return window.FlowRouter.reload()},getFieldDefaultValue:getFieldDefaultValue,getTreeOptions:getTreeOptions});var getBuilderContext=function(){return "undefined"==typeof window?{}:Builder.settings.context||Builder.settings},Steedos$1=__assign({getRootUrl:function(e){var t=getBuilderContext();return t.rootUrl||("undefined"!=typeof window?window.localStorage.getItem("steedos:rootUrl"):"")||e},absoluteUrl:function(e){return void 0===e&&(e=""),"".concat(Steedos$1.getRootUrl()).concat(e)},getTenantId:function(){try{var e=getBuilderContext().tenantId;return (e=window.location.search&&!e?new URLSearchParams(window.location.search).get("X-Space-Id"):e)?e:null}catch(e){console.error(e);}},getAuthorization:function(){try{var e=getBuilderContext(),t=e.tenantId,r=e.authToken;return t&&r?"Bearer ".concat(t,",").concat(r):null}catch(e){console.error(e);}},authRequest:authRequest,StandardObjects:StandardObjects},Expression);"undefined"==typeof window||window.Steedos||(window.Steedos=Steedos$1),"undefined"==typeof window||window.SteedosUI||(window.SteedosUI=SteedosUI$1);
14184
+ var __assign=function(){return (__assign=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},StandardObjects={Base:{Actions:{standard_query:{visible:function(e,t,r){return !1}},standard_new:{visible:function(e,t,r){return "cms_files"!==e&&"instances"!==e&&(r?r.allowCreate:void 0)}},standard_edit:{visible:function(e,t,r){if(r)return r.allowEdit}},standard_delete:{visible:function(e,t,r){if(r)return r.allowDelete}},standard_import_data:{visible:function(e,t,r){var n=this.object;if(r)return r.allowCreate&&n.hasImportTemplates}},standard_approve:{visible:function(e,t,r){return !1}},standard_view_instance:{visible:function(e,t,r){return !1}},standard_submit_for_approval:{visible:function(e,t,r){return window.Steedos.ProcessManager.allowSubmit.apply(this,[e,t])},todo:function(e,t){return window.Steedos.ProcessManager.submit.apply(this,[e,t])}},standard_follow:{visible:function(e,t,r){return !1}},standard_delete_many:{visible:function(e,t,r){return !RegExp("\\w+/view/\\w+").test(location.pathname)&&(r?r.allowDelete:void 0)}}}}},authRequest=function(e,t){var a=null;e=Steedos.absoluteUrl(e);try{var r=[{name:"Content-Type",value:"application/json"},{name:"Authorization",value:Steedos.getAuthorization()}],n={type:"get",url:e,dataType:"json",contentType:"application/json",beforeSend:function(t){if(r&&r.length)return r.forEach(function(e){return t.setRequestHeader(e.name,e.value)})},success:function(e){a=e;},error:function(e,t,r){var n,o;e.responseJSON&&e.responseJSON.error?(n=e.responseJSON.error,o=void(a={error:n}),o=n.reason||n.message||n,console.error(o)):console.error(e.responseJSON);}};return $.ajax(Object.assign({},n,t)),a}catch(e){console.error(e);}};function _extends(){return (_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r,n=arguments[t];for(r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r]);}return e}).apply(this,arguments)}const newFunctionComponent=o=>e=>{const[t,r]=React.useState(!0);var n=()=>{r(!1);};return ___default.has(e,"ref")||(window.SteedosUI.refs[e.name]={show:()=>{r(!0);},close:n}),React__default["default"].createElement(o,_extends({visible:t,onCancel:n,onClose:n},{width:"70%",style:{width:"70%",maxWidth:"950px",minWidth:"480px"}},e))},newComponentRender=(r,n)=>(e,t)=>{e.name||(e.name=r+"-"+(e.name||"default")),(t=t||document.getElementById(`steedos-${r}-root-`+e.name))||((t=document.createElement("div")).setAttribute("id",`steedos-${r}-root-`+e.name),document.body.appendChild(t));e=React__default["default"].createElement(newFunctionComponent(n),e);ReactDOM.createRoot(t).render(e);},Modal=___default.assign(newComponentRender("modal",antd.Modal),{info:antd.Modal.info,success:antd.Modal.success,error:antd.Modal.error,warning:antd.Modal.warning,confirm:antd.Modal.confirm}),Drawer=newComponentRender("drawer",antd.Drawer),getGraphqlFieldsQuery=e=>{const t=["_id"];return e.push("record_permissions"),___default.each(e,e=>{-1<e.indexOf(".")&&(e=e.split(".")[0]),t.push(""+e);}),""+t.join(" ")},getFindOneQuery=(e,t,r)=>{e=e.replace(/\./g,"_");r=getGraphqlFieldsQuery(r);let n="";t=[`id: "${t}"`];return `{record:${e}__findOne${n=0<t.length?`(${t.join(",")})`:n}{${r}}}`},SObject={getRecord:async(e,t,r)=>{return (await fetchAPI("/graphql",{method:"post",body:JSON.stringify({query:getFindOneQuery(e,t,r)})})).data.record},getUISchema:async(e,t)=>getUISchema(e,t)},canSaveFilter=e=>!(!e._id||e.owner!==getSteedosAuth()?.userId),ListView={showFilter:(e,{listView:t,data:r})=>{canSaveFilter(t);r.filters&&(r.filters=filtersToConditions(r.filters));},getVisibleFilter:(e,t)=>{return t||(canSaveFilter(e)?e.filters:void 0)},getQueryFilter:(e,t)=>{return canSaveFilter(e)?ListView.getVisibleFilter(e,t):___default.isEmpty(t)?e.filters:[e.filters,"and",t]},getFirstListView:async e=>{e=await window.getUISchema(e);return _.first(_.sortBy(_.values(e.list_views),"sort_no"))}},Router={getAppPath({appId:e}){return "/app/"+e},getPagePath(){},getObjectListViewPath({appId:e,objectName:t,listViewName:r}){return `/app/${e}/${t}/grid/`+r},getObjectDetailPath({appId:e,objectName:t,recordId:r}){return `/app/${e}/${t}/view/`+r},getObjectRelatedViewPath({appId:e,masterObjectName:t,masterRecordId:r,objectName:n,foreignKey:o}){return `/app/${e}/${t}/${r}/${n}/grid?related_field_name=`+o}};var withModalWrap=function(t,e){return function(e){return React.createElement(t,e)}},render=function(e,t,r,n){e=withModalWrap(e),e=React.createElement(e,__assign({},t));return ReactDOM__default["default"].render(e,r)};const safeRunFunction=(t,r,n,o)=>{try{var a=window.Creator;if(!!(!a||!a.getObjectUrl)&&/\bSteedos\b|\bCreator\b|\bMeteor\b|\bSession\b/.test(t))return console.info("调用了Creator|Steedos|Meteor|Session变量的脚本不执行,直接按空值处理。"),"";let e=[];return ___default.isNil(r)||(e=___default.isArray(r)?r:[r]),t.bind(o||{})(...e)}catch(e){return console.log(e),n}};function safeEval(js){try{return eval(js)}catch(e){console.error(e,js);}}const isExpression=function(e){var t,r;return "string"==typeof e&&(t=/^{{(function.+)}}$/,r=/^{{(.+=>.+)}}$/,!("string"!=typeof e||!e.match(/^{{(.+)}}$/)||e.match(t)||e.match(r)))},parseSingleExpression=function(t,e,r,n){var o,a=function(e,t){return "#"!==t&&t?"string"==typeof t?_.get(e,t):void console.error("path has to be a string"):e||{}}(e=void 0===e?{}:e,function(e){return "string"!=typeof e||1===(e=e.split(".")).length?"#":(e.pop(),e.join("."))}(r))||{};if("string"!=typeof t)return t;o="__G_L_O_B_A_L__",e="\n return "+t.substring(2,t.length-2).replace(/\bformData\b/g,JSON.stringify(e).replace(/\bglobal\b/g,o)).replace(/\bglobal\b/g,JSON.stringify(n)).replace(new RegExp("\\b"+o+"\\b","g"),"global").replace(/rootValue/g,JSON.stringify(a));try{return Function(e)()}catch(e){return console.log(e,t,r),t}};var Expression=Object.freeze({__proto__:null,isExpression:isExpression,parseSingleExpression:parseSingleExpression});const getCompatibleDefaultValueExpression=(e,t)=>{let r=e;return /^\{\w+(\.*\w+)*\}$/.test(e)&&(r=-1<e.indexOf("userId")||-1<e.indexOf("spaceId")||-1<e.indexOf("user.")||-1<e.indexOf("now")?`{${e}}`.replace("{{","{{global."):`{${e}}`.replace("{{","{{formData."),t&&(r=r.replace(/\{\{(.+)\}\}/,"{{[$1]}}"))),r},getFieldDefaultValue=(e,t)=>{if(!e)return null;let r=e.defaultValue;e._defaultValue&&(r=safeEval(`(${e._defaultValue})`)),___default.isFunction(r)&&(r=safeRunFunction(r,[],null,{name:e.name})),___default.isString(r)&&(r=getCompatibleDefaultValueExpression(r,e.multiple));var n=isExpression(r);return n&&(r=parseSingleExpression(r,{},"#",t)),"select"===e.type&&(t=e.data_type||"text",!r||n||e.multiple||("text"!==t||___default.isString(r)?"number"!==t||___default.isNumber(r)?"boolean"!==t||___default.isBoolean(r)||(r="true"===r):r=Number(r):r=String(r))),r};function getTreeOptions(t,e){const o=e?.valueField||"value";e?.labelField;const r=e?.unfoldedNum||1,n=[],a=(t,r,n)=>{var e;if(r)return e=_.filter(t,e=>_.includes(r,e[o])),_.each(e,e=>{1<=n?(e.unfolded=!0,e.children&&(e.children=a(t,e.children,n-1))):e.children&&(e.children=a(t,e.children,n));}),e};for(var i=t,s=0;s<i.length;s++)if(i[s].noParent=0,i[s].unfolded=!1,i[s].parent){let e=1;for(var l=0;l<i.length;l++)i[s].parent==i[l][o]&&(e=0);1==e&&(i[s].noParent=1);}else i[s].noParent=1;return _.each(t,e=>{1==e.noParent&&(1<=r?(e.unfolded=!0,n.push(Object.assign({},e,{children:a(t,e.children,r-1)}))):n.push(Object.assign({},e,{children:a(t,e.children,r)})));}),n}const SteedosUI$1=Object.assign({},{render:render,Router:Router,ListView:ListView,Object:SObject,Modal:Modal,Drawer:Drawer,refs:{},getRef(e){return SteedosUI$1.refs[e]},router:{go:(e,t)=>{var r=window.FlowRouter;if(t)return r?r.go(t):window.open(t);r?r.reload():console.warn("暂不支持自动跳转",e);},reload:()=>{console.log("reload");}},message:antd.message,notification:antd.notification,components:{Button:antd.Button,Space:antd.Space},getRefId:({type:e,appId:t,name:r})=>{switch(e){case"listview":return `amis-${t}-${r}-listview`;case"form":return `amis-${t}-${r}-form`;case"detail":return `amis-${t}-${r}-detail`;default:return `amis-${t}-${r}-`+e}},reloadRecord:()=>{if(window.FlowRouter)return window.FlowRouter.reload()},getFieldDefaultValue:getFieldDefaultValue,getTreeOptions:getTreeOptions});var getBuilderContext=function(){return "undefined"==typeof window?{}:Builder.settings.context||Builder.settings},Steedos$1=__assign({getRootUrl:function(e){var t=getBuilderContext();return t.rootUrl||("undefined"!=typeof window?window.localStorage.getItem("steedos:rootUrl"):"")||e},absoluteUrl:function(e){return void 0===e&&(e=""),"".concat(Steedos$1.getRootUrl()).concat(e)},getTenantId:function(){try{var e=getBuilderContext().tenantId;return (e=window.location.search&&!e?new URLSearchParams(window.location.search).get("X-Space-Id"):e)?e:null}catch(e){console.error(e);}},getAuthorization:function(){try{var e=getBuilderContext(),t=e.tenantId,r=e.authToken;return t&&r?"Bearer ".concat(t,",").concat(r):null}catch(e){console.error(e);}},authRequest:authRequest,StandardObjects:StandardObjects},Expression);"undefined"==typeof window||window.Steedos||(window.Steedos=Steedos$1),"undefined"==typeof window||window.SteedosUI||(window.SteedosUI=SteedosUI$1);
14161
14185
 
14162
14186
  var index_esm = /*#__PURE__*/Object.freeze({
14163
14187
  __proto__: null,