@steedos-widgets/amis-object 6.3.13-beta.6 → 6.3.13-beta.8

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.
@@ -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 })
@@ -15705,7 +15706,9 @@ async function lookupToAmisPicker(field, readonly, ctx){
15705
15706
  {
15706
15707
  "actionType": "custom",
15707
15708
  "script": `
15708
- const masterRecord = event.data._master && event.data._master.record;
15709
+ // lookup字段弹出列表,点击新建按钮,新建记录成功后,触发@data.changed.xxx,
15710
+ // 此时context.props.data值是lookup字段所在表单数据,经测试多层lookup弹出列表新建记录成功后context.props.data始终取的是最近一层的lookup字段所在表单数据,符合预期
15711
+ const masterRecord = context.props.data;//event.data._master && event.data._master.record;
15709
15712
  const fieldConfig = ${JSON.stringify(field)};
15710
15713
  let reference_to = fieldConfig.reference_to;
15711
15714
  let saveValue;
@@ -15715,7 +15718,6 @@ async function lookupToAmisPicker(field, readonly, ctx){
15715
15718
  }
15716
15719
  const saveField = fieldConfig.reference_to_field || '_id';
15717
15720
  const saveFieldValue = newRecord[saveField];
15718
-
15719
15721
  if( fieldConfig._reference_to && (_.isArray(fieldConfig._reference_to) || _.isFunction(fieldConfig._reference_to) || fieldConfig._reference_to.startsWith('function') ) ){
15720
15722
 
15721
15723
  const fieldValue = masterRecord ? masterRecord[fieldConfig.name] : {o: reference_to, ids: []};
@@ -15735,8 +15737,10 @@ async function lookupToAmisPicker(field, readonly, ctx){
15735
15737
 
15736
15738
  }else{
15737
15739
  if(fieldConfig.multiple){
15738
- // TODO: 连续新建多个记录时,因为获取的主记录不是实时的,所以只会勾选最后一个新建的记录。
15739
- const fieldValue = (masterRecord && masterRecord[fieldConfig.name]) || [];
15740
+ // const fieldValue = (masterRecord && masterRecord[fieldConfig.name]) || [];
15741
+ // 连续新建多个记录时,因为masterRecord获取的主记录不是实时的,所以只会勾选最后一个新建的记录
15742
+ // 而下面context.context.component指向的是lookup picker组件,可以直接取到用户实时勾选的记录。
15743
+ const fieldValue = context.context.component.props.store.toJSON().selectedItems
15740
15744
  saveValue = fieldValue.concat(saveFieldValue);
15741
15745
  }else{
15742
15746
  saveValue = saveFieldValue;
@@ -25032,11 +25036,12 @@ var SteedosObject = /** @class */ (function (_super) {
25032
25036
 
25033
25037
  // md:border-b
25034
25038
  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;
25039
+ 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
25040
  return __generator(this, function (_f) {
25037
25041
  switch (_f.label) {
25038
25042
  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;
25043
+ $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;
25044
+ defaultData = props.defaultData;
25040
25045
  objectApiName = props.objectApiName || "space_users";
25041
25046
  schemaKeys = _$1.difference(_$1.keys($schema), ["id", "form", "type", "mode", "layout", "defaultData", "formDataFilter", "onFormDataFilter", "env"]);
25042
25047
  formSchema = _$1.pick(props, schemaKeys);
@@ -25064,6 +25069,13 @@ var AmisObjectForm = function (props) { return __awaiter(void 0, void 0, void 0,
25064
25069
  allData = createObject(data, {});
25065
25070
  if (!(mode === 'edit')) return [3 /*break*/, 2];
25066
25071
  if (defaultData) {
25072
+ try {
25073
+ defaultData = _$1.isString(defaultData) ? JSON.parse(defaultData) : defaultData;
25074
+ }
25075
+ catch (error) {
25076
+ console.warn(error);
25077
+ defaultData = {};
25078
+ }
25067
25079
  // 让ObjectForm支持props中的dafaultData属性与上层组件配置的defaultData混合
25068
25080
  // 为了解决相关表新建时如果是表单类型微页面,因为找不到ObjectForm在哪层而造成无法设置ObjectForm的defaultData的问题
25069
25081
  allData.defaultData = __assign$2({ "&": "${defaultData}" }, defaultData //这里的defaultData是form组件的defaultData属性值
@@ -27196,19 +27208,28 @@ function getAmisStaticFieldType(type, data_type, options) {
27196
27208
  }
27197
27209
  function getLookupLinkOnClick(field, options) {
27198
27210
  return __awaiter(this, void 0, void 0, function () {
27199
- var recordPage, drawerRecordDetailSchema;
27211
+ var recordPage, objectName, recordId, drawerRecordDetailSchema;
27200
27212
  return __generator(this, function (_a) {
27201
27213
  switch (_a.label) {
27202
27214
  case 0: return [4 /*yield*/, getPage({ type: 'record', appId: options.appId, objectName: options.objectName, formFactor: options.formFactor })];
27203
27215
  case 1:
27204
27216
  recordPage = _a.sent();
27217
+ objectName = "${objectName}";
27218
+ recordId = "${value}";
27219
+ if (options.tableObjectName && field.is_name) {
27220
+ // 如果Lookup字段上配置了is_name,且是在表格(即tableObjectName有值,包括列表视图和子表)中
27221
+ // 则点击弹出的详细页面是表格行记录指向的记录详细页面,此时打开的详细页面对象是表格所属对象,_id是表格行记录的_id值
27222
+ // tableObjectName 没有值时说明lookup字段可能是在记录详细页面表单等地方,此时打开的详细页面lookup字段值指向的记录
27223
+ objectName = options.tableObjectName;
27224
+ recordId = "${_id}";
27225
+ }
27205
27226
  drawerRecordDetailSchema = recordPage ? Object.assign({}, recordPage.schema, {
27206
- "recordId": "${value}",
27227
+ "recordId": recordId,
27207
27228
  "data": __assign$2(__assign$2({}, recordPage.schema.data), { "_inDrawer": true, "recordLoaded": false, "_tableObjectName": options.tableObjectName })
27208
27229
  }) : {
27209
27230
  "type": "steedos-record-detail",
27210
- "objectApiName": "${objectName}",
27211
- "recordId": "${value}",
27231
+ "objectApiName": objectName,
27232
+ "recordId": recordId,
27212
27233
  "showBackButton": false,
27213
27234
  "showButtons": true,
27214
27235
  "data": {
@@ -27430,7 +27451,7 @@ var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void
27430
27451
  label: false,
27431
27452
  className: 'm-0',
27432
27453
  tpl: "<a href=\"/app/-/${objectName}/view/${value}\" target=\"_blank\" ".concat(lookupATagClick, ">${label}</a>"),
27433
- popOver: fieldRefObject.compactLayouts && window.innerWidth >= 768 ? {
27454
+ popOver: window.showLookupPopOver && fieldRefObject.compactLayouts && window.innerWidth >= 768 ? {
27434
27455
  "trigger": "hover",
27435
27456
  "className": "steedos-record-detail-popover",
27436
27457
  "position": "left-bottom",
@@ -27531,7 +27552,7 @@ var AmisSteedosField = function (props) { return __awaiter(void 0, void 0, void
27531
27552
  type: 'static',
27532
27553
  className: 'm-0',
27533
27554
  tpl: "<a href=\"/app/-/${objectName}/view/${value}\" target=\"_blank\" ".concat(lookupATagClick, ">${label}</a>"),
27534
- popOver: fieldRefObject.compactLayouts && window.innerWidth >= 768 ? {
27555
+ popOver: window.showLookupPopOver && fieldRefObject.compactLayouts && window.innerWidth >= 768 ? {
27535
27556
  "trigger": "hover",
27536
27557
  "className": "steedos-record-detail-popover",
27537
27558
  "position": "left-bottom",