@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.
@@ -719,7 +719,7 @@
719
719
  * @Author: baozhoutao@steedos.com
720
720
  * @Date: 2022-08-16 17:02:08
721
721
  * @LastEditors: baozhoutao@steedos.com
722
- * @LastEditTime: 2023-04-17 15:24:21
722
+ * @LastEditTime: 2023-04-19 15:25:50
723
723
  * @Description:
724
724
  */
725
725
 
@@ -731,7 +731,7 @@
731
731
  return urlSearch.get('display')
732
732
  }
733
733
  // const key = `tab.${tab_id}.display`;
734
- const key = `page.display`;
734
+ const key = `page_display`;
735
735
  const value = localStorage.getItem(key);
736
736
  return value ? value : 'grid'
737
737
  },
@@ -1753,8 +1753,8 @@
1753
1753
  /*
1754
1754
  * @Author: baozhoutao@steedos.com
1755
1755
  * @Date: 2022-11-01 15:51:00
1756
- * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
1757
- * @LastEditTime: 2023-04-16 17:04:16
1756
+ * @LastEditors: baozhoutao@steedos.com
1757
+ * @LastEditTime: 2023-04-19 20:26:27
1758
1758
  * @Description:
1759
1759
  */
1760
1760
 
@@ -1864,7 +1864,27 @@
1864
1864
  "id": "u:e11347411d2d",
1865
1865
  "closeOnEsc": false,
1866
1866
  "closeOnOutside": false,
1867
- "size": "lg"
1867
+ "size": "lg",
1868
+ "actions": [
1869
+ {
1870
+ type: 'button',
1871
+ actionType: 'cancel',
1872
+ label: "取消"
1873
+ },
1874
+ {
1875
+ type: 'button',
1876
+ label: "保存并新建",
1877
+ actionType: 'confirm',
1878
+ close: false,
1879
+ id: "confirmAndNew"
1880
+ },
1881
+ {
1882
+ type: 'button',
1883
+ actionType: 'confirm',
1884
+ label: "保存",
1885
+ primary: true
1886
+ },
1887
+ ]
1868
1888
  }
1869
1889
  }
1870
1890
  ]
@@ -2766,96 +2786,97 @@
2766
2786
  }
2767
2787
  }
2768
2788
 
2769
- async function getObjectFieldsFilterFormSchema(objectSchema, fields, ctx) {
2770
- if(!ctx){
2789
+ async function getObjectFieldsFilterFormSchema(ctx) {
2790
+
2791
+ if (!ctx) {
2771
2792
  ctx = {};
2772
2793
  }
2773
- const body = [];
2774
- for (let field of fields) {
2775
- if (
2776
- !___default.includes(
2777
- [
2778
- "grid",
2779
- "avatar",
2780
- "image",
2781
- "object",
2782
- "[object]",
2783
- "[Object]",
2784
- "[grid]",
2785
- "[text]",
2786
- "audio",
2787
- "file",
2788
- ],
2789
- field.type
2790
- )
2791
- ) {
2792
- delete field.defaultValue;
2793
- delete field.required;
2794
- delete field.is_wide;
2795
- delete field.readonly;
2796
- delete field.hidden;
2797
- delete field.omit;
2798
- const amisField = await getFieldSearchable(field, fields, ctx);
2799
- if (amisField) {
2800
- body.push(amisField);
2794
+ const formSchema = {
2795
+ "type": "service",
2796
+ "visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
2797
+ "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",
2798
+ "schemaApi": {
2799
+ method: 'post',
2800
+ url: `\${context.rootUrl}/graphql?reload=\${filterFormSearchableFields|join}`,
2801
+ data: {
2802
+ $self: "$$",
2803
+ query: "{\n data: objects(filters: [[\"_id\",\"=\",null]],top: 1, skip: 0){_id}\n }"
2804
+ },
2805
+ requestAdaptor: `
2806
+ return {
2807
+ ...api,
2808
+ data: {
2809
+ query: api.data.query
2801
2810
  }
2802
- }
2803
- }
2804
- ___default.map(body, "name");
2805
- if(ctx.enableSearchableFieldsVisibleOn){
2806
- body.forEach(function(fieldItem){
2807
- fieldItem.visibleOn = `this.filterFormSearchableFields && this.filterFormSearchableFields.indexOf("${fieldItem.fieldName}") > -1`;
2808
- // fieldItem.clearValueOnHidden = true;//这个属性会把form字段值删除,但是点击搜索时crud还是把值给传递到过滤条件(api.requestAdaptor的data.$self)中了,应该是crud的bug
2809
- });
2810
- }
2811
+ };
2812
+ `,
2813
+ adaptor: `
2814
+ if(payload.errors){
2815
+ payload.status = 2;
2816
+ payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;
2817
+ }
2818
+ const selfData = api.body.$self;
2819
+ const filterFormSearchableFields = selfData.filterFormSearchableFields;
2820
+ const uiSchema = selfData.uiSchema;
2821
+ const fields = uiSchema.fields;
2822
+ const searchableFields = [];
2811
2823
 
2812
- // const onBroadcastSearchableFieldsChangeScript = `
2813
- // const data = event.data;
2814
- // const listViewId = data.listViewId;
2815
- // const searchableFields = data.fields;
2816
- // const preSearchableFields = data.__super.__super.fields;
2817
- // const removedFields = _.difference(preSearchableFields, searchableFields);
2818
- // const listViewPropsStoreKey = location.pathname + "/crud/" + listViewId ;
2819
- // let localListViewProps = localStorage.getItem(listViewPropsStoreKey);
2820
- // if(localListViewProps){
2821
- // // 当变更可搜索字段时,如果被移除的可搜索字段在本地存储中已经存入过滤条件中则应该清除本地存储中相关字段的过滤条件。
2822
- // localListViewProps = JSON.parse(localListViewProps);
2823
- // let removedKeys = [];
2824
- // _.each(localListViewProps, function(n,k){
2825
- // // __searchable__开头的不在searchableFields范围则清除其值
2826
- // let isRemoved = !!removedFields.find(function(fieldName){
2827
- // return new RegExp("__searchable__\.*" + fieldName + "$").test(k);
2828
- // });
2829
- // if(isRemoved){
2830
- // removedKeys.push(k);
2831
- // }
2832
- // });
2833
- // const removedValues = {};
2834
- // removedKeys.forEach(function(key){
2835
- // delete localListViewProps[key];
2836
- // removedValues[key] = "";
2837
- // });
2838
- // doAction({
2839
- // actionType: 'setValue',
2840
- // args: {
2841
- // value: removedValues
2842
- // }
2843
- // });
2844
- // localStorage.setItem(listViewPropsStoreKey, JSON.stringify(localListViewProps));
2845
- // }
2846
- // `;
2824
+ const resolveAll = function(values){
2825
+ payload.data = {
2826
+ "body": values
2827
+ };
2828
+ return payload;
2829
+ }
2830
+
2831
+ const rejectAll = function(){
2832
+ console.warn("run function getFieldSearchable failed.");
2833
+ }
2847
2834
 
2848
- return body;
2835
+ return Promise.all(filterFormSearchableFields.map(function (item) {
2836
+ const field = _.clone(fields[item]);
2837
+ if (
2838
+ !_.includes(
2839
+ [
2840
+ "grid",
2841
+ "avatar",
2842
+ "image",
2843
+ "object",
2844
+ "[object]",
2845
+ "[Object]",
2846
+ "[grid]",
2847
+ "[text]",
2848
+ "audio",
2849
+ "file",
2850
+ ],
2851
+ field.type
2852
+ )
2853
+ ) {
2854
+ delete field.defaultValue;
2855
+ delete field.required;
2856
+ delete field.is_wide;
2857
+ delete field.readonly;
2858
+ delete field.hidden;
2859
+ delete field.omit;
2860
+ var ctx = ${JSON.stringify(ctx)};
2861
+ const amisField = window.getFieldSearchable(field, fields, ctx);
2862
+ return amisField;
2863
+ }
2864
+ })).then(resolveAll, rejectAll);
2865
+ `,
2866
+ headers: {
2867
+ Authorization: "Bearer ${context.tenantId},${context.authToken}"
2868
+ }
2869
+ }
2870
+ };
2871
+
2872
+ return formSchema;
2849
2873
  }
2850
2874
 
2851
- async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
2852
- // console.log(ctx)
2853
- if(!ctx){
2875
+ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
2876
+ if (!ctx) {
2854
2877
  ctx = {};
2855
2878
  }
2856
- const filterFormSchema = await getObjectFieldsFilterFormSchema(objectSchema, fields, Object.assign({}, {
2857
- enableSearchableFieldsVisibleOn: true
2858
- }, ctx));
2879
+ const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);
2859
2880
  const onSearchScript = `
2860
2881
  const scope = event.context.scoped;
2861
2882
  var filterForm = scope.parent.parent.getComponents().find(function(n){
@@ -2888,18 +2909,21 @@
2888
2909
  searchableFieldsStoreKey += listViewId;
2889
2910
  }
2890
2911
  let defaultSearchableFields = sessionStorage.getItem(searchableFieldsStoreKey);
2891
- if(!defaultSearchableFields && data.uiSchema){
2912
+ if(defaultSearchableFields){
2913
+ defaultSearchableFields = defaultSearchableFields.split(",");
2914
+ }
2915
+ if(_.isEmpty(defaultSearchableFields) && data.uiSchema){
2892
2916
  let listView = data.uiSchema.list_views[data.listName];
2893
- defaultSearchableFields = listView && listView.searchable_fields;
2894
- if(defaultSearchableFields && defaultSearchableFields.length){
2895
- defaultSearchableFields = _.map(defaultSearchableFields, 'field');
2917
+ const sFields = listView && listView.searchable_fields;
2918
+ if(sFields && sFields.length){
2919
+ defaultSearchableFields = _.map(sFields, 'field');
2896
2920
  }
2897
2921
  }
2898
2922
  if(_.isEmpty(defaultSearchableFields) && data.uiSchema){
2899
2923
  defaultSearchableFields = _.map(
2900
- _.filter(_.values(data.uiSchema.fields), (field) => {
2924
+ _.sortBy(_.filter(_.values(data.uiSchema.fields), (field) => {
2901
2925
  return field.searchable;
2902
- }),
2926
+ }), "sort_no"),
2903
2927
  "name"
2904
2928
  );
2905
2929
  }
@@ -3037,7 +3061,7 @@
3037
3061
  // "filterFormValues": {"__searchable__name": "xxx"},//搜索项表单值
3038
3062
  // "listViewId": "${listViewId}"
3039
3063
  },
3040
- "id": `service_listview_filter_form_${objectSchema.name}`,
3064
+ // "id": `service_listview_filter_form_${objectSchema.name}`,
3041
3065
  "dataProvider": {
3042
3066
  "inited": dataProviderInited
3043
3067
  },
@@ -3045,15 +3069,7 @@
3045
3069
  "type": "wrapper",
3046
3070
  "body": {
3047
3071
  "type": "wrapper",
3048
- "body": [{
3049
- "type": "wrapper",
3050
- "body": [
3051
- filterFormSchema
3052
- ],
3053
- "size": "xs",
3054
- "visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
3055
- "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"
3056
- }, {
3072
+ "body": [filterFormSchema, {
3057
3073
  "type": "wrapper",
3058
3074
  "body": {
3059
3075
  "type": "wrapper",
@@ -3412,16 +3428,7 @@
3412
3428
  * @returns amisSchema
3413
3429
  */
3414
3430
  async function getObjectListHeaderFieldsFilterBar(objectSchema, listViewName, ctx) {
3415
- const searchableFields = ___default.keys(objectSchema.fields);
3416
- const fields = ___default.sortBy(
3417
- ___default.compact(
3418
- ___default.map(searchableFields, (fieldName) => {
3419
- return objectSchema.fields[fieldName];
3420
- })
3421
- ),
3422
- "sort_no"
3423
- );
3424
- const fieldsFilterBarSchema = await getObjectFieldsFilterBarSchema(objectSchema, fields, ctx);
3431
+ const fieldsFilterBarSchema = await getObjectFieldsFilterBarSchema(objectSchema, ctx);
3425
3432
  return fieldsFilterBarSchema;
3426
3433
  }
3427
3434
 
@@ -4200,12 +4207,11 @@ setTimeout(()=>{
4200
4207
  "objectApiName": "object_listviews",
4201
4208
  "recordId": "${recordId}",
4202
4209
  "mode": "edit",
4203
- "initApiAdaptor": "",
4204
4210
  "fields": [
4205
4211
  "filters"
4206
4212
  ],
4207
4213
  "initApiRequestAdaptor": "",
4208
- "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;",
4214
+ "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;",
4209
4215
  "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",
4210
4216
  "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}",
4211
4217
  "onEvent": {
@@ -4265,7 +4271,7 @@ setTimeout(()=>{
4265
4271
  "recordId": "${recordId}",
4266
4272
  "mode": "edit",
4267
4273
  "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}",
4268
- "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;",
4274
+ "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;",
4269
4275
  "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;",
4270
4276
  "fields": [
4271
4277
  "columns",
@@ -4347,7 +4353,7 @@ setTimeout(()=>{
4347
4353
  }
4348
4354
  },
4349
4355
  "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}",
4350
- "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;",
4356
+ "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;",
4351
4357
  "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"
4352
4358
  }
4353
4359
  ],
@@ -5046,13 +5052,9 @@ setTimeout(()=>{
5046
5052
  //TODO: 等待放大镜bug修复,if会去掉,始终显示放大镜
5047
5053
  if(referenceTo.objectName != "space_users" || field.reference_to_field != "user"){
5048
5054
  if (ctx.filterVisible !== false) {
5049
- let filterLoopCount = ctx.filterLoopCount || 0;
5050
- filterLoopCount++;
5051
- // 可以传入filterVisible为false防止死循环
5052
5055
  pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {
5053
5056
  isLookup: true,
5054
- ...ctx,
5055
- filterLoopCount,
5057
+ ...ctx
5056
5058
  });
5057
5059
  }
5058
5060
  }
@@ -6110,6 +6112,14 @@ setTimeout(()=>{
6110
6112
  convertData.visibleOn = `${field.visible_on.replace(/formData./g, 'data.')}`;
6111
6113
  }
6112
6114
  }
6115
+
6116
+ if(___default__namespace.isString(baseData.required)){
6117
+ if(baseData.required.startsWith("{{")){
6118
+ baseData.requiredOn = `${baseData.required.substring(2, baseData.required.length -2).replace(/formData./g, 'data.')}`;
6119
+ delete baseData.required;
6120
+ }
6121
+ }
6122
+
6113
6123
  if(convertData.type === 'group'){
6114
6124
  convertData.body[0] = Object.assign({}, baseData, convertData.body[0], { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name});
6115
6125
  return convertData
@@ -6124,8 +6134,9 @@ setTimeout(()=>{
6124
6134
  }
6125
6135
 
6126
6136
  async function getFieldSearchable(perField, permissionFields, ctx){
6127
- const filterLoopCount = ctx.filterLoopCount || 0;
6128
- const maxFilterLoopCount = 5;
6137
+ if(!ctx){
6138
+ ctx = {};
6139
+ }
6129
6140
  let field = perField;
6130
6141
  if(field.type === 'grid'){
6131
6142
  field = await getGridFieldSubFields(perField, permissionFields);
@@ -6186,14 +6197,17 @@ setTimeout(()=>{
6186
6197
  _field.multiple = true;
6187
6198
  _field.is_wide = false;
6188
6199
  _field.defaultValue = undefined;
6189
- // filterVisible: false不再生成lookup字段时的filter,否则会死循环
6190
- const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true, filterVisible: filterLoopCount < maxFilterLoopCount}));
6200
+ const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true}));
6191
6201
  if(amisField){
6192
6202
  return amisField;
6193
6203
  }
6194
6204
  }
6195
6205
  }
6196
6206
 
6207
+ if(typeof window != 'undefined'){
6208
+ window.getFieldSearchable = getFieldSearchable;
6209
+ }
6210
+
6197
6211
  var index = /*#__PURE__*/Object.freeze({
6198
6212
  __proto__: null,
6199
6213
  OMIT_FIELDS: OMIT_FIELDS,
@@ -6454,12 +6468,12 @@ setTimeout(()=>{
6454
6468
  if(uiSchema.form){
6455
6469
  try{
6456
6470
  var objectFormConfig = JSON.parse(uiSchema.form);
6457
- initialValues = objectFormConfig.initialValues;
6458
- if(initialValues){
6459
- initialValues = new Function("return " + initialValues)();
6471
+ var formInitialValuesFun = objectFormConfig.initialValues;
6472
+ if(formInitialValuesFun){
6473
+ formInitialValuesFun = new Function("return " + formInitialValuesFun)();
6460
6474
  }
6461
- if(typeof initialValues === "function"){
6462
- initialValues = initialValues.apply({doc: defaultValues || {} })
6475
+ if(typeof formInitialValuesFun === "function"){
6476
+ initialValues = formInitialValuesFun.apply({doc: defaultValues || {} , global: api.body.global})
6463
6477
  }
6464
6478
  }
6465
6479
  catch(ex){
@@ -6476,12 +6490,15 @@ setTimeout(()=>{
6476
6490
  }
6477
6491
  // data下的变量需要在保存接口(getSaveApi)中被删除。
6478
6492
  payload.data = {
6479
- initialValues,
6480
- editFormInited: true
6493
+ ...initialValues
6481
6494
  }
6482
6495
  ${options.initApiAdaptor || ''}
6483
6496
  return payload;
6484
6497
  `,
6498
+ responseData: {
6499
+ initialValues: "$$",
6500
+ editFormInited: true
6501
+ },
6485
6502
  data: data,
6486
6503
  headers: {
6487
6504
  Authorization: "Bearer ${context.tenantId},${context.authToken}"
@@ -6888,6 +6905,8 @@ setTimeout(()=>{
6888
6905
  },
6889
6906
  labelAlign,
6890
6907
  persistData: false,
6908
+ resetAfterSubmit: true,
6909
+ preventEnterSubmit: true,
6891
6910
  promptPageLeave: true,
6892
6911
  canAccessSuperData: false,
6893
6912
  name: `form_edit_${recordId}`,
@@ -6925,10 +6944,14 @@ setTimeout(()=>{
6925
6944
  },
6926
6945
  "expression": `\${_master.objectName != '${objectSchema.name}' && _master.objectName}`
6927
6946
  },
6928
- {
6929
- "args": {},
6930
- "actionType": "closeDialog"
6931
- }
6947
+ // {
6948
+ // "actionType": "custom",
6949
+ // "script": "debugger;"
6950
+ // },
6951
+ // {
6952
+ // "args": {},
6953
+ // "actionType": "closeDialog"
6954
+ // }
6932
6955
  ]
6933
6956
  }
6934
6957
  }
@@ -7446,13 +7469,17 @@ setTimeout(()=>{
7446
7469
  }
7447
7470
 
7448
7471
  api.data.$term = "$term";
7472
+ api.data.term = "$term";
7449
7473
  api.data.$self = "$$";
7474
+ api.data.self = "$$";
7450
7475
  api.data.filter = "$filter";
7451
7476
  api.data.loaded = "${loaded}";
7452
7477
  api.data.listViewId = "${listViewId}";
7453
7478
  api.requestAdaptor = `
7454
7479
  // selfData 中的数据由 CRUD 控制. selfData中,只能获取到 CRUD 给定的data. 无法从数据链中获取数据.
7455
7480
  let selfData = JSON.parse(JSON.stringify(api.data.$self));
7481
+ // 保留一份初始data,以供自定义发送适配器中获取原始数据。
7482
+ const data = _.cloneDeep(api.data);
7456
7483
  try{
7457
7484
  // TODO: 不应该直接在这里取localStorage,应该从外面传入
7458
7485
  const listViewId = api.data.listViewId;
@@ -7636,29 +7663,9 @@ setTimeout(()=>{
7636
7663
  })
7637
7664
 
7638
7665
  if(enable_tree){
7639
- const records = payload.data.rows;
7640
- const treeRecords = [];
7641
- const getChildren = (records, childrenIds)=>{
7642
- if(!childrenIds){
7643
- return;
7644
- }
7645
- const children = _.filter(records, (record)=>{
7646
- return _.includes(childrenIds, record._id)
7647
- });
7648
- _.each(children, (item)=>{
7649
- if(item.children){
7650
- item.children = getChildren(records, item.children)
7651
- }
7652
- })
7653
- return children;
7654
- }
7655
-
7656
- _.each(records, (record)=>{
7657
- if(!record.parent){
7658
- treeRecords.push(Object.assign({}, record, {children: getChildren(records, record.children)}));
7659
- }
7660
- });
7661
- payload.data.rows = treeRecords;
7666
+ const records = payload.data.rows || [];
7667
+ const getTreeOptions = SteedosUI.getTreeOptions
7668
+ payload.data.rows = getTreeOptions(records,{"valueField":"_id"});
7662
7669
  }
7663
7670
 
7664
7671
 
@@ -8351,7 +8358,7 @@ setTimeout(()=>{
8351
8358
  * @Author: baozhoutao@steedos.com
8352
8359
  * @Date: 2022-07-05 15:55:39
8353
8360
  * @LastEditors: Please set LastEditors
8354
- * @LastEditTime: 2023-04-11 13:13:00
8361
+ * @LastEditTime: 2023-04-20 11:43:14
8355
8362
  * @Description:
8356
8363
  */
8357
8364
 
@@ -8448,10 +8455,12 @@ setTimeout(()=>{
8448
8455
  mainRelated[arr[0]] = arr[1];
8449
8456
  }
8450
8457
  }else {
8451
- const details = mainObjectUiSchema.details || [];
8458
+ const details = ___default.union(mainObjectUiSchema.details,mainObjectUiSchema.lookup_details) || [];
8452
8459
  for (const detail of details) {
8453
8460
  const arr = detail.split(".");
8454
- mainRelated[arr[0]] = arr[1];
8461
+ if(!___default.has(mainRelated,arr[0])){
8462
+ mainRelated[arr[0]] = arr[1];
8463
+ }
8455
8464
  }
8456
8465
  }
8457
8466
  }
@@ -8656,13 +8665,17 @@ setTimeout(()=>{
8656
8665
  delete ctx.globalFilter;
8657
8666
 
8658
8667
  const adaptor = `
8659
- if(setDataToComponentId){
8660
- if(payload.data.count){
8661
- setTimeout(function(){
8662
- window.$("." + setDataToComponentId + " .antd-Crud").removeClass("hidden");
8663
- }, 10);
8664
- }
8665
- };
8668
+ try{
8669
+ if(setDataToComponentId){
8670
+ if(payload.data.count){
8671
+ setTimeout(function(){
8672
+ window.$("." + setDataToComponentId + " .antd-Crud").removeClass("hidden");
8673
+ }, 10);
8674
+ }
8675
+ };
8676
+ }catch(e){
8677
+ console.log(e);
8678
+ }
8666
8679
  `;
8667
8680
  const amisSchema = {
8668
8681
  "type": "steedos-object-table",
@@ -8673,7 +8686,8 @@ setTimeout(()=>{
8673
8686
  "filtersFunction": filtersFunction,
8674
8687
  "sort": listViewSort,
8675
8688
  "filterVisible": false,
8676
- adaptor,
8689
+ "requestAdaptor": ctx.requestAdaptor,
8690
+ "adaptor": adaptor + ctx.adaptor || '',
8677
8691
  "ctx": ctx
8678
8692
  };
8679
8693
  // console.log(`getRelatedListSchema amisSchema`, amisSchema);
@@ -12709,7 +12723,7 @@ setTimeout(()=>{
12709
12723
  "actions": [
12710
12724
  {
12711
12725
  "args": {
12712
- "url": "/app/${appId}/${objectName}/view/${event.data.result.data.recordId}?display=${ls:page.display || 'grid'}&side_object=${objectName}&side_listview_id=${listName}",
12726
+ "url": "/app/${appId}/${objectName}/view/${event.data.result.data.recordId}?display=${ls:page_display || 'grid'}&side_object=${objectName}&side_listview_id=${listName}",
12713
12727
  "blank": false
12714
12728
  },
12715
12729
  "actionType": "link",
@@ -12999,11 +13013,11 @@ setTimeout(()=>{
12999
13013
  }); };
13000
13014
 
13001
13015
  var AmisRecordDetailRelatedList = function (props) { return __awaiter(void 0, void 0, void 0, function () {
13002
- var objectApiName, recordId, relatedObjectApiName, relatedKey, top, perPage, appId, relatedLabel, _a, className, columns, sort, filters, visible_on, formFactor, schema;
13016
+ var objectApiName, recordId, relatedObjectApiName, relatedKey, top, perPage, hiddenEmptyTable, appId, relatedLabel, _a, className, columns, sort, filters, visible_on, requestAdaptor, adaptor, formFactor, schema;
13003
13017
  return __generator(this, function (_b) {
13004
13018
  switch (_b.label) {
13005
13019
  case 0:
13006
- 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;
13020
+ 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;
13007
13021
  formFactor = props.formFactor;
13008
13022
  if (!formFactor) {
13009
13023
  formFactor = window.innerWidth < 768 ? 'SMALL' : 'LARGE';
@@ -13018,7 +13032,7 @@ setTimeout(()=>{
13018
13032
  "className": "mb-3"
13019
13033
  }];
13020
13034
  }
13021
- 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 })];
13035
+ 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 })];
13022
13036
  case 1:
13023
13037
  schema = (_b.sent()).amisSchema;
13024
13038
  return [2 /*return*/, schema];
@@ -13444,31 +13458,37 @@ setTimeout(()=>{
13444
13458
  }); };
13445
13459
 
13446
13460
  var AmisAppMenu = function (props) { return __awaiter(void 0, void 0, void 0, function () {
13447
- var _a, stacked, overflow, appId, data, _b, links, _c, showIcon, _d, className, _e, indentSize, selectedId;
13461
+ var _a, stacked, overflow, appId, data, _b, links, _c, showIcon, _d, className, _e, indentSize, selectedId, schema;
13448
13462
  return __generator(this, function (_f) {
13449
13463
  _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;
13450
13464
  if (!appId) {
13451
13465
  appId = data.context.appId || 'admin';
13452
13466
  }
13453
13467
  // console.log(`AmisAppMenu appId`, appId)
13454
- // console.log(`AmisAppMenu`, props)
13455
- return [2 /*return*/, {
13456
- "type": "nav",
13457
- className: "".concat(className),
13458
- "stacked": stacked,
13459
- "overflow": overflow,
13460
- "indentSize": indentSize,
13461
- "links": links,
13462
- "source": {
13463
- "method": "get",
13464
- "url": "${context.rootUrl}/service/api/apps/".concat(appId, "/menus"),
13465
- "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 "),
13466
- "headers": {
13467
- "Authorization": "Bearer ${context.tenantId},${context.authToken}"
13468
- },
13469
- "sendOn": "".concat(!!!links)
13470
- },
13471
- }];
13468
+ console.log("AmisAppMenu", appId, props);
13469
+ if (links) {
13470
+ return [2 /*return*/, {
13471
+ "type": "nav",
13472
+ className: "".concat(className),
13473
+ "stacked": stacked,
13474
+ "overflow": overflow,
13475
+ "indentSize": indentSize,
13476
+ "links": links
13477
+ }];
13478
+ }
13479
+ schema = {
13480
+ type: 'service',
13481
+ schemaApi: {
13482
+ "method": "get",
13483
+ "url": "${context.rootUrl}/service/api/apps/".concat(appId, "/menus?try=1111111"),
13484
+ "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 "),
13485
+ "headers": {
13486
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
13487
+ }
13488
+ }
13489
+ };
13490
+ console.log("schema=====>", schema);
13491
+ return [2 /*return*/, schema];
13472
13492
  });
13473
13493
  }); };
13474
13494
 
@@ -13720,6 +13740,10 @@ setTimeout(()=>{
13720
13740
  "color": "#FFFFFF"
13721
13741
  },
13722
13742
  size: 30
13743
+ },
13744
+ {
13745
+ "type": "tpl",
13746
+ "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>"
13723
13747
  }
13724
13748
  ],
13725
13749
  "overlay": [
@@ -14155,7 +14179,7 @@ setTimeout(()=>{
14155
14179
  });
14156
14180
  }); };
14157
14181
 
14158
- 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);
14182
+ 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);
14159
14183
 
14160
14184
  var index_esm = /*#__PURE__*/Object.freeze({
14161
14185
  __proto__: null,