@steedos-widgets/amis-lib 6.10.1-beta.31 → 6.10.1-beta.33
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/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/index.cjs.js +237 -58
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +237 -58
- package/dist/index.esm.js.map +1 -1
- package/dist/index.umd.js +95 -49
- package/dist/index.umd.js.map +1 -1
- package/dist/types/lib/converter/amis/fields_filter.d.ts +4 -14
- package/dist/types/lib/converter/amis/header.d.ts +4 -14
- package/dist/types/lib/converter/amis/toolbar.d.ts +4 -14
- package/dist/types/lib/converter/amis/toolbars/setting_listview/filters.d.ts +0 -1
- package/dist/types/lib/converter/amis/toolbars/setting_listview.d.ts +0 -1
- package/dist/types/lib/objects.d.ts +2 -0
- package/dist/types/schema/standard_delete.amis.d.ts +13 -0
- package/dist/types/schema/standard_new.amis.d.ts +1 -1
- package/dist/types/standard/button.d.ts +14 -1
- package/package.json +2 -2
package/dist/index.esm.js
CHANGED
|
@@ -505,8 +505,8 @@ function getComparableAmisVersion() {
|
|
|
505
505
|
/*
|
|
506
506
|
* @Author: baozhoutao@steedos.com
|
|
507
507
|
* @Date: 2022-05-23 09:53:08
|
|
508
|
-
* @LastEditors:
|
|
509
|
-
* @LastEditTime:
|
|
508
|
+
* @LastEditors: 殷亮辉 yinlianghui@hotoa.com
|
|
509
|
+
* @LastEditTime: 2025-04-08 10:55:41
|
|
510
510
|
* @Description:
|
|
511
511
|
*/
|
|
512
512
|
|
|
@@ -660,9 +660,10 @@ function getRelatedFieldTpl(field, ctx){
|
|
|
660
660
|
const href = Router.getObjectDetailPath({
|
|
661
661
|
formFactor: ctx.formFactor, appId: "${appId}", objectName: `${objectNameTpl}`, recordId: `${recordIdTpl}`
|
|
662
662
|
});
|
|
663
|
-
if(ctx.isRelated && window.innerWidth >= 768
|
|
663
|
+
if (window.innerWidth >= 768) { //(ctx.isRelated || isObjectListview) && window.innerWidth >= 768
|
|
664
|
+
// 相关表字段,包括列表视图、对象表格组件中的lookup/master_detail字段,在PC端显示时,点击字段值,不跳转到详情页而是右侧弹出drawer
|
|
664
665
|
labelTpl = `<a href="${href}" ${linkTarget} onclick="return false;">${labelTpl}</a>`;
|
|
665
|
-
}else {
|
|
666
|
+
} else {
|
|
666
667
|
labelTpl = `<a href="${href}" ${linkTarget}>${labelTpl}</a>`;
|
|
667
668
|
}
|
|
668
669
|
|
|
@@ -1460,6 +1461,7 @@ var frontend_download$1 = "Download";
|
|
|
1460
1461
|
var frontend_form_save$1 = "Save";
|
|
1461
1462
|
var frontend_form_save_and_new$1 = "Save and New";
|
|
1462
1463
|
var frontend_form_cancel$1 = "Cancel";
|
|
1464
|
+
var frontend_form_reset$1 = "Reset";
|
|
1463
1465
|
var frontend_form_new$1 = "New";
|
|
1464
1466
|
var frontend_form_edit$1 = "Edit";
|
|
1465
1467
|
var frontend_form_preview$1 = "Preview";
|
|
@@ -1478,7 +1480,7 @@ var frontend_display_type_is_split$1 = "Split View";
|
|
|
1478
1480
|
var frontend_display_as$1 = "Displayed as";
|
|
1479
1481
|
var frontend_record_sum$1 = "items";
|
|
1480
1482
|
var frontend_button_reload_tooltip$1 = "Refresh";
|
|
1481
|
-
var frontend_button_search_tooltip$1 = "
|
|
1483
|
+
var frontend_button_search_tooltip$1 = "Filter";
|
|
1482
1484
|
var frontend_fields_filter_button_search$1 = "Search";
|
|
1483
1485
|
var frontend_fields_filter_button_settings$1 = "Set search options";
|
|
1484
1486
|
var frontend_button_listview_control_tooltip$1 = "List View Controls";
|
|
@@ -1550,6 +1552,7 @@ var en_us = {
|
|
|
1550
1552
|
frontend_form_save: frontend_form_save$1,
|
|
1551
1553
|
frontend_form_save_and_new: frontend_form_save_and_new$1,
|
|
1552
1554
|
frontend_form_cancel: frontend_form_cancel$1,
|
|
1555
|
+
frontend_form_reset: frontend_form_reset$1,
|
|
1553
1556
|
frontend_form_new: frontend_form_new$1,
|
|
1554
1557
|
frontend_form_edit: frontend_form_edit$1,
|
|
1555
1558
|
frontend_form_preview: frontend_form_preview$1,
|
|
@@ -1641,6 +1644,7 @@ var frontend_download = "下载";
|
|
|
1641
1644
|
var frontend_form_save = "保存";
|
|
1642
1645
|
var frontend_form_save_and_new = "保存并新建";
|
|
1643
1646
|
var frontend_form_cancel = "取消";
|
|
1647
|
+
var frontend_form_reset = "重置";
|
|
1644
1648
|
var frontend_form_new = "新建";
|
|
1645
1649
|
var frontend_form_edit = "编辑";
|
|
1646
1650
|
var frontend_form_preview = "预览";
|
|
@@ -1659,7 +1663,7 @@ var frontend_display_type_is_split = "分栏视图";
|
|
|
1659
1663
|
var frontend_display_as = "显示为";
|
|
1660
1664
|
var frontend_record_sum = "个项目";
|
|
1661
1665
|
var frontend_button_reload_tooltip = "刷新";
|
|
1662
|
-
var frontend_button_search_tooltip = "
|
|
1666
|
+
var frontend_button_search_tooltip = "筛选";
|
|
1663
1667
|
var frontend_fields_filter_button_search = "搜索";
|
|
1664
1668
|
var frontend_fields_filter_button_settings = "选择搜索项";
|
|
1665
1669
|
var frontend_button_listview_control_tooltip = "列表视图控制";
|
|
@@ -1732,6 +1736,7 @@ var zh_cn = {
|
|
|
1732
1736
|
frontend_form_save: frontend_form_save,
|
|
1733
1737
|
frontend_form_save_and_new: frontend_form_save_and_new,
|
|
1734
1738
|
frontend_form_cancel: frontend_form_cancel,
|
|
1739
|
+
frontend_form_reset: frontend_form_reset,
|
|
1735
1740
|
frontend_form_new: frontend_form_new,
|
|
1736
1741
|
frontend_form_edit: frontend_form_edit,
|
|
1737
1742
|
frontend_form_preview: frontend_form_preview,
|
|
@@ -1899,7 +1904,12 @@ async function getQuickEditSchema(object, columnField, options){
|
|
|
1899
1904
|
if (field.disabled) {
|
|
1900
1905
|
quickEditSchema = false;
|
|
1901
1906
|
} else {
|
|
1902
|
-
var
|
|
1907
|
+
var fieldCtx = Object.assign({}, _$1.omit(options, 'buttons'), {
|
|
1908
|
+
defaults: Object.assign({}, options.defaults, {
|
|
1909
|
+
formSchema: quickEditSchema
|
|
1910
|
+
})
|
|
1911
|
+
});
|
|
1912
|
+
var fieldSchema = await convertSFieldToAmisField(field, false, fieldCtx);
|
|
1903
1913
|
//存在属性上可编辑,实际不可编辑的字段,convertSFieldToAmisField函数可能会返回undefined,如summary
|
|
1904
1914
|
if (!!fieldSchema) {
|
|
1905
1915
|
quickEditSchema.body.push(fieldSchema);
|
|
@@ -2332,14 +2342,19 @@ function getFieldWidth(width){
|
|
|
2332
2342
|
}
|
|
2333
2343
|
|
|
2334
2344
|
async function getColumnItemOnClick(field, options){
|
|
2335
|
-
|
|
2345
|
+
let objectApiName = options.objectName;
|
|
2346
|
+
if(!(field.is_name || field.name === options.labelFieldName)){
|
|
2347
|
+
objectApiName = field.reference_to;
|
|
2348
|
+
}
|
|
2349
|
+
const recordPage = await getPage({ type: 'record', appId: options.appId, objectName: objectApiName, formFactor: options.formFactor });
|
|
2336
2350
|
const drawerRecordDetailSchema = recordPage ? Object.assign({}, recordPage.schema, {
|
|
2337
2351
|
"recordId": `\${${options.idFieldName}}`,
|
|
2338
2352
|
"data": {
|
|
2339
2353
|
...recordPage.schema.data,
|
|
2340
2354
|
"_inDrawer": true, // 用于判断是否在抽屉中
|
|
2341
2355
|
"recordLoaded": false, // 重置数据加载状态
|
|
2342
|
-
"recordId": `\${${options.idFieldName}}
|
|
2356
|
+
"recordId": `\${${options.idFieldName}}`,//审批微页面依赖了作用域中的recordId
|
|
2357
|
+
"_tableObjectName": options.objectName
|
|
2343
2358
|
}
|
|
2344
2359
|
}) : {
|
|
2345
2360
|
"type": "steedos-record-detail",
|
|
@@ -2350,12 +2365,16 @@ async function getColumnItemOnClick(field, options){
|
|
|
2350
2365
|
"data": {
|
|
2351
2366
|
"_inDrawer": true, // 用于判断是否在抽屉中
|
|
2352
2367
|
"recordLoaded": false, // 重置数据加载状态
|
|
2368
|
+
"_tableObjectName": options.objectName
|
|
2353
2369
|
}
|
|
2354
2370
|
};
|
|
2355
2371
|
|
|
2356
2372
|
if(!(field.is_name || field.name === options.labelFieldName)){
|
|
2357
2373
|
drawerRecordDetailSchema.objectApiName = field.reference_to;
|
|
2358
2374
|
drawerRecordDetailSchema.recordId = `\${_display.${field.name}.value}`;
|
|
2375
|
+
// if (recordPage){
|
|
2376
|
+
// drawerRecordDetailSchema.data.recordId = `\${_display.${field.name}.value}`
|
|
2377
|
+
// }
|
|
2359
2378
|
}
|
|
2360
2379
|
return {
|
|
2361
2380
|
"click": {
|
|
@@ -2505,6 +2524,33 @@ async function getTableColumns(object, fields, options){
|
|
|
2505
2524
|
static: true,
|
|
2506
2525
|
}, fieldAmis, {name: field.name});
|
|
2507
2526
|
}
|
|
2527
|
+
else if(field.type === 'lookup' || field.type === 'master_detail'){
|
|
2528
|
+
columnItem = Object.assign({}, {
|
|
2529
|
+
type: "static-wrapper",
|
|
2530
|
+
name: field.name,
|
|
2531
|
+
label: field.label,
|
|
2532
|
+
sortable: field.sortable,
|
|
2533
|
+
width: getFieldWidth(field.width),
|
|
2534
|
+
toggled: field.toggled,
|
|
2535
|
+
className,
|
|
2536
|
+
size: "none",
|
|
2537
|
+
inputClassName: "inline",
|
|
2538
|
+
body: {
|
|
2539
|
+
type: "steedos-field",
|
|
2540
|
+
static: true,
|
|
2541
|
+
tableObjectName: options.objectName,
|
|
2542
|
+
config: {
|
|
2543
|
+
type: "lookup",
|
|
2544
|
+
reference_to: field.reference_to,
|
|
2545
|
+
name: field.name,
|
|
2546
|
+
is_name: field.is_name,
|
|
2547
|
+
label: null,
|
|
2548
|
+
multiple: field.multiple,
|
|
2549
|
+
amis: Object.assign({}, fieldAmis, { label: null })
|
|
2550
|
+
}
|
|
2551
|
+
}
|
|
2552
|
+
}, fieldAmis, {name: field.name});
|
|
2553
|
+
}
|
|
2508
2554
|
else {
|
|
2509
2555
|
const tpl = await getFieldTpl(field, options);
|
|
2510
2556
|
let type = 'static-text';
|
|
@@ -2553,10 +2599,20 @@ async function getTableColumns(object, fields, options){
|
|
|
2553
2599
|
columnItem.defaultColor = null;
|
|
2554
2600
|
}
|
|
2555
2601
|
|
|
2556
|
-
|
|
2602
|
+
let needClickEvent = false;
|
|
2603
|
+
// if (options.isRelated){
|
|
2604
|
+
// // 子表列表上,Lookup字段和名称字段都需要点击事件
|
|
2605
|
+
// needClickEvent = ((field.is_name || field.name === options.labelFieldName) || ((field.type == 'lookup' || field.type == 'master_detail') && _.isString(field.reference_to) && field.multiple != true));
|
|
2606
|
+
// }
|
|
2607
|
+
// else {// if (isObjectListview)
|
|
2608
|
+
// // 列表视图、对象表格中,Lookup字段需要点击事件
|
|
2609
|
+
// needClickEvent = (field.type == 'lookup' || field.type == 'master_detail') && _.isString(field.reference_to) && field.multiple != true;
|
|
2610
|
+
// }
|
|
2611
|
+
// lookup字段走steedos-field组件了,所以这里只需要判断子表名称字段才额外加点击事件弹出右侧详情
|
|
2612
|
+
needClickEvent = options.isRelated && (field.is_name || field.name === options.labelFieldName);
|
|
2613
|
+
if(window.innerWidth >= 768 && needClickEvent){
|
|
2557
2614
|
columnItem.onEvent = await getColumnItemOnClick(field, options);
|
|
2558
2615
|
}
|
|
2559
|
-
|
|
2560
2616
|
}
|
|
2561
2617
|
}
|
|
2562
2618
|
if(columnItem){
|
|
@@ -4908,9 +4964,9 @@ const getSchema$5 = async (uiSchema, ctx) => {
|
|
|
4908
4964
|
"body": [
|
|
4909
4965
|
{
|
|
4910
4966
|
"type": "button",
|
|
4967
|
+
"level": "primary",
|
|
4911
4968
|
"label": i18next.t('frontend_form_new'),
|
|
4912
4969
|
"id": "u:standard_new",
|
|
4913
|
-
"level": "default",
|
|
4914
4970
|
"onEvent": {
|
|
4915
4971
|
"click": {
|
|
4916
4972
|
"weight": 0,
|
|
@@ -5111,8 +5167,8 @@ const getSchema$4 = async (uiSchema, ctx) => {
|
|
|
5111
5167
|
/*
|
|
5112
5168
|
* @Author: 殷亮辉 yinlianghui@hotoa.com
|
|
5113
5169
|
* @Date: 2023-03-22 09:31:21
|
|
5114
|
-
* @LastEditors:
|
|
5115
|
-
* @LastEditTime:
|
|
5170
|
+
* @LastEditors: 殷亮辉 yinlianghui@hotoa.com
|
|
5171
|
+
* @LastEditTime: 2025-04-07 16:02:53
|
|
5116
5172
|
*/
|
|
5117
5173
|
const getSchema$3 = (uiSchema)=>{
|
|
5118
5174
|
return {
|
|
@@ -5172,6 +5228,17 @@ const getSchema$3 = (uiSchema)=>{
|
|
|
5172
5228
|
"_isRelated": "${_isRelated}"
|
|
5173
5229
|
},
|
|
5174
5230
|
"expression": `\${_master.objectName != '${uiSchema.name}' && _master.objectName}`
|
|
5231
|
+
},
|
|
5232
|
+
// 列表视图、对象表格组件上的lookup字段,点开右侧弹出drawer窗口,删除记录后刷新列表
|
|
5233
|
+
{
|
|
5234
|
+
"actionType": "broadcast",
|
|
5235
|
+
"args": {
|
|
5236
|
+
"eventName": "@data.changed.${_tableObjectName}"
|
|
5237
|
+
},
|
|
5238
|
+
"data": {
|
|
5239
|
+
"objectName": "${_tableObjectName}"
|
|
5240
|
+
},
|
|
5241
|
+
"expression": `\${_tableObjectName != '${uiSchema.name}' && _tableObjectName}`
|
|
5175
5242
|
}
|
|
5176
5243
|
]
|
|
5177
5244
|
}
|
|
@@ -6086,7 +6153,7 @@ async function getObjectFieldsFilterFormSchema(ctx) {
|
|
|
6086
6153
|
const formSchema = {
|
|
6087
6154
|
"type": "service",
|
|
6088
6155
|
"visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
|
|
6089
|
-
"className": ctx.formFactor === 'SMALL' ? "slds-filters__body p-0 mb-2 overflow-y-auto overflow-x-hidden" : "slds-filters__body p-0 sm:grid sm:gap-4 sm:grid-cols-2
|
|
6156
|
+
"className": ctx.formFactor === 'SMALL' ? "slds-filters__body p-0 mb-2 overflow-y-auto overflow-x-hidden" : "slds-filters__body p-0 sm:grid sm:gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 p-1",
|
|
6090
6157
|
"style":{
|
|
6091
6158
|
"max-height":ctx.formFactor === 'SMALL'?"30vh":"unset"
|
|
6092
6159
|
},
|
|
@@ -6321,6 +6388,21 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
6321
6388
|
let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service", {name: "service_object_table_crud"});
|
|
6322
6389
|
crudService && crudService.setData({isFieldsFilterEmpty: true, showFieldsFilter: false});
|
|
6323
6390
|
`;
|
|
6391
|
+
/**
|
|
6392
|
+
给lookup字段配置filter_form_data时可以配置为amis变量,也可以配置为事态key-value键值对象值:
|
|
6393
|
+
```
|
|
6394
|
+
"filter_form_data": "${selectedPublicGroupFilterFormData|toJson}"
|
|
6395
|
+
```
|
|
6396
|
+
or
|
|
6397
|
+
```
|
|
6398
|
+
"filter_form_data": {
|
|
6399
|
+
"public_group_ids": [
|
|
6400
|
+
"67addbef39f9a4503789b38d"
|
|
6401
|
+
]
|
|
6402
|
+
}
|
|
6403
|
+
```
|
|
6404
|
+
*/
|
|
6405
|
+
const filterFormValues = ctx.filter_form_data;
|
|
6324
6406
|
const dataProviderInited = `
|
|
6325
6407
|
const searchableFields = ${JSON.stringify(searchableFields)};
|
|
6326
6408
|
const autoOpenFilter = ${autoOpenFilter};
|
|
@@ -6358,6 +6440,16 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
6358
6440
|
}
|
|
6359
6441
|
setData({ filterFormSearchableFields: defaultSearchableFields });
|
|
6360
6442
|
if(isLookup){
|
|
6443
|
+
let filterFormValues = ${_.isObject(filterFormValues) ? JSON.stringify(filterFormValues) : ('"' + filterFormValues + '"')} || {};
|
|
6444
|
+
const isAmisFormula = typeof filterFormValues === "string" && filterFormValues.indexOf("\${") > -1;
|
|
6445
|
+
if (isAmisFormula){
|
|
6446
|
+
filterFormValues = AmisCore.evaluate(filterFormValues, data) || {};
|
|
6447
|
+
}
|
|
6448
|
+
if (_.isObject(filterFormValues) || !_.isEmpty(filterFormValues)){
|
|
6449
|
+
let fields = data.uiSchema && data.uiSchema.fields;
|
|
6450
|
+
filterFormValues = SteedosUI.getSearchFilterFormValues(filterFormValues, fields);
|
|
6451
|
+
setData({ ...filterFormValues });
|
|
6452
|
+
}
|
|
6361
6453
|
// looup字段过滤器不在本地缓存记住过滤条件,所以初始始终隐藏过滤器
|
|
6362
6454
|
setData({ showFieldsFilter: autoOpenFilter });
|
|
6363
6455
|
}
|
|
@@ -6514,6 +6606,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
6514
6606
|
"body": [
|
|
6515
6607
|
{
|
|
6516
6608
|
"type": "button",
|
|
6609
|
+
"level": "primary",
|
|
6517
6610
|
"id": btnSearchId,
|
|
6518
6611
|
"label": i18next.t('frontend_fields_filter_button_search'),
|
|
6519
6612
|
"icon": "fa fa-search",
|
|
@@ -6531,7 +6624,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
6531
6624
|
},
|
|
6532
6625
|
{
|
|
6533
6626
|
"type": "button",
|
|
6534
|
-
"label": i18next.t('
|
|
6627
|
+
"label": i18next.t('frontend_form_reset'),
|
|
6535
6628
|
"name": "btn_filter_form_cancel",
|
|
6536
6629
|
// "visibleOn": "this.filterFormSearchableFields && this.filterFormSearchableFields.length",
|
|
6537
6630
|
"onEvent": {
|
|
@@ -6621,7 +6714,6 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
6621
6714
|
"className": "steedos-amis-form"
|
|
6622
6715
|
}
|
|
6623
6716
|
],
|
|
6624
|
-
"id": "u:ca99fa9fe1b1",
|
|
6625
6717
|
"actions": [
|
|
6626
6718
|
{
|
|
6627
6719
|
"type": "button",
|
|
@@ -6649,13 +6741,15 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
6649
6741
|
"actionType": "custom",
|
|
6650
6742
|
"script": onSearchableFieldsChangeScript
|
|
6651
6743
|
},
|
|
6652
|
-
|
|
6653
|
-
|
|
6654
|
-
|
|
6655
|
-
|
|
6656
|
-
|
|
6657
|
-
|
|
6658
|
-
|
|
6744
|
+
// 自动触发搜索事件会造成bug,应该是升级amis到6.4造成的,见:https://github.com/steedos/steedos-platform/issues/7121
|
|
6745
|
+
// 变更搜索项后,用户一般会点击搜索按钮,所以这里不自动触发搜索事件
|
|
6746
|
+
// {
|
|
6747
|
+
// "actionType": "click",
|
|
6748
|
+
// "componentId": btnSearchId,
|
|
6749
|
+
// "args": {
|
|
6750
|
+
// "__from_fields_filter_settings_confirm": true
|
|
6751
|
+
// }
|
|
6752
|
+
// },
|
|
6659
6753
|
{
|
|
6660
6754
|
"componentId": "",
|
|
6661
6755
|
"args": {},
|
|
@@ -6686,12 +6780,11 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
6686
6780
|
]
|
|
6687
6781
|
}
|
|
6688
6782
|
},
|
|
6689
|
-
"id": "u:b96d84868a5a",
|
|
6690
6783
|
"level": "link"
|
|
6691
6784
|
}
|
|
6692
6785
|
],
|
|
6693
6786
|
"size": "xs",
|
|
6694
|
-
"className": "space-x-
|
|
6787
|
+
"className": "space-x-2"
|
|
6695
6788
|
},
|
|
6696
6789
|
"size": "xs",
|
|
6697
6790
|
"className": "slds-filters__footer slds-grid slds-shrink-none flex justify-between p-0"
|
|
@@ -7395,7 +7488,6 @@ function getObjectListHeaderFirstLine(objectSchema, listViewName, ctx) {
|
|
|
7395
7488
|
"id": "u:ce9e3fcc411a"
|
|
7396
7489
|
}
|
|
7397
7490
|
],
|
|
7398
|
-
"className": "steedos-overflow-visible-dialog",
|
|
7399
7491
|
"showCloseButton": true,
|
|
7400
7492
|
"showErrorMsg": true,
|
|
7401
7493
|
"showLoading": true,
|
|
@@ -7637,7 +7729,7 @@ function getObjectListHeader(objectSchema, listViewName, ctx) {
|
|
|
7637
7729
|
let headerSchema = [{
|
|
7638
7730
|
"type": "wrapper",
|
|
7639
7731
|
"body": body,
|
|
7640
|
-
"className": `
|
|
7732
|
+
"className": `px-3 pt-3 pb-0 m-1 bg-white`
|
|
7641
7733
|
}];
|
|
7642
7734
|
// console.log(`getObjectListHeader`, objectSchema, listViewName, ctx)
|
|
7643
7735
|
return headerSchema;
|
|
@@ -8385,7 +8477,6 @@ const getSetListviewFiltersButtonSchema = ()=>{
|
|
|
8385
8477
|
}
|
|
8386
8478
|
}
|
|
8387
8479
|
],
|
|
8388
|
-
"className": "steedos-overflow-visible-dialog",
|
|
8389
8480
|
"showCloseButton": true,
|
|
8390
8481
|
"showErrorMsg": true,
|
|
8391
8482
|
"showLoading": true,
|
|
@@ -9019,7 +9110,7 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
|
|
|
9019
9110
|
return {
|
|
9020
9111
|
"type": "tooltip-wrapper",
|
|
9021
9112
|
"id": "steedos_crud_toolbar_quick_search",
|
|
9022
|
-
"align": "
|
|
9113
|
+
"align": "right",
|
|
9023
9114
|
"title": "",
|
|
9024
9115
|
"content": "可搜索字段:" + searchableFieldsLabel.join(","),
|
|
9025
9116
|
"placement": "bottom",
|
|
@@ -9033,6 +9124,7 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
|
|
|
9033
9124
|
"name": keywordsSearchBoxName,
|
|
9034
9125
|
"placeholder": "快捷搜索",
|
|
9035
9126
|
"value": crudKeywords,
|
|
9127
|
+
"mini": true,
|
|
9036
9128
|
"clearable": true,//因为清除并不会触发失去焦点事件,只有禁用,但是它会触发change事件,所以等升级到amis 3.4+后可以重新放开
|
|
9037
9129
|
"clearAndSubmit": true,
|
|
9038
9130
|
"searchImediately": false,
|
|
@@ -9081,7 +9173,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {
|
|
|
9081
9173
|
if(!hiddenCount){
|
|
9082
9174
|
toolbarCount = {
|
|
9083
9175
|
"type": "tpl",
|
|
9084
|
-
"align": "
|
|
9176
|
+
"align": "left",
|
|
9085
9177
|
"className": "text-gray-500 mr-2",
|
|
9086
9178
|
"tpl": "${count} " + i18next.t('frontend_record_sum')
|
|
9087
9179
|
};
|
|
@@ -9165,7 +9257,7 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {
|
|
|
9165
9257
|
"animation": true,
|
|
9166
9258
|
"visibleOn": "${isFieldsFilterEmpty == false && isLookup != true}"
|
|
9167
9259
|
},
|
|
9168
|
-
"align": "
|
|
9260
|
+
"align": "right",
|
|
9169
9261
|
"className": "bg-white p-2 rounded text-gray-500",
|
|
9170
9262
|
"onEvent": {
|
|
9171
9263
|
"click": {
|
|
@@ -9187,27 +9279,27 @@ function getObjectHeaderToolbar(mainObject, fields, formFactor, {
|
|
|
9187
9279
|
// 当出现空的.antd-Crud-toolbar-item dom时会影响toolbar元素的maring-right css样式计算,如果有动态需要应该加到动态数组变量toolbars中
|
|
9188
9280
|
let toolbars = [];
|
|
9189
9281
|
if(formFactor === 'SMALL'){
|
|
9190
|
-
if(toolbarCount){
|
|
9191
|
-
|
|
9192
|
-
}
|
|
9193
|
-
toolbars.push(toolbarReloadButton);
|
|
9194
|
-
toolbars.push(
|
|
9282
|
+
// if(toolbarCount){
|
|
9283
|
+
// toolbars.push(toolbarCount);
|
|
9284
|
+
// }
|
|
9285
|
+
// toolbars.push(toolbarReloadButton);
|
|
9286
|
+
toolbars.push(toolbarDQuickSearchBox);
|
|
9195
9287
|
if(toolbarFilter){
|
|
9196
9288
|
toolbars.push(toolbarFilter);
|
|
9197
9289
|
}
|
|
9198
|
-
toolbars.push(
|
|
9290
|
+
toolbars.push(toolbarDisplayAsButton);
|
|
9199
9291
|
return [
|
|
9200
9292
|
// "bulkActions",
|
|
9201
9293
|
...(headerToolbarItems || []),
|
|
9202
9294
|
...toolbars,
|
|
9203
9295
|
]
|
|
9204
9296
|
}else {
|
|
9297
|
+
toolbars.push(toolbarDQuickSearchBox);
|
|
9205
9298
|
toolbars.push(toolbarReloadButton);
|
|
9206
9299
|
toolbars.push(toolbarDisplayAsButton);
|
|
9207
9300
|
if(mainObject?.permissions?.allowCreateListViews){
|
|
9208
9301
|
toolbars.push(getSettingListviewToolbarButtonSchema());
|
|
9209
9302
|
}
|
|
9210
|
-
toolbars.push(toolbarDQuickSearchBox);
|
|
9211
9303
|
if(toolbarFilter){
|
|
9212
9304
|
toolbars.push(toolbarFilter);
|
|
9213
9305
|
}
|
|
@@ -9887,6 +9979,17 @@ async function getObjectForm(objectSchema, ctx){
|
|
|
9887
9979
|
},
|
|
9888
9980
|
"expression": `\${_master.objectName != '${objectSchema.name}' && _master.objectName}`
|
|
9889
9981
|
},
|
|
9982
|
+
// 列表视图、对象表格组件上的lookup字段,点开右侧弹出drawer窗口,修改记录后刷新列表
|
|
9983
|
+
{
|
|
9984
|
+
"actionType": "broadcast",
|
|
9985
|
+
"args": {
|
|
9986
|
+
"eventName": "@data.changed.${_tableObjectName}"
|
|
9987
|
+
},
|
|
9988
|
+
"data": {
|
|
9989
|
+
"objectName": "${_tableObjectName}"
|
|
9990
|
+
},
|
|
9991
|
+
"expression": `\${_tableObjectName != '${objectSchema.name}' && _tableObjectName}`
|
|
9992
|
+
},
|
|
9890
9993
|
...submitSuccActions,
|
|
9891
9994
|
// {
|
|
9892
9995
|
// "actionType": "custom",
|
|
@@ -10489,7 +10592,7 @@ async function getObjectRelatedListsMiniSchema(objectApiName){
|
|
|
10489
10592
|
* @Author: baozhoutao@steedos.com
|
|
10490
10593
|
* @Date: 2022-07-05 15:55:39
|
|
10491
10594
|
* @LastEditors: 殷亮辉 yinlianghui@hotoa.com
|
|
10492
|
-
* @LastEditTime: 2025-
|
|
10595
|
+
* @LastEditTime: 2025-06-17 20:18:18
|
|
10493
10596
|
* @Description:
|
|
10494
10597
|
*/
|
|
10495
10598
|
|
|
@@ -10845,12 +10948,13 @@ async function getListSchema(
|
|
|
10845
10948
|
"filtersFunction": listview_filters,
|
|
10846
10949
|
"sort": sort,
|
|
10847
10950
|
"ctx": ctx,
|
|
10848
|
-
"requestAdaptor":
|
|
10849
|
-
"adaptor":
|
|
10951
|
+
"requestAdaptor": ctx.requestAdaptor || listView.requestAdaptor,
|
|
10952
|
+
"adaptor": ctx.adaptor || listView.adaptor,
|
|
10850
10953
|
"headerToolbarItems": ctx.headerToolbarItems,
|
|
10851
10954
|
"filterVisible": ctx.filterVisible,
|
|
10852
10955
|
"rowClassNameExpr": ctx.rowClassNameExpr,
|
|
10853
|
-
"
|
|
10956
|
+
"crud": ctx.crud || listView.crud,
|
|
10957
|
+
"crudDataFilter": ctx.crudDataFilter || listView.crudDataFilter ,
|
|
10854
10958
|
"onCrudDataFilter": ctx.onCrudDataFilter
|
|
10855
10959
|
};
|
|
10856
10960
|
// console.log(`getListSchema===>`,amisSchema)
|
|
@@ -11015,7 +11119,8 @@ async function getRecordDetailHeaderSchema(objectName,recordId, options){
|
|
|
11015
11119
|
}
|
|
11016
11120
|
|
|
11017
11121
|
async function getRecordDetailSchema(objectName, appId, props = {}){
|
|
11018
|
-
const uiSchema = await getUISchema(objectName);
|
|
11122
|
+
const uiSchema = await getUISchema(objectName);
|
|
11123
|
+
|
|
11019
11124
|
const relatedLists = await getObjectRelatedList(objectName);
|
|
11020
11125
|
const detailed = {
|
|
11021
11126
|
"title": i18next.t('frontend_record_detail_tab_detailed'),
|
|
@@ -11056,6 +11161,21 @@ async function getRecordDetailSchema(objectName, appId, props = {}){
|
|
|
11056
11161
|
if(relatedLists.length){
|
|
11057
11162
|
content.tabs.push(related);
|
|
11058
11163
|
}
|
|
11164
|
+
const contents = [content];
|
|
11165
|
+
if (uiSchema.enable_chatter && window.BuilderLiveblocks) {
|
|
11166
|
+
const chatter = {
|
|
11167
|
+
"type": "rooms-provider",
|
|
11168
|
+
"baseUrl": "${context.rootUrl}",
|
|
11169
|
+
"body": [
|
|
11170
|
+
{
|
|
11171
|
+
"type": "rooms-comments",
|
|
11172
|
+
"className": "flex flex-col gap-3 m-4",
|
|
11173
|
+
"roomId": "objects:${objectName}:${recordId}",
|
|
11174
|
+
}
|
|
11175
|
+
]
|
|
11176
|
+
};
|
|
11177
|
+
contents.push(chatter);
|
|
11178
|
+
}
|
|
11059
11179
|
// content.tabs = reverse(content.tabs)
|
|
11060
11180
|
if(content.tabs.length == 1){
|
|
11061
11181
|
content.className += " steedos-record-tabs--single";
|
|
@@ -11075,7 +11195,7 @@ async function getRecordDetailSchema(objectName, appId, props = {}){
|
|
|
11075
11195
|
"showBackButton": props.showBackButton,
|
|
11076
11196
|
_reloadKey: props._reloadKey
|
|
11077
11197
|
},
|
|
11078
|
-
|
|
11198
|
+
...contents,
|
|
11079
11199
|
],
|
|
11080
11200
|
"objectApiName": "${objectName}",
|
|
11081
11201
|
"recordId": "${recordId}",
|
|
@@ -11859,14 +11979,42 @@ function getLookupSapceUserTreeSchema(isMobile){
|
|
|
11859
11979
|
{
|
|
11860
11980
|
"actionType": "custom",
|
|
11861
11981
|
"script": `
|
|
11982
|
+
console.log("lookup-tree-event.data:",event.data);
|
|
11983
|
+
console.log("lookup-tree-event.data.value.label:",event.data.value.label);
|
|
11984
|
+
console.log("lookup-tree-event.data.value.value:",event.data.value.value);
|
|
11862
11985
|
const scope = event.context.scoped;
|
|
11863
|
-
var
|
|
11986
|
+
var treeFilterFormValues={
|
|
11864
11987
|
"__searchable__organizations_parents":event.data.value.value
|
|
11865
11988
|
}
|
|
11866
|
-
var listView = scope.parent.getComponents().find(function(n){
|
|
11867
|
-
|
|
11989
|
+
// var listView = scope.parent.getComponents().find(function(n){
|
|
11990
|
+
// return n.props.type === "crud";
|
|
11991
|
+
// });
|
|
11992
|
+
// listView.handleFilterSubmit(Object.assign({}, filterFormValues));
|
|
11993
|
+
let __lookupField = event.data.__lookupField;
|
|
11994
|
+
let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
|
|
11995
|
+
var filterForm = scope.getComponents().find(function(n){
|
|
11996
|
+
return n.props.type === "form";
|
|
11868
11997
|
});
|
|
11869
|
-
|
|
11998
|
+
let filterFormValues = filterForm.getData();
|
|
11999
|
+
filterFormValues = JSON.parse(JSON.stringify(filterFormValues)); //只取当层数据域中数据,去除__super层数据
|
|
12000
|
+
const changedFilterFormValues = _.pickBy(filterFormValues, function(n,k){return /^__searchable__/.test(k);});
|
|
12001
|
+
Object.assign(changedFilterFormValues, treeFilterFormValues);
|
|
12002
|
+
// 同步__changedFilterFormValues中的值
|
|
12003
|
+
let __changedFilterFormValuesKey = "__changedFilterFormValues";
|
|
12004
|
+
if(__lookupField){
|
|
12005
|
+
let lookupTag = "__lookup__" + __lookupField.name + "__" + __lookupField.reference_to;
|
|
12006
|
+
if(__lookupField.reference_to_field){
|
|
12007
|
+
lookupTag += "__" + __lookupField.reference_to_field;
|
|
12008
|
+
}
|
|
12009
|
+
__changedFilterFormValuesKey += lookupTag;
|
|
12010
|
+
}
|
|
12011
|
+
if(crud){
|
|
12012
|
+
let crudData = crud.getData();
|
|
12013
|
+
crudData[__changedFilterFormValuesKey] = changedFilterFormValues;
|
|
12014
|
+
crud.setData(crudData);
|
|
12015
|
+
}
|
|
12016
|
+
filterForm.setData(treeFilterFormValues);
|
|
12017
|
+
filterForm.handleFormSubmit(event);
|
|
11870
12018
|
`
|
|
11871
12019
|
},
|
|
11872
12020
|
{
|
|
@@ -12084,6 +12232,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
12084
12232
|
// field.name可能是带点的名称,比如审批王中子表字段'instances.instances_submitter',如果不替换掉点,会造成审批王表单中新建子表行时报错
|
|
12085
12233
|
let keywordsSearchBoxName = `__keywords_lookup__${field.name.replace(/\./g, "_")}__to__${refObjectConfig.name}`;
|
|
12086
12234
|
|
|
12235
|
+
const filterFormValues = field.filter_form_data;
|
|
12087
12236
|
source.requestAdaptor = `
|
|
12088
12237
|
let __changedFilterFormValuesKey = "__changedFilterFormValues";
|
|
12089
12238
|
let __lookupField = api.data.$self.__lookupField;
|
|
@@ -12126,7 +12275,20 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
12126
12275
|
}
|
|
12127
12276
|
}
|
|
12128
12277
|
|
|
12129
|
-
|
|
12278
|
+
let filterFormValues = {};
|
|
12279
|
+
if (selfData.op !== 'loadOptions'){
|
|
12280
|
+
filterFormValues = ${_$1.isObject(filterFormValues) ? JSON.stringify(filterFormValues) : ('"' + filterFormValues + '"')} || {};
|
|
12281
|
+
const isAmisFormula = typeof filterFormValues === "string" && filterFormValues.indexOf("\${") > -1;
|
|
12282
|
+
if (isAmisFormula){
|
|
12283
|
+
filterFormValues = AmisCore.evaluate(filterFormValues, context) || {};
|
|
12284
|
+
}
|
|
12285
|
+
if (_.isObject(filterFormValues) || !_.isEmpty(filterFormValues)){
|
|
12286
|
+
let fields = api.data.$self.uiSchema && api.data.$self.uiSchema.fields;
|
|
12287
|
+
filterFormValues = SteedosUI.getSearchFilterFormValues(filterFormValues, fields);
|
|
12288
|
+
}
|
|
12289
|
+
}
|
|
12290
|
+
|
|
12291
|
+
var searchableFilter = SteedosUI.getSearchFilter(Object.assign({}, { ...filterFormValues }, selfData)) || [];
|
|
12130
12292
|
|
|
12131
12293
|
if(searchableFilter.length > 0){
|
|
12132
12294
|
if(filters.length > 0 ){
|
|
@@ -12316,7 +12478,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
12316
12478
|
return payload;
|
|
12317
12479
|
`;
|
|
12318
12480
|
}
|
|
12319
|
-
let top =
|
|
12481
|
+
let top = 500;
|
|
12320
12482
|
|
|
12321
12483
|
if(refObjectConfig.paging && refObjectConfig.paging.enabled === false){
|
|
12322
12484
|
top = 1000;
|
|
@@ -12366,7 +12528,8 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
12366
12528
|
keywordsSearchBoxName,
|
|
12367
12529
|
searchable_fields: field.searchable_fields,
|
|
12368
12530
|
auto_open_filter: field.auto_open_filter,
|
|
12369
|
-
show_left_filter: field.show_left_filter
|
|
12531
|
+
show_left_filter: field.show_left_filter,
|
|
12532
|
+
filter_form_data: field.filter_form_data
|
|
12370
12533
|
});
|
|
12371
12534
|
}
|
|
12372
12535
|
pickerSchema.data = Object.assign({}, pickerSchema.data, {
|
|
@@ -12400,7 +12563,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
12400
12563
|
{
|
|
12401
12564
|
"actionType": "custom",
|
|
12402
12565
|
"script": `
|
|
12403
|
-
|
|
12566
|
+
// lookup字段弹出列表,点击新建按钮,新建记录成功后,触发@data.changed.xxx,
|
|
12567
|
+
// 此时context.props.data值是lookup字段所在表单数据,经测试多层lookup弹出列表新建记录成功后context.props.data始终取的是最近一层的lookup字段所在表单数据,符合预期
|
|
12568
|
+
const masterRecord = context.props.data;//event.data._master && event.data._master.record;
|
|
12404
12569
|
const fieldConfig = ${JSON.stringify(field)};
|
|
12405
12570
|
let reference_to = fieldConfig.reference_to;
|
|
12406
12571
|
let saveValue;
|
|
@@ -12410,7 +12575,6 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
12410
12575
|
}
|
|
12411
12576
|
const saveField = fieldConfig.reference_to_field || '_id';
|
|
12412
12577
|
const saveFieldValue = newRecord[saveField];
|
|
12413
|
-
|
|
12414
12578
|
if( fieldConfig._reference_to && (_.isArray(fieldConfig._reference_to) || _.isFunction(fieldConfig._reference_to) || fieldConfig._reference_to.startsWith('function') ) ){
|
|
12415
12579
|
|
|
12416
12580
|
const fieldValue = masterRecord ? masterRecord[fieldConfig.name] : {o: reference_to, ids: []};
|
|
@@ -12430,8 +12594,10 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
12430
12594
|
|
|
12431
12595
|
}else{
|
|
12432
12596
|
if(fieldConfig.multiple){
|
|
12433
|
-
//
|
|
12434
|
-
|
|
12597
|
+
// const fieldValue = (masterRecord && masterRecord[fieldConfig.name]) || [];
|
|
12598
|
+
// 连续新建多个记录时,因为masterRecord获取的主记录不是实时的,所以只会勾选最后一个新建的记录
|
|
12599
|
+
// 而下面context.context.component指向的是lookup picker组件,可以直接取到用户实时勾选的记录。
|
|
12600
|
+
const fieldValue = context.context.component.props.store.toJSON().selectedItems
|
|
12435
12601
|
saveValue = fieldValue.concat(saveFieldValue);
|
|
12436
12602
|
}else{
|
|
12437
12603
|
saveValue = saveFieldValue;
|
|
@@ -12439,7 +12605,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
12439
12605
|
}
|
|
12440
12606
|
|
|
12441
12607
|
const ctx = ${JSON.stringify(ctx)};
|
|
12442
|
-
const componentId = ctx.defaults.formSchema.id;
|
|
12608
|
+
const componentId = ctx.defaults && ctx.defaults.formSchema && ctx.defaults.formSchema.id;
|
|
12443
12609
|
doAction({
|
|
12444
12610
|
actionType: 'setValue',
|
|
12445
12611
|
componentId: componentId,
|
|
@@ -12866,6 +13032,10 @@ async function lookupToAmis(field, readonly, ctx){
|
|
|
12866
13032
|
}
|
|
12867
13033
|
let amisSchema;
|
|
12868
13034
|
// 默认使用下拉框模式显示lookup选项,只能配置了enable_enhanced_lookup才使用弹出增强模式
|
|
13035
|
+
if(enableEnhancedLookup == true && field.amis && field.amis.type && field.amis.type !== 'picker'){
|
|
13036
|
+
// 如果配置了amis.type且其值不是picker,则不使用弹出增强模式
|
|
13037
|
+
enableEnhancedLookup = false;
|
|
13038
|
+
}
|
|
12869
13039
|
if(enableEnhancedLookup == true){
|
|
12870
13040
|
amisSchema = await lookupToAmisPicker(field, readonly, ctx);
|
|
12871
13041
|
}else if(refObject.enable_tree) {
|
|
@@ -13997,7 +14167,16 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
|
|
|
13997
14167
|
return convertData
|
|
13998
14168
|
}
|
|
13999
14169
|
// if(ctx.mode === 'edit'){
|
|
14000
|
-
let convertDataResult
|
|
14170
|
+
let convertDataResult;
|
|
14171
|
+
if(convertData.type == "steedos-field"){
|
|
14172
|
+
// 如果是steedos-field,不能把amis属性合并到steedos-field根属性中,要合并也是合并到steedos-field的config.amis中
|
|
14173
|
+
// 而steedos-field字段的amis属性本身就在config.amis中了,所以这里不需要再合并field.amis
|
|
14174
|
+
// 目前测试到受影响的是,把字段的amis属性配置为{"type": "checkboxes"}时,ObjectForm只读模式下,lookup字段返回的是type为steedos-field的组件,此时field.amis中的type不应该合并到steedos-field根属性中
|
|
14175
|
+
convertDataResult = Object.assign({}, baseData, convertData, { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name}, {name: baseData.name});
|
|
14176
|
+
}
|
|
14177
|
+
else {
|
|
14178
|
+
convertDataResult = Object.assign({}, baseData, convertData, { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name}, field.amis, {name: baseData.name});
|
|
14179
|
+
}
|
|
14001
14180
|
// 只读时file字段的外层control层若存在name,内部each组件存在问题
|
|
14002
14181
|
if(readonly && field.type == "file") {
|
|
14003
14182
|
convertDataResult.name = "";
|