@steedos-widgets/amis-lib 6.3.12-beta.13 → 6.3.12-beta.15

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
@@ -1868,7 +1868,6 @@ async function getQuickEditSchema(object, columnField, options){
1868
1868
  {
1869
1869
  actionType: "custom",
1870
1870
  script: `
1871
- console.log("asdasd");
1872
1871
  let items = _.cloneDeep(event.data.items);
1873
1872
  let selectedItems = _.cloneDeep(event.data.selectedItems);
1874
1873
  if(event.data.isBatchEdit){
@@ -3409,6 +3408,11 @@ async function getTableApi(mainObject, fields, options){
3409
3408
  }, 600);
3410
3409
  }
3411
3410
  }
3411
+
3412
+ // 列表搜索和快速搜索,有时在某些操作情况下还是会造成crud接口请求使用的过滤条件是上次的,这里强制把正确的过滤条件返回到crud,详细规则见:https://github.com/steedos/steedos-platform/issues/7112
3413
+ // lookup字段的弹出列表搜索不受这里影响,因为lookup字段的弹出列表搜索是单独的接口请求
3414
+ payload.data.__changedFilterFormValues = api.context.__changedFilterFormValues;
3415
+ payload.data.__changedSearchBoxValues = api.context.__changedSearchBoxValues;
3412
3416
  ${options.adaptor || ''}
3413
3417
  return payload;
3414
3418
  `;
@@ -6140,6 +6144,8 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6140
6144
  if (!ctx) {
6141
6145
  ctx = {};
6142
6146
  }
6147
+ const searchableFields = ctx.searchable_fields;
6148
+ const autoOpenFilter = !!ctx.auto_open_filter;
6143
6149
  const btnSearchId = "btn_filter_form_search_" + new Date().getTime();
6144
6150
  const filterFormSchema = await getObjectFieldsFilterFormSchema(ctx);
6145
6151
  const keywordsSearchBoxName = ctx.keywordsSearchBoxName || "__keywords";
@@ -6153,6 +6159,8 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6153
6159
  });
6154
6160
  // 使用filterForm.getValues()的话,并不能拿到本地存储中的过滤条件,所以需要从event.data中取,因为本地存储中的过滤条件自动填充到表单上时filterForm.getValues()拿不到。
6155
6161
  let filterFormValues = event.data;
6162
+ filterFormValues = JSON.parse(JSON.stringify(filterFormValues)); //只取当层数据域中数据,去除__super层数据
6163
+ const changedFilterFormValues = _.pickBy(filterFormValues, function(n,k){return /^__searchable__/.test(k);});
6156
6164
  // 同步__changedFilterFormValues中的值
6157
6165
  // crud && crud.setData({__changedFilterFormValues: {}});
6158
6166
  let __changedFilterFormValuesKey = "__changedFilterFormValues";
@@ -6165,7 +6173,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6165
6173
  }
6166
6174
  if(crud){
6167
6175
  let crudData = crud.getData();
6168
- crudData[__changedFilterFormValuesKey] = filterFormValues;
6176
+ crudData[__changedFilterFormValuesKey] = changedFilterFormValues;
6169
6177
  crud.setData(crudData);
6170
6178
  }
6171
6179
  filterForm.handleFormSubmit(event);
@@ -6307,6 +6315,8 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6307
6315
  crudService && crudService.setData({isFieldsFilterEmpty: true, showFieldsFilter: false});
6308
6316
  `;
6309
6317
  const dataProviderInited = `
6318
+ const searchableFields = ${JSON.stringify(searchableFields)};
6319
+ const autoOpenFilter = ${autoOpenFilter};
6310
6320
  const objectName = data.objectName;
6311
6321
  const isLookup = data.isLookup;
6312
6322
  const listName = data.listName;
@@ -6319,6 +6329,11 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6319
6329
  if(defaultSearchableFields){
6320
6330
  defaultSearchableFields = defaultSearchableFields.split(",");
6321
6331
  }
6332
+ if(_.isEmpty(defaultSearchableFields) && searchableFields){
6333
+ if(searchableFields.length){
6334
+ defaultSearchableFields = _.map(searchableFields, 'field');
6335
+ }
6336
+ }
6322
6337
  if(_.isEmpty(defaultSearchableFields) && data.uiSchema){
6323
6338
  let listView = data.uiSchema.list_views[data.listName];
6324
6339
  const sFields = listView && listView.searchable_fields;
@@ -6337,7 +6352,7 @@ async function getObjectFieldsFilterBarSchema(objectSchema, ctx) {
6337
6352
  setData({ filterFormSearchableFields: defaultSearchableFields });
6338
6353
  if(isLookup){
6339
6354
  // looup字段过滤器不在本地缓存记住过滤条件,所以初始始终隐藏过滤器
6340
- setData({ showFieldsFilter: false });
6355
+ setData({ showFieldsFilter: autoOpenFilter });
6341
6356
  }
6342
6357
  else{
6343
6358
  const listViewPropsStoreKey = location.pathname + "/crud";
@@ -8928,7 +8943,6 @@ function getObjectHeaderQuickSearchBox(mainObject, fields, formFactor, { isLooku
8928
8943
  }
8929
8944
 
8930
8945
  const onChangeScript = `
8931
- // console.log("==search=onChangeScript===");
8932
8946
  const scope = event.context.scoped;
8933
8947
  let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
8934
8948
  // let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service", {name: "service_object_table_crud"});
@@ -9299,8 +9313,26 @@ async function getObjectFilter(objectSchema, fields, options) {
9299
9313
  let filterFormService = SteedosUI.getClosestAmisComponentByType(filterForm.context, "service");
9300
9314
  // 使用event.data的话,并不能拿到本地存储中的过滤条件,所以需要从filterFormService中取。
9301
9315
  let filterFormValues = filterFormService.getData();
9316
+ filterFormValues = JSON.parse(JSON.stringify(filterFormValues)); //只取当层数据域中数据,去除__super层数据
9302
9317
  let isFieldsFilterEmpty = SteedosUI.isFilterFormValuesEmpty(filterFormValues);
9303
9318
  let crud = SteedosUI.getClosestAmisComponentByType(scope, "crud");
9319
+ const changedFilterFormValues = _.pickBy(filterFormValues, function(n,k){return /^__searchable__/.test(k);});
9320
+ // 这里不用crudService而用crud是因为lookup字段弹出的列表中的crudService中的变量无法传入crud的发送适配器中
9321
+ // crud && crud.setData({__changedFilterFormValues: changedFilterFormValues});
9322
+ let __changedFilterFormValuesKey = "__changedFilterFormValues";
9323
+ if(isLookup && __lookupField){
9324
+ let lookupTag = "__lookup__" + __lookupField.name + "__" + __lookupField.reference_to;
9325
+ if(__lookupField.reference_to_field){
9326
+ lookupTag += "__" + __lookupField.reference_to_field;
9327
+ }
9328
+ __changedFilterFormValuesKey += lookupTag;
9329
+ }
9330
+ if(crud){
9331
+ let crudData = crud.getData();
9332
+ crudData[__changedFilterFormValuesKey] = changedFilterFormValues;
9333
+ crud.setData(crudData);
9334
+ }
9335
+
9304
9336
  let crudService = crud && SteedosUI.getClosestAmisComponentByType(crud.context, "service", {name: "service_object_table_crud"});
9305
9337
  crudService && crudService.setData({isFieldsFilterEmpty});
9306
9338
  `;
@@ -11881,6 +11913,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
11881
11913
  ctx.idFieldName = refObjectConfig.idFieldName;
11882
11914
  ctx.objectName = refObjectConfig.name;
11883
11915
 
11916
+ // 是否显示lookup字段左侧的过滤器(如果有的话),默认为true,目前只有lookup选人字段有左侧树过滤器
11917
+ const showLeftFilter = field.show_left_filter !== false;
11918
+
11884
11919
  let tableFields = [];
11885
11920
  const searchableFields = [];
11886
11921
 
@@ -12212,6 +12247,20 @@ async function lookupToAmisPicker(field, readonly, ctx){
12212
12247
  });
12213
12248
  payload.data.rows = updatedResult;
12214
12249
  }
12250
+ let __changedFilterFormValuesKey = "__changedFilterFormValues";
12251
+ let __lookupField = api.data.$self.__lookupField;
12252
+ if(__lookupField){
12253
+ let lookupTag = "__lookup__" + __lookupField.name + "__" + __lookupField.reference_to;
12254
+ if(__lookupField.reference_to_field){
12255
+ lookupTag += "__" + __lookupField.reference_to_field;
12256
+ }
12257
+ __changedFilterFormValuesKey += lookupTag;
12258
+ }
12259
+ let __changedFilterFormValues = api.context[__changedFilterFormValuesKey] || {};
12260
+ let __changedSearchBoxValues = api.context.__changedSearchBoxValues || {};
12261
+ // 列表搜索和快速搜索,有时在某些操作情况下还是会造成crud接口请求使用的过滤条件是上次的,这里强制把正确的过滤条件返回到crud,详细规则见:https://github.com/steedos/steedos-platform/issues/7112
12262
+ payload.data[__changedFilterFormValuesKey] = __changedFilterFormValues;
12263
+ payload.data.__changedSearchBoxValues = __changedSearchBoxValues;
12215
12264
  return payload;
12216
12265
  `;
12217
12266
  if(field.optionsFunction || field._optionsFunction){
@@ -12247,7 +12296,7 @@ async function lookupToAmisPicker(field, readonly, ctx){
12247
12296
 
12248
12297
  pickerSchema.headerToolbar = getObjectHeaderToolbar(refObjectConfig, fieldsArr, ctx.formFactor, { isLookup: true, keywordsSearchBoxName });
12249
12298
 
12250
- if(referenceTo.objectName === "space_users" && field.reference_to_field === "user"){
12299
+ if(referenceTo.objectName === "space_users" && field.reference_to_field === "user" && showLeftFilter){
12251
12300
  pickerSchema.headerToolbar.push(getLookupSapceUserTreeSchema(isMobile));
12252
12301
  pickerSchema.className = pickerSchema.className || "" + " steedos-select-user";
12253
12302
  }
@@ -12267,7 +12316,10 @@ async function lookupToAmisPicker(field, readonly, ctx){
12267
12316
  pickerSchema.filter = await getObjectFilter(refObjectConfig, fields, {
12268
12317
  ...ctx,
12269
12318
  isLookup: true,
12270
- keywordsSearchBoxName
12319
+ keywordsSearchBoxName,
12320
+ searchable_fields: field.searchable_fields,
12321
+ auto_open_filter: field.auto_open_filter,
12322
+ show_left_filter: field.show_left_filter
12271
12323
  });
12272
12324
  }
12273
12325
  pickerSchema.data = Object.assign({}, pickerSchema.data, {