@steedos-widgets/amis-lib 1.2.27 → 1.2.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.esm.js CHANGED
@@ -943,796 +943,808 @@ function getApi$2 (isMobile){
943
943
  }
944
944
  }
945
945
 
946
- /*
947
- * @Author: baozhoutao@steedos.com
948
- * @Date: 2022-07-23 09:12:14
949
- * @LastEditors: baozhoutao@steedos.com
950
- * @LastEditTime: 2022-11-25 13:28:35
951
- * @Description:
952
- */
953
-
954
- async function getListBody(fields, options){
955
- const columns = [];
956
- for (const field of fields) {
957
-
958
- const tpl = await getFieldTpl(field, options);
959
-
960
- let type = 'text';
961
- if(tpl){
962
- type = 'tpl';
963
- }
964
- if(!field.hidden && !field.extra){
965
- columns.push({
966
- name: field.name,
967
- label: field.label,
968
- sortable: field.sortable,
969
- // searchable: field.searchable,
970
- width: field.width,
971
- type: type,
972
- tpl: tpl,
973
- toggled: field.toggled
974
- // toggled: true
975
- });
976
- }
977
- }
978
- return {
979
- "type": "hbox",
980
- "columns": columns
981
- };
982
- }
983
-
984
- function getDefaultParams$1(options){
985
- return {
986
- perPage: options.top || options.perPage || 10
987
- }
988
- }
989
-
990
- async function getListSchema$1(fields, options){
991
- const listBody = await getListBody(fields, options);
992
- const columns = listBody.columns;
993
- return {
994
- mode: "list",
995
- name: "thelist",
996
- draggable: false,
997
- headerToolbar: ['reload'],
998
- defaultParams: getDefaultParams$1(options),
999
- syncLocation: false,
1000
- keepItemSelectionOnPageChange: true,
1001
- checkOnItemClick: false,
1002
- labelTpl: `\${name}`, //TODO 获取name字段
1003
- listItem: {
1004
- body: [...columns],
1005
- actions: options.actions === false ? null : [
1006
- {
1007
- icon: "fa fa-eye",
1008
- label: "查看",
1009
- type: "button",
1010
- actionType: "link",
1011
- link: Router.getObjectDetailPath({
1012
- formFactor: options.formFactor,
1013
- appId: options.appId,
1014
- objectName: options.tabId,
1015
- listView: options.listView,
1016
- recordId: `\${_id}`
1017
- })
1018
- }
1019
- ]
1020
- }
1021
- }
1022
- }
1023
-
1024
-
1025
- async function getCardSchema(fields, options){
1026
- let title = null;
1027
- const titleField = _.find(fields, (f)=>{
1028
- return f.name === options.labelFieldName;
1029
- });
1030
- if(titleField){
1031
- title = await getFieldTpl(titleField, options);
1032
- }
1033
- const listBody = await getListBody(_.filter(fields, (f)=>{
1034
- return f.name != options.labelFieldName
1035
- }), options);
1036
- return {
1037
- mode: "cards",
1038
- name: "cards",
1039
- draggable: false,
1040
- headerToolbar: ['statistics', 'pagination'],
1041
- defaultParams: getDefaultParams$1(options),
1042
- syncLocation: false,
1043
- keepItemSelectionOnPageChange: false,
1044
- checkOnItemClick: false,
1045
- labelTpl: `\${${options.labelFieldName}}`,
1046
- card: {
1047
- "type": "card",
1048
- "header": {
1049
- "title": title
1050
- },
1051
- "body": [...listBody.columns]
1052
- }
1053
- }
1054
- }
1055
-
1056
- const refUsersObjectName = "space_users";
1057
- const refOrgsObjectName = "organizations";
1058
-
1059
- async function getSource$1(field, ctx) {
1060
- // data.query 最终格式 "{ \tleftOptions:organizations(filters: {__filters}){value:_id,label:name,children}, children:organizations(filters: {__filters}){ref:_id,children}, defaultValueOptions:space_users(filters: {__options_filters}){user,name} }"
1061
- const data = await getFindQuery({ name: refOrgsObjectName }, null, [{ name: "_id", alias: "value" },{name: "parent"}, { name: "name", alias: "label" }, { name: "children" }], {
1062
- alias: "leftOptions",
1063
- filters: "{__filters}"
1064
- });
1065
- data.query = data.query.replace(/,count\:.+/, "}");
1066
- const childrenData = await getFindQuery({ name: refOrgsObjectName }, null, [{ name: "_id", alias: "ref" }], {
1067
- alias: "children",
1068
- filters: "{__filters}"
1069
- });
1070
- childrenData.query = childrenData.query.replace(/,count\:.+/, "}");
1071
- data.query = data.query.replace(/}$/, "," + childrenData.query.replace(/{(.+)}/, "$1}"));
1072
- const defaultValueOptionsData = await getFindQuery({ name: refUsersObjectName }, null, [{ name: "user", alias: "value" }, { name: "name", alias: "label" }], {
1073
- alias: "defaultValueOptions",
1074
- filters: "{__options_filters}"
1075
- });
1076
- defaultValueOptionsData.query = defaultValueOptionsData.query.replace(/,count\:.+/, "}");
1077
- data.query = data.query.replace(/}$/, "," + defaultValueOptionsData.query.replace(/{(.+)}/, "$1}"));
1078
- let valueField = `${field.name}`;
1079
- if(field._prefix){
1080
- // field._prefix一般来object类型字段的子字段的父字段api名称,比如流程对象的字段perms.users_can_add前缀为perms.
1081
- valueField = `${field._prefix}${field.name}`;
1082
- }
1083
- if(ctx.fieldNamePrefix){
1084
- // ctx.fieldNamePrefix一般来自列表搜索,值为__searchable__
1085
- valueField = `${ctx.fieldNamePrefix}${valueField}`;
1086
- }
1087
- data.$value = `$${valueField}`;
1088
- // data["&"] = "$$";
1089
-
1090
- const requestAdaptor = `
1091
- var filters = [];
1092
- api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters));
1093
- var defaultValue = api.data.$value;
1094
- var optionsFiltersOp = "${field.multiple ? "in" : "="}";
1095
- var optionsFilters = [["user", optionsFiltersOp, []]];
1096
- if (defaultValue) {
1097
- optionsFilters = [["user", optionsFiltersOp, defaultValue]];
1098
- }
1099
- api.data.query = api.data.query.replace(/{__options_filters}/g, JSON.stringify(optionsFilters));
1100
- return api;
1101
- `;
1102
- const adaptor = `
1103
- const data = payload.data;
1104
- const rows = data.leftOptions
1105
- data.children = data.children.map(function (child) {
1106
- // child.defer = !!(child.children && child.children.length);
1107
- child.defer = true;
1108
- delete child.children;
1109
- return child;
1110
- });
1111
-
1112
- var getTreeOptions = SteedosUI.getTreeOptions
1113
- data.leftOptions = getTreeOptions(rows);
1114
-
1115
-
1116
- var defaultValueOptions = data.defaultValueOptions;
1117
- data.children = _.union(data.children, defaultValueOptions);
1118
- delete data.defaultValueOptions;
1119
- payload.data = { options: [data] };
1120
- return payload;
1121
- `;
1122
- return {
1123
- "method": "post",
1124
- // 这里需要ObjectForm在api请求成功后才显示其中的amis form,否则就会有bug
1125
- // 见issue: https://github.com/baidu/amis/issues/6065
1126
- // "url": graphql.getApi() + `?value=\${${field.multiple ? valueField + "|join" : valueField}}`,
1127
- // "url": graphql.getApi() + `?value=\${editFormInited}`,
1128
- "url": getApi$2(),
1129
- "requestAdaptor": requestAdaptor,
1130
- "adaptor": adaptor,
1131
- "data": data,
1132
- // "sendOn": `this.editFormInited`,
1133
- "headers": {
1134
- "Authorization": "Bearer ${context.tenantId},${context.authToken}"
1135
- },
1136
- }
1137
- }
946
+ var frontend_field_group_generalization$1 = "Generalization";
947
+ var frontend_download$1 = "Download";
948
+ var frontend_form_save$1 = "Save";
949
+ var frontend_form_save_and_new$1 = "Save and New";
950
+ var frontend_form_cancel$1 = "Cancel";
951
+ var frontend_form_new$1 = "New";
952
+ var frontend_form_edit$1 = "Edit";
953
+ var frontend_form_select$1 = "Select";
954
+ var frontend_form_confirm$1 = "Confirm";
955
+ var frontend_form_delete$1 = "Delete";
956
+ var frontend_form_view$1 = "view";
957
+ var frontend_delete_confirm_text$1 = "Are you sure you want to delete this item?";
958
+ var frontend_delete_many_selected_required$1 = "Please select the item to be deleted";
959
+ var frontend_delete_many_confirm_text$1 = "Are you sure you want to delete?";
960
+ var frontend_display_type_is_table$1 = "Table";
961
+ var frontend_display_type_is_split$1 = "Split View";
962
+ var frontend_display_as$1 = "Displayed as";
963
+ var frontend_record_sum$1 = "items";
964
+ var frontend_button_reload_tooltip$1 = "Refresh";
965
+ var frontend_button_search_tooltip$1 = "Search";
966
+ var frontend_fields_filter_button_search$1 = "Search";
967
+ var frontend_fields_filter_button_settings$1 = "Set search options";
968
+ var frontend_button_listview_control_tooltip$1 = "List View Controls";
969
+ var frontend_button_listview_control_label$1 = "LIST VIEW CONTROLS";
970
+ var frontend_listview_control_columns$1 = "Show List";
971
+ var frontend_listview_control_columns_mobile_group$1 = "Mobile side";
972
+ var frontend_listview_control_clone_label$1 = "Clone";
973
+ var frontend_listview_control_clone_title$1 = "Clone List View";
974
+ var frontend_listview_control_clone_defaultData_label_start$1 = "Copy of";
975
+ var frontend_listview_control_clone_defaultData_label_end$1 = "";
976
+ var frontend_listview_control_delete_label$1 = "Delete";
977
+ var frontend_listview_control_delete_confirm_text$1 = "If you delete this list view it will be permanently removed for all users with access. Are you sure you want to delete?";
978
+ var frontend_listview_control_delete_message_success$1 = "Deletion successful";
979
+ var frontend_listview_control_filters$1 = "Filter settings";
980
+ var frontend_listview_control_filters_fields_extend$1 = "Conditional component 1";
981
+ var frontend_listview_control_new_label$1 = "New";
982
+ var frontend_listview_control_new_title$1 = "New List View";
983
+ var frontend_listview_control_new_message_success$1 = "Success";
984
+ var frontend_listview_control_new_message_failed$1 = "Failure";
985
+ var frontend_listview_control_rename_label$1 = "Rename";
986
+ var frontend_listview_control_rename_title$1 = "Rename List View";
987
+ var frontend_listview_control_share$1 = "Sharing Settings";
988
+ var frontend_listview_control_sort$1 = "Default sorting rule";
989
+ var frontend_export_excel$1 = "Export Excel";
990
+ var frontend_operation$1 = "Operation";
991
+ var frontend_import_data$1 = "Import data";
992
+ var frontend_import_data_object_name$1 = "Import object";
993
+ var frontend_import_data_queue_import$1 = "Data import";
994
+ var frontend_import_data_queue_import_description$1 = "Import description";
995
+ var frontend_import_data_queue_import_encoding$1 = "Character code";
996
+ var frontend_import_data_queue_import_template_url$1 = "Import template";
997
+ var frontend_import_data_file$1 = "Excel file";
998
+ var frontend_import_data_message_success$1 = "Importing has started...";
999
+ var frontend_import_data_message_failed$1 = "Import failed";
1000
+ var frontend_record_detail_tab_detailed$1 = "Details";
1001
+ var frontend_record_detail_tab_related$1 = "Related";
1002
+ var frontend_all_apps$1 = "All apps";
1003
+ var frontend_all_projects$1 = "All projects";
1004
+ var frontend_application_launcher$1 = "Application launcher";
1005
+ var frontend_menu$1 = "Menu";
1006
+ var frontend_help$1 = "Help";
1007
+ var frontend_setup$1 = "Setup";
1008
+ var frontend_notifications$1 = "Notifications";
1009
+ var frontend_notifications_allread$1 = "Mark all as read";
1010
+ var frontend_notifications_allread_message$1 = "All marked as read";
1011
+ var frontend_profile$1 = "Profile";
1012
+ var frontend_about$1 = "About";
1013
+ var frontend_log_out$1 = "Log out";
1014
+ var frontend_listview_warning_start$1 = "The current ";
1015
+ var frontend_listview_warning_end$1 = " view does not exist!";
1016
+ var frontend_record_detail_related_list_warning$1 = "Missing parent object, parent record, or related list object property!";
1017
+ var frontend_record_detail_related_lists_warning$1 = "Missing parent object, or parent record property!";
1018
+ var frontend_record_detail_related_lists_info$1 = "No related child tables found";
1019
+ var frontend_calendar_listWeek$1 = "List";
1020
+ var frontend_message_no_permission_to_edit$1 = "You don't have permission to edit this record!";
1021
+ var frontend_message_modification_successful$1 = "Modification successful!";
1022
+ var frontend_message_modification_failed$1 = "Modification failed!";
1023
+ var frontend_objects_related_alert_start$1 = "No related table fields associated with the related list object";
1024
+ var frontend_objects_related_alert_end$1 = "were found.";
1025
+ var frontend_no_records_found$1 = "No records found.";
1026
+ var en_us = {
1027
+ frontend_field_group_generalization: frontend_field_group_generalization$1,
1028
+ frontend_download: frontend_download$1,
1029
+ frontend_form_save: frontend_form_save$1,
1030
+ frontend_form_save_and_new: frontend_form_save_and_new$1,
1031
+ frontend_form_cancel: frontend_form_cancel$1,
1032
+ frontend_form_new: frontend_form_new$1,
1033
+ frontend_form_edit: frontend_form_edit$1,
1034
+ frontend_form_select: frontend_form_select$1,
1035
+ frontend_form_confirm: frontend_form_confirm$1,
1036
+ frontend_form_delete: frontend_form_delete$1,
1037
+ frontend_form_view: frontend_form_view$1,
1038
+ frontend_delete_confirm_text: frontend_delete_confirm_text$1,
1039
+ frontend_delete_many_selected_required: frontend_delete_many_selected_required$1,
1040
+ frontend_delete_many_confirm_text: frontend_delete_many_confirm_text$1,
1041
+ frontend_display_type_is_table: frontend_display_type_is_table$1,
1042
+ frontend_display_type_is_split: frontend_display_type_is_split$1,
1043
+ frontend_display_as: frontend_display_as$1,
1044
+ frontend_record_sum: frontend_record_sum$1,
1045
+ frontend_button_reload_tooltip: frontend_button_reload_tooltip$1,
1046
+ frontend_button_search_tooltip: frontend_button_search_tooltip$1,
1047
+ frontend_fields_filter_button_search: frontend_fields_filter_button_search$1,
1048
+ frontend_fields_filter_button_settings: frontend_fields_filter_button_settings$1,
1049
+ frontend_button_listview_control_tooltip: frontend_button_listview_control_tooltip$1,
1050
+ frontend_button_listview_control_label: frontend_button_listview_control_label$1,
1051
+ frontend_listview_control_columns: frontend_listview_control_columns$1,
1052
+ frontend_listview_control_columns_mobile_group: frontend_listview_control_columns_mobile_group$1,
1053
+ frontend_listview_control_clone_label: frontend_listview_control_clone_label$1,
1054
+ frontend_listview_control_clone_title: frontend_listview_control_clone_title$1,
1055
+ frontend_listview_control_clone_defaultData_label_start: frontend_listview_control_clone_defaultData_label_start$1,
1056
+ frontend_listview_control_clone_defaultData_label_end: frontend_listview_control_clone_defaultData_label_end$1,
1057
+ frontend_listview_control_delete_label: frontend_listview_control_delete_label$1,
1058
+ frontend_listview_control_delete_confirm_text: frontend_listview_control_delete_confirm_text$1,
1059
+ frontend_listview_control_delete_message_success: frontend_listview_control_delete_message_success$1,
1060
+ frontend_listview_control_filters: frontend_listview_control_filters$1,
1061
+ frontend_listview_control_filters_fields_extend: frontend_listview_control_filters_fields_extend$1,
1062
+ frontend_listview_control_new_label: frontend_listview_control_new_label$1,
1063
+ frontend_listview_control_new_title: frontend_listview_control_new_title$1,
1064
+ frontend_listview_control_new_message_success: frontend_listview_control_new_message_success$1,
1065
+ frontend_listview_control_new_message_failed: frontend_listview_control_new_message_failed$1,
1066
+ frontend_listview_control_rename_label: frontend_listview_control_rename_label$1,
1067
+ frontend_listview_control_rename_title: frontend_listview_control_rename_title$1,
1068
+ frontend_listview_control_share: frontend_listview_control_share$1,
1069
+ frontend_listview_control_sort: frontend_listview_control_sort$1,
1070
+ frontend_export_excel: frontend_export_excel$1,
1071
+ frontend_operation: frontend_operation$1,
1072
+ frontend_import_data: frontend_import_data$1,
1073
+ frontend_import_data_object_name: frontend_import_data_object_name$1,
1074
+ frontend_import_data_queue_import: frontend_import_data_queue_import$1,
1075
+ frontend_import_data_queue_import_description: frontend_import_data_queue_import_description$1,
1076
+ frontend_import_data_queue_import_encoding: frontend_import_data_queue_import_encoding$1,
1077
+ frontend_import_data_queue_import_template_url: frontend_import_data_queue_import_template_url$1,
1078
+ frontend_import_data_file: frontend_import_data_file$1,
1079
+ frontend_import_data_message_success: frontend_import_data_message_success$1,
1080
+ frontend_import_data_message_failed: frontend_import_data_message_failed$1,
1081
+ frontend_record_detail_tab_detailed: frontend_record_detail_tab_detailed$1,
1082
+ frontend_record_detail_tab_related: frontend_record_detail_tab_related$1,
1083
+ frontend_all_apps: frontend_all_apps$1,
1084
+ frontend_all_projects: frontend_all_projects$1,
1085
+ frontend_application_launcher: frontend_application_launcher$1,
1086
+ frontend_menu: frontend_menu$1,
1087
+ frontend_help: frontend_help$1,
1088
+ frontend_setup: frontend_setup$1,
1089
+ frontend_notifications: frontend_notifications$1,
1090
+ frontend_notifications_allread: frontend_notifications_allread$1,
1091
+ frontend_notifications_allread_message: frontend_notifications_allread_message$1,
1092
+ frontend_profile: frontend_profile$1,
1093
+ frontend_about: frontend_about$1,
1094
+ frontend_log_out: frontend_log_out$1,
1095
+ frontend_listview_warning_start: frontend_listview_warning_start$1,
1096
+ frontend_listview_warning_end: frontend_listview_warning_end$1,
1097
+ frontend_record_detail_related_list_warning: frontend_record_detail_related_list_warning$1,
1098
+ frontend_record_detail_related_lists_warning: frontend_record_detail_related_lists_warning$1,
1099
+ frontend_record_detail_related_lists_info: frontend_record_detail_related_lists_info$1,
1100
+ frontend_calendar_listWeek: frontend_calendar_listWeek$1,
1101
+ frontend_message_no_permission_to_edit: frontend_message_no_permission_to_edit$1,
1102
+ frontend_message_modification_successful: frontend_message_modification_successful$1,
1103
+ frontend_message_modification_failed: frontend_message_modification_failed$1,
1104
+ frontend_objects_related_alert_start: frontend_objects_related_alert_start$1,
1105
+ frontend_objects_related_alert_end: frontend_objects_related_alert_end$1,
1106
+ frontend_no_records_found: frontend_no_records_found$1
1107
+ };
1138
1108
 
1139
- async function getDeferApi$1(field, ctx) {
1140
- // data.query 最终格式 "{ \toptions:{__object_name}(filters:{__filters}){{__fields}} }"
1141
- const data = await getFindQuery({ name: "{__object_name}" }, null, [], {
1142
- alias: "options",
1143
- // filters: "{__filters}",
1144
- queryOptions: `filters: {__filters}, sort: "{__sort}"`
1145
- });
1146
- // 传入的默认过滤条件,比如[["name", "contains", ""]],将会作为基本过滤条件
1147
- let filters = field.filters;
1148
- if(typeof filters === "string"){
1149
- filters = new Function(`return ${filters}`);
1150
- filters = filters();
1151
- }
1152
- if(typeof filters === "function"){
1153
- filters = filters(field);
1154
- }
1155
- data.query = data.query.replace(/,count\:.+/, "}");
1156
- // 字段要根据请求参数动态生成,写死为__fields后续在发送适配器中替换
1157
- data.query = data.query.replace("{_id}", "{{__fields}}");
1158
- const requestAdaptor = `
1159
- var dep = api.query.dep;
1160
- var ref = api.query.ref;
1161
- var term = api.query.term;
1162
- var filters;
1163
- var objectName;
1164
- var fields;
1165
- var sort = "";
1166
- if (dep) {
1167
- objectName = "${refOrgsObjectName}";
1168
- fields = "value:_id,label:name,children";
1169
- filters = [['parent', '=', dep]];
1170
- sort = "${ctx.orgsSort}";
1171
- }
1172
- else if (ref) {
1173
- objectName = "${refUsersObjectName}";
1174
- // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次
1175
- fields = "_id,value:user,label:name";
1176
- // fields = "user,name,value:user,label:name";
1177
- filters = [['user_accepted', '=', true]];
1178
- var defaultFilters = ${filters && JSON.stringify(filters)};
1179
- if(defaultFilters){
1180
- filters.push(defaultFilters);
1181
- }
1182
- filters.push(['organizations_parents', '=', ref]);
1183
- sort = "${ctx.usersSort}";
1184
- }
1185
- api.data.query = api.data.query.replace(/{__object_name}/g, objectName).replace(/{__fields}/g, fields).replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());
1186
- return api;
1187
- `;
1188
- const adaptor = `
1189
- if (api.query.dep) {
1190
- // 展开组织时才需要根据children值设置defer属性
1191
- const data = payload.data;
1192
- data.options = data.options.map(function (option) {
1193
- option.defer = !!(option.children && option.children.length);
1194
- delete option.children;
1195
- return option;
1196
- });
1197
- payload.data = data;
1198
- }
1199
- return payload;
1200
- `;
1201
- return {
1202
- "method": "post",
1203
- "url": getApi$2() + "&ref=${ref}&dep=${value}",
1204
- "requestAdaptor": requestAdaptor,
1205
- "adaptor": adaptor,
1206
- "data": data,
1207
- "headers": {
1208
- "Authorization": "Bearer ${context.tenantId},${context.authToken}"
1209
- }
1210
- }
1211
- }
1109
+ var frontend_field_group_generalization = "通用";
1110
+ var frontend_download = "下载";
1111
+ var frontend_form_save = "保存";
1112
+ var frontend_form_save_and_new = "保存并新建";
1113
+ var frontend_form_cancel = "取消";
1114
+ var frontend_form_new = "新建";
1115
+ var frontend_form_edit = "编辑";
1116
+ var frontend_form_select = "选择";
1117
+ var frontend_form_confirm = "确认";
1118
+ var frontend_form_delete = "删除";
1119
+ var frontend_form_view = "查看";
1120
+ var frontend_delete_confirm_text = "确定要删除此项目?";
1121
+ var frontend_delete_many_selected_required = "请选择要删除的项";
1122
+ var frontend_delete_many_confirm_text = "确定要删除吗?";
1123
+ var frontend_display_type_is_table = "表格";
1124
+ var frontend_display_type_is_split = "分栏视图";
1125
+ var frontend_display_as = "显示为";
1126
+ var frontend_record_sum = "个项目";
1127
+ var frontend_button_reload_tooltip = "刷新";
1128
+ var frontend_button_search_tooltip = "搜索";
1129
+ var frontend_fields_filter_button_search = "搜索";
1130
+ var frontend_fields_filter_button_settings = "设置搜索项";
1131
+ var frontend_button_listview_control_tooltip = "列表视图控制";
1132
+ var frontend_button_listview_control_label = "列表视图控制";
1133
+ var frontend_listview_control_columns = "显示的列";
1134
+ var frontend_listview_control_columns_mobile_group = "手机端";
1135
+ var frontend_listview_control_clone = "复制";
1136
+ var frontend_listview_control_clone_label = "复制";
1137
+ var frontend_listview_control_clone_title = "复制 列表视图";
1138
+ var frontend_listview_control_clone_defaultData_label_start = "";
1139
+ var frontend_listview_control_clone_defaultData_label_end = "的副本";
1140
+ var frontend_listview_control_delete_label = "删除";
1141
+ var frontend_listview_control_delete_confirm_text = "如果您删除此列表视图,该视图将为所有具备访问权限的用户永久删除。是否确定要删除?";
1142
+ var frontend_listview_control_delete_message_success = "删除成功";
1143
+ var frontend_listview_control_filters = "过滤设置";
1144
+ var frontend_listview_control_filters_fields_extend = "条件组件1";
1145
+ var frontend_listview_control_new_label = "新建";
1146
+ var frontend_listview_control_new_title = "新建 列表视图";
1147
+ var frontend_listview_control_new_message_success = "成功";
1148
+ var frontend_listview_control_new_message_failed = "失败";
1149
+ var frontend_listview_control_rename_label = "重命名";
1150
+ var frontend_listview_control_rename_title = "重命名 列表视图";
1151
+ var frontend_listview_control_share = "共享设置";
1152
+ var frontend_listview_control_sort = "默认排序规则";
1153
+ var frontend_export_excel = "导出";
1154
+ var frontend_operation = "操作";
1155
+ var frontend_import_data = "导入数据";
1156
+ var frontend_import_data_object_name = "导入对象";
1157
+ var frontend_import_data_queue_import = "数据导入";
1158
+ var frontend_import_data_queue_import_description = "导入描述";
1159
+ var frontend_import_data_queue_import_encoding = "字符代码";
1160
+ var frontend_import_data_queue_import_template_url = "导入模板";
1161
+ var frontend_import_data_file = "Excel文件";
1162
+ var frontend_import_data_message_success = "已开始导入...";
1163
+ var frontend_import_data_message_failed = "导入失败";
1164
+ var frontend_record_detail_tab_detailed = "详细";
1165
+ var frontend_record_detail_tab_related = "相关";
1166
+ var frontend_all_apps = "所有应用";
1167
+ var frontend_all_projects = "所有项目";
1168
+ var frontend_application_launcher = "应用程序启动器";
1169
+ var frontend_menu = "菜单";
1170
+ var frontend_help = "帮助";
1171
+ var frontend_setup = "设置";
1172
+ var frontend_notifications = "通知";
1173
+ var frontend_notifications_allread = "全部标记为已读";
1174
+ var frontend_notifications_allread_message = "已全部标记为已读";
1175
+ var frontend_profile = "个人资料";
1176
+ var frontend_about = "关于";
1177
+ var frontend_log_out = "注销";
1178
+ var frontend_listview_warning_start = "当前";
1179
+ var frontend_listview_warning_end = "视图不存在!";
1180
+ var frontend_record_detail_related_list_warning = "缺少父级对象、父级记录或相关列表对象属性!";
1181
+ var frontend_record_detail_related_lists_warning = "缺少父级对象或父级记录属性!";
1182
+ var frontend_record_detail_related_lists_info = "没有相关子表";
1183
+ var frontend_calendar_listWeek = "列表";
1184
+ var frontend_message_no_permission_to_edit = "您没有编辑该记录的权限!";
1185
+ var frontend_message_modification_successful = "修改成功!";
1186
+ var frontend_message_modification_failed = "修改失败!";
1187
+ var frontend_objects_related_alert_start = "未找到与相关列表对象";
1188
+ var frontend_objects_related_alert_end = "关联的相关表字段";
1189
+ var frontend_no_records_found = "无法找到记录";
1190
+ var zh_cn = {
1191
+ frontend_field_group_generalization: frontend_field_group_generalization,
1192
+ frontend_download: frontend_download,
1193
+ frontend_form_save: frontend_form_save,
1194
+ frontend_form_save_and_new: frontend_form_save_and_new,
1195
+ frontend_form_cancel: frontend_form_cancel,
1196
+ frontend_form_new: frontend_form_new,
1197
+ frontend_form_edit: frontend_form_edit,
1198
+ frontend_form_select: frontend_form_select,
1199
+ frontend_form_confirm: frontend_form_confirm,
1200
+ frontend_form_delete: frontend_form_delete,
1201
+ frontend_form_view: frontend_form_view,
1202
+ frontend_delete_confirm_text: frontend_delete_confirm_text,
1203
+ frontend_delete_many_selected_required: frontend_delete_many_selected_required,
1204
+ frontend_delete_many_confirm_text: frontend_delete_many_confirm_text,
1205
+ frontend_display_type_is_table: frontend_display_type_is_table,
1206
+ frontend_display_type_is_split: frontend_display_type_is_split,
1207
+ frontend_display_as: frontend_display_as,
1208
+ frontend_record_sum: frontend_record_sum,
1209
+ frontend_button_reload_tooltip: frontend_button_reload_tooltip,
1210
+ frontend_button_search_tooltip: frontend_button_search_tooltip,
1211
+ frontend_fields_filter_button_search: frontend_fields_filter_button_search,
1212
+ frontend_fields_filter_button_settings: frontend_fields_filter_button_settings,
1213
+ frontend_button_listview_control_tooltip: frontend_button_listview_control_tooltip,
1214
+ frontend_button_listview_control_label: frontend_button_listview_control_label,
1215
+ frontend_listview_control_columns: frontend_listview_control_columns,
1216
+ frontend_listview_control_columns_mobile_group: frontend_listview_control_columns_mobile_group,
1217
+ frontend_listview_control_clone: frontend_listview_control_clone,
1218
+ frontend_listview_control_clone_label: frontend_listview_control_clone_label,
1219
+ frontend_listview_control_clone_title: frontend_listview_control_clone_title,
1220
+ frontend_listview_control_clone_defaultData_label_start: frontend_listview_control_clone_defaultData_label_start,
1221
+ frontend_listview_control_clone_defaultData_label_end: frontend_listview_control_clone_defaultData_label_end,
1222
+ frontend_listview_control_delete_label: frontend_listview_control_delete_label,
1223
+ frontend_listview_control_delete_confirm_text: frontend_listview_control_delete_confirm_text,
1224
+ frontend_listview_control_delete_message_success: frontend_listview_control_delete_message_success,
1225
+ frontend_listview_control_filters: frontend_listview_control_filters,
1226
+ frontend_listview_control_filters_fields_extend: frontend_listview_control_filters_fields_extend,
1227
+ frontend_listview_control_new_label: frontend_listview_control_new_label,
1228
+ frontend_listview_control_new_title: frontend_listview_control_new_title,
1229
+ frontend_listview_control_new_message_success: frontend_listview_control_new_message_success,
1230
+ frontend_listview_control_new_message_failed: frontend_listview_control_new_message_failed,
1231
+ frontend_listview_control_rename_label: frontend_listview_control_rename_label,
1232
+ frontend_listview_control_rename_title: frontend_listview_control_rename_title,
1233
+ frontend_listview_control_share: frontend_listview_control_share,
1234
+ frontend_listview_control_sort: frontend_listview_control_sort,
1235
+ frontend_export_excel: frontend_export_excel,
1236
+ frontend_operation: frontend_operation,
1237
+ frontend_import_data: frontend_import_data,
1238
+ frontend_import_data_object_name: frontend_import_data_object_name,
1239
+ frontend_import_data_queue_import: frontend_import_data_queue_import,
1240
+ frontend_import_data_queue_import_description: frontend_import_data_queue_import_description,
1241
+ frontend_import_data_queue_import_encoding: frontend_import_data_queue_import_encoding,
1242
+ frontend_import_data_queue_import_template_url: frontend_import_data_queue_import_template_url,
1243
+ frontend_import_data_file: frontend_import_data_file,
1244
+ frontend_import_data_message_success: frontend_import_data_message_success,
1245
+ frontend_import_data_message_failed: frontend_import_data_message_failed,
1246
+ frontend_record_detail_tab_detailed: frontend_record_detail_tab_detailed,
1247
+ frontend_record_detail_tab_related: frontend_record_detail_tab_related,
1248
+ frontend_all_apps: frontend_all_apps,
1249
+ frontend_all_projects: frontend_all_projects,
1250
+ frontend_application_launcher: frontend_application_launcher,
1251
+ frontend_menu: frontend_menu,
1252
+ frontend_help: frontend_help,
1253
+ frontend_setup: frontend_setup,
1254
+ frontend_notifications: frontend_notifications,
1255
+ frontend_notifications_allread: frontend_notifications_allread,
1256
+ frontend_notifications_allread_message: frontend_notifications_allread_message,
1257
+ frontend_profile: frontend_profile,
1258
+ frontend_about: frontend_about,
1259
+ frontend_log_out: frontend_log_out,
1260
+ frontend_listview_warning_start: frontend_listview_warning_start,
1261
+ frontend_listview_warning_end: frontend_listview_warning_end,
1262
+ frontend_record_detail_related_list_warning: frontend_record_detail_related_list_warning,
1263
+ frontend_record_detail_related_lists_warning: frontend_record_detail_related_lists_warning,
1264
+ frontend_record_detail_related_lists_info: frontend_record_detail_related_lists_info,
1265
+ frontend_calendar_listWeek: frontend_calendar_listWeek,
1266
+ frontend_message_no_permission_to_edit: frontend_message_no_permission_to_edit,
1267
+ frontend_message_modification_successful: frontend_message_modification_successful,
1268
+ frontend_message_modification_failed: frontend_message_modification_failed,
1269
+ frontend_objects_related_alert_start: frontend_objects_related_alert_start,
1270
+ frontend_objects_related_alert_end: frontend_objects_related_alert_end,
1271
+ frontend_no_records_found: frontend_no_records_found
1272
+ };
1212
1273
 
1213
- async function getSearchApi(field, ctx) {
1214
- // data.query 最终格式 "{ \toptions:space_users(filters: {__filters}){user,name,value:user,label:name}}"
1215
- // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次
1216
- const data = await getFindQuery({ name: refUsersObjectName }, null, [{ name: "user", alias: "value" }, { name: "name", alias: "label" }], {
1217
- alias: "options",
1218
- // filters: "{__filters}",
1219
- queryOptions: `filters: {__filters}, sort: "{__sort}"`
1220
- });
1221
- data.query = data.query.replace(/,count\:.+/, "}");
1222
- // 传入的默认过滤条件,比如[["name", "contains", "三"]],将会作为基本过滤条件
1223
- const filters = field.filters;
1224
- const requestAdaptor = `
1225
- var term = api.query.term;
1226
- var filters;
1227
- var sort = "";
1228
- if (term) {
1229
- filters = [['user_accepted', '=', true]];
1230
- var defaultFilters = ${filters && JSON.stringify(filters)};
1231
- if(defaultFilters){
1232
- filters.push(defaultFilters);
1233
- }
1234
- var fieldsForSearch = ["name", "username", "email", "mobile"];
1235
- var termFilters = [];
1236
- fieldsForSearch.forEach(function (field) {
1237
- termFilters.push([field, 'contains', term]);
1238
- termFilters.push("or");
1239
- });
1240
- termFilters.pop();
1241
- filters.push(termFilters);
1242
- sort = "${ctx.usersSort}";
1243
- }
1244
- api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());
1245
- return api;
1246
- `;
1247
- return {
1248
- "method": "post",
1249
- "url": getApi$2() + "?term=${term}",
1250
- "requestAdaptor": requestAdaptor,
1251
- "data": data,
1252
- "headers": {
1253
- "Authorization": "Bearer ${context.tenantId},${context.authToken}"
1254
- }
1255
- }
1274
+ const resources = {
1275
+ "en-US": {
1276
+ translation: en_us
1277
+ },
1278
+ "zh-CN": {
1279
+ translation: zh_cn
1280
+ }
1281
+ };
1282
+ var locale = "zh-CN";
1283
+ if (typeof window != 'undefined') {
1284
+ if (window.Builder?.settings.locale == "en-us") {
1285
+ locale = "en-US";
1286
+ } else if (window.Builder?.settings.locale == "zh-cn") {
1287
+ locale = "zh-CN";
1288
+ }
1256
1289
  }
1257
1290
 
1258
- function getRefListViewSort$1(refObject){
1259
- const listView = _$1.find(
1260
- refObject.list_views,
1261
- (view, name) => name === "all"
1262
- );
1263
- let sort = "";
1264
- if(listView){
1265
- sort = getListViewSort(listView);
1266
- }
1267
- return sort;
1268
- }
1269
1291
 
1270
- async function getSelectUserSchema(field, readonly, ctx) {
1271
- if (!field) {
1272
- return {}
1292
+ i18next
1293
+ .use(initReactI18next)
1294
+ .init({
1295
+ resources,
1296
+ lng: locale,
1297
+ interpolation: {
1298
+ escapeValue: false
1273
1299
  }
1300
+ });
1274
1301
 
1275
- if (!ctx) {
1276
- ctx = {};
1277
- }
1278
- const amisSchema = {
1279
- "type": getAmisStaticFieldType('select', readonly)
1280
- };
1302
+ /*
1303
+ * @Author: baozhoutao@steedos.com
1304
+ * @Date: 2022-07-23 09:12:14
1305
+ * @LastEditors: baozhoutao@steedos.com
1306
+ * @LastEditTime: 2022-11-25 13:28:35
1307
+ * @Description:
1308
+ */
1281
1309
 
1282
- if (readonly) {
1283
- amisSchema.tpl = await getLookupTpl(field, ctx);
1284
- }
1285
- else {
1286
- const refUsersObjectConfig = await getUISchema(refUsersObjectName);
1287
- ctx.usersSort = getRefListViewSort$1(refUsersObjectConfig);
1288
- const refOrgsObjectConfig = await getUISchema(refOrgsObjectName);
1289
- ctx.orgsSort = getRefListViewSort$1(refOrgsObjectConfig);
1290
- Object.assign(amisSchema, {
1291
- // "labelField": "name",
1292
- // "valueField": "user",
1293
- "multiple": field.multiple,
1294
- "searchable": field.searchable,
1295
- "selectMode": "associated",
1296
- "leftMode": "tree",
1297
- "extractValue": true,
1298
- "clearable": true,
1299
- "source": await getSource$1(field, ctx),
1300
- "deferApi": await getDeferApi$1(field, ctx),
1301
- "searchApi": await getSearchApi(field, ctx)
1302
- });
1303
- if(field.multiple){
1304
- // 单选时如果配置joinValues为false,清空字段值会把字段值设置为空数组,这是amis人员单选功能的bug,普通的select没有这个问题
1305
- Object.assign(amisSchema, {
1306
- "joinValues": false,
1307
- });
1308
- }
1309
- if (typeof amisSchema.searchable !== "boolean") {
1310
- amisSchema.searchable = true;
1311
- }
1310
+ async function getListBody(fields, options){
1311
+ const columns = [];
1312
+ for (const field of fields) {
1312
1313
 
1313
- if(ctx.value){
1314
- amisSchema.value = ctx.value;
1315
- }
1314
+ const tpl = await getFieldTpl(field, options);
1316
1315
 
1317
- const onEvent = field.onEvent;
1318
- if (onEvent) {
1319
- amisSchema.onEvent = onEvent;
1316
+ let type = 'text';
1317
+ if(tpl){
1318
+ type = 'tpl';
1319
+ }
1320
+ if(!field.hidden && !field.extra){
1321
+ columns.push({
1322
+ name: field.name,
1323
+ label: field.label,
1324
+ sortable: field.sortable,
1325
+ // searchable: field.searchable,
1326
+ width: field.width,
1327
+ type: type,
1328
+ tpl: tpl,
1329
+ toggled: field.toggled
1330
+ // toggled: true
1331
+ });
1320
1332
  }
1321
1333
  }
1322
- return amisSchema;
1334
+ return {
1335
+ "type": "hbox",
1336
+ "columns": columns
1337
+ };
1323
1338
  }
1324
1339
 
1325
- const globalTag = '__G_L_O_B_A_L__';
1340
+ function getDefaultParams$1(options){
1341
+ return {
1342
+ perPage: options.top || options.perPage || 10
1343
+ }
1344
+ }
1326
1345
 
1327
- const getParentPath = function (path) {
1328
- var pathArr;
1329
- if (typeof path === 'string') {
1330
- pathArr = path.split('.');
1331
- if (pathArr.length === 1) {
1332
- return '#';
1333
- }
1334
- pathArr.pop();
1335
- return pathArr.join('.');
1346
+ async function getListSchema$1(fields, options){
1347
+ const listBody = await getListBody(fields, options);
1348
+ const columns = listBody.columns;
1349
+ return {
1350
+ mode: "list",
1351
+ name: "thelist",
1352
+ draggable: false,
1353
+ headerToolbar: ['reload'],
1354
+ defaultParams: getDefaultParams$1(options),
1355
+ syncLocation: false,
1356
+ keepItemSelectionOnPageChange: true,
1357
+ checkOnItemClick: false,
1358
+ labelTpl: `\${name}`, //TODO 获取name字段
1359
+ listItem: {
1360
+ body: [...columns],
1361
+ actions: options.actions === false ? null : [
1362
+ {
1363
+ icon: "fa fa-eye",
1364
+ label: i18next.t('frontend_form_view'),
1365
+ type: "button",
1366
+ actionType: "link",
1367
+ link: Router.getObjectDetailPath({
1368
+ formFactor: options.formFactor,
1369
+ appId: options.appId,
1370
+ objectName: options.tabId,
1371
+ listView: options.listView,
1372
+ recordId: `\${_id}`
1373
+ })
1374
+ }
1375
+ ]
1376
+ }
1336
1377
  }
1337
- return '#';
1338
- };
1378
+ }
1339
1379
 
1340
- const getValueByPath = function (formData, path) {
1341
- if (path === '#' || !path) {
1342
- return formData || {};
1343
- } else if (typeof path === 'string') {
1344
- return get(formData, path);
1345
- } else {
1346
- console.error('path has to be a string');
1347
- }
1348
- };
1349
1380
 
1350
- const isExpression = function (func) {
1351
- var pattern, reg1, reg2;
1352
- if (typeof func !== 'string') {
1353
- return false;
1381
+ async function getCardSchema(fields, options){
1382
+ let title = null;
1383
+ const titleField = _.find(fields, (f)=>{
1384
+ return f.name === options.labelFieldName;
1385
+ });
1386
+ if(titleField){
1387
+ title = await getFieldTpl(titleField, options);
1354
1388
  }
1355
- pattern = /^{{(.+)}}$/;
1356
- reg1 = /^{{(function.+)}}$/;
1357
- reg2 = /^{{(.+=>.+)}}$/;
1358
- if (typeof func === 'string' && func.match(pattern) && !func.match(reg1) && !func.match(reg2)) {
1359
- return true;
1389
+ const listBody = await getListBody(_.filter(fields, (f)=>{
1390
+ return f.name != options.labelFieldName
1391
+ }), options);
1392
+ return {
1393
+ mode: "cards",
1394
+ name: "cards",
1395
+ draggable: false,
1396
+ headerToolbar: ['statistics', 'pagination'],
1397
+ defaultParams: getDefaultParams$1(options),
1398
+ syncLocation: false,
1399
+ keepItemSelectionOnPageChange: false,
1400
+ checkOnItemClick: false,
1401
+ labelTpl: `\${${options.labelFieldName}}`,
1402
+ card: {
1403
+ "type": "card",
1404
+ "header": {
1405
+ "title": title
1406
+ },
1407
+ "body": [...listBody.columns]
1408
+ }
1360
1409
  }
1361
- return false;
1362
- };
1410
+ }
1363
1411
 
1364
- const parseSingleExpression = function (func, formData, dataPath, global, userSession = {}) {
1365
- var error, funcBody, parent, parentPath, str;
1412
+ const refUsersObjectName = "space_users";
1413
+ const refOrgsObjectName = "organizations";
1366
1414
 
1367
- if (formData === void 0) {
1368
- formData = {};
1415
+ async function getSource$1(field, ctx) {
1416
+ // data.query 最终格式 "{ \tleftOptions:organizations(filters: {__filters}){value:_id,label:name,children}, children:organizations(filters: {__filters}){ref:_id,children}, defaultValueOptions:space_users(filters: {__options_filters}){user,name} }"
1417
+ const data = await getFindQuery({ name: refOrgsObjectName }, null, [{ name: "_id", alias: "value" },{name: "parent"}, { name: "name", alias: "label" }, { name: "children" }], {
1418
+ alias: "leftOptions",
1419
+ filters: "{__filters}"
1420
+ });
1421
+ data.query = data.query.replace(/,count\:.+/, "}");
1422
+ const childrenData = await getFindQuery({ name: refOrgsObjectName }, null, [{ name: "_id", alias: "ref" }], {
1423
+ alias: "children",
1424
+ filters: "{__filters}"
1425
+ });
1426
+ childrenData.query = childrenData.query.replace(/,count\:.+/, "}");
1427
+ data.query = data.query.replace(/}$/, "," + childrenData.query.replace(/{(.+)}/, "$1}"));
1428
+ const defaultValueOptionsData = await getFindQuery({ name: refUsersObjectName }, null, [{ name: "user", alias: "value" }, { name: "name", alias: "label" }], {
1429
+ alias: "defaultValueOptions",
1430
+ filters: "{__options_filters}"
1431
+ });
1432
+ defaultValueOptionsData.query = defaultValueOptionsData.query.replace(/,count\:.+/, "}");
1433
+ data.query = data.query.replace(/}$/, "," + defaultValueOptionsData.query.replace(/{(.+)}/, "$1}"));
1434
+ let valueField = `${field.name}`;
1435
+ if(field._prefix){
1436
+ // field._prefix一般来object类型字段的子字段的父字段api名称,比如流程对象的字段perms.users_can_add前缀为perms.
1437
+ valueField = `${field._prefix}${field.name}`;
1369
1438
  }
1370
- parentPath = getParentPath(dataPath);
1371
- parent = getValueByPath(formData, parentPath) || {};
1372
- if (typeof func === 'string') {
1373
- funcBody = func.substring(2, func.length - 2);
1374
- str = `\n var $user=${JSON.stringify(userSession)}; return ` + funcBody.replace(/\bformData\b/g, JSON.stringify(formData).replace(/\bglobal\b/g, globalTag)).replace(/\bglobal\b/g, JSON.stringify(global)).replace(new RegExp('\\b' + globalTag + '\\b', 'g'), 'global').replace(/rootValue/g, JSON.stringify(parent));
1375
- try {
1376
- return Function(str)();
1377
- } catch (_error) {
1378
- error = _error;
1379
- console.log(error, func, dataPath);
1380
- return func;
1381
- }
1382
- } else {
1383
- return func;
1439
+ if(ctx.fieldNamePrefix){
1440
+ // ctx.fieldNamePrefix一般来自列表搜索,值为__searchable__
1441
+ valueField = `${ctx.fieldNamePrefix}${valueField}`;
1384
1442
  }
1385
- };
1443
+ data.$value = `$${valueField}`;
1444
+ // data["&"] = "$$";
1386
1445
 
1387
- var frontend_field_group_generalization$1 = "Generalization";
1388
- var frontend_download$1 = "Download";
1389
- var frontend_form_save$1 = "Save";
1390
- var frontend_form_save_and_new$1 = "Save and New";
1391
- var frontend_form_cancel$1 = "Cancel";
1392
- var frontend_form_new$1 = "New";
1393
- var frontend_form_edit$1 = "Edit";
1394
- var frontend_form_select$1 = "Select";
1395
- var frontend_form_confirm$1 = "Confirm";
1396
- var frontend_form_delete$1 = "Delete";
1397
- var frontend_form_view$1 = "view";
1398
- var frontend_delete_confirm_text$1 = "Are you sure you want to delete this item?";
1399
- var frontend_delete_many_selected_required$1 = "Please select the item to be deleted";
1400
- var frontend_delete_many_confirm_text$1 = "Are you sure you want to delete?";
1401
- var frontend_display_type_is_table$1 = "Table";
1402
- var frontend_display_type_is_split$1 = "Split View";
1403
- var frontend_display_as$1 = "Displayed as";
1404
- var frontend_record_sum$1 = "items";
1405
- var frontend_button_reload_tooltip$1 = "Refresh";
1406
- var frontend_button_search_tooltip$1 = "Search";
1407
- var frontend_fields_filter_button_search$1 = "Search";
1408
- var frontend_fields_filter_button_settings$1 = "Set search options";
1409
- var frontend_button_listview_control_tooltip$1 = "List View Controls";
1410
- var frontend_button_listview_control_label$1 = "LIST VIEW CONTROLS";
1411
- var frontend_listview_control_columns$1 = "Show List";
1412
- var frontend_listview_control_columns_mobile_group$1 = "Mobile side";
1413
- var frontend_listview_control_clone_label$1 = "Clone";
1414
- var frontend_listview_control_clone_title$1 = "Clone List View";
1415
- var frontend_listview_control_clone_defaultData_label_start$1 = "Copy of";
1416
- var frontend_listview_control_clone_defaultData_label_end$1 = "";
1417
- var frontend_listview_control_delete_label$1 = "Delete";
1418
- var frontend_listview_control_delete_confirm_text$1 = "If you delete this list view it will be permanently removed for all users with access. Are you sure you want to delete?";
1419
- var frontend_listview_control_delete_message_success$1 = "Deletion successful";
1420
- var frontend_listview_control_filters$1 = "Filter settings";
1421
- var frontend_listview_control_filters_fields_extend$1 = "Conditional component 1";
1422
- var frontend_listview_control_new_label$1 = "New";
1423
- var frontend_listview_control_new_title$1 = "New List View";
1424
- var frontend_listview_control_new_message_success$1 = "Success";
1425
- var frontend_listview_control_new_message_failed$1 = "Failure";
1426
- var frontend_listview_control_rename_label$1 = "Rename";
1427
- var frontend_listview_control_rename_title$1 = "Rename List View";
1428
- var frontend_listview_control_share$1 = "Sharing Settings";
1429
- var frontend_listview_control_sort$1 = "Default sorting rule";
1430
- var frontend_export_excel$1 = "Export Excel";
1431
- var frontend_ercord_operation$1 = "Operation";
1432
- var frontend_import_data$1 = "Import data";
1433
- var frontend_import_data_object_name$1 = "Import object";
1434
- var frontend_import_data_queue_import$1 = "Data import";
1435
- var frontend_import_data_queue_import_description$1 = "Import description";
1436
- var frontend_import_data_queue_import_encoding$1 = "Character code";
1437
- var frontend_import_data_queue_import_template_url$1 = "Import template";
1438
- var frontend_import_data_file$1 = "Excel file";
1439
- var frontend_import_data_message_success$1 = "Importing has started...";
1440
- var frontend_import_data_message_failed$1 = "Import failed";
1441
- var frontend_record_detail_tab_detailed$1 = "Details";
1442
- var frontend_record_detail_tab_related$1 = "Related";
1443
- var frontend_all_apps$1 = "All apps";
1444
- var frontend_all_projects$1 = "All projects";
1445
- var frontend_application_launcher$1 = "Application launcher";
1446
- var frontend_menu$1 = "Menu";
1447
- var frontend_help$1 = "Help";
1448
- var frontend_setup$1 = "Setup";
1449
- var frontend_notifications$1 = "Notifications";
1450
- var frontend_notifications_allread$1 = "Mark all as read";
1451
- var frontend_notifications_allread_message$1 = "All marked as read";
1452
- var frontend_profile$1 = "Profile";
1453
- var frontend_about$1 = "About";
1454
- var frontend_log_out$1 = "Log out";
1455
- var frontend_listview_warning_start$1 = "The current ";
1456
- var frontend_listview_warning_end$1 = " view does not exist!";
1457
- var frontend_record_detail_related_list_warning$1 = "Missing parent object, parent record, or related list object property!";
1458
- var frontend_record_detail_related_lists_warning$1 = "Missing parent object, or parent record property!";
1459
- var frontend_record_detail_related_lists_info$1 = "No related child tables found";
1460
- var frontend_calendar_listWeek$1 = "List";
1461
- var frontend_message_no_permission_to_edit$1 = "You don't have permission to edit this record!";
1462
- var frontend_message_modification_successful$1 = "Modification successful!";
1463
- var frontend_message_modification_failed$1 = "Modification failed!";
1464
- var en_us = {
1465
- frontend_field_group_generalization: frontend_field_group_generalization$1,
1466
- frontend_download: frontend_download$1,
1467
- frontend_form_save: frontend_form_save$1,
1468
- frontend_form_save_and_new: frontend_form_save_and_new$1,
1469
- frontend_form_cancel: frontend_form_cancel$1,
1470
- frontend_form_new: frontend_form_new$1,
1471
- frontend_form_edit: frontend_form_edit$1,
1472
- frontend_form_select: frontend_form_select$1,
1473
- frontend_form_confirm: frontend_form_confirm$1,
1474
- frontend_form_delete: frontend_form_delete$1,
1475
- frontend_form_view: frontend_form_view$1,
1476
- frontend_delete_confirm_text: frontend_delete_confirm_text$1,
1477
- frontend_delete_many_selected_required: frontend_delete_many_selected_required$1,
1478
- frontend_delete_many_confirm_text: frontend_delete_many_confirm_text$1,
1479
- frontend_display_type_is_table: frontend_display_type_is_table$1,
1480
- frontend_display_type_is_split: frontend_display_type_is_split$1,
1481
- frontend_display_as: frontend_display_as$1,
1482
- frontend_record_sum: frontend_record_sum$1,
1483
- frontend_button_reload_tooltip: frontend_button_reload_tooltip$1,
1484
- frontend_button_search_tooltip: frontend_button_search_tooltip$1,
1485
- frontend_fields_filter_button_search: frontend_fields_filter_button_search$1,
1486
- frontend_fields_filter_button_settings: frontend_fields_filter_button_settings$1,
1487
- frontend_button_listview_control_tooltip: frontend_button_listview_control_tooltip$1,
1488
- frontend_button_listview_control_label: frontend_button_listview_control_label$1,
1489
- frontend_listview_control_columns: frontend_listview_control_columns$1,
1490
- frontend_listview_control_columns_mobile_group: frontend_listview_control_columns_mobile_group$1,
1491
- frontend_listview_control_clone_label: frontend_listview_control_clone_label$1,
1492
- frontend_listview_control_clone_title: frontend_listview_control_clone_title$1,
1493
- frontend_listview_control_clone_defaultData_label_start: frontend_listview_control_clone_defaultData_label_start$1,
1494
- frontend_listview_control_clone_defaultData_label_end: frontend_listview_control_clone_defaultData_label_end$1,
1495
- frontend_listview_control_delete_label: frontend_listview_control_delete_label$1,
1496
- frontend_listview_control_delete_confirm_text: frontend_listview_control_delete_confirm_text$1,
1497
- frontend_listview_control_delete_message_success: frontend_listview_control_delete_message_success$1,
1498
- frontend_listview_control_filters: frontend_listview_control_filters$1,
1499
- frontend_listview_control_filters_fields_extend: frontend_listview_control_filters_fields_extend$1,
1500
- frontend_listview_control_new_label: frontend_listview_control_new_label$1,
1501
- frontend_listview_control_new_title: frontend_listview_control_new_title$1,
1502
- frontend_listview_control_new_message_success: frontend_listview_control_new_message_success$1,
1503
- frontend_listview_control_new_message_failed: frontend_listview_control_new_message_failed$1,
1504
- frontend_listview_control_rename_label: frontend_listview_control_rename_label$1,
1505
- frontend_listview_control_rename_title: frontend_listview_control_rename_title$1,
1506
- frontend_listview_control_share: frontend_listview_control_share$1,
1507
- frontend_listview_control_sort: frontend_listview_control_sort$1,
1508
- frontend_export_excel: frontend_export_excel$1,
1509
- frontend_ercord_operation: frontend_ercord_operation$1,
1510
- frontend_import_data: frontend_import_data$1,
1511
- frontend_import_data_object_name: frontend_import_data_object_name$1,
1512
- frontend_import_data_queue_import: frontend_import_data_queue_import$1,
1513
- frontend_import_data_queue_import_description: frontend_import_data_queue_import_description$1,
1514
- frontend_import_data_queue_import_encoding: frontend_import_data_queue_import_encoding$1,
1515
- frontend_import_data_queue_import_template_url: frontend_import_data_queue_import_template_url$1,
1516
- frontend_import_data_file: frontend_import_data_file$1,
1517
- frontend_import_data_message_success: frontend_import_data_message_success$1,
1518
- frontend_import_data_message_failed: frontend_import_data_message_failed$1,
1519
- frontend_record_detail_tab_detailed: frontend_record_detail_tab_detailed$1,
1520
- frontend_record_detail_tab_related: frontend_record_detail_tab_related$1,
1521
- frontend_all_apps: frontend_all_apps$1,
1522
- frontend_all_projects: frontend_all_projects$1,
1523
- frontend_application_launcher: frontend_application_launcher$1,
1524
- frontend_menu: frontend_menu$1,
1525
- frontend_help: frontend_help$1,
1526
- frontend_setup: frontend_setup$1,
1527
- frontend_notifications: frontend_notifications$1,
1528
- frontend_notifications_allread: frontend_notifications_allread$1,
1529
- frontend_notifications_allread_message: frontend_notifications_allread_message$1,
1530
- frontend_profile: frontend_profile$1,
1531
- frontend_about: frontend_about$1,
1532
- frontend_log_out: frontend_log_out$1,
1533
- frontend_listview_warning_start: frontend_listview_warning_start$1,
1534
- frontend_listview_warning_end: frontend_listview_warning_end$1,
1535
- frontend_record_detail_related_list_warning: frontend_record_detail_related_list_warning$1,
1536
- frontend_record_detail_related_lists_warning: frontend_record_detail_related_lists_warning$1,
1537
- frontend_record_detail_related_lists_info: frontend_record_detail_related_lists_info$1,
1538
- frontend_calendar_listWeek: frontend_calendar_listWeek$1,
1539
- frontend_message_no_permission_to_edit: frontend_message_no_permission_to_edit$1,
1540
- frontend_message_modification_successful: frontend_message_modification_successful$1,
1541
- frontend_message_modification_failed: frontend_message_modification_failed$1
1542
- };
1446
+ const requestAdaptor = `
1447
+ var filters = [];
1448
+ api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters));
1449
+ var defaultValue = api.data.$value;
1450
+ var optionsFiltersOp = "${field.multiple ? "in" : "="}";
1451
+ var optionsFilters = [["user", optionsFiltersOp, []]];
1452
+ if (defaultValue) {
1453
+ optionsFilters = [["user", optionsFiltersOp, defaultValue]];
1454
+ }
1455
+ api.data.query = api.data.query.replace(/{__options_filters}/g, JSON.stringify(optionsFilters));
1456
+ return api;
1457
+ `;
1458
+ const adaptor = `
1459
+ const data = payload.data;
1460
+ const rows = data.leftOptions
1461
+ data.children = data.children.map(function (child) {
1462
+ // child.defer = !!(child.children && child.children.length);
1463
+ child.defer = true;
1464
+ delete child.children;
1465
+ return child;
1466
+ });
1543
1467
 
1544
- var frontend_field_group_generalization = "通用";
1545
- var frontend_download = "下载";
1546
- var frontend_form_save = "保存";
1547
- var frontend_form_save_and_new = "保存并新建";
1548
- var frontend_form_cancel = "取消";
1549
- var frontend_form_new = "新建";
1550
- var frontend_form_edit = "编辑";
1551
- var frontend_form_select = "选择";
1552
- var frontend_form_confirm = "确认";
1553
- var frontend_form_delete = "删除";
1554
- var frontend_form_view = "查看";
1555
- var frontend_delete_confirm_text = "确定要删除此项目?";
1556
- var frontend_delete_many_selected_required = "请选择要删除的项";
1557
- var frontend_delete_many_confirm_text = "确定要删除吗?";
1558
- var frontend_display_type_is_table = "表格";
1559
- var frontend_display_type_is_split = "分栏视图";
1560
- var frontend_display_as = "显示为";
1561
- var frontend_record_sum = "个项目";
1562
- var frontend_button_reload_tooltip = "刷新";
1563
- var frontend_button_search_tooltip = "搜索";
1564
- var frontend_fields_filter_button_search = "搜索";
1565
- var frontend_fields_filter_button_settings = "设置搜索项";
1566
- var frontend_button_listview_control_tooltip = "列表视图控制";
1567
- var frontend_button_listview_control_label = "列表视图控制";
1568
- var frontend_listview_control_columns = "显示的列";
1569
- var frontend_listview_control_columns_mobile_group = "手机端";
1570
- var frontend_listview_control_clone = "复制";
1571
- var frontend_listview_control_clone_label = "复制";
1572
- var frontend_listview_control_clone_title = "复制 列表视图";
1573
- var frontend_listview_control_clone_defaultData_label_start = "";
1574
- var frontend_listview_control_clone_defaultData_label_end = "的副本";
1575
- var frontend_listview_control_delete_label = "删除";
1576
- var frontend_listview_control_delete_confirm_text = "如果您删除此列表视图,该视图将为所有具备访问权限的用户永久删除。是否确定要删除?";
1577
- var frontend_listview_control_delete_message_success = "删除成功";
1578
- var frontend_listview_control_filters = "过滤设置";
1579
- var frontend_listview_control_filters_fields_extend = "条件组件1";
1580
- var frontend_listview_control_new_label = "新建";
1581
- var frontend_listview_control_new_title = "新建 列表视图";
1582
- var frontend_listview_control_new_message_success = "成功";
1583
- var frontend_listview_control_new_message_failed = "失败";
1584
- var frontend_listview_control_rename_label = "重命名";
1585
- var frontend_listview_control_rename_title = "重命名 列表视图";
1586
- var frontend_listview_control_share = "共享设置";
1587
- var frontend_listview_control_sort = "默认排序规则";
1588
- var frontend_export_excel = "导出";
1589
- var frontend_ercord_operation = "操作";
1590
- var frontend_import_data = "导入数据";
1591
- var frontend_import_data_object_name = "导入对象";
1592
- var frontend_import_data_queue_import = "数据导入";
1593
- var frontend_import_data_queue_import_description = "导入描述";
1594
- var frontend_import_data_queue_import_encoding = "字符代码";
1595
- var frontend_import_data_queue_import_template_url = "导入模板";
1596
- var frontend_import_data_file = "Excel文件";
1597
- var frontend_import_data_message_success = "已开始导入...";
1598
- var frontend_import_data_message_failed = "导入失败";
1599
- var frontend_record_detail_tab_detailed = "详细";
1600
- var frontend_record_detail_tab_related = "相关";
1601
- var frontend_all_apps = "所有应用";
1602
- var frontend_all_projects = "所有项目";
1603
- var frontend_application_launcher = "应用程序启动器";
1604
- var frontend_menu = "菜单";
1605
- var frontend_help = "帮助";
1606
- var frontend_setup = "设置";
1607
- var frontend_notifications = "通知";
1608
- var frontend_notifications_allread = "全部标记为已读";
1609
- var frontend_notifications_allread_message = "已全部标记为已读";
1610
- var frontend_profile = "个人资料";
1611
- var frontend_about = "关于";
1612
- var frontend_log_out = "注销";
1613
- var frontend_listview_warning_start = "当前";
1614
- var frontend_listview_warning_end = "视图不存在!";
1615
- var frontend_record_detail_related_list_warning = "缺少父级对象、父级记录或相关列表对象属性!";
1616
- var frontend_record_detail_related_lists_warning = "缺少父级对象或父级记录属性!";
1617
- var frontend_record_detail_related_lists_info = "没有相关子表";
1618
- var frontend_calendar_listWeek = "列表";
1619
- var frontend_message_no_permission_to_edit = "您没有编辑该记录的权限!";
1620
- var frontend_message_modification_successful = "修改成功!";
1621
- var frontend_message_modification_failed = "修改失败!";
1622
- var zh_cn = {
1623
- frontend_field_group_generalization: frontend_field_group_generalization,
1624
- frontend_download: frontend_download,
1625
- frontend_form_save: frontend_form_save,
1626
- frontend_form_save_and_new: frontend_form_save_and_new,
1627
- frontend_form_cancel: frontend_form_cancel,
1628
- frontend_form_new: frontend_form_new,
1629
- frontend_form_edit: frontend_form_edit,
1630
- frontend_form_select: frontend_form_select,
1631
- frontend_form_confirm: frontend_form_confirm,
1632
- frontend_form_delete: frontend_form_delete,
1633
- frontend_form_view: frontend_form_view,
1634
- frontend_delete_confirm_text: frontend_delete_confirm_text,
1635
- frontend_delete_many_selected_required: frontend_delete_many_selected_required,
1636
- frontend_delete_many_confirm_text: frontend_delete_many_confirm_text,
1637
- frontend_display_type_is_table: frontend_display_type_is_table,
1638
- frontend_display_type_is_split: frontend_display_type_is_split,
1639
- frontend_display_as: frontend_display_as,
1640
- frontend_record_sum: frontend_record_sum,
1641
- frontend_button_reload_tooltip: frontend_button_reload_tooltip,
1642
- frontend_button_search_tooltip: frontend_button_search_tooltip,
1643
- frontend_fields_filter_button_search: frontend_fields_filter_button_search,
1644
- frontend_fields_filter_button_settings: frontend_fields_filter_button_settings,
1645
- frontend_button_listview_control_tooltip: frontend_button_listview_control_tooltip,
1646
- frontend_button_listview_control_label: frontend_button_listview_control_label,
1647
- frontend_listview_control_columns: frontend_listview_control_columns,
1648
- frontend_listview_control_columns_mobile_group: frontend_listview_control_columns_mobile_group,
1649
- frontend_listview_control_clone: frontend_listview_control_clone,
1650
- frontend_listview_control_clone_label: frontend_listview_control_clone_label,
1651
- frontend_listview_control_clone_title: frontend_listview_control_clone_title,
1652
- frontend_listview_control_clone_defaultData_label_start: frontend_listview_control_clone_defaultData_label_start,
1653
- frontend_listview_control_clone_defaultData_label_end: frontend_listview_control_clone_defaultData_label_end,
1654
- frontend_listview_control_delete_label: frontend_listview_control_delete_label,
1655
- frontend_listview_control_delete_confirm_text: frontend_listview_control_delete_confirm_text,
1656
- frontend_listview_control_delete_message_success: frontend_listview_control_delete_message_success,
1657
- frontend_listview_control_filters: frontend_listview_control_filters,
1658
- frontend_listview_control_filters_fields_extend: frontend_listview_control_filters_fields_extend,
1659
- frontend_listview_control_new_label: frontend_listview_control_new_label,
1660
- frontend_listview_control_new_title: frontend_listview_control_new_title,
1661
- frontend_listview_control_new_message_success: frontend_listview_control_new_message_success,
1662
- frontend_listview_control_new_message_failed: frontend_listview_control_new_message_failed,
1663
- frontend_listview_control_rename_label: frontend_listview_control_rename_label,
1664
- frontend_listview_control_rename_title: frontend_listview_control_rename_title,
1665
- frontend_listview_control_share: frontend_listview_control_share,
1666
- frontend_listview_control_sort: frontend_listview_control_sort,
1667
- frontend_export_excel: frontend_export_excel,
1668
- frontend_ercord_operation: frontend_ercord_operation,
1669
- frontend_import_data: frontend_import_data,
1670
- frontend_import_data_object_name: frontend_import_data_object_name,
1671
- frontend_import_data_queue_import: frontend_import_data_queue_import,
1672
- frontend_import_data_queue_import_description: frontend_import_data_queue_import_description,
1673
- frontend_import_data_queue_import_encoding: frontend_import_data_queue_import_encoding,
1674
- frontend_import_data_queue_import_template_url: frontend_import_data_queue_import_template_url,
1675
- frontend_import_data_file: frontend_import_data_file,
1676
- frontend_import_data_message_success: frontend_import_data_message_success,
1677
- frontend_import_data_message_failed: frontend_import_data_message_failed,
1678
- frontend_record_detail_tab_detailed: frontend_record_detail_tab_detailed,
1679
- frontend_record_detail_tab_related: frontend_record_detail_tab_related,
1680
- frontend_all_apps: frontend_all_apps,
1681
- frontend_all_projects: frontend_all_projects,
1682
- frontend_application_launcher: frontend_application_launcher,
1683
- frontend_menu: frontend_menu,
1684
- frontend_help: frontend_help,
1685
- frontend_setup: frontend_setup,
1686
- frontend_notifications: frontend_notifications,
1687
- frontend_notifications_allread: frontend_notifications_allread,
1688
- frontend_notifications_allread_message: frontend_notifications_allread_message,
1689
- frontend_profile: frontend_profile,
1690
- frontend_about: frontend_about,
1691
- frontend_log_out: frontend_log_out,
1692
- frontend_listview_warning_start: frontend_listview_warning_start,
1693
- frontend_listview_warning_end: frontend_listview_warning_end,
1694
- frontend_record_detail_related_list_warning: frontend_record_detail_related_list_warning,
1695
- frontend_record_detail_related_lists_warning: frontend_record_detail_related_lists_warning,
1696
- frontend_record_detail_related_lists_info: frontend_record_detail_related_lists_info,
1697
- frontend_calendar_listWeek: frontend_calendar_listWeek,
1698
- frontend_message_no_permission_to_edit: frontend_message_no_permission_to_edit,
1699
- frontend_message_modification_successful: frontend_message_modification_successful,
1700
- frontend_message_modification_failed: frontend_message_modification_failed
1468
+ var getTreeOptions = SteedosUI.getTreeOptions
1469
+ data.leftOptions = getTreeOptions(rows);
1470
+
1471
+
1472
+ var defaultValueOptions = data.defaultValueOptions;
1473
+ data.children = _.union(data.children, defaultValueOptions);
1474
+ delete data.defaultValueOptions;
1475
+ payload.data = { options: [data] };
1476
+ return payload;
1477
+ `;
1478
+ return {
1479
+ "method": "post",
1480
+ // 这里需要ObjectForm在api请求成功后才显示其中的amis form,否则就会有bug
1481
+ // 见issue: https://github.com/baidu/amis/issues/6065
1482
+ // "url": graphql.getApi() + `?value=\${${field.multiple ? valueField + "|join" : valueField}}`,
1483
+ // "url": graphql.getApi() + `?value=\${editFormInited}`,
1484
+ "url": getApi$2(),
1485
+ "requestAdaptor": requestAdaptor,
1486
+ "adaptor": adaptor,
1487
+ "data": data,
1488
+ // "sendOn": `this.editFormInited`,
1489
+ "headers": {
1490
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
1491
+ },
1492
+ }
1493
+ }
1494
+
1495
+ async function getDeferApi$1(field, ctx) {
1496
+ // data.query 最终格式 "{ \toptions:{__object_name}(filters:{__filters}){{__fields}} }"
1497
+ const data = await getFindQuery({ name: "{__object_name}" }, null, [], {
1498
+ alias: "options",
1499
+ // filters: "{__filters}",
1500
+ queryOptions: `filters: {__filters}, sort: "{__sort}"`
1501
+ });
1502
+ // 传入的默认过滤条件,比如[["name", "contains", ""]],将会作为基本过滤条件
1503
+ let filters = field.filters;
1504
+ if(typeof filters === "string"){
1505
+ filters = new Function(`return ${filters}`);
1506
+ filters = filters();
1507
+ }
1508
+ if(typeof filters === "function"){
1509
+ filters = filters(field);
1510
+ }
1511
+ data.query = data.query.replace(/,count\:.+/, "}");
1512
+ // 字段要根据请求参数动态生成,写死为__fields后续在发送适配器中替换
1513
+ data.query = data.query.replace("{_id}", "{{__fields}}");
1514
+ const requestAdaptor = `
1515
+ var dep = api.query.dep;
1516
+ var ref = api.query.ref;
1517
+ var term = api.query.term;
1518
+ var filters;
1519
+ var objectName;
1520
+ var fields;
1521
+ var sort = "";
1522
+ if (dep) {
1523
+ objectName = "${refOrgsObjectName}";
1524
+ fields = "value:_id,label:name,children";
1525
+ filters = [['parent', '=', dep]];
1526
+ sort = "${ctx.orgsSort}";
1527
+ }
1528
+ else if (ref) {
1529
+ objectName = "${refUsersObjectName}";
1530
+ // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次
1531
+ fields = "_id,value:user,label:name";
1532
+ // fields = "user,name,value:user,label:name";
1533
+ filters = [['user_accepted', '=', true]];
1534
+ var defaultFilters = ${filters && JSON.stringify(filters)};
1535
+ if(defaultFilters){
1536
+ filters.push(defaultFilters);
1537
+ }
1538
+ filters.push(['organizations_parents', '=', ref]);
1539
+ sort = "${ctx.usersSort}";
1540
+ }
1541
+ api.data.query = api.data.query.replace(/{__object_name}/g, objectName).replace(/{__fields}/g, fields).replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());
1542
+ return api;
1543
+ `;
1544
+ const adaptor = `
1545
+ if (api.query.dep) {
1546
+ // 展开组织时才需要根据children值设置defer属性
1547
+ const data = payload.data;
1548
+ data.options = data.options.map(function (option) {
1549
+ option.defer = !!(option.children && option.children.length);
1550
+ delete option.children;
1551
+ return option;
1552
+ });
1553
+ payload.data = data;
1554
+ }
1555
+ return payload;
1556
+ `;
1557
+ return {
1558
+ "method": "post",
1559
+ "url": getApi$2() + "&ref=${ref}&dep=${value}",
1560
+ "requestAdaptor": requestAdaptor,
1561
+ "adaptor": adaptor,
1562
+ "data": data,
1563
+ "headers": {
1564
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
1565
+ }
1566
+ }
1567
+ }
1568
+
1569
+ async function getSearchApi(field, ctx) {
1570
+ // data.query 最终格式 "{ \toptions:space_users(filters: {__filters}){user,name,value:user,label:name}}"
1571
+ // 这里要额外把字段转为value和label是因为valueField和labelField在deferApi/searchApi中不生效,所以字段要取两次
1572
+ const data = await getFindQuery({ name: refUsersObjectName }, null, [{ name: "user", alias: "value" }, { name: "name", alias: "label" }], {
1573
+ alias: "options",
1574
+ // filters: "{__filters}",
1575
+ queryOptions: `filters: {__filters}, sort: "{__sort}"`
1576
+ });
1577
+ data.query = data.query.replace(/,count\:.+/, "}");
1578
+ // 传入的默认过滤条件,比如[["name", "contains", "三"]],将会作为基本过滤条件
1579
+ const filters = field.filters;
1580
+ const requestAdaptor = `
1581
+ var term = api.query.term;
1582
+ var filters;
1583
+ var sort = "";
1584
+ if (term) {
1585
+ filters = [['user_accepted', '=', true]];
1586
+ var defaultFilters = ${filters && JSON.stringify(filters)};
1587
+ if(defaultFilters){
1588
+ filters.push(defaultFilters);
1589
+ }
1590
+ var fieldsForSearch = ["name", "username", "email", "mobile"];
1591
+ var termFilters = [];
1592
+ fieldsForSearch.forEach(function (field) {
1593
+ termFilters.push([field, 'contains', term]);
1594
+ termFilters.push("or");
1595
+ });
1596
+ termFilters.pop();
1597
+ filters.push(termFilters);
1598
+ sort = "${ctx.usersSort}";
1599
+ }
1600
+ api.data.query = api.data.query.replace(/{__filters}/g, JSON.stringify(filters)).replace('{__sort}', sort.trim());
1601
+ return api;
1602
+ `;
1603
+ return {
1604
+ "method": "post",
1605
+ "url": getApi$2() + "?term=${term}",
1606
+ "requestAdaptor": requestAdaptor,
1607
+ "data": data,
1608
+ "headers": {
1609
+ "Authorization": "Bearer ${context.tenantId},${context.authToken}"
1610
+ }
1611
+ }
1612
+ }
1613
+
1614
+ function getRefListViewSort$1(refObject){
1615
+ const listView = _$1.find(
1616
+ refObject.list_views,
1617
+ (view, name) => name === "all"
1618
+ );
1619
+ let sort = "";
1620
+ if(listView){
1621
+ sort = getListViewSort(listView);
1622
+ }
1623
+ return sort;
1624
+ }
1625
+
1626
+ async function getSelectUserSchema(field, readonly, ctx) {
1627
+ if (!field) {
1628
+ return {}
1629
+ }
1630
+
1631
+ if (!ctx) {
1632
+ ctx = {};
1633
+ }
1634
+ const amisSchema = {
1635
+ "type": getAmisStaticFieldType('select', readonly)
1636
+ };
1637
+
1638
+ if (readonly) {
1639
+ amisSchema.tpl = await getLookupTpl(field, ctx);
1640
+ }
1641
+ else {
1642
+ const refUsersObjectConfig = await getUISchema(refUsersObjectName);
1643
+ ctx.usersSort = getRefListViewSort$1(refUsersObjectConfig);
1644
+ const refOrgsObjectConfig = await getUISchema(refOrgsObjectName);
1645
+ ctx.orgsSort = getRefListViewSort$1(refOrgsObjectConfig);
1646
+ Object.assign(amisSchema, {
1647
+ // "labelField": "name",
1648
+ // "valueField": "user",
1649
+ "multiple": field.multiple,
1650
+ "searchable": field.searchable,
1651
+ "selectMode": "associated",
1652
+ "leftMode": "tree",
1653
+ "extractValue": true,
1654
+ "clearable": true,
1655
+ "source": await getSource$1(field, ctx),
1656
+ "deferApi": await getDeferApi$1(field, ctx),
1657
+ "searchApi": await getSearchApi(field, ctx)
1658
+ });
1659
+ if(field.multiple){
1660
+ // 单选时如果配置joinValues为false,清空字段值会把字段值设置为空数组,这是amis人员单选功能的bug,普通的select没有这个问题
1661
+ Object.assign(amisSchema, {
1662
+ "joinValues": false,
1663
+ });
1664
+ }
1665
+ if (typeof amisSchema.searchable !== "boolean") {
1666
+ amisSchema.searchable = true;
1667
+ }
1668
+
1669
+ if(ctx.value){
1670
+ amisSchema.value = ctx.value;
1671
+ }
1672
+
1673
+ const onEvent = field.onEvent;
1674
+ if (onEvent) {
1675
+ amisSchema.onEvent = onEvent;
1676
+ }
1677
+ }
1678
+ return amisSchema;
1679
+ }
1680
+
1681
+ const globalTag = '__G_L_O_B_A_L__';
1682
+
1683
+ const getParentPath = function (path) {
1684
+ var pathArr;
1685
+ if (typeof path === 'string') {
1686
+ pathArr = path.split('.');
1687
+ if (pathArr.length === 1) {
1688
+ return '#';
1689
+ }
1690
+ pathArr.pop();
1691
+ return pathArr.join('.');
1692
+ }
1693
+ return '#';
1701
1694
  };
1702
1695
 
1703
- const resources = {
1704
- "en-US": {
1705
- translation: en_us
1706
- },
1707
- "zh-CN": {
1708
- translation: zh_cn
1709
- }
1696
+ const getValueByPath = function (formData, path) {
1697
+ if (path === '#' || !path) {
1698
+ return formData || {};
1699
+ } else if (typeof path === 'string') {
1700
+ return get(formData, path);
1701
+ } else {
1702
+ console.error('path has to be a string');
1703
+ }
1704
+ };
1705
+
1706
+ const isExpression = function (func) {
1707
+ var pattern, reg1, reg2;
1708
+ if (typeof func !== 'string') {
1709
+ return false;
1710
+ }
1711
+ pattern = /^{{(.+)}}$/;
1712
+ reg1 = /^{{(function.+)}}$/;
1713
+ reg2 = /^{{(.+=>.+)}}$/;
1714
+ if (typeof func === 'string' && func.match(pattern) && !func.match(reg1) && !func.match(reg2)) {
1715
+ return true;
1716
+ }
1717
+ return false;
1710
1718
  };
1711
- var locale = "zh-CN";
1712
- if (typeof window != 'undefined') {
1713
- if (window.Builder?.settings.locale == "en-us") {
1714
- locale = "en-US";
1715
- } else if (window.Builder?.settings.locale == "zh-cn") {
1716
- locale = "zh-CN";
1717
- }
1718
- }
1719
1719
 
1720
+ const parseSingleExpression = function (func, formData, dataPath, global, userSession = {}) {
1721
+ var error, funcBody, parent, parentPath, str;
1720
1722
 
1721
- i18next
1722
- .use(initReactI18next)
1723
- .init({
1724
- resources,
1725
- lng: locale,
1726
- interpolation: {
1727
- escapeValue: false
1723
+ if (formData === void 0) {
1724
+ formData = {};
1728
1725
  }
1729
- });
1726
+ parentPath = getParentPath(dataPath);
1727
+ parent = getValueByPath(formData, parentPath) || {};
1728
+ if (typeof func === 'string') {
1729
+ funcBody = func.substring(2, func.length - 2);
1730
+ str = `\n var $user=${JSON.stringify(userSession)}; return ` + funcBody.replace(/\bformData\b/g, JSON.stringify(formData).replace(/\bglobal\b/g, globalTag)).replace(/\bglobal\b/g, JSON.stringify(global)).replace(new RegExp('\\b' + globalTag + '\\b', 'g'), 'global').replace(/rootValue/g, JSON.stringify(parent));
1731
+ try {
1732
+ return Function(str)();
1733
+ } catch (_error) {
1734
+ error = _error;
1735
+ console.log(error, func, dataPath);
1736
+ return func;
1737
+ }
1738
+ } else {
1739
+ return func;
1740
+ }
1741
+ };
1730
1742
 
1731
1743
  /*
1732
1744
  * @Author: baozhoutao@steedos.com
1733
1745
  * @Date: 2022-11-01 15:51:00
1734
- * @LastEditors: liaodaxue
1735
- * @LastEditTime: 2023-06-06 11:12:33
1746
+ * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
1747
+ * @LastEditTime: 2023-06-28 23:19:41
1736
1748
  * @Description:
1737
1749
  */
1738
1750
 
@@ -1784,6 +1796,16 @@ const getSchema$5 = async (uiSchema, ctx) => {
1784
1796
  data: formSchema
1785
1797
  };
1786
1798
  `;
1799
+ const onDialogCancelScript = `
1800
+ // 这里加setTimeout是因为amis的Bug,它会先触发cancel事件执行此脚本关闭父窗口然后再关闭子窗口
1801
+ // 正确的顺序应该是先关闭子窗口再关闭父窗口,顺序错了会造成第二次点击新建按钮的时候异常
1802
+ setTimeout(function(){
1803
+ doAction({
1804
+ "actionType": "cancel",
1805
+ "componentId": "object_actions_drawer_${uiSchema.name}"
1806
+ });
1807
+ }, 200);
1808
+ `;
1787
1809
  return {
1788
1810
  "type": "service",
1789
1811
  "body": [
@@ -1844,6 +1866,17 @@ const getSchema$5 = async (uiSchema, ctx) => {
1844
1866
  "closeOnEsc": false,
1845
1867
  "closeOnOutside": false,
1846
1868
  "size": "lg",
1869
+ "onEvent": {
1870
+ "cancel": {
1871
+ "actions": [
1872
+ {
1873
+ "actionType": "custom",
1874
+ "script": onDialogCancelScript,
1875
+ "expression": "${window:innerWidth < 768}",
1876
+ }
1877
+ ]
1878
+ }
1879
+ },
1847
1880
  "actions": [
1848
1881
  {
1849
1882
  type: 'button',
@@ -1906,7 +1939,7 @@ async function getPage({type, pageId = '', appId, objectName = '', recordId = ''
1906
1939
  * @Author: baozhoutao@steedos.com
1907
1940
  * @Date: 2022-11-01 15:49:58
1908
1941
  * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
1909
- * @LastEditTime: 2023-03-27 11:36:49
1942
+ * @LastEditTime: 2023-06-28 23:22:31
1910
1943
  * @Description:
1911
1944
  */
1912
1945
 
@@ -1935,6 +1968,17 @@ const getSchema$4 = async (uiSchema, ctx) => {
1935
1968
  ? JSON.parse(page.schema)
1936
1969
  : page.schema;
1937
1970
  }
1971
+
1972
+ const onDialogCancelScript = `
1973
+ // 这里加setTimeout是因为amis的Bug,它会先触发cancel事件执行此脚本关闭父窗口然后再关闭子窗口
1974
+ // 正确的顺序应该是先关闭子窗口再关闭父窗口,顺序错了会造成第二次点击编辑按钮的时候异常
1975
+ setTimeout(function(){
1976
+ doAction({
1977
+ "actionType": "cancel",
1978
+ "componentId": "object_actions_drawer_${uiSchema.name}"
1979
+ });
1980
+ }, 200);
1981
+ `;
1938
1982
 
1939
1983
  return {
1940
1984
  type: "service",
@@ -1958,6 +2002,17 @@ const getSchema$4 = async (uiSchema, ctx) => {
1958
2002
  closeOnOutside: false,
1959
2003
  showCloseButton: true,
1960
2004
  size: "lg",
2005
+ "onEvent": {
2006
+ "cancel": {
2007
+ "actions": [
2008
+ {
2009
+ "actionType": "custom",
2010
+ "script": onDialogCancelScript,
2011
+ "expression": "${window:innerWidth < 768}",
2012
+ }
2013
+ ]
2014
+ }
2015
+ },
1961
2016
  },
1962
2017
  },
1963
2018
  ],
@@ -2254,6 +2309,7 @@ const getSchema$2 = (uiSchema) => {
2254
2309
  label: i18next.t('frontend_import_data_file'),
2255
2310
  required: true,
2256
2311
  type: "input-file",
2312
+ accept: ".xlsx,.xls",
2257
2313
  className: "m-1",
2258
2314
  labelClassName: "text-left",
2259
2315
  clearValueOnHidden: true,
@@ -2917,7 +2973,8 @@ const getObjectDetailButtonsSchemas = (objectSchema, recordId, ctx)=>{
2917
2973
  "actionType": "drawer",
2918
2974
  "drawer": {
2919
2975
  "type": "drawer",
2920
- "title": "操作",
2976
+ "title": i18next.t('frontend_operation'),
2977
+ "id": "object_actions_drawer_" + objectSchema.name,
2921
2978
  "body": [
2922
2979
  {
2923
2980
  "type": "button-group",
@@ -2940,7 +2997,6 @@ const getObjectDetailButtonsSchemas = (objectSchema, recordId, ctx)=>{
2940
2997
  "size": "lg"
2941
2998
  }
2942
2999
  ],
2943
- "id": "u:9815f7366b9f",
2944
3000
  "position": "bottom",
2945
3001
  "closeOnOutside": true,
2946
3002
  "resizable": false,
@@ -2951,8 +3007,7 @@ const getObjectDetailButtonsSchemas = (objectSchema, recordId, ctx)=>{
2951
3007
  }
2952
3008
  ]
2953
3009
  }
2954
- },
2955
- "id": "u:ee7c7929e6ae"
3010
+ }
2956
3011
  }
2957
3012
  }else {
2958
3013
  if(moreButtons.length > 0){
@@ -2983,7 +3038,8 @@ const getObjectListViewButtonsSchemas = (objectSchema, ctx)=>{
2983
3038
  "actionType": "drawer",
2984
3039
  "drawer": {
2985
3040
  "type": "drawer",
2986
- "title": "操作",
3041
+ "title": i18next.t('frontend_operation'),
3042
+ "id": "object_actions_drawer_" + objectSchema.name,
2987
3043
  "body": [
2988
3044
  {
2989
3045
  "type": "button-group",
@@ -3007,7 +3063,6 @@ const getObjectListViewButtonsSchemas = (objectSchema, ctx)=>{
3007
3063
  "size": "lg"
3008
3064
  }
3009
3065
  ],
3010
- "id": "u:9815f7366b9f",
3011
3066
  "position": "bottom",
3012
3067
  "closeOnOutside": true,
3013
3068
  "resizable": false,
@@ -3018,8 +3073,7 @@ const getObjectListViewButtonsSchemas = (objectSchema, ctx)=>{
3018
3073
  }
3019
3074
  ]
3020
3075
  }
3021
- },
3022
- "id": "u:ee7c7929e6ae"
3076
+ }
3023
3077
  }
3024
3078
  }else {
3025
3079
  return ___default.map(buttons, (button) => {
@@ -3047,7 +3101,8 @@ const getObjectRecordDetailRelatedListButtonsSchemas = (objectSchema, ctx)=>{
3047
3101
  "actionType": "drawer",
3048
3102
  "drawer": {
3049
3103
  "type": "drawer",
3050
- "title": "操作",
3104
+ "title": i18next.t('frontend_operation'),
3105
+ "id": "object_actions_drawer_" + objectSchema.name,
3051
3106
  "body": [
3052
3107
  {
3053
3108
  "type": "button-group",
@@ -3695,6 +3750,28 @@ function getObjectListHeaderFirstLine(objectSchema, listViewName, ctx) {
3695
3750
  let amisButtonsSchema = getObjectListViewButtonsSchemas(objectSchema, {formFactor: ctx.formFactor});
3696
3751
  const reg = new RegExp('_', 'g');
3697
3752
  const standardIcon = icon && icon.replace(reg, '-');
3753
+ const standardNewButton = _.find(amisButtonsSchema, { name: "standard_new" });
3754
+ const buttonSchema = [{
3755
+ "type": "flex",
3756
+ "items": amisButtonsSchema,
3757
+ "visibleOn": "${display == 'split'?false:true}"
3758
+ }];
3759
+ if(ctx.formFactor !== 'SMALL'){
3760
+ buttonSchema.push({
3761
+ "type": "flex",
3762
+ "items":[
3763
+ standardNewButton,
3764
+ {
3765
+ "type": "dropdown-button",
3766
+ "buttons": Array.isArray(amisButtonsSchema) ? amisButtonsSchema.filter(obj => obj.name !== "standard_new"):{},
3767
+ "menuClassName": "p-none split-dropdown-buttons",
3768
+ "align": "right",
3769
+ "size": "sm"
3770
+ }
3771
+ ],
3772
+ "visibleOn": "${display == 'split'?true:false}"
3773
+ });
3774
+ }
3698
3775
  return {
3699
3776
  "type": "grid",
3700
3777
  "columns": [
@@ -3745,10 +3822,7 @@ function getObjectListHeaderFirstLine(objectSchema, listViewName, ctx) {
3745
3822
  "md": "auto"
3746
3823
  },
3747
3824
  {
3748
- "body": {
3749
- "type": "flex",
3750
- "items": amisButtonsSchema,
3751
- },
3825
+ "body": buttonSchema,
3752
3826
  "md": "auto",
3753
3827
  "valign": "middle",
3754
3828
  }
@@ -5160,6 +5234,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
5160
5234
  "type": "button",
5161
5235
  "align": "right",
5162
5236
  "tooltip": i18next.t('frontend_button_reload_tooltip'),
5237
+ "tooltipPlacement": "top",
5163
5238
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500",
5164
5239
  "label": "",
5165
5240
  "icon": "fa fa-sync",
@@ -5179,6 +5254,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
5179
5254
  "label": i18next.t('frontend_button_search_tooltip'),
5180
5255
  "icon": "fa fa-search",
5181
5256
  "type": "button",
5257
+ "tooltipPlacement": "top",
5182
5258
  "tooltip": i18next.t('frontend_button_search_tooltip'),
5183
5259
  "badge": {
5184
5260
  "offset": [
@@ -5225,7 +5301,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
5225
5301
  "type": "reload",
5226
5302
  "align": "right",
5227
5303
  "tooltip": i18next.t('frontend_button_reload_tooltip'),
5228
- "tooltipPlacement": "bottom",
5304
+ "tooltipPlacement": "top",
5229
5305
  "className": "bg-white p-2 rounded border-gray-300 text-gray-500"
5230
5306
  },
5231
5307
  // getExportExcelToolbarButtonSchema(),
@@ -5235,7 +5311,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
5235
5311
  "label": i18next.t('frontend_button_search_tooltip'),
5236
5312
  "icon": "fa fa-search",
5237
5313
  "tooltip": i18next.t('frontend_button_search_tooltip'),
5238
- "tooltipPlacement": "bottom",
5314
+ "tooltipPlacement": "top",
5239
5315
  "type": "button",
5240
5316
  "badge": {
5241
5317
  "offset": [
@@ -5624,6 +5700,8 @@ async function lookupToAmisPicker(field, readonly, ctx){
5624
5700
  const fieldsArr = [];
5625
5701
 
5626
5702
  const listName = "all";
5703
+
5704
+ const isMobile = window.innerWidth < 768;
5627
5705
 
5628
5706
  const listView = _$1.find(
5629
5707
  refObjectConfig.list_views,
@@ -5700,6 +5778,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
5700
5778
 
5701
5779
  source.data.$term = "$term";
5702
5780
  source.data.$self = "$$";
5781
+
5703
5782
 
5704
5783
  source.requestAdaptor = `
5705
5784
  const selfData = JSON.parse(JSON.stringify(api.data.$self));
@@ -5735,6 +5814,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
5735
5814
  }
5736
5815
  }
5737
5816
 
5817
+
5738
5818
  if(allowSearchFields){
5739
5819
  allowSearchFields.forEach(function(key){
5740
5820
  const keyValue = selfData[key];
@@ -5850,7 +5930,6 @@ async function lookupToAmisPicker(field, readonly, ctx){
5850
5930
  pickerSchema.affixHeader = false;
5851
5931
 
5852
5932
  var headerToolbarItems = [];
5853
- const isMobile = window.innerWidth < 768;
5854
5933
  if(referenceTo.objectName === "space_users" && field.reference_to_field === "user" && !isMobile){
5855
5934
  headerToolbarItems = getLookupSapceUserTreeSchema();
5856
5935
  pickerSchema["style"] = {
@@ -5931,7 +6010,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
5931
6010
  }
5932
6011
 
5933
6012
  const ctx = ${JSON.stringify(ctx)};
5934
- const componentId = ctx.defaults.formSchema.id ? 'service-'+ctx.defaults.formSchema.id : 'new-'+ctx.defaults.formSchema.objectApiName;
6013
+ const componentId = ctx.defaults.formSchema.id;
5935
6014
  doAction({
5936
6015
  actionType: 'setValue',
5937
6016
  componentId: componentId,
@@ -6185,6 +6264,11 @@ async function lookupToAmis(field, readonly, ctx){
6185
6264
  // ids人员点选模式
6186
6265
  return await lookupToAmisIdsPicker(field, readonly, ctx);
6187
6266
  }
6267
+ if(!field.filters || field.filters.length == 0){
6268
+ field.filters = [["user_accepted", "=", true]];
6269
+ }else {
6270
+ field.filters = [ ["user_accepted", "=", true], "and", field.filters ];
6271
+ }
6188
6272
  // 左侧树右侧人员列表的下拉框模式,不再支持,而是执行下面的lookupToAmisPicker函数弹出选人窗口
6189
6273
  // return await lookupToAmisSelectUser(field, readonly, ctx);
6190
6274
  }
@@ -6325,7 +6409,7 @@ async function getIdsPickerSchema(field, readonly, ctx){
6325
6409
  * @Author: baozhoutao@steedos.com
6326
6410
  * @Date: 2023-01-13 17:27:54
6327
6411
  * @LastEditors: liaodaxue
6328
- * @LastEditTime: 2023-06-16 15:58:21
6412
+ * @LastEditTime: 2023-06-30 10:29:52
6329
6413
  * @Description:
6330
6414
  */
6331
6415
 
@@ -6333,12 +6417,16 @@ async function getIdsPickerSchema(field, readonly, ctx){
6333
6417
  const getMarkdownFieldSchema = (field, readonly, ctx)=>{
6334
6418
  if(readonly){
6335
6419
  return {
6336
- "type": "markdown",
6337
- "name": field.name,
6338
- "options": {
6339
- "linkify": true,
6340
- "html": true,
6341
- "breaks": true
6420
+ "type": "control",
6421
+ "label": field.label,
6422
+ "body": {
6423
+ "type": "markdown",
6424
+ "name": field.name,
6425
+ "options": {
6426
+ "linkify": true,
6427
+ "html": true,
6428
+ "breaks": true
6429
+ }
6342
6430
  }
6343
6431
  }
6344
6432
  }else {
@@ -7419,6 +7507,7 @@ async function getQuickEditSchema(field, options){
7419
7507
  async function getTableColumns(fields, options){
7420
7508
  const columns = [{name: '_index',type: 'text', width: 32, placeholder: ""}];
7421
7509
  const allowEdit = options.permissions?.allowEdit && options.permissions?.modifyAllRecords && !options.isLookup && options.enable_inline_edit != false;
7510
+ const defaultWidth = "unset";//用于使table内的td标签下生成div,实现将快速编辑按钮固定在右侧的效果,并不是为了unset效果
7422
7511
  for (const field of fields) {
7423
7512
  //增加quickEdit属性,实现快速编辑
7424
7513
  const quickEditSchema = allowEdit ? await getQuickEditSchema(field, options) : allowEdit;
@@ -7468,16 +7557,19 @@ async function getTableColumns(fields, options){
7468
7557
  label: field.label,
7469
7558
  width: field.width,
7470
7559
  toggled: field.toggled,
7471
- className:"whitespace-nowrap"
7560
+ static: true,
7561
+ className:"whitespace-nowrap",
7562
+ quickEdit: quickEditSchema
7472
7563
  }, field.amis, {name: field.name}));
7473
7564
  }else if(field.type === 'avatar' || field.type === 'image' || field.type === 'file'){
7474
7565
  columns.push(Object.assign({}, {
7475
7566
  type: "switch",
7476
7567
  name: field.name,
7477
7568
  label: field.label,
7478
- width: field.width,
7569
+ width: field.width || defaultWidth,
7479
7570
  toggled: field.toggled,
7480
7571
  quickEdit: quickEditSchema,
7572
+ static: true,
7481
7573
  className:"whitespace-nowrap",
7482
7574
  ...getAmisFileReadonlySchema(field)
7483
7575
  }, field.amis, {name: field.name}));
@@ -7490,9 +7582,10 @@ async function getTableColumns(fields, options){
7490
7582
  label: field.label,
7491
7583
  map: map,
7492
7584
  sortable: field.sortable,
7493
- width: field.width,
7585
+ width: field.width || defaultWidth,
7494
7586
  toggled: field.toggled,
7495
7587
  className:"whitespace-nowrap",
7588
+ static: true,
7496
7589
  quickEdit: quickEditSchema
7497
7590
  }, field.amis, {name: field.name}));
7498
7591
  }
@@ -7519,11 +7612,12 @@ async function getTableColumns(fields, options){
7519
7612
  label: field.label,
7520
7613
  sortable: field.sortable,
7521
7614
  // searchable: field.searchable,
7522
- width: field.width,
7615
+ width: field.width || defaultWidth,
7523
7616
  type: type,
7524
7617
  tpl: tpl,
7525
7618
  toggled: field.toggled,
7526
7619
  className,
7620
+ static: true,
7527
7621
  quickEdit: quickEditSchema,
7528
7622
  options: field.type === 'html' ? {html: true} : null
7529
7623
  // toggled: true
@@ -7800,7 +7894,7 @@ async function getTableOperation(ctx){
7800
7894
  }
7801
7895
  return {
7802
7896
  type: 'operation',
7803
- label: i18next.t('frontend_ercord_operation'),
7897
+ label: i18next.t('frontend_operation'),
7804
7898
  fixed: 'right',
7805
7899
  labelClassName: 'text-center',
7806
7900
  className: 'text-center steedos-listview-operation w-20',
@@ -8272,7 +8366,7 @@ function getReadonlyFormAdaptor(object, fields, options){
8272
8366
  else{
8273
8367
  return {
8274
8368
  status: 2,
8275
- msg: "无法找到记录"
8369
+ msg: "${i18next.t('frontend_no_records_found')}"
8276
8370
  }
8277
8371
  }
8278
8372
  }
@@ -9071,8 +9165,8 @@ async function getObjectCalendar(objectSchema, calendarOptions, options) {
9071
9165
  /*
9072
9166
  * @Author: baozhoutao@steedos.com
9073
9167
  * @Date: 2022-05-26 16:02:08
9074
- * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
9075
- * @LastEditTime: 2023-06-04 15:49:23
9168
+ * @LastEditors: liaodaxue
9169
+ * @LastEditTime: 2023-06-29 17:27:19
9076
9170
  * @Description:
9077
9171
  */
9078
9172
 
@@ -9166,7 +9260,7 @@ const getSections = async (permissionFields, formFields, ctx) => {
9166
9260
  const section = await getSection(formFields, permissionFields, fieldSchemaArray, key, ctx);
9167
9261
  if (section.body.length > 0) {
9168
9262
  if (section.visibleOn) {
9169
- sectionVisibleOns.push(section.visibleOn);
9263
+ sectionVisibleOns.push("("+section.visibleOn+")");
9170
9264
  }
9171
9265
  else {
9172
9266
  sectionVisibleOns.push("true");
@@ -9504,8 +9598,12 @@ async function getObjectForm(objectSchema, ctx){
9504
9598
  if(___default.has(formSchema, 'className')){
9505
9599
  formSchema.className = 'steedos-amis-form';
9506
9600
  }
9601
+ if(!formSchema.id){
9602
+ formSchema.id = 'form_' + objectSchema.name;
9603
+ }
9507
9604
  const amisSchema = {
9508
9605
  type: 'service',
9606
+ id: `service_${formSchema.id}`,
9509
9607
  className: 'p-0',
9510
9608
  name: `page_edit_${recordId}`,
9511
9609
  api: await getEditFormInitApi(objectSchema, recordId, fields, ctx),
@@ -9576,11 +9674,6 @@ async function getObjectForm(objectSchema, ctx){
9576
9674
  }
9577
9675
  })]
9578
9676
  };
9579
- if(formSchema.id){
9580
- amisSchema.id = `service-${formSchema.id}`;
9581
- }else {
9582
- amisSchema.id = `new-${objectSchema.name}`;
9583
- }
9584
9677
  return amisSchema;
9585
9678
  }
9586
9679
 
@@ -9868,7 +9961,7 @@ async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObj
9868
9961
  uiSchema: relatedObjectUiSchema,
9869
9962
  amisSchema: {
9870
9963
  "type": "alert",
9871
- "body": `未找到与相关列表对象${relatedObjectName}关联的相关表字段`,
9964
+ "body": `${i18next.t('frontend_objects_related_alert_start')} ${relatedObjectName} ${i18next.t('frontend_objects_related_alert_end')}`,
9872
9965
  "level": "warning",
9873
9966
  "showIcon": true,
9874
9967
  "className": "mb-3"