@steedos-widgets/amis-lib 6.3.12-beta.2 → 6.3.12-beta.20
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 +156 -34
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +156 -34
- package/dist/index.esm.js.map +1 -1
- package/dist/index.umd.js +42 -36
- package/dist/index.umd.js.map +1 -1
- package/dist/types/lib/converter/amis/fields/file.d.ts +2 -2
- package/dist/types/schema/standard_new.amis.d.ts +3 -0
- package/dist/types/standard/button.d.ts +3 -0
- package/package.json +2 -2
package/dist/index.cjs.js
CHANGED
|
@@ -1240,7 +1240,7 @@ async function getPage({type, pageId = '', appId, objectName = '', recordId = ''
|
|
|
1240
1240
|
* @Author: baozhoutao@steedos.com
|
|
1241
1241
|
* @Date: 2022-10-28 14:15:09
|
|
1242
1242
|
* @LastEditors: baozhoutao@steedos.com
|
|
1243
|
-
* @LastEditTime:
|
|
1243
|
+
* @LastEditTime: 2025-02-13 09:31:02
|
|
1244
1244
|
* @Description:
|
|
1245
1245
|
*/
|
|
1246
1246
|
|
|
@@ -1299,7 +1299,7 @@ async function getLookupLinkOnClick(field, options) {
|
|
|
1299
1299
|
"title": " ",
|
|
1300
1300
|
"headerClassName": "hidden",
|
|
1301
1301
|
"size": "lg",
|
|
1302
|
-
"width": "70%",
|
|
1302
|
+
"width": window.drawerWidth || "70%",
|
|
1303
1303
|
"bodyClassName": "p-0 m-0 bg-gray-100",
|
|
1304
1304
|
"closeOnEsc": true,
|
|
1305
1305
|
"closeOnOutside": true,
|
|
@@ -1895,7 +1895,6 @@ async function getQuickEditSchema(object, columnField, options){
|
|
|
1895
1895
|
{
|
|
1896
1896
|
actionType: "custom",
|
|
1897
1897
|
script: `
|
|
1898
|
-
console.log("asdasd");
|
|
1899
1898
|
let items = _.cloneDeep(event.data.items);
|
|
1900
1899
|
let selectedItems = _.cloneDeep(event.data.selectedItems);
|
|
1901
1900
|
if(event.data.isBatchEdit){
|
|
@@ -2392,7 +2391,7 @@ async function getColumnItemOnClick(field, options){
|
|
|
2392
2391
|
"title": " ",
|
|
2393
2392
|
"headerClassName": "hidden",
|
|
2394
2393
|
"size": "lg",
|
|
2395
|
-
"width": "70%",
|
|
2394
|
+
"width": window.drawerWidth || "70%",
|
|
2396
2395
|
"bodyClassName": "p-0 m-0 bg-gray-100",
|
|
2397
2396
|
"closeOnEsc": true,
|
|
2398
2397
|
"closeOnOutside": true,
|
|
@@ -3436,6 +3435,11 @@ async function getTableApi(mainObject, fields, options){
|
|
|
3436
3435
|
}, 600);
|
|
3437
3436
|
}
|
|
3438
3437
|
}
|
|
3438
|
+
|
|
3439
|
+
// 列表搜索和快速搜索,有时在某些操作情况下还是会造成crud接口请求使用的过滤条件是上次的,这里强制把正确的过滤条件返回到crud,详细规则见:https://github.com/steedos/steedos-platform/issues/7112
|
|
3440
|
+
// lookup字段的弹出列表搜索不受这里影响,因为lookup字段的弹出列表搜索是单独的接口请求
|
|
3441
|
+
payload.data.__changedFilterFormValues = api.context.__changedFilterFormValues;
|
|
3442
|
+
payload.data.__changedSearchBoxValues = api.context.__changedSearchBoxValues;
|
|
3439
3443
|
${options.adaptor || ''}
|
|
3440
3444
|
return payload;
|
|
3441
3445
|
`;
|
|
@@ -4836,7 +4840,7 @@ const parseSingleExpression = function (func, formData, dataPath, global, userSe
|
|
|
4836
4840
|
* @Author: baozhoutao@steedos.com
|
|
4837
4841
|
* @Date: 2022-11-01 15:51:00
|
|
4838
4842
|
* @LastEditors: baozhoutao@steedos.com
|
|
4839
|
-
* @LastEditTime: 2024-
|
|
4843
|
+
* @LastEditTime: 2024-12-26 20:28:43
|
|
4840
4844
|
* @Description:
|
|
4841
4845
|
*/
|
|
4842
4846
|
|
|
@@ -4996,20 +5000,23 @@ const getSchema$5 = async (uiSchema, ctx) => {
|
|
|
4996
5000
|
{
|
|
4997
5001
|
type: 'button',
|
|
4998
5002
|
actionType: 'cancel',
|
|
4999
|
-
label: i18next__default["default"].t('frontend_form_cancel')
|
|
5003
|
+
label: i18next__default["default"].t('frontend_form_cancel'),
|
|
5004
|
+
className: 'form-btn-cancel'
|
|
5000
5005
|
},
|
|
5001
5006
|
{
|
|
5002
5007
|
type: 'button',
|
|
5003
5008
|
label: i18next__default["default"].t('frontend_form_save_and_new'),
|
|
5004
5009
|
actionType: 'confirm',
|
|
5005
5010
|
close: false,
|
|
5006
|
-
id: "confirmAndNew"
|
|
5011
|
+
id: "confirmAndNew",
|
|
5012
|
+
className: 'form-btn-save_and_new'
|
|
5007
5013
|
},
|
|
5008
5014
|
{
|
|
5009
5015
|
type: 'button',
|
|
5010
5016
|
actionType: 'confirm',
|
|
5011
5017
|
label: i18next__default["default"].t('frontend_form_save'),
|
|
5012
|
-
primary: true
|
|
5018
|
+
primary: true,
|
|
5019
|
+
className: 'form-btn-save'
|
|
5013
5020
|
},
|
|
5014
5021
|
]
|
|
5015
5022
|
}
|
|
@@ -6164,15 +6171,39 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
6164
6171
|
if (!ctx) {
|
|
6165
6172
|
ctx = {};
|
|
6166
6173
|
}
|
|
6174
|
+
console.log("getObjectFieldsFilterBarSchema===", ctx);
|
|
6175
|
+
const searchableFields = ctx.searchable_fields;
|
|
6176
|
+
const autoOpenFilter = !!ctx.auto_open_filter;
|
|
6167
6177
|
const btnSearchId = "btn_filter_form_search_" + new Date().getTime();
|
|
6168
6178
|
const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);
|
|
6169
6179
|
const keywordsSearchBoxName = ctx.keywordsSearchBoxName || "__keywords";
|
|
6170
6180
|
const onSearchScript = `
|
|
6171
|
-
|
|
6181
|
+
let isLookup = event.data.isLookup;
|
|
6182
|
+
let __lookupField = event.data.__lookupField;
|
|
6172
6183
|
const scope = event.context.scoped;
|
|
6184
|
+
let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
|
|
6173
6185
|
var filterForm = scope.parent.parent.getComponents().find(function(n){
|
|
6174
6186
|
return n.props.type === "form";
|
|
6175
6187
|
});
|
|
6188
|
+
// 使用filterForm.getValues()的话,并不能拿到本地存储中的过滤条件,所以需要从event.data中取,因为本地存储中的过滤条件自动填充到表单上时filterForm.getValues()拿不到。
|
|
6189
|
+
let filterFormValues = event.data;
|
|
6190
|
+
filterFormValues = JSON.parse(JSON.stringify(filterFormValues)); //只取当层数据域中数据,去除__super层数据
|
|
6191
|
+
const changedFilterFormValues = _.pickBy(filterFormValues, function(n,k){return /^__searchable__/.test(k);});
|
|
6192
|
+
// 同步__changedFilterFormValues中的值
|
|
6193
|
+
// crud && crud.setData({__changedFilterFormValues: {}});
|
|
6194
|
+
let __changedFilterFormValuesKey = "__changedFilterFormValues";
|
|
6195
|
+
if(isLookup && __lookupField){
|
|
6196
|
+
let lookupTag = "__lookup__" + __lookupField.name + "__" + __lookupField.reference_to;
|
|
6197
|
+
if(__lookupField.reference_to_field){
|
|
6198
|
+
lookupTag += "__" + __lookupField.reference_to_field;
|
|
6199
|
+
}
|
|
6200
|
+
__changedFilterFormValuesKey += lookupTag;
|
|
6201
|
+
}
|
|
6202
|
+
if(crud){
|
|
6203
|
+
let crudData = crud.getData();
|
|
6204
|
+
crudData[__changedFilterFormValuesKey] = changedFilterFormValues;
|
|
6205
|
+
crud.setData(crudData);
|
|
6206
|
+
}
|
|
6176
6207
|
filterForm.handleFormSubmit(event);
|
|
6177
6208
|
// var filterFormValues = filterForm.getValues();
|
|
6178
6209
|
// var listView = scope.parent.parent.parent.getComponents().find(function(n){
|
|
@@ -6221,11 +6252,8 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
6221
6252
|
}
|
|
6222
6253
|
filterService.setData({showFieldsFilter});
|
|
6223
6254
|
// resizeWindow();//已迁移到搜索栏表单提交事件中执行,因为表单项change后也会触发表单提交了
|
|
6224
|
-
// 使用filterForm.getValues()的话,并不能拿到本地存储中的过滤条件,所以需要从event.data中取。
|
|
6225
|
-
let filterFormValues = event.data;
|
|
6226
6255
|
let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);
|
|
6227
|
-
let
|
|
6228
|
-
let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
|
|
6256
|
+
let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service", {name: "service_object_table_crud"});
|
|
6229
6257
|
crudService && crudService.setData({isFieldsFilterEmpty, showFieldsFilter});
|
|
6230
6258
|
`;
|
|
6231
6259
|
const onCancelScript = `
|
|
@@ -6311,10 +6339,13 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
6311
6339
|
|
|
6312
6340
|
// 移除搜索按钮上的红点
|
|
6313
6341
|
// let crudService = scope.getComponentById("service_listview_" + event.data.objectName);
|
|
6314
|
-
let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
|
|
6342
|
+
let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service", {name: "service_object_table_crud"});
|
|
6315
6343
|
crudService && crudService.setData({isFieldsFilterEmpty: true, showFieldsFilter: false});
|
|
6316
6344
|
`;
|
|
6345
|
+
const filterFormValues = ctx.filter_form_data;
|
|
6317
6346
|
const dataProviderInited = `
|
|
6347
|
+
const searchableFields = ${JSON.stringify(searchableFields)};
|
|
6348
|
+
const autoOpenFilter = ${autoOpenFilter};
|
|
6318
6349
|
const objectName = data.objectName;
|
|
6319
6350
|
const isLookup = data.isLookup;
|
|
6320
6351
|
const listName = data.listName;
|
|
@@ -6327,6 +6358,11 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
6327
6358
|
if(defaultSearchableFields){
|
|
6328
6359
|
defaultSearchableFields = defaultSearchableFields.split(",");
|
|
6329
6360
|
}
|
|
6361
|
+
if(_.isEmpty(defaultSearchableFields) && searchableFields){
|
|
6362
|
+
if(searchableFields.length){
|
|
6363
|
+
defaultSearchableFields = _.map(searchableFields, 'field');
|
|
6364
|
+
}
|
|
6365
|
+
}
|
|
6330
6366
|
if(_.isEmpty(defaultSearchableFields) && data.uiSchema){
|
|
6331
6367
|
let listView = data.uiSchema.list_views[data.listName];
|
|
6332
6368
|
const sFields = listView && listView.searchable_fields;
|
|
@@ -6344,8 +6380,18 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
|
|
|
6344
6380
|
}
|
|
6345
6381
|
setData({ filterFormSearchableFields: defaultSearchableFields });
|
|
6346
6382
|
if(isLookup){
|
|
6383
|
+
let filterFormValues = ${_.isObject(filterFormValues) ? JSON.stringify(filterFormValues) : ('"' + filterFormValues + '"')} || {};
|
|
6384
|
+
const isAmisFormula = typeof filterFormValues === "string" && filterFormValues.indexOf("\${") > -1;
|
|
6385
|
+
if (isAmisFormula){
|
|
6386
|
+
filterFormValues = AmisCore.evaluate(filterFormValues, data) || {};
|
|
6387
|
+
}
|
|
6388
|
+
if (_.isObject(filterFormValues) || !_.isEmpty(filterFormValues)){
|
|
6389
|
+
let fields = data.uiSchema && data.uiSchema.fields;
|
|
6390
|
+
filterFormValues = SteedosUI.getSearchFilterFormValues(filterFormValues, fields);
|
|
6391
|
+
setData({ ...filterFormValues });
|
|
6392
|
+
}
|
|
6347
6393
|
// looup字段过滤器不在本地缓存记住过滤条件,所以初始始终隐藏过滤器
|
|
6348
|
-
setData({ showFieldsFilter:
|
|
6394
|
+
setData({ showFieldsFilter: autoOpenFilter });
|
|
6349
6395
|
}
|
|
6350
6396
|
else{
|
|
6351
6397
|
const listViewPropsStoreKey = location.pathname + "/crud";
|
|
@@ -7610,7 +7656,7 @@ async function getObjectListHeaderFieldsFilterBar(objectSchema, listViewName, ct
|
|
|
7610
7656
|
* @param {*} objectSchema 对象UISchema
|
|
7611
7657
|
* @returns amisSchema
|
|
7612
7658
|
*/
|
|
7613
|
-
function getObjectListHeader
|
|
7659
|
+
function getObjectListHeader(objectSchema, listViewName, ctx) {
|
|
7614
7660
|
if (!ctx) {
|
|
7615
7661
|
ctx = {};
|
|
7616
7662
|
}
|
|
@@ -8936,10 +8982,9 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
|
|
|
8936
8982
|
}
|
|
8937
8983
|
|
|
8938
8984
|
const onChangeScript = `
|
|
8939
|
-
// console.log("==search=onChangeScript===");
|
|
8940
8985
|
const scope = event.context.scoped;
|
|
8941
8986
|
let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
|
|
8942
|
-
// let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
|
|
8987
|
+
// let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service", {name: "service_object_table_crud"});
|
|
8943
8988
|
let __changedSearchBoxValues = {};
|
|
8944
8989
|
__changedSearchBoxValues["${keywordsSearchBoxName}"] = event.data["${keywordsSearchBoxName}"];
|
|
8945
8990
|
// crudService && crudService.setData({__changedSearchBoxValues: __changedSearchBoxValues});
|
|
@@ -9306,10 +9351,28 @@ async function getObjectFilter(objectSchema, fields, options) {
|
|
|
9306
9351
|
let filterForm = SteedosUI.getClosestAmisComponentByType(scope, "form");
|
|
9307
9352
|
let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, "service");
|
|
9308
9353
|
// 使用event.data的话,并不能拿到本地存储中的过滤条件,所以需要从filterFormService中取。
|
|
9309
|
-
let filterFormValues = filterFormService.getData()
|
|
9354
|
+
let filterFormValues = filterFormService.getData();
|
|
9355
|
+
filterFormValues = JSON.parse(JSON.stringify(filterFormValues)); //只取当层数据域中数据,去除__super层数据
|
|
9310
9356
|
let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);
|
|
9311
9357
|
let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
|
|
9312
|
-
|
|
9358
|
+
const changedFilterFormValues = _.pickBy(filterFormValues, function(n,k){return /^__searchable__/.test(k);});
|
|
9359
|
+
// 这里不用crudService而用crud是因为lookup字段弹出的列表中的crudService中的变量无法传入crud的发送适配器中
|
|
9360
|
+
// crud && crud.setData({__changedFilterFormValues: changedFilterFormValues});
|
|
9361
|
+
let __changedFilterFormValuesKey = "__changedFilterFormValues";
|
|
9362
|
+
if(isLookup && __lookupField){
|
|
9363
|
+
let lookupTag = "__lookup__" + __lookupField.name + "__" + __lookupField.reference_to;
|
|
9364
|
+
if(__lookupField.reference_to_field){
|
|
9365
|
+
lookupTag += "__" + __lookupField.reference_to_field;
|
|
9366
|
+
}
|
|
9367
|
+
__changedFilterFormValuesKey += lookupTag;
|
|
9368
|
+
}
|
|
9369
|
+
if(crud){
|
|
9370
|
+
let crudData = crud.getData();
|
|
9371
|
+
crudData[__changedFilterFormValuesKey] = changedFilterFormValues;
|
|
9372
|
+
crud.setData(crudData);
|
|
9373
|
+
}
|
|
9374
|
+
|
|
9375
|
+
let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service", {name: "service_object_table_crud"});
|
|
9313
9376
|
crudService && crudService.setData({isFieldsFilterEmpty});
|
|
9314
9377
|
`;
|
|
9315
9378
|
let onChangeScript = `
|
|
@@ -9324,7 +9387,7 @@ async function getObjectFilter(objectSchema, fields, options) {
|
|
|
9324
9387
|
filterFormValues = JSON.parse(JSON.stringify(filterFormValues)); //只取当层数据域中数据,去除__super层数据
|
|
9325
9388
|
let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
|
|
9326
9389
|
const changedFilterFormValues = _.pickBy(filterFormValues, function(n,k){return /^__searchable__/.test(k);});;
|
|
9327
|
-
// let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service");
|
|
9390
|
+
// let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service", {name: "service_object_table_crud"});
|
|
9328
9391
|
// crudService && crudService.setData({__changedFilterFormValues: changedFilterFormValues});
|
|
9329
9392
|
// 这里不用crudService而用crud是因为lookup字段弹出的列表中的crudService中的变量无法传入crud的发送适配器中
|
|
9330
9393
|
// crud && crud.setData({__changedFilterFormValues: changedFilterFormValues});
|
|
@@ -9680,7 +9743,7 @@ async function getObjectCRUD(objectSchema, fields, options){
|
|
|
9680
9743
|
className: crudModeClassName,
|
|
9681
9744
|
//目前crud的service层id不认用户自定义id,只支持默认规则id,许多地方的格式都写死了service_listview_${objectname}
|
|
9682
9745
|
id: `service_${id}`,
|
|
9683
|
-
name:
|
|
9746
|
+
name: "service_object_table_crud",
|
|
9684
9747
|
data: options.amisData,
|
|
9685
9748
|
body: body,
|
|
9686
9749
|
//监听广播事件,重算crud高度
|
|
@@ -10027,8 +10090,8 @@ const getRecordPermissions = async (objectName, recordId)=>{
|
|
|
10027
10090
|
/*
|
|
10028
10091
|
* @Author: baozhoutao@steedos.com
|
|
10029
10092
|
* @Date: 2022-07-05 15:55:39
|
|
10030
|
-
* @LastEditors:
|
|
10031
|
-
* @LastEditTime:
|
|
10093
|
+
* @LastEditors: 殷亮辉 yinlianghui@hotoa.com
|
|
10094
|
+
* @LastEditTime: 2025-01-08 13:32:51
|
|
10032
10095
|
* @Description:
|
|
10033
10096
|
*/
|
|
10034
10097
|
|
|
@@ -10102,7 +10165,7 @@ async function getObjectRelatedList(
|
|
|
10102
10165
|
|
|
10103
10166
|
// 获取单个相关表
|
|
10104
10167
|
async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObjectName, relatedKey, ctx){
|
|
10105
|
-
let { top, perPage, appId, relatedLabel, className, columns, sort, filters, visible_on } = ctx;
|
|
10168
|
+
let { top, perPage, appId, relatedLabel, className, columns, sort, filters, visible_on, enableHeaderToolbar } = ctx;
|
|
10106
10169
|
// console.log('getRecordDetailRelatedListSchema==>',objectName,recordId,relatedObjectName)
|
|
10107
10170
|
const relatedObjectUiSchema = await getUISchema(relatedObjectName);
|
|
10108
10171
|
if(!relatedObjectUiSchema){
|
|
@@ -10167,6 +10230,10 @@ async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObj
|
|
|
10167
10230
|
let headerToolbar = [];
|
|
10168
10231
|
if(!isMobile){
|
|
10169
10232
|
headerToolbar.push("bulkActions");
|
|
10233
|
+
if (enableHeaderToolbar) {
|
|
10234
|
+
// 通过 enableHeaderToolbar = true 可以控制是否显示内置的带过滤器的headerToolbar
|
|
10235
|
+
headerToolbar = undefined;
|
|
10236
|
+
}
|
|
10170
10237
|
}
|
|
10171
10238
|
const options = {
|
|
10172
10239
|
globalFilter,
|
|
@@ -10205,7 +10272,7 @@ async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObj
|
|
|
10205
10272
|
amisSchema: {
|
|
10206
10273
|
type: "service",
|
|
10207
10274
|
id: componentId,
|
|
10208
|
-
className: `steedos-record-related-list mb-4 last:mb-0 ${componentId} ${className}`,
|
|
10275
|
+
className: `steedos-record-related-list mb-4 last:mb-0 ${componentId} ${className} ${enableHeaderToolbar ? 'enable-header-toolbar' : ''}`,
|
|
10209
10276
|
data: {
|
|
10210
10277
|
relatedKey: relatedKey,
|
|
10211
10278
|
listViewId: `amis-\${appId}-${relatedObjectName}-listview`,
|
|
@@ -10307,6 +10374,7 @@ async function getRelatedListSchema(
|
|
|
10307
10374
|
listViewName,
|
|
10308
10375
|
ctx
|
|
10309
10376
|
) {
|
|
10377
|
+
const { enableHeaderToolbar } = ctx;
|
|
10310
10378
|
const uiSchema = await getUISchema(objectName);
|
|
10311
10379
|
if(!uiSchema){
|
|
10312
10380
|
return {}
|
|
@@ -10359,10 +10427,14 @@ async function getRelatedListSchema(
|
|
|
10359
10427
|
delete ctx.filters;
|
|
10360
10428
|
|
|
10361
10429
|
delete ctx.globalFilter;
|
|
10430
|
+
delete ctx.enableHeaderToolbar;
|
|
10362
10431
|
|
|
10363
10432
|
const adaptor = `
|
|
10364
10433
|
try{
|
|
10365
10434
|
if(setDataToComponentId){
|
|
10435
|
+
// 子表列表在headerToolbar过滤器中设置过过滤条件的话,始终显示子表列表,无论是否查询到数据
|
|
10436
|
+
// 改为使用css样式控制子表列表放开headerToolbar时,始终显示crud,只隐藏crud内部的表格,从而始终显示headerToolbar不受这里逻辑影响
|
|
10437
|
+
// var headerToolbarFilterChanged = context.isFieldsFilterEmpty === false;
|
|
10366
10438
|
if(payload.data.count){
|
|
10367
10439
|
setTimeout(function(){
|
|
10368
10440
|
// 设计器中获取不到window.$从而导致报错, 所以用纯js替换下。
|
|
@@ -10385,7 +10457,7 @@ async function getRelatedListSchema(
|
|
|
10385
10457
|
"filters": listviewFilter,
|
|
10386
10458
|
"filtersFunction": filtersFunction,
|
|
10387
10459
|
"sort": listViewSort,
|
|
10388
|
-
"filterVisible":
|
|
10460
|
+
"filterVisible": !!enableHeaderToolbar,
|
|
10389
10461
|
"requestAdaptor": ctx.requestAdaptor,
|
|
10390
10462
|
"adaptor": adaptor + ctx.adaptor || '',
|
|
10391
10463
|
"ctx": ctx,
|
|
@@ -11779,6 +11851,7 @@ function getLookupSapceUserTreeSchema(isMobile){
|
|
|
11779
11851
|
{
|
|
11780
11852
|
"actionType": "custom",
|
|
11781
11853
|
"script": `
|
|
11854
|
+
console.log("===__searchable__organizations_parents===",event.data);
|
|
11782
11855
|
const scope = event.context.scoped;
|
|
11783
11856
|
var filterFormValues={
|
|
11784
11857
|
"__searchable__organizations_parents":event.data.value.value
|
|
@@ -11880,6 +11953,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
11880
11953
|
ctx.idFieldName = refObjectConfig.idFieldName;
|
|
11881
11954
|
ctx.objectName = refObjectConfig.name;
|
|
11882
11955
|
|
|
11956
|
+
// 是否显示lookup字段左侧的过滤器(如果有的话),默认为true,目前只有lookup选人字段有左侧树过滤器
|
|
11957
|
+
const showLeftFilter = field.show_left_filter !== false;
|
|
11958
|
+
|
|
11883
11959
|
let tableFields = [];
|
|
11884
11960
|
const searchableFields = [];
|
|
11885
11961
|
|
|
@@ -12001,6 +12077,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
12001
12077
|
// field.name可能是带点的名称,比如审批王中子表字段'instances.instances_submitter',如果不替换掉点,会造成审批王表单中新建子表行时报错
|
|
12002
12078
|
let keywordsSearchBoxName = `__keywords_lookup__${field.name.replace(/\./g, "_")}__to__${refObjectConfig.name}`;
|
|
12003
12079
|
|
|
12080
|
+
const filterFormValues = field.filter_form_data;
|
|
12004
12081
|
source.requestAdaptor = `
|
|
12005
12082
|
let __changedFilterFormValuesKey = "__changedFilterFormValues";
|
|
12006
12083
|
let __lookupField = api.data.$self.__lookupField;
|
|
@@ -12022,7 +12099,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
12022
12099
|
}
|
|
12023
12100
|
const selfData = JSON.parse(JSON.stringify(api.data.$self));
|
|
12024
12101
|
${listviewFilter && !ctx.inFilterForm ? `var filters = ${JSON.stringify(listviewFilter)};` : 'var filters = [];'}
|
|
12025
|
-
var pageSize = api.data.pageSize || 10;
|
|
12102
|
+
var pageSize = 500;//api.data.pageSize || 10;
|
|
12026
12103
|
var pageNo = api.data.pageNo || 1;
|
|
12027
12104
|
var skip = (pageNo - 1) * pageSize;
|
|
12028
12105
|
var orderBy = api.data.orderBy || '';
|
|
@@ -12043,7 +12120,20 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
12043
12120
|
}
|
|
12044
12121
|
}
|
|
12045
12122
|
|
|
12046
|
-
|
|
12123
|
+
let filterFormValues = {};
|
|
12124
|
+
if (selfData.op !== 'loadOptions'){
|
|
12125
|
+
filterFormValues = ${___namespace.isObject(filterFormValues) ? JSON.stringify(filterFormValues) : ('"' + filterFormValues + '"')} || {};
|
|
12126
|
+
const isAmisFormula = typeof filterFormValues === "string" && filterFormValues.indexOf("\${") > -1;
|
|
12127
|
+
if (isAmisFormula){
|
|
12128
|
+
filterFormValues = AmisCore.evaluate(filterFormValues, context) || {};
|
|
12129
|
+
}
|
|
12130
|
+
if (_.isObject(filterFormValues) || !_.isEmpty(filterFormValues)){
|
|
12131
|
+
let fields = api.data.$self.uiSchema && api.data.$self.uiSchema.fields;
|
|
12132
|
+
filterFormValues = SteedosUI.getSearchFilterFormValues(filterFormValues, fields);
|
|
12133
|
+
}
|
|
12134
|
+
}
|
|
12135
|
+
|
|
12136
|
+
var searchableFilter = SteedosUI.getSearchFilter(Object.assign({}, { ...filterFormValues }, selfData)) || [];
|
|
12047
12137
|
|
|
12048
12138
|
if(searchableFilter.length > 0){
|
|
12049
12139
|
if(filters.length > 0 ){
|
|
@@ -12211,6 +12301,20 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
12211
12301
|
});
|
|
12212
12302
|
payload.data.rows = updatedResult;
|
|
12213
12303
|
}
|
|
12304
|
+
let __changedFilterFormValuesKey = "__changedFilterFormValues";
|
|
12305
|
+
let __lookupField = api.data.$self.__lookupField;
|
|
12306
|
+
if(__lookupField){
|
|
12307
|
+
let lookupTag = "__lookup__" + __lookupField.name + "__" + __lookupField.reference_to;
|
|
12308
|
+
if(__lookupField.reference_to_field){
|
|
12309
|
+
lookupTag += "__" + __lookupField.reference_to_field;
|
|
12310
|
+
}
|
|
12311
|
+
__changedFilterFormValuesKey += lookupTag;
|
|
12312
|
+
}
|
|
12313
|
+
let __changedFilterFormValues = api.context[__changedFilterFormValuesKey] || {};
|
|
12314
|
+
let __changedSearchBoxValues = api.context.__changedSearchBoxValues || {};
|
|
12315
|
+
// 列表搜索和快速搜索,有时在某些操作情况下还是会造成crud接口请求使用的过滤条件是上次的,这里强制把正确的过滤条件返回到crud,详细规则见:https://github.com/steedos/steedos-platform/issues/7112
|
|
12316
|
+
payload.data[__changedFilterFormValuesKey] = __changedFilterFormValues;
|
|
12317
|
+
payload.data.__changedSearchBoxValues = __changedSearchBoxValues;
|
|
12214
12318
|
return payload;
|
|
12215
12319
|
`;
|
|
12216
12320
|
if(field.optionsFunction || field._optionsFunction){
|
|
@@ -12246,7 +12350,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
12246
12350
|
|
|
12247
12351
|
pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { isLookup: true, keywordsSearchBoxName });
|
|
12248
12352
|
|
|
12249
|
-
if(referenceTo.objectName === "space_users" && field.reference_to_field === "user"){
|
|
12353
|
+
if(referenceTo.objectName === "space_users" && field.reference_to_field === "user" && showLeftFilter){
|
|
12250
12354
|
pickerSchema.headerToolbar.push(getLookupSapceUserTreeSchema(isMobile));
|
|
12251
12355
|
pickerSchema.className = pickerSchema.className || "" + " steedos-select-user";
|
|
12252
12356
|
}
|
|
@@ -12263,10 +12367,15 @@ async function lookupToAmisPicker(field, readonly, ctx){
|
|
|
12263
12367
|
}
|
|
12264
12368
|
pickerSchema.footerToolbar = refObjectConfig.enable_tree ? [] : getObjectFooterToolbar(refObjectConfig,ctx.formFactor,{isLookup: true});
|
|
12265
12369
|
if (ctx.filterVisible !== false) {
|
|
12370
|
+
console.log("lookupToAmisPicker===pickerSchema.filter===field===", field);
|
|
12266
12371
|
pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {
|
|
12267
12372
|
...ctx,
|
|
12268
12373
|
isLookup: true,
|
|
12269
|
-
keywordsSearchBoxName
|
|
12374
|
+
keywordsSearchBoxName,
|
|
12375
|
+
searchable_fields: field.searchable_fields,
|
|
12376
|
+
auto_open_filter: field.auto_open_filter,
|
|
12377
|
+
show_left_filter: field.show_left_filter,
|
|
12378
|
+
filter_form_data: field.filter_form_data
|
|
12270
12379
|
});
|
|
12271
12380
|
}
|
|
12272
12381
|
pickerSchema.data = Object.assign({}, pickerSchema.data, {
|
|
@@ -12760,6 +12869,10 @@ async function lookupToAmis(field, readonly, ctx){
|
|
|
12760
12869
|
}
|
|
12761
12870
|
let amisSchema;
|
|
12762
12871
|
// 默认使用下拉框模式显示lookup选项,只能配置了enable_enhanced_lookup才使用弹出增强模式
|
|
12872
|
+
if(enableEnhancedLookup == true && field.amis && field.amis.type && field.amis.type !== 'picker'){
|
|
12873
|
+
// 如果配置了amis.type且其值不是picker,则不使用弹出增强模式
|
|
12874
|
+
enableEnhancedLookup = false;
|
|
12875
|
+
}
|
|
12763
12876
|
if(enableEnhancedLookup == true){
|
|
12764
12877
|
amisSchema = await lookupToAmisPicker(field, readonly, ctx);
|
|
12765
12878
|
}else if(refObject.enable_tree) {
|
|
@@ -13891,7 +14004,16 @@ async function convertSFieldToAmisField(field, readonly, ctx) {
|
|
|
13891
14004
|
return convertData
|
|
13892
14005
|
}
|
|
13893
14006
|
// if(ctx.mode === 'edit'){
|
|
13894
|
-
let convertDataResult
|
|
14007
|
+
let convertDataResult;
|
|
14008
|
+
if(convertData.type == "steedos-field"){
|
|
14009
|
+
// 如果是steedos-field,不能把amis属性合并到steedos-field根属性中,要合并也是合并到steedos-field的config.amis中
|
|
14010
|
+
// 而steedos-field字段的amis属性本身就在config.amis中了,所以这里不需要再合并field.amis
|
|
14011
|
+
// 目前测试到受影响的是,把字段的amis属性配置为{"type": "checkboxes"}时,ObjectForm只读模式下,lookup字段返回的是type为steedos-field的组件,此时field.amis中的type不应该合并到steedos-field根属性中
|
|
14012
|
+
convertDataResult = Object.assign({}, baseData, convertData, { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name}, {name: baseData.name});
|
|
14013
|
+
}
|
|
14014
|
+
else {
|
|
14015
|
+
convertDataResult = Object.assign({}, baseData, convertData, { labelClassName: 'text-left', clearValueOnHidden: true, fieldName: field.name}, field.amis, {name: baseData.name});
|
|
14016
|
+
}
|
|
13895
14017
|
// 只读时file字段的外层control层若存在name,内部each组件存在问题
|
|
13896
14018
|
if(readonly && field.type == "file") {
|
|
13897
14019
|
convertDataResult.name = "";
|
|
@@ -16036,7 +16158,7 @@ async function getListviewInitSchema(objectApiName, listViewName, ctx) {
|
|
|
16036
16158
|
const defaults = ctx.defaults || {};
|
|
16037
16159
|
if(!defaults.headerSchema){
|
|
16038
16160
|
//传入isListviewInit是区别于对象列表类型的微页面,即getListPageInitSchema函数中该属性为false
|
|
16039
|
-
const headerSchema = await getObjectListHeader
|
|
16161
|
+
const headerSchema = await getObjectListHeader(uiSchema, listViewName, {
|
|
16040
16162
|
onlySecordLine: true,
|
|
16041
16163
|
isListviewInit: true
|
|
16042
16164
|
});
|
|
@@ -18587,7 +18709,7 @@ exports.getObjectDetailMoreButtons = getObjectDetailMoreButtons;
|
|
|
18587
18709
|
exports.getObjectFieldsFilterBarSchema = getObjectFieldsFilterBarSchema;
|
|
18588
18710
|
exports.getObjectFieldsFilterButtonSchema = getObjectFieldsFilterButtonSchema;
|
|
18589
18711
|
exports.getObjectFieldsFilterFormSchema = getObjectFieldsFilterFormSchema;
|
|
18590
|
-
exports.getObjectListHeader = getObjectListHeader
|
|
18712
|
+
exports.getObjectListHeader = getObjectListHeader;
|
|
18591
18713
|
exports.getObjectListHeaderFieldsFilterBar = getObjectListHeaderFieldsFilterBar;
|
|
18592
18714
|
exports.getObjectListHeaderFirstLine = getObjectListHeaderFirstLine;
|
|
18593
18715
|
exports.getObjectListHeaderSecordLine = getObjectListHeaderSecordLine;
|