@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.
@@ -1,6 +1,6 @@
1
1
  import React, { useState, useEffect, createElement } from 'react';
2
2
  import * as ___default from 'lodash';
3
- import ___default__default, { isEmpty, isArray, each, find, endsWith, cloneDeep, includes, map, keys, sortBy, compact, toArray, mergeWith, isString, slice, defaultsDeep as defaultsDeep$1, isObject as isObject$1, filter, get, isBoolean, omitBy, isNil, has, startsWith, isFunction, difference, pick, pickBy, random, assign, isNumber } from 'lodash';
3
+ import ___default__default, { isEmpty, isArray, each, find, endsWith, cloneDeep, map, includes, toArray, mergeWith, isString, union, has, slice, defaultsDeep as defaultsDeep$1, isObject as isObject$1, filter, get, isBoolean, omitBy, isNil, startsWith, isFunction, compact, difference, keys, pick, pickBy, random, assign, isNumber } from 'lodash';
4
4
  import { Dropdown, Tabs, Spin, Badge, Skeleton, Modal as Modal$1, message, notification, Button, Space, Drawer as Drawer$1 } from 'antd';
5
5
  import ReactDOM, { createRoot } from 'react-dom';
6
6
 
@@ -693,7 +693,7 @@ const getSteedosAuth = () => {
693
693
  * @Author: baozhoutao@steedos.com
694
694
  * @Date: 2022-08-16 17:02:08
695
695
  * @LastEditors: baozhoutao@steedos.com
696
- * @LastEditTime: 2023-04-17 15:24:21
696
+ * @LastEditTime: 2023-04-19 15:25:50
697
697
  * @Description:
698
698
  */
699
699
 
@@ -705,7 +705,7 @@ const Router$1 = {
705
705
  return urlSearch.get('display')
706
706
  }
707
707
  // const key = `tab.${tab_id}.display`;
708
- const key = `page.display`;
708
+ const key = `page_display`;
709
709
  const value = localStorage.getItem(key);
710
710
  return value ? value : 'grid'
711
711
  },
@@ -1727,8 +1727,8 @@ var config = {
1727
1727
  /*
1728
1728
  * @Author: baozhoutao@steedos.com
1729
1729
  * @Date: 2022-11-01 15:51:00
1730
- * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
1731
- * @LastEditTime: 2023-04-16 17:04:16
1730
+ * @LastEditors: baozhoutao@steedos.com
1731
+ * @LastEditTime: 2023-04-19 20:26:27
1732
1732
  * @Description:
1733
1733
  */
1734
1734
 
@@ -1838,7 +1838,27 @@ const getSchema$4 = async (uiSchema, ctx) => {
1838
1838
  "id": "u:e11347411d2d",
1839
1839
  "closeOnEsc": false,
1840
1840
  "closeOnOutside": false,
1841
- "size": "lg"
1841
+ "size": "lg",
1842
+ "actions": [
1843
+ {
1844
+ type: 'button',
1845
+ actionType: 'cancel',
1846
+ label: "取消"
1847
+ },
1848
+ {
1849
+ type: 'button',
1850
+ label: "保存并新建",
1851
+ actionType: 'confirm',
1852
+ close: false,
1853
+ id: "confirmAndNew"
1854
+ },
1855
+ {
1856
+ type: 'button',
1857
+ actionType: 'confirm',
1858
+ label: "保存",
1859
+ primary: true
1860
+ },
1861
+ ]
1842
1862
  }
1843
1863
  }
1844
1864
  ]
@@ -2740,96 +2760,97 @@ async function getObjectFieldsFilterButtonSchema(objectSchema) {
2740
2760
  }
2741
2761
  }
2742
2762
 
2743
- async function getObjectFieldsFilterFormSchema(objectSchema, fields, ctx) {
2744
- if(!ctx){
2763
+ async function getObjectFieldsFilterFormSchema(ctx) {
2764
+
2765
+ if (!ctx) {
2745
2766
  ctx = {};
2746
2767
  }
2747
- const body = [];
2748
- for (let field of fields) {
2749
- if (
2750
- !includes(
2751
- [
2752
- "grid",
2753
- "avatar",
2754
- "image",
2755
- "object",
2756
- "[object]",
2757
- "[Object]",
2758
- "[grid]",
2759
- "[text]",
2760
- "audio",
2761
- "file",
2762
- ],
2763
- field.type
2764
- )
2765
- ) {
2766
- delete field.defaultValue;
2767
- delete field.required;
2768
- delete field.is_wide;
2769
- delete field.readonly;
2770
- delete field.hidden;
2771
- delete field.omit;
2772
- const amisField = await getFieldSearchable(field, fields, ctx);
2773
- if (amisField) {
2774
- body.push(amisField);
2768
+ const formSchema = {
2769
+ "type": "service",
2770
+ "visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
2771
+ "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",
2772
+ "schemaApi": {
2773
+ method: 'post',
2774
+ url: `\${context.rootUrl}/graphql?reload=\${filterFormSearchableFields|join}`,
2775
+ data: {
2776
+ $self: "$$",
2777
+ query: "{\n data: objects(filters: [[\"_id\",\"=\",null]],top: 1, skip: 0){_id}\n }"
2778
+ },
2779
+ requestAdaptor: `
2780
+ return {
2781
+ ...api,
2782
+ data: {
2783
+ query: api.data.query
2784
+ }
2785
+ };
2786
+ `,
2787
+ adaptor: `
2788
+ if(payload.errors){
2789
+ payload.status = 2;
2790
+ payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;
2791
+ }
2792
+ const selfData = api.body.$self;
2793
+ const filterFormSearchableFields = selfData.filterFormSearchableFields;
2794
+ const uiSchema = selfData.uiSchema;
2795
+ const fields = uiSchema.fields;
2796
+ const searchableFields = [];
2797
+
2798
+ const resolveAll = function(values){
2799
+ payload.data = {
2800
+ "body": values
2801
+ };
2802
+ return payload;
2803
+ }
2804
+
2805
+ const rejectAll = function(){
2806
+ console.warn("run function getFieldSearchable failed.");
2807
+ }
2808
+
2809
+ return Promise.all(filterFormSearchableFields.map(function (item) {
2810
+ const field = _.clone(fields[item]);
2811
+ if (
2812
+ !_.includes(
2813
+ [
2814
+ "grid",
2815
+ "avatar",
2816
+ "image",
2817
+ "object",
2818
+ "[object]",
2819
+ "[Object]",
2820
+ "[grid]",
2821
+ "[text]",
2822
+ "audio",
2823
+ "file",
2824
+ ],
2825
+ field.type
2826
+ )
2827
+ ) {
2828
+ delete field.defaultValue;
2829
+ delete field.required;
2830
+ delete field.is_wide;
2831
+ delete field.readonly;
2832
+ delete field.hidden;
2833
+ delete field.omit;
2834
+ var ctx = ${JSON.stringify(ctx)};
2835
+ const amisField = window.getFieldSearchable(field, fields, ctx);
2836
+ return amisField;
2837
+ }
2838
+ })).then(resolveAll, rejectAll);
2839
+ `,
2840
+ headers: {
2841
+ Authorization: "Bearer ${context.tenantId},${context.authToken}"
2775
2842
  }
2776
2843
  }
2777
- }
2778
- map(body, "name");
2779
- if(ctx.enableSearchableFieldsVisibleOn){
2780
- body.forEach(function(fieldItem){
2781
- fieldItem.visibleOn = `this.filterFormSearchableFields && this.filterFormSearchableFields.indexOf("${fieldItem.fieldName}") > -1`;
2782
- // fieldItem.clearValueOnHidden = true;//这个属性会把form字段值删除,但是点击搜索时crud还是把值给传递到过滤条件(api.requestAdaptor的data.$self)中了,应该是crud的bug
2783
- });
2784
- }
2785
-
2786
- // const onBroadcastSearchableFieldsChangeScript = `
2787
- // const data = event.data;
2788
- // const listViewId = data.listViewId;
2789
- // const searchableFields = data.fields;
2790
- // const preSearchableFields = data.__super.__super.fields;
2791
- // const removedFields = _.difference(preSearchableFields, searchableFields);
2792
- // const listViewPropsStoreKey = location.pathname + "/crud/" + listViewId ;
2793
- // let localListViewProps = localStorage.getItem(listViewPropsStoreKey);
2794
- // if(localListViewProps){
2795
- // // 当变更可搜索字段时,如果被移除的可搜索字段在本地存储中已经存入过滤条件中则应该清除本地存储中相关字段的过滤条件。
2796
- // localListViewProps = JSON.parse(localListViewProps);
2797
- // let removedKeys = [];
2798
- // _.each(localListViewProps, function(n,k){
2799
- // // __searchable__开头的不在searchableFields范围则清除其值
2800
- // let isRemoved = !!removedFields.find(function(fieldName){
2801
- // return new RegExp("__searchable__\.*" + fieldName + "$").test(k);
2802
- // });
2803
- // if(isRemoved){
2804
- // removedKeys.push(k);
2805
- // }
2806
- // });
2807
- // const removedValues = {};
2808
- // removedKeys.forEach(function(key){
2809
- // delete localListViewProps[key];
2810
- // removedValues[key] = "";
2811
- // });
2812
- // doAction({
2813
- // actionType: 'setValue',
2814
- // args: {
2815
- // value: removedValues
2816
- // }
2817
- // });
2818
- // localStorage.setItem(listViewPropsStoreKey, JSON.stringify(localListViewProps));
2819
- // }
2820
- // `;
2844
+ };
2821
2845
 
2822
- return body;
2846
+ return formSchema;
2823
2847
  }
2824
2848
 
2825
- async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
2826
- // console.log(ctx)
2827
- if(!ctx){
2849
+ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
2850
+ if (!ctx) {
2828
2851
  ctx = {};
2829
2852
  }
2830
- const filterFormSchema = await getObjectFieldsFilterFormSchema(objectSchema, fields, Object.assign({}, {
2831
- enableSearchableFieldsVisibleOn: true
2832
- }, ctx));
2853
+ const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);
2833
2854
  const onSearchScript = `
2834
2855
  const scope = event.context.scoped;
2835
2856
  var filterForm = scope.parent.parent.getComponents().find(function(n){
@@ -2862,18 +2883,21 @@ async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
2862
2883
  searchableFieldsStoreKey += listViewId;
2863
2884
  }
2864
2885
  let defaultSearchableFields = sessionStorage.getItem(searchableFieldsStoreKey);
2865
- if(!defaultSearchableFields && data.uiSchema){
2886
+ if(defaultSearchableFields){
2887
+ defaultSearchableFields = defaultSearchableFields.split(",");
2888
+ }
2889
+ if(_.isEmpty(defaultSearchableFields) && data.uiSchema){
2866
2890
  let listView = data.uiSchema.list_views[data.listName];
2867
- defaultSearchableFields = listView && listView.searchable_fields;
2868
- if(defaultSearchableFields && defaultSearchableFields.length){
2869
- defaultSearchableFields = _.map(defaultSearchableFields, 'field');
2891
+ const sFields = listView && listView.searchable_fields;
2892
+ if(sFields && sFields.length){
2893
+ defaultSearchableFields = _.map(sFields, 'field');
2870
2894
  }
2871
2895
  }
2872
2896
  if(_.isEmpty(defaultSearchableFields) && data.uiSchema){
2873
2897
  defaultSearchableFields = _.map(
2874
- _.filter(_.values(data.uiSchema.fields), (field) => {
2898
+ _.sortBy(_.filter(_.values(data.uiSchema.fields), (field) => {
2875
2899
  return field.searchable;
2876
- }),
2900
+ }), "sort_no"),
2877
2901
  "name"
2878
2902
  );
2879
2903
  }
@@ -3011,7 +3035,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
3011
3035
  // "filterFormValues": {"__searchable__name": "xxx"},//搜索项表单值
3012
3036
  // "listViewId": "${listViewId}"
3013
3037
  },
3014
- "id": `service_listview_filter_form_${objectSchema.name}`,
3038
+ // "id": `service_listview_filter_form_${objectSchema.name}`,
3015
3039
  "dataProvider": {
3016
3040
  "inited": dataProviderInited
3017
3041
  },
@@ -3019,15 +3043,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, fields, ctx) {
3019
3043
  "type": "wrapper",
3020
3044
  "body": {
3021
3045
  "type": "wrapper",
3022
- "body": [{
3023
- "type": "wrapper",
3024
- "body": [
3025
- filterFormSchema
3026
- ],
3027
- "size": "xs",
3028
- "visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
3029
- "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"
3030
- }, {
3046
+ "body": [filterFormSchema, {
3031
3047
  "type": "wrapper",
3032
3048
  "body": {
3033
3049
  "type": "wrapper",
@@ -3386,16 +3402,7 @@ async function getObjectListHeaderSecordLine(objectSchema, listViewName, ctx) {
3386
3402
  * @returns amisSchema
3387
3403
  */
3388
3404
  async function getObjectListHeaderFieldsFilterBar(objectSchema, listViewName, ctx) {
3389
- const searchableFields = keys(objectSchema.fields);
3390
- const fields = sortBy(
3391
- compact(
3392
- map(searchableFields, (fieldName) => {
3393
- return objectSchema.fields[fieldName];
3394
- })
3395
- ),
3396
- "sort_no"
3397
- );
3398
- const fieldsFilterBarSchema = await getObjectFieldsFilterBarSchema(objectSchema, fields, ctx);
3405
+ const fieldsFilterBarSchema = await getObjectFieldsFilterBarSchema(objectSchema, ctx);
3399
3406
  return fieldsFilterBarSchema;
3400
3407
  }
3401
3408
 
@@ -4174,12 +4181,11 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
4174
4181
  "objectApiName": "object_listviews",
4175
4182
  "recordId": "${recordId}",
4176
4183
  "mode": "edit",
4177
- "initApiAdaptor": "",
4178
4184
  "fields": [
4179
4185
  "filters"
4180
4186
  ],
4181
4187
  "initApiRequestAdaptor": "",
4182
- "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;",
4188
+ "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;",
4183
4189
  "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",
4184
4190
  "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}",
4185
4191
  "onEvent": {
@@ -4239,7 +4245,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
4239
4245
  "recordId": "${recordId}",
4240
4246
  "mode": "edit",
4241
4247
  "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}",
4242
- "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;",
4248
+ "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;",
4243
4249
  "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;",
4244
4250
  "fields": [
4245
4251
  "columns",
@@ -4321,7 +4327,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
4321
4327
  }
4322
4328
  },
4323
4329
  "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}",
4324
- "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;",
4330
+ "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;",
4325
4331
  "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"
4326
4332
  }
4327
4333
  ],
@@ -5020,13 +5026,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
5020
5026
  //TODO: 等待放大镜bug修复,if会去掉,始终显示放大镜
5021
5027
  if(referenceTo.objectName != "space_users" || field.reference_to_field != "user"){
5022
5028
  if (ctx.filterVisible !== false) {
5023
- let filterLoopCount = ctx.filterLoopCount || 0;
5024
- filterLoopCount++;
5025
- // 可以传入filterVisible为false防止死循环
5026
5029
  pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {
5027
5030
  isLookup: true,
5028
- ...ctx,
5029
- filterLoopCount,
5031
+ ...ctx
5030
5032
  });
5031
5033
  }
5032
5034
  }
@@ -6084,6 +6086,14 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
6084
6086
  convertData.visibleOn = `${field.visible_on.replace(/formData./g, 'data.')}`;
6085
6087
  }
6086
6088
  }
6089
+
6090
+ if(___default.isString(baseData.required)){
6091
+ if(baseData.required.startsWith("{{")){
6092
+ baseData.requiredOn = `${baseData.required.substring(2, baseData.required.length -2).replace(/formData./g, 'data.')}`;
6093
+ delete baseData.required;
6094
+ }
6095
+ }
6096
+
6087
6097
  if(convertData.type === 'group'){
6088
6098
  convertData.body[0] = Object.assign({}, baseData, convertData.body[0], { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name});
6089
6099
  return convertData
@@ -6098,8 +6108,9 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
6098
6108
  }
6099
6109
 
6100
6110
  async function getFieldSearchable(perField, permissionFields, ctx){
6101
- const filterLoopCount = ctx.filterLoopCount || 0;
6102
- const maxFilterLoopCount = 5;
6111
+ if(!ctx){
6112
+ ctx = {};
6113
+ }
6103
6114
  let field = perField;
6104
6115
  if(field.type === 'grid'){
6105
6116
  field = await getGridFieldSubFields(perField, permissionFields);
@@ -6160,14 +6171,17 @@ async function getFieldSearchable(perField, permissionFields, ctx){
6160
6171
  _field.multiple = true;
6161
6172
  _field.is_wide = false;
6162
6173
  _field.defaultValue = undefined;
6163
- // filterVisible: false不再生成lookup字段时的filter,否则会死循环
6164
- const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true, filterVisible: filterLoopCount < maxFilterLoopCount}));
6174
+ const amisField = await convertSFieldToAmisField(_field, false, Object.assign({}, ctx, {fieldNamePrefix: fieldNamePrefix, required: false, showSystemFields: true}));
6165
6175
  if(amisField){
6166
6176
  return amisField;
6167
6177
  }
6168
6178
  }
6169
6179
  }
6170
6180
 
6181
+ if(typeof window != 'undefined'){
6182
+ window.getFieldSearchable = getFieldSearchable;
6183
+ }
6184
+
6171
6185
  var index = /*#__PURE__*/Object.freeze({
6172
6186
  __proto__: null,
6173
6187
  OMIT_FIELDS: OMIT_FIELDS,
@@ -6428,12 +6442,12 @@ async function getEditFormInitApi(object, recordId, fields, options){
6428
6442
  if(uiSchema.form){
6429
6443
  try{
6430
6444
  var objectFormConfig = JSON.parse(uiSchema.form);
6431
- initialValues = objectFormConfig.initialValues;
6432
- if(initialValues){
6433
- initialValues = new Function("return " + initialValues)();
6445
+ var formInitialValuesFun = objectFormConfig.initialValues;
6446
+ if(formInitialValuesFun){
6447
+ formInitialValuesFun = new Function("return " + formInitialValuesFun)();
6434
6448
  }
6435
- if(typeof initialValues === "function"){
6436
- initialValues = initialValues.apply({doc: defaultValues || {} })
6449
+ if(typeof formInitialValuesFun === "function"){
6450
+ initialValues = formInitialValuesFun.apply({doc: defaultValues || {} , global: api.body.global})
6437
6451
  }
6438
6452
  }
6439
6453
  catch(ex){
@@ -6450,12 +6464,15 @@ async function getEditFormInitApi(object, recordId, fields, options){
6450
6464
  }
6451
6465
  // data下的变量需要在保存接口(getSaveApi)中被删除。
6452
6466
  payload.data = {
6453
- initialValues,
6454
- editFormInited: true
6467
+ ...initialValues
6455
6468
  }
6456
6469
  ${options.initApiAdaptor || ''}
6457
6470
  return payload;
6458
6471
  `,
6472
+ responseData: {
6473
+ initialValues: "$$",
6474
+ editFormInited: true
6475
+ },
6459
6476
  data: data,
6460
6477
  headers: {
6461
6478
  Authorization: "Bearer ${context.tenantId},${context.authToken}"
@@ -6862,6 +6879,8 @@ async function getObjectForm(objectSchema, ctx){
6862
6879
  },
6863
6880
  labelAlign,
6864
6881
  persistData: false,
6882
+ resetAfterSubmit: true,
6883
+ preventEnterSubmit: true,
6865
6884
  promptPageLeave: true,
6866
6885
  canAccessSuperData: false,
6867
6886
  name: `form_edit_${recordId}`,
@@ -6899,10 +6918,14 @@ async function getObjectForm(objectSchema, ctx){
6899
6918
  },
6900
6919
  "expression": `\${_master.objectName != '${objectSchema.name}' && _master.objectName}`
6901
6920
  },
6902
- {
6903
- "args": {},
6904
- "actionType": "closeDialog"
6905
- }
6921
+ // {
6922
+ // "actionType": "custom",
6923
+ // "script": "debugger;"
6924
+ // },
6925
+ // {
6926
+ // "args": {},
6927
+ // "actionType": "closeDialog"
6928
+ // }
6906
6929
  ]
6907
6930
  }
6908
6931
  }
@@ -7420,13 +7443,17 @@ async function getTableApi(mainObject, fields, options){
7420
7443
  }
7421
7444
 
7422
7445
  api.data.$term = "$term";
7446
+ api.data.term = "$term";
7423
7447
  api.data.$self = "$$";
7448
+ api.data.self = "$$";
7424
7449
  api.data.filter = "$filter";
7425
7450
  api.data.loaded = "${loaded}";
7426
7451
  api.data.listViewId = "${listViewId}";
7427
7452
  api.requestAdaptor = `
7428
7453
  // selfData 中的数据由 CRUD 控制. selfData中,只能获取到 CRUD 给定的data. 无法从数据链中获取数据.
7429
7454
  let selfData = JSON.parse(JSON.stringify(api.data.$self));
7455
+ // 保留一份初始data,以供自定义发送适配器中获取原始数据。
7456
+ const data = _.cloneDeep(api.data);
7430
7457
  try{
7431
7458
  // TODO: 不应该直接在这里取localStorage,应该从外面传入
7432
7459
  const listViewId = api.data.listViewId;
@@ -7610,29 +7637,9 @@ async function getTableApi(mainObject, fields, options){
7610
7637
  })
7611
7638
 
7612
7639
  if(enable_tree){
7613
- const records = payload.data.rows;
7614
- const treeRecords = [];
7615
- const getChildren = (records, childrenIds)=>{
7616
- if(!childrenIds){
7617
- return;
7618
- }
7619
- const children = _.filter(records, (record)=>{
7620
- return _.includes(childrenIds, record._id)
7621
- });
7622
- _.each(children, (item)=>{
7623
- if(item.children){
7624
- item.children = getChildren(records, item.children)
7625
- }
7626
- })
7627
- return children;
7628
- }
7629
-
7630
- _.each(records, (record)=>{
7631
- if(!record.parent){
7632
- treeRecords.push(Object.assign({}, record, {children: getChildren(records, record.children)}));
7633
- }
7634
- });
7635
- payload.data.rows = treeRecords;
7640
+ const records = payload.data.rows || [];
7641
+ const getTreeOptions = SteedosUI.getTreeOptions
7642
+ payload.data.rows = getTreeOptions(records,{"valueField":"_id"});
7636
7643
  }
7637
7644
 
7638
7645
 
@@ -8325,7 +8332,7 @@ const getRecordPermissions = async (objectName, recordId)=>{
8325
8332
  * @Author: baozhoutao@steedos.com
8326
8333
  * @Date: 2022-07-05 15:55:39
8327
8334
  * @LastEditors: Please set LastEditors
8328
- * @LastEditTime: 2023-04-11 13:13:00
8335
+ * @LastEditTime: 2023-04-20 11:43:14
8329
8336
  * @Description:
8330
8337
  */
8331
8338
 
@@ -8422,10 +8429,12 @@ async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObj
8422
8429
  mainRelated[arr[0]] = arr[1];
8423
8430
  }
8424
8431
  }else {
8425
- const details = mainObjectUiSchema.details || [];
8432
+ const details = union(mainObjectUiSchema.details,mainObjectUiSchema.lookup_details) || [];
8426
8433
  for (const detail of details) {
8427
8434
  const arr = detail.split(".");
8428
- mainRelated[arr[0]] = arr[1];
8435
+ if(!has(mainRelated,arr[0])){
8436
+ mainRelated[arr[0]] = arr[1];
8437
+ }
8429
8438
  }
8430
8439
  }
8431
8440
  }
@@ -8630,13 +8639,17 @@ async function getRelatedListSchema(
8630
8639
  delete ctx.globalFilter;
8631
8640
 
8632
8641
  const adaptor = `
8633
- if(setDataToComponentId){
8634
- if(payload.data.count){
8635
- setTimeout(function(){
8636
- window.$("." + setDataToComponentId + " .antd-Crud").removeClass("hidden");
8637
- }, 10);
8638
- }
8639
- };
8642
+ try{
8643
+ if(setDataToComponentId){
8644
+ if(payload.data.count){
8645
+ setTimeout(function(){
8646
+ window.$("." + setDataToComponentId + " .antd-Crud").removeClass("hidden");
8647
+ }, 10);
8648
+ }
8649
+ };
8650
+ }catch(e){
8651
+ console.log(e);
8652
+ }
8640
8653
  `;
8641
8654
  const amisSchema = {
8642
8655
  "type": "steedos-object-table",
@@ -8647,7 +8660,8 @@ async function getRelatedListSchema(
8647
8660
  "filtersFunction": filtersFunction,
8648
8661
  "sort": listViewSort,
8649
8662
  "filterVisible": false,
8650
- adaptor,
8663
+ "requestAdaptor": ctx.requestAdaptor,
8664
+ "adaptor": adaptor + ctx.adaptor || '',
8651
8665
  "ctx": ctx
8652
8666
  };
8653
8667
  // console.log(`getRelatedListSchema amisSchema`, amisSchema);
@@ -12683,7 +12697,7 @@ var AmisObjectListView = function (props) { return __awaiter(void 0, void 0, voi
12683
12697
  "actions": [
12684
12698
  {
12685
12699
  "args": {
12686
- "url": "/app/${appId}/${objectName}/view/${event.data.result.data.recordId}?display=${ls:page.display || 'grid'}&side_object=${objectName}&side_listview_id=${listName}",
12700
+ "url": "/app/${appId}/${objectName}/view/${event.data.result.data.recordId}?display=${ls:page_display || 'grid'}&side_object=${objectName}&side_listview_id=${listName}",
12687
12701
  "blank": false
12688
12702
  },
12689
12703
  "actionType": "link",
@@ -12973,11 +12987,11 @@ var AmisRecordService = function (props) { return __awaiter(void 0, void 0, void
12973
12987
  }); };
12974
12988
 
12975
12989
  var AmisRecordDetailRelatedList = function (props) { return __awaiter(void 0, void 0, void 0, function () {
12976
- var objectApiName, recordId, relatedObjectApiName, relatedKey, top, perPage, appId, relatedLabel, _a, className, columns, sort, filters, visible_on, formFactor, schema;
12990
+ var objectApiName, recordId, relatedObjectApiName, relatedKey, top, perPage, hiddenEmptyTable, appId, relatedLabel, _a, className, columns, sort, filters, visible_on, requestAdaptor, adaptor, formFactor, schema;
12977
12991
  return __generator(this, function (_b) {
12978
12992
  switch (_b.label) {
12979
12993
  case 0:
12980
- 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;
12994
+ 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;
12981
12995
  formFactor = props.formFactor;
12982
12996
  if (!formFactor) {
12983
12997
  formFactor = window.innerWidth < 768 ? 'SMALL' : 'LARGE';
@@ -12992,7 +13006,7 @@ var AmisRecordDetailRelatedList = function (props) { return __awaiter(void 0, vo
12992
13006
  "className": "mb-3"
12993
13007
  }];
12994
13008
  }
12995
- 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 })];
13009
+ 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 })];
12996
13010
  case 1:
12997
13011
  schema = (_b.sent()).amisSchema;
12998
13012
  return [2 /*return*/, schema];
@@ -13418,31 +13432,37 @@ var AmisLogo = function (props) { return __awaiter(void 0, void 0, void 0, funct
13418
13432
  }); };
13419
13433
 
13420
13434
  var AmisAppMenu = function (props) { return __awaiter(void 0, void 0, void 0, function () {
13421
- var _a, stacked, overflow, appId, data, _b, links, _c, showIcon, _d, className, _e, indentSize, selectedId;
13435
+ var _a, stacked, overflow, appId, data, _b, links, _c, showIcon, _d, className, _e, indentSize, selectedId, schema;
13422
13436
  return __generator(this, function (_f) {
13423
13437
  _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;
13424
13438
  if (!appId) {
13425
13439
  appId = data.context.appId || 'admin';
13426
13440
  }
13427
13441
  // console.log(`AmisAppMenu appId`, appId)
13428
- // console.log(`AmisAppMenu`, props)
13429
- return [2 /*return*/, {
13430
- "type": "nav",
13431
- className: "".concat(className),
13432
- "stacked": stacked,
13433
- "overflow": overflow,
13434
- "indentSize": indentSize,
13435
- "links": links,
13436
- "source": {
13437
- "method": "get",
13438
- "url": "${context.rootUrl}/service/api/apps/".concat(appId, "/menus"),
13439
- "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 "),
13440
- "headers": {
13441
- "Authorization": "Bearer ${context.tenantId},${context.authToken}"
13442
- },
13443
- "sendOn": "".concat(!!!links)
13444
- },
13445
- }];
13442
+ console.log("AmisAppMenu", appId, props);
13443
+ if (links) {
13444
+ return [2 /*return*/, {
13445
+ "type": "nav",
13446
+ className: "".concat(className),
13447
+ "stacked": stacked,
13448
+ "overflow": overflow,
13449
+ "indentSize": indentSize,
13450
+ "links": links
13451
+ }];
13452
+ }
13453
+ schema = {
13454
+ type: 'service',
13455
+ schemaApi: {
13456
+ "method": "get",
13457
+ "url": "${context.rootUrl}/service/api/apps/".concat(appId, "/menus?try=1111111"),
13458
+ "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 "),
13459
+ "headers": {
13460
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
13461
+ }
13462
+ }
13463
+ };
13464
+ console.log("schema=====>", schema);
13465
+ return [2 /*return*/, schema];
13446
13466
  });
13447
13467
  }); };
13448
13468
 
@@ -13694,6 +13714,10 @@ var AmisGlobalHeader = function (props) { return __awaiter(void 0, void 0, void
13694
13714
  "color": "#FFFFFF"
13695
13715
  },
13696
13716
  size: 30
13717
+ },
13718
+ {
13719
+ "type": "tpl",
13720
+ "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>"
13697
13721
  }
13698
13722
  ],
13699
13723
  "overlay": [
@@ -14129,7 +14153,7 @@ var PageObject = function (props) { return __awaiter(void 0, void 0, void 0, fun
14129
14153
  });
14130
14154
  }); };
14131
14155
 
14132
- 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]=useState(!0);var n=()=>{r(!1);};return has(e,"ref")||(window.SteedosUI.refs[e.name]={show:()=>{r(!0);},close:n}),React.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.createElement(newFunctionComponent(n),e);createRoot(t).render(e);},Modal=assign(newComponentRender("modal",Modal$1),{info:Modal$1.info,success:Modal$1.success,error:Modal$1.error,warning:Modal$1.warning,confirm:Modal$1.confirm}),Drawer=newComponentRender("drawer",Drawer$1),getGraphqlFieldsQuery=e=>{const t=["_id"];return e.push("record_permissions"),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):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 createElement(t,e)}},render=function(e,t,r,n){e=withModalWrap(e),e=createElement(e,__assign({},t));return ReactDOM.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 isNil(r)||(e=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})`)),isFunction(r)&&(r=safeRunFunction(r,[],null,{name:e.name})),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||isString(r)?"number"!==t||isNumber(r)?"boolean"!==t||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:message,notification:notification,components:{Button:Button,Space: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);
14156
+ 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]=useState(!0);var n=()=>{r(!1);};return has(e,"ref")||(window.SteedosUI.refs[e.name]={show:()=>{r(!0);},close:n}),React.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.createElement(newFunctionComponent(n),e);createRoot(t).render(e);},Modal=assign(newComponentRender("modal",Modal$1),{info:Modal$1.info,success:Modal$1.success,error:Modal$1.error,warning:Modal$1.warning,confirm:Modal$1.confirm}),Drawer=newComponentRender("drawer",Drawer$1),getGraphqlFieldsQuery=e=>{const t=["_id"];return e.push("record_permissions"),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):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 createElement(t,e)}},render=function(e,t,r,n){e=withModalWrap(e),e=createElement(e,__assign({},t));return ReactDOM.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 isNil(r)||(e=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})`)),isFunction(r)&&(r=safeRunFunction(r,[],null,{name:e.name})),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||isString(r)?"number"!==t||isNumber(r)?"boolean"!==t||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:message,notification:notification,components:{Button:Button,Space: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);
14133
14157
 
14134
14158
  var index_esm = /*#__PURE__*/Object.freeze({
14135
14159
  __proto__: null,