@steedos-widgets/amis-object 6.3.12 → 6.3.13-beta.10

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.
@@ -1419,9 +1419,6 @@ fieldset.antd-Collapse > legend{
1419
1419
  .md\:grid-cols-3 {
1420
1420
  grid-template-columns: repeat(3, minmax(0, 1fr))
1421
1421
  }
1422
- .md\:overflow-auto {
1423
- overflow: auto
1424
- }
1425
1422
  .md\:border-b {
1426
1423
  border-bottom-width: 1px
1427
1424
  }
@@ -5735,6 +5735,7 @@ async function getTableColumns$1(object, fields, options){
5735
5735
  type: "lookup",
5736
5736
  reference_to: field.reference_to,
5737
5737
  name: field.name,
5738
+ is_name: field.is_name,
5738
5739
  label: null,
5739
5740
  multiple: field.multiple,
5740
5741
  amis: Object.assign({}, fieldAmis, { label: null })
@@ -6503,6 +6504,16 @@ async function getTableApi(mainObject, fields, options){
6503
6504
  return api;
6504
6505
  `;
6505
6506
  api.adaptor = `
6507
+
6508
+ if(payload.errors && payload.errors.length > 0){
6509
+ return {
6510
+ status: 500,
6511
+ msg: payload.errors[0].message,
6512
+ data: {}
6513
+ }
6514
+ }
6515
+
6516
+
6506
6517
  let fields = ${JSON.stringify(_$1__namespace.map(fields, 'name'))};
6507
6518
  // 这里把行数据中所有为空的字段值配置为空字符串,是因为amis有bug:crud的columns中的列如果type为static-前缀的话,行数据中该字段为空的话会显示为父作用域中同名变量值,见:https://github.com/baidu/amis/issues/9556
6508
6519
  (payload.data.rows || []).forEach((itemRow) => {
@@ -6748,7 +6759,7 @@ function getReadonlyFormAdaptor(object, fields, options){
6748
6759
  nameLabel = `(record._display && record._display.${nameField.name}) || record.${nameField.name}`;
6749
6760
  }
6750
6761
  return `
6751
- if(payload.data.data.length === 0){
6762
+ if(!payload.data.data || payload.data.data.length === 0){
6752
6763
  var isEditor = !!${options && options.isEditor};
6753
6764
  if(isEditor){
6754
6765
  var fieldNames = ${JSON.stringify(fieldNames)};
@@ -6794,6 +6805,11 @@ function getReadonlyFormAdaptor(object, fields, options){
6794
6805
  objectName: "${object.name}",
6795
6806
  recordId: record._id
6796
6807
  }
6808
+ if(window.location.pathname.endsWith("/"+record._id)){
6809
+ payload.data.mainRecord= {
6810
+ record
6811
+ };
6812
+ }
6797
6813
  window.postMessage(Object.assign({type: "record.loaded"}, {record: record}), "*")
6798
6814
  }
6799
6815
  if(payload.errors){
@@ -8291,6 +8307,7 @@ const getSchema$4 = async (uiSchema, ctx) => {
8291
8307
  : page.schema;
8292
8308
  }
8293
8309
 
8310
+ // console.log('formSchema====>', formSchema);
8294
8311
 
8295
8312
  return {
8296
8313
  type: "service",
@@ -8315,7 +8332,7 @@ const getSchema$4 = async (uiSchema, ctx) => {
8315
8332
  showCloseButton: true,
8316
8333
  "data": {
8317
8334
  "&": "$$",
8318
- "_master": "${_master}",
8335
+ "_master": "${mainRecord}",
8319
8336
  "_master._isRelated": "${_isRelated}",
8320
8337
  "_master.relatedKey": "${relatedKey}"
8321
8338
  },
@@ -13769,7 +13786,7 @@ async function getObjectRelatedListsMiniSchema(objectApiName){
13769
13786
  * @Author: baozhoutao@steedos.com
13770
13787
  * @Date: 2022-07-05 15:55:39
13771
13788
  * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
13772
- * @LastEditTime: 2024-04-26 16:46:44
13789
+ * @LastEditTime: 2025-05-20 16:56:55
13773
13790
  * @Description:
13774
13791
  */
13775
13792
 
@@ -14068,7 +14085,7 @@ async function getListSchema(
14068
14085
  }
14069
14086
 
14070
14087
  if (window.innerWidth > 768) {
14071
- // 列表视图组件PC端高度自动计算实现满屏效果,手机端不需要满屏效果,所以不用autofillheight,且允许重写微页面中重新组件autoFillHeight属性
14088
+ // 列表视图组件PC端高度自动计算实现满屏效果,手机端不需要满屏效果,所以不用autofillheight,且允许微页面中重写组件autoFillHeight属性
14072
14089
  defaults.listSchema = _$1.defaultsDeep({}, defaults.listSchema || {}, {
14073
14090
  autoFillHeight: true
14074
14091
  });
@@ -15705,7 +15722,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
15705
15722
  {
15706
15723
  "actionType": "custom",
15707
15724
  "script": `
15708
- const masterRecord = event.data._master && event.data._master.record;
15725
+ // lookup字段弹出列表,点击新建按钮,新建记录成功后,触发@data.changed.xxx,
15726
+ // 此时context.props.data值是lookup字段所在表单数据,经测试多层lookup弹出列表新建记录成功后context.props.data始终取的是最近一层的lookup字段所在表单数据,符合预期
15727
+ const masterRecord = context.props.data;//event.data._master && event.data._master.record;
15709
15728
  const fieldConfig = ${JSON.stringify(field)};
15710
15729
  let reference_to = fieldConfig.reference_to;
15711
15730
  let saveValue;
@@ -15715,7 +15734,6 @@ async function lookupToAmisPicker(field, readonly, ctx){
15715
15734
  }
15716
15735
  const saveField = fieldConfig.reference_to_field || '_id';
15717
15736
  const saveFieldValue = newRecord[saveField];
15718
-
15719
15737
  if( fieldConfig._reference_to && (_.isArray(fieldConfig._reference_to) || _.isFunction(fieldConfig._reference_to) || fieldConfig._reference_to.startsWith('function') ) ){
15720
15738
 
15721
15739
  const fieldValue = masterRecord ? masterRecord[fieldConfig.name] : {o: reference_to, ids: []};
@@ -15735,8 +15753,10 @@ async function lookupToAmisPicker(field, readonly, ctx){
15735
15753
 
15736
15754
  }else{
15737
15755
  if(fieldConfig.multiple){
15738
- // TODO: 连续新建多个记录时,因为获取的主记录不是实时的,所以只会勾选最后一个新建的记录。
15739
- const fieldValue = (masterRecord && masterRecord[fieldConfig.name]) || [];
15756
+ // const fieldValue = (masterRecord && masterRecord[fieldConfig.name]) || [];
15757
+ // 连续新建多个记录时,因为masterRecord获取的主记录不是实时的,所以只会勾选最后一个新建的记录
15758
+ // 而下面context.context.component指向的是lookup picker组件,可以直接取到用户实时勾选的记录。
15759
+ const fieldValue = context.context.component.props.store.toJSON().selectedItems
15740
15760
  saveValue = fieldValue.concat(saveFieldValue);
15741
15761
  }else{
15742
15762
  saveValue = saveFieldValue;
@@ -25032,11 +25052,12 @@ var SteedosObject = /** @class */ (function (_super) {
25032
25052
 
25033
25053
  // md:border-b
25034
25054
  var AmisObjectForm = function (props) { return __awaiter(void 0, void 0, void 0, function () {
25035
- var $schema, recordId, defaultData, mode, _a, layout, labelAlign, appId, fieldsExtend, _b, excludedFields, _c, fields, _d, form, _e, className, enableInitApi, initApiRequestAdaptor, initApiAdaptor, apiRequestAdaptor, apiAdaptor, enableTabs, tabsMode, submitSuccActions, data, formDataFilter, onFormDataFilter, env, objectApiName, schemaKeys, formSchema, defaults, options, globalData, amisSchema, uiSchema, allData, schema, schema, formData;
25055
+ var $schema, recordId, mode, _a, layout, labelAlign, appId, fieldsExtend, _b, excludedFields, _c, fields, _d, form, _e, className, enableInitApi, initApiRequestAdaptor, initApiAdaptor, apiRequestAdaptor, apiAdaptor, enableTabs, tabsMode, submitSuccActions, data, formDataFilter, onFormDataFilter, env, defaultData, objectApiName, schemaKeys, formSchema, defaults, options, globalData, amisSchema, uiSchema, allData, schema, schema, formData;
25036
25056
  return __generator(this, function (_f) {
25037
25057
  switch (_f.label) {
25038
25058
  case 0:
25039
- $schema = props.$schema, recordId = props.recordId, defaultData = props.defaultData, mode = props.mode, _a = props.layout, layout = _a === void 0 ? "horizontal" : _a, labelAlign = props.labelAlign, appId = props.appId, fieldsExtend = props.fieldsExtend, _b = props.excludedFields, excludedFields = _b === void 0 ? null : _b, _c = props.fields, fields = _c === void 0 ? null : _c, _d = props.form, form = _d === void 0 ? {} : _d, _e = props.className, className = _e === void 0 ? "" : _e, enableInitApi = props.enableInitApi, initApiRequestAdaptor = props.initApiRequestAdaptor, initApiAdaptor = props.initApiAdaptor, apiRequestAdaptor = props.apiRequestAdaptor, apiAdaptor = props.apiAdaptor, enableTabs = props.enableTabs, tabsMode = props.tabsMode, submitSuccActions = props.submitSuccActions, data = props.data, formDataFilter = props.formDataFilter, onFormDataFilter = props.onFormDataFilter, env = props.env;
25059
+ $schema = props.$schema, recordId = props.recordId, mode = props.mode, _a = props.layout, layout = _a === void 0 ? "horizontal" : _a, labelAlign = props.labelAlign, appId = props.appId, fieldsExtend = props.fieldsExtend, _b = props.excludedFields, excludedFields = _b === void 0 ? null : _b, _c = props.fields, fields = _c === void 0 ? null : _c, _d = props.form, form = _d === void 0 ? {} : _d, _e = props.className, className = _e === void 0 ? "" : _e, enableInitApi = props.enableInitApi, initApiRequestAdaptor = props.initApiRequestAdaptor, initApiAdaptor = props.initApiAdaptor, apiRequestAdaptor = props.apiRequestAdaptor, apiAdaptor = props.apiAdaptor, enableTabs = props.enableTabs, tabsMode = props.tabsMode, submitSuccActions = props.submitSuccActions, data = props.data, formDataFilter = props.formDataFilter, onFormDataFilter = props.onFormDataFilter, env = props.env;
25060
+ defaultData = props.defaultData;
25040
25061
  objectApiName = props.objectApiName || "space_users";
25041
25062
  schemaKeys = _$1.difference(_$1.keys($schema), ["id", "form", "type", "mode", "layout", "defaultData", "formDataFilter", "onFormDataFilter", "env"]);
25042
25063
  formSchema = _$1.pick(props, schemaKeys);
@@ -25064,6 +25085,13 @@ var AmisObjectForm = function (props) { return __awaiter(void 0, void 0, void 0,
25064
25085
  allData = createObject(data, {});
25065
25086
  if (!(mode === 'edit')) return [3 /*break*/, 2];
25066
25087
  if (defaultData) {
25088
+ try {
25089
+ defaultData = _$1.isString(defaultData) ? JSON.parse(defaultData) : defaultData;
25090
+ }
25091
+ catch (error) {
25092
+ console.warn(error);
25093
+ defaultData = {};
25094
+ }
25067
25095
  // 让ObjectForm支持props中的dafaultData属性与上层组件配置的defaultData混合
25068
25096
  // 为了解决相关表新建时如果是表单类型微页面,因为找不到ObjectForm在哪层而造成无法设置ObjectForm的defaultData的问题
25069
25097
  allData.defaultData = __assign$2({ "&": "${defaultData}" }, defaultData //这里的defaultData是form组件的defaultData属性值
@@ -25117,11 +25145,11 @@ var AmisObjectForm = function (props) { return __awaiter(void 0, void 0, void 0,
25117
25145
  formData.recordId = props.recordId;
25118
25146
  }
25119
25147
  amisSchema.className = "steedos-object-form ".concat(className);
25120
- // console.log('AmisObjectForm amisSchema======>', amisSchema)
25121
25148
  amisSchema.data = Object.assign({}, amisSchema.data || {}, formData, { global: globalData, uiSchema: uiSchema });
25122
25149
  if (_$1.has(props, 'objectApiName')) {
25123
25150
  amisSchema.data.objectName = objectApiName;
25124
25151
  }
25152
+ // console.log('AmisObjectForm amisSchema======>', amisSchema)
25125
25153
  return [2 /*return*/, amisSchema];
25126
25154
  }
25127
25155
  });
@@ -25287,7 +25315,7 @@ var AmisObjectListView = function (props) { return __awaiter(void 0, void 0, voi
25287
25315
  {
25288
25316
  "type": "service",
25289
25317
  "id": "service_schema_api_" + objectApiName,
25290
- "className": " steedos-object-listview-content md:overflow-auto grow",
25318
+ "className": " steedos-object-listview-content grow",
25291
25319
  "schemaApi": {
25292
25320
  // 这里url上加objectApiName属性是因为设计器中切换对象时不会变更列表视图界面,不可以用objectName=${objectName}使用作用域中objectName变量是因为设计器那边不会监听识别data变化来render组件
25293
25321
  "url": "${context.rootUrl}/graphql?objectName=" + objectApiName + "&listName=${listName}&display=${display}&rebuildOn=" + rebuildOn,
@@ -27196,19 +27224,28 @@ function getAmisStaticFieldType(type, data_type, options) {
27196
27224
  }
27197
27225
  function getLookupLinkOnClick(field, options) {
27198
27226
  return __awaiter(this, void 0, void 0, function () {
27199
- var recordPage, drawerRecordDetailSchema;
27227
+ var recordPage, objectName, recordId, drawerRecordDetailSchema;
27200
27228
  return __generator(this, function (_a) {
27201
27229
  switch (_a.label) {
27202
27230
  case 0: return [4 /*yield*/, getPage({ type: 'record', appId: options.appId, objectName: options.objectName, formFactor: options.formFactor })];
27203
27231
  case 1:
27204
27232
  recordPage = _a.sent();
27233
+ objectName = "${objectName}";
27234
+ recordId = "${value}";
27235
+ if (options.tableObjectName && field.is_name) {
27236
+ // 如果Lookup字段上配置了is_name,且是在表格(即tableObjectName有值,包括列表视图和子表)中
27237
+ // 则点击弹出的详细页面是表格行记录指向的记录详细页面,此时打开的详细页面对象是表格所属对象,_id是表格行记录的_id值
27238
+ // tableObjectName 没有值时说明lookup字段可能是在记录详细页面表单等地方,此时打开的详细页面lookup字段值指向的记录
27239
+ objectName = options.tableObjectName;
27240
+ recordId = "${_id}";
27241
+ }
27205
27242
  drawerRecordDetailSchema = recordPage ? Object.assign({}, recordPage.schema, {
27206
- "recordId": "${value}",
27243
+ "recordId": recordId,
27207
27244
  "data": __assign$2(__assign$2({}, recordPage.schema.data), { "_inDrawer": true, "recordLoaded": false, "_tableObjectName": options.tableObjectName })
27208
27245
  }) : {
27209
27246
  "type": "steedos-record-detail",
27210
- "objectApiName": "${objectName}",
27211
- "recordId": "${value}",
27247
+ "objectApiName": objectName,
27248
+ "recordId": recordId,
27212
27249
  "showBackButton": false,
27213
27250
  "showButtons": true,
27214
27251
  "data": {
@@ -27430,7 +27467,7 @@ var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void
27430
27467
  label: false,
27431
27468
  className: 'm-0',
27432
27469
  tpl: "<a href=\"/app/-/${objectName}/view/${value}\" target=\"_blank\" ".concat(lookupATagClick, ">${label}</a>"),
27433
- popOver: fieldRefObject.compactLayouts && window.innerWidth >= 768 ? {
27470
+ popOver: window.showLookupPopOver && fieldRefObject.compactLayouts && window.innerWidth >= 768 ? {
27434
27471
  "trigger": "hover",
27435
27472
  "className": "steedos-record-detail-popover",
27436
27473
  "position": "left-bottom",
@@ -27531,7 +27568,7 @@ var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void
27531
27568
  type: 'static',
27532
27569
  className: 'm-0',
27533
27570
  tpl: "<a href=\"/app/-/${objectName}/view/${value}\" target=\"_blank\" ".concat(lookupATagClick, ">${label}</a>"),
27534
- popOver: fieldRefObject.compactLayouts && window.innerWidth >= 768 ? {
27571
+ popOver: window.showLookupPopOver && fieldRefObject.compactLayouts && window.innerWidth >= 768 ? {
27535
27572
  "trigger": "hover",
27536
27573
  "className": "steedos-record-detail-popover",
27537
27574
  "position": "left-bottom",