@steedos-widgets/amis-lib 1.2.0-beta.0 → 1.2.0-beta.1

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.cjs.js CHANGED
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _$1 = require('lodash');
6
- var isPlainObject = require('lodash/isPlainObject');
7
6
  var amisLib = require('@steedos-widgets/amis-lib');
7
+ var isPlainObject = require('lodash/isPlainObject');
8
8
 
9
9
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
10
 
@@ -679,11 +679,7 @@ function getRecordPermissionsTemplate(){
679
679
  }
680
680
 
681
681
  async function getFindOneQuery$1(object, recordId, fields, options){
682
- let queryOptions = "";
683
-
684
- if(recordId){
685
- queryOptions = `(filters:["${object.idFieldName}", "=", "${recordId}"])`;
686
- }
682
+ let queryOptions = `(filters:["${object.idFieldName}", "=", "\${recordId}"])`;
687
683
  let alias = "data";
688
684
  if(options){
689
685
  if(options.alias){
@@ -1392,8 +1388,8 @@ var config = {
1392
1388
  /*
1393
1389
  * @Author: baozhoutao@steedos.com
1394
1390
  * @Date: 2022-11-01 15:51:00
1395
- * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
1396
- * @LastEditTime: 2023-03-27 15:42:24
1391
+ * @LastEditors: Please set LastEditors
1392
+ * @LastEditTime: 2023-04-08 12:05:19
1397
1393
  * @Description:
1398
1394
  */
1399
1395
 
@@ -1411,6 +1407,32 @@ const getSchema$4 = async (uiSchema, ctx) => {
1411
1407
  if (payload && payload.schema) {
1412
1408
  formSchema = _.isString(payload.schema) ? JSON.parse(payload.schema) : payload.schema;
1413
1409
  }
1410
+
1411
+ const _master = api.body._master;
1412
+ if(_master && _master._isRelated){
1413
+ const relatedKey = _master.relatedKey;
1414
+ const masterObjectName = _master.objectName;
1415
+ const recordId = _master.recordId;
1416
+ const fields = ${JSON.stringify(uiSchema.fields)};
1417
+ const relatedField = fields[relatedKey];
1418
+ let defaultData = {};
1419
+ let relatedKeyValue;
1420
+ if(!_.isString(relatedField.reference_to)){
1421
+ relatedKeyValue = { o: masterObjectName, ids: [recordId] };
1422
+ }else if (relatedField.multiple) {
1423
+ relatedKeyValue = [recordId];
1424
+ } else {
1425
+ relatedKeyValue = recordId;
1426
+ }
1427
+ defaultData[relatedKey]=relatedKeyValue;
1428
+ if(payload.schema){
1429
+ // 表单微页面第一层要求是page
1430
+ formSchema.data.defaultData = defaultData;
1431
+ }else{
1432
+ formSchema.defaultData = defaultData;
1433
+ }
1434
+ }
1435
+
1414
1436
  return {
1415
1437
  data: formSchema
1416
1438
  };
@@ -1434,6 +1456,8 @@ const getSchema$4 = async (uiSchema, ctx) => {
1434
1456
  "data": {
1435
1457
  "$master": "$$",
1436
1458
  "_master": "${_master}",
1459
+ "_master._isRelated": "${_isRelated}",
1460
+ "_master.relatedKey": "${relatedKey}",
1437
1461
  "defaultData": "${defaultData}",
1438
1462
  "appId": "${appId}",
1439
1463
  "objectName": "${objectName}",
@@ -1452,7 +1476,8 @@ const getSchema$4 = async (uiSchema, ctx) => {
1452
1476
  "messages": {},
1453
1477
  "schemaApi": {
1454
1478
  "data": {
1455
- "isLookup": "${isLookup}"
1479
+ "isLookup": "${isLookup}",
1480
+ "_master": "${_master}"
1456
1481
  },
1457
1482
  "url": "${context.rootUrl}/api/pageSchema/form?app=${appId}&objectApiName=${objectName}&formFactor=${formFactor}",
1458
1483
  "method": "get",
@@ -1575,8 +1600,8 @@ const getSchema$3 = async (uiSchema, ctx) => {
1575
1600
  /*
1576
1601
  * @Author: 殷亮辉 yinlianghui@hotoa.com
1577
1602
  * @Date: 2023-03-22 09:31:21
1578
- * @LastEditors: Please set LastEditors
1579
- * @LastEditTime: 2023-03-28 14:06:47
1603
+ * @LastEditors: baozhoutao@steedos.com
1604
+ * @LastEditTime: 2023-04-06 16:04:20
1580
1605
  */
1581
1606
  const getSchema$2 = (uiSchema)=>{
1582
1607
  return {
@@ -1606,15 +1631,11 @@ const getSchema$2 = (uiSchema)=>{
1606
1631
  },
1607
1632
  "adaptor": `
1608
1633
  if(payload.errors){
1609
- payload.status = 2;
1610
- payload.msg = payload.errors[0].message;
1634
+ payload.status = 2;
1635
+ payload.msg = window.t ? window.t(payload.errors[0].message) : payload.errors[0].message;
1611
1636
  }
1612
1637
  return payload;
1613
1638
  `,
1614
- },
1615
- "messages": {
1616
- "success": "删除成功",
1617
- "failed": "删除失败"
1618
1639
  }
1619
1640
  },
1620
1641
  "actionType": "ajax"
@@ -1977,7 +1998,7 @@ const StandardButtons = {
1977
1998
  getStandardNew: async (uiSchema, ctx)=>{
1978
1999
  return {
1979
2000
  type: 'amis_button',
1980
- amis_schema: await getSchema$4()
2001
+ amis_schema: await getSchema$4(uiSchema)
1981
2002
  }
1982
2003
  },
1983
2004
  getStandardEdit: async (uiSchema, ctx)=>{
@@ -2061,7 +2082,7 @@ function getButtonVisibleOn$1(button){
2061
2082
  if(visible.trim().startsWith('function')){
2062
2083
  return `${visible}.apply({
2063
2084
  object: uiSchema
2064
- }, [objectName, _id, typeof record === 'undefined' ? (typeof recordPermissions === 'undefined' ? {} : recordPermissions) : record.recordPermissions, data])`
2085
+ }, [objectName, typeof _id === 'undefined' ? null: _id, typeof record === 'undefined' ? (typeof recordPermissions === 'undefined' ? {} : recordPermissions) : record.recordPermissions, data])`
2065
2086
  }
2066
2087
  return visible;
2067
2088
  }
@@ -3191,9 +3212,8 @@ async function getObjectRecordDetailHeader(objectSchema, recordId, options) {
3191
3212
 
3192
3213
  let body = [
3193
3214
  {
3194
- "type": "service",
3195
- "id": `page_readonly_${name}_header`,
3196
- data: { "&":"$$", objectName: name, _id: recordId, recordPermissions: "${record.recordPermissions}", uiSchema: objectSchema},
3215
+ "type": "wrapper",
3216
+ "className": "p-0",
3197
3217
  "body": [
3198
3218
  {
3199
3219
  "type": "grid",
@@ -3201,14 +3221,14 @@ async function getObjectRecordDetailHeader(objectSchema, recordId, options) {
3201
3221
  "className": "flex justify-between"
3202
3222
  }
3203
3223
  ],
3204
- "messages": {},
3205
3224
  "hiddenOn": "${recordLoaded != true}"
3206
3225
  }
3207
3226
  ];
3208
3227
 
3209
3228
  if(showRecordTitle){
3210
3229
  body.push({
3211
- "type": "service",
3230
+ "type": "wrapper",
3231
+ "className": "p-0",
3212
3232
  "body": [
3213
3233
  {
3214
3234
  "type": "grid",
@@ -3216,16 +3236,15 @@ async function getObjectRecordDetailHeader(objectSchema, recordId, options) {
3216
3236
  "className": "flex justify-between"
3217
3237
  }
3218
3238
  ],
3219
- "messages": {},
3220
3239
  "hiddenOn": "${recordLoaded == true}"
3221
3240
  });
3222
3241
  }
3223
3242
 
3224
3243
  return {
3225
3244
  type: 'service',
3226
- bodyClassName: '',
3245
+ id: `page_readonly_${name}_header`,
3227
3246
  name: `page`,
3228
- data: { "&":"$$", objectName: name, _id: recordId, recordPermissions: objectSchema.permissions, uiSchema: objectSchema, record: "${record}"},
3247
+ data: { objectName: name, _id: recordId, recordPermissions: objectSchema.permissions, uiSchema: objectSchema, record: "${record}" },
3229
3248
  body: body,
3230
3249
  className: ''
3231
3250
  }
@@ -3280,7 +3299,7 @@ async function getObjectRecordDetailRelatedListHeader(relatedObjectSchema, relat
3280
3299
  "body": [
3281
3300
  {
3282
3301
  "type": "tpl",
3283
- "tpl": `<a class="text-black text-base font-bold" href="/app/\${appId}/\${masterObjectName}/\${masterRecordId}/\${objectName}/grid?related_field_name=\${relatedKey}">${relatedLabel}(\${$count})</a>`,
3302
+ "tpl": `<a class="text-black text-base font-bold" href="/app/\${appId}/\${_master.objectName}/\${_master.recordId}/\${objectName}/grid?related_field_name=\${relatedKey}">${relatedLabel}(\${$count})</a>`,
3284
3303
  "inline": false,
3285
3304
  "wrapperComponent": "",
3286
3305
  "className": "",
@@ -3321,17 +3340,22 @@ async function getObjectRecordDetailRelatedListHeader(relatedObjectSchema, relat
3321
3340
  async function getObjectRelatedListHeader(objectSchema, recordId, relatedObjectName) {
3322
3341
  }
3323
3342
 
3324
- const getDisplayAsButton = function(showDisplayAs){
3343
+ const getDisplayAsButton = function(objectName, showDisplayAs){
3344
+ let displayAs = amisLib.Router.getTabDisplayAs(objectName);
3325
3345
  let buttons = [
3326
3346
  {
3327
3347
  "type": "button",
3328
3348
  "label": "表格",
3329
- "onClick": "const url = document.location.pathname + '?display=grid'; props.env.jumpTo(url);"
3349
+ "onClick": "let url = document.location.pathname; var urlSearch = new URLSearchParams(document.location.search); if(urlSearch.get(\"side_object\") && urlSearch.get(\"side_listview_id\")){url=`/app/${props.data.appId}/${urlSearch.get(\"side_object\")}/grid/${urlSearch.get(\"side_listview_id\")}`;}; props.env.jumpTo(url + '?display=grid');",
3350
+ "rightIcon": displayAs != 'split' ? "fa fa-check" : null,
3351
+ "rightIconClassName": "m-l-sm"
3330
3352
  },
3331
3353
  {
3332
3354
  "type": "button",
3333
3355
  "label": "分栏视图",
3334
- "onClick": "const url = document.location.pathname + '?display=split'; props.env.jumpTo(url);"
3356
+ "onClick": "const url = document.location.pathname + '?display=split'; props.env.jumpTo(url);",
3357
+ "rightIcon": displayAs === 'split' ? "fa fa-check" : null,
3358
+ "rightIconClassName": "m-l-sm"
3335
3359
  }
3336
3360
  ];
3337
3361
  return {
@@ -3473,7 +3497,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
3473
3497
  }
3474
3498
  }
3475
3499
  },
3476
- showDisplayAs? getDisplayAsButton() : {}
3500
+ showDisplayAs? getDisplayAsButton(mainObject?.name) : {}
3477
3501
  ]
3478
3502
  }else {
3479
3503
  return [
@@ -3554,7 +3578,7 @@ function getObjectHeaderToolbar(mainObject, formFactor, {showDisplayAs = false,
3554
3578
  }
3555
3579
  }
3556
3580
  },
3557
- showDisplayAs? getDisplayAsButton() : {}
3581
+ showDisplayAs? getDisplayAsButton(showDisplayAs) : {}
3558
3582
  // {
3559
3583
  // "type": "search-box",
3560
3584
  // "align": "right",
@@ -3844,13 +3868,14 @@ function getLookupSapceUserTreeSchema(){
3844
3868
  "headers": {
3845
3869
  "Authorization": "Bearer ${context.tenantId},${context.authToken}"
3846
3870
  },
3847
- "adaptor": " const records = payload.data.options;\n const treeRecords = [];\n const getChildren = (records, childrenIds) => {\n if (!childrenIds) {\n return;\n }\n const children = _.filter(records, (record) => {\n return _.includes(childrenIds, record.value)\n });\n _.each(children, (item) => {\n if (item.children) {\n item.children = getChildren(records, item.children)\n }\n })\n return children;\n }\n\n const getRoot = (records) => {\n for (var i = 0; i < records.length; i++){\n records[i].noParent = 0;\n if (!!records[i].parent) {\n biaozhi = 1\n for (var j = 0; j < records.length; j++){\n if (records[i].parent == records[j].value)\n biaozhi = 0;\n }\n if (biaozhi == 1) records[i].noParent = 1;\n } else records[i].noParent = 1;\n }\n }\n getRoot(records);\n console.log(records)\n\n _.each(records, (record) => {\n if (record.noParent ==1) {\n treeRecords.push(Object.assign({}, record, { children: getChildren(records, record.children) }));\n }\n });\n console.log(treeRecords)\n\n payload.data.options = treeRecords;\n return payload;\n ",
3871
+ "adaptor": "if (payload.data.treeCache == true) {\n return payload;\n }\n const records = payload.data.options;\n const treeRecords = [];\n const getChildren = (records, childrenIds) => {\n if (!childrenIds) {\n return;\n }\n const children = _.filter(records, (record) => {\n return _.includes(childrenIds, record.value)\n });\n _.each(children, (item) => {\n if (item.children) {\n item.children = getChildren(records, item.children)\n }\n })\n return children;\n }\n\n const getRoot = (records) => {\n for (var i = 0; i < records.length; i++){\n records[i].noParent = 0;\n if (!!records[i].parent) {\n biaozhi = 1\n for (var j = 0; j < records.length; j++){\n if (records[i].parent == records[j].value)\n biaozhi = 0;\n }\n if (biaozhi == 1) records[i].noParent = 1;\n } else records[i].noParent = 1;\n }\n }\n getRoot(records);\n console.log(records)\n\n _.each(records, (record) => {\n if (record.noParent ==1) {\n treeRecords.push(Object.assign({}, record, { children: getChildren(records, record.children) }));\n }\n });\n console.log(treeRecords)\n\n payload.data.options = treeRecords;\n payload.data.treeCache = true;\n return payload;\n ",
3848
3872
  "requestAdaptor": "\n ",
3849
3873
  "data": {
3850
3874
  "query": "{options:organizations(filters:[\"hidden\", \"!=\", true],sort:\"sort_no desc\"){value:_id label:name,parent,children}}"
3851
3875
  },
3852
3876
  "messages": {
3853
- }
3877
+ },
3878
+ "cache": 300000
3854
3879
  },
3855
3880
  "onEvent": {
3856
3881
  "change": {
@@ -4241,20 +4266,20 @@ async function lookupToAmisSelect(field, readonly, ctx){
4241
4266
 
4242
4267
  if(referenceTo){
4243
4268
  // 字段值单独走一个请求合并到source的同一个GraphQL接口中
4244
- const defaultValueOptionsQueryData = await getFindQuery({ name: referenceTo.objectName }, null, {
4245
- [referenceTo.labelField.name]: Object.assign({}, referenceTo.labelField, {alias: 'label'}),
4246
- [referenceTo.valueField.name]: Object.assign({}, referenceTo.valueField, {alias: 'value'})
4247
- }, {
4269
+ const defaultValueOptionsQueryData = await getFindQuery({ name: referenceTo.objectName }, null, [
4270
+ Object.assign({}, referenceTo.labelField, {alias: 'label'}),
4271
+ Object.assign({}, referenceTo.valueField, {alias: 'value'})
4272
+ ], {
4248
4273
  alias: "defaultValueOptions",
4249
4274
  filters: "{__options_filters}",
4250
4275
  count: false
4251
4276
  });
4252
4277
  apiInfo = await getApi$1({
4253
4278
  name: referenceTo.objectName
4254
- }, null, {
4255
- [referenceTo.labelField.name]: Object.assign({}, referenceTo.labelField, {alias: 'label'}),
4256
- [referenceTo.valueField.name]: Object.assign({}, referenceTo.valueField, {alias: 'value'})
4257
- }, {expand: false, alias: 'options', queryOptions: `filters: {__filters}, top: {__top}, sort: "{__sort}"`, moreQueries: [defaultValueOptionsQueryData.query]});
4279
+ }, null, [
4280
+ Object.assign({}, referenceTo.labelField, {alias: 'label'}),
4281
+ Object.assign({}, referenceTo.valueField, {alias: 'value'})
4282
+ ], {expand: false, alias: 'options', queryOptions: `filters: {__filters}, top: {__top}, sort: "{__sort}"`, moreQueries: [defaultValueOptionsQueryData.query]});
4258
4283
 
4259
4284
  apiInfo.adaptor = `
4260
4285
  const data = payload.data;
@@ -5415,8 +5440,9 @@ function getReadonlyFormAdaptor(fields){
5415
5440
  async function getReadonlyFormInitApi(object, recordId, fields, options){
5416
5441
  return {
5417
5442
  method: "post",
5418
- url: getApi$2()+"?rf="+ (new Date()).getTime(),
5443
+ url: getApi$2()+"&recordId=${recordId}",
5419
5444
  cache: API_CACHE,
5445
+ // requestAdaptor: "console.log('getReadonlyFormInitApi requestAdaptor', api);return api;",
5420
5446
  adaptor: getReadonlyFormAdaptor(fields),
5421
5447
  data: await getFindOneQuery$1(object, recordId, fields, options),
5422
5448
  headers: {
@@ -5523,6 +5549,7 @@ async function getEditFormInitApi(object, recordId, fields, options){
5523
5549
  data.global = "${global}";
5524
5550
  data.context = "${context}";
5525
5551
  data.defaultData = "${defaultData}";
5552
+
5526
5553
  return {
5527
5554
  method: "post",
5528
5555
  url: getApi$2(),
@@ -5891,7 +5918,7 @@ async function getObjectCRUD(objectSchema, fields, options){
5891
5918
  keepItemSelectionOnPageChange: true,
5892
5919
  api: await getTableApi(objectSchema, fields, options),
5893
5920
  hiddenOn: options.tableHiddenOn,
5894
- autoFillHeight: true,
5921
+ autoFillHeight: options.isRelated ? false : true,
5895
5922
  className: `flex-auto ${crudClassName || ""}`,
5896
5923
  crudClassName: crudClassName,
5897
5924
  },
@@ -5934,11 +5961,11 @@ async function getObjectCRUD(objectSchema, fields, options){
5934
5961
  id: `service_${id}`,
5935
5962
  name: `page`,
5936
5963
  data: {
5937
- objectName: objectSchema.name,
5938
- _id: null,
5964
+ // objectName: objectSchema.name,
5965
+ // _id: null,
5939
5966
  recordPermissions: objectSchema.permissions,
5940
5967
  uiSchema: objectSchema,
5941
- loaded: false //crud接收适配器中设置为true,否则就是刷新浏览器第一次加载
5968
+ // loaded: false //crud接收适配器中设置为true,否则就是刷新浏览器第一次加载
5942
5969
  },
5943
5970
  body: body
5944
5971
  }
@@ -6051,6 +6078,10 @@ async function getObjectForm(objectSchema, ctx){
6051
6078
  "objectName": "${_master.objectName}"
6052
6079
  },
6053
6080
  "expression": `\${_master.objectName != '${objectSchema.name}' && _master.objectName}`
6081
+ },
6082
+ {
6083
+ "args": {},
6084
+ "actionType": "closeDialog"
6054
6085
  }
6055
6086
  ]
6056
6087
  }
@@ -6397,7 +6428,7 @@ function getButtonVisibleOn(button){
6397
6428
  // return 'false';
6398
6429
  // }
6399
6430
  if(visible.trim().startsWith('function')){
6400
- return `${visible}(objectName, _id, typeof record === 'undefined' ? (typeof recordPermissions === 'undefined' ? {} : recordPermissions) : record.recordPermissions, data)`
6431
+ return `${visible}(objectName, typeof _id === 'undefined' ? null: _id, typeof record === 'undefined' ? (typeof recordPermissions === 'undefined' ? {} : recordPermissions) : record.recordPermissions, data)`
6401
6432
  }
6402
6433
  return visible;
6403
6434
  }
@@ -6562,6 +6593,11 @@ async function getTableApi(mainObject, fields, options){
6562
6593
 
6563
6594
  let valueField = mainObject.key_field || '_id';
6564
6595
  const api = await getApi(mainObject, null, fields, {count: options.queryCount, alias: 'rows', limit: top, queryOptions: `filters: {__filters}, top: {__top}, skip: {__skip}, sort: "{__sort}"`});
6596
+
6597
+ if(options.isRelated){
6598
+ api.url += "&recordId=${recordId}";
6599
+ }
6600
+
6565
6601
  api.data.$term = "$term";
6566
6602
  api.data.$self = "$$";
6567
6603
  api.data.filter = "$filter";
@@ -6681,11 +6717,36 @@ async function getTableApi(mainObject, fields, options){
6681
6717
  if(!_.isEmpty(systemFilters)){
6682
6718
  filters = systemFilters;
6683
6719
  };
6684
-
6685
6720
  if(api.data.$self.additionalFilters){
6686
6721
  userFilters.push(api.data.$self.additionalFilters)
6687
6722
  }
6688
6723
 
6724
+ if(api.data.$self._isRelated){
6725
+ const self = api.data.$self;
6726
+ const relatedKey = self.relatedKey;
6727
+ const recordId = self.recordId;
6728
+ const refField = self.uiSchema.fields[relatedKey];
6729
+ const masterRecord = self._master.record;
6730
+ const masterObjectName = self._master.objectName;
6731
+ let relatedValue = recordId;
6732
+ if(refField.reference_to_field && refField.reference_to_field != '_id'){
6733
+ relatedValue = masterRecord[refField.reference_to_field]
6734
+ }
6735
+ let relatedFilters;
6736
+ if (
6737
+ refField._reference_to ||
6738
+ (refField.reference_to && !_.isString(refField.reference_to))
6739
+ ) {
6740
+ relatedFilters = [
6741
+ [relatedKey + "/o", "=", masterObjectName],
6742
+ [relatedKey + "/ids", "=", relatedValue],
6743
+ ];
6744
+ } else {
6745
+ relatedFilters = [relatedKey, "=", relatedValue];
6746
+ }
6747
+ userFilters.push(relatedFilters)
6748
+ }
6749
+
6689
6750
  if(!_.isEmpty(userFilters)){
6690
6751
  if(_.isEmpty(filters)){
6691
6752
  filters = userFilters;
@@ -6808,7 +6869,7 @@ async function getApi(object, recordId, fields, options){
6808
6869
  const data = await getFindQuery(object, recordId, fields, options);
6809
6870
  return {
6810
6871
  method: "post",
6811
- url: getApi$2(),
6872
+ url: getApi$2(), // + "&recordId=${recordId}"
6812
6873
  data: data,
6813
6874
  headers: {
6814
6875
  Authorization: "Bearer ${context.tenantId},${context.authToken}"
@@ -7442,8 +7503,8 @@ const getRecordPermissions = async (objectName, recordId)=>{
7442
7503
  /*
7443
7504
  * @Author: baozhoutao@steedos.com
7444
7505
  * @Date: 2022-07-05 15:55:39
7445
- * @LastEditors: Please set LastEditors
7446
- * @LastEditTime: 2023-03-30 17:44:53
7506
+ * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
7507
+ * @LastEditTime: 2023-04-08 18:14:55
7447
7508
  * @Description:
7448
7509
  */
7449
7510
 
@@ -7515,7 +7576,7 @@ async function getObjectRelatedList(
7515
7576
 
7516
7577
  // 获取单个相关表
7517
7578
  async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObjectName, relatedKey, ctx){
7518
- let { top, perPage, hiddenEmptyTable, appId, relatedLabel, className, columns, sort, filters, visible_on } = ctx;
7579
+ let { top, perPage, appId, relatedLabel, className, columns, sort, filters, visible_on } = ctx;
7519
7580
  // console.log('getRecordDetailRelatedListSchema==>',objectName,recordId,relatedObjectName)
7520
7581
  const relatedObjectUiSchema = await getUISchema(relatedObjectName);
7521
7582
  if(!relatedObjectUiSchema){
@@ -7550,6 +7611,7 @@ async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObj
7550
7611
  relatedKey = mainRelated[relatedObjectName];
7551
7612
  }
7552
7613
  let globalFilter = null;
7614
+ // TODO: refField变量去掉,写到amis运行时脚本中,uiSchema.fields[relatedKey];可以取到
7553
7615
  const refField = await getField(relatedObjectName, relatedKey);
7554
7616
 
7555
7617
  if(!refField){
@@ -7565,23 +7627,23 @@ async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObj
7565
7627
  }
7566
7628
  }
7567
7629
 
7568
- let relatedValue = recordId;
7569
- if(refField.reference_to_field && refField.reference_to_field != '_id'){
7570
- const masterRecord = await getRecord(objectName, recordId, [refField.reference_to_field]);
7571
- relatedValue = masterRecord[refField.reference_to_field];
7572
- }
7630
+ let relatedValue = "${recordId}";
7631
+ // if(refField.reference_to_field && refField.reference_to_field != '_id'){
7632
+ // const masterRecord = await getRecord(objectName, recordId, [refField.reference_to_field]);
7633
+ // relatedValue = masterRecord[refField.reference_to_field]
7634
+ // }
7573
7635
 
7574
- if (
7575
- refField._reference_to ||
7576
- (refField.reference_to && !_$1.isString(refField.reference_to))
7577
- ) {
7578
- globalFilter = [
7579
- [`${relatedKey}/o`, "=", objectName],
7580
- [`${relatedKey}/ids`, "=", relatedValue],
7581
- ];
7582
- } else {
7583
- globalFilter = [`${relatedKey}`, "=", relatedValue];
7584
- }
7636
+ // if (
7637
+ // refField._reference_to ||
7638
+ // (refField.reference_to && !isString(refField.reference_to))
7639
+ // ) {
7640
+ // globalFilter = [
7641
+ // [`${relatedKey}/o`, "=", objectName],
7642
+ // [`${relatedKey}/ids`, "=", relatedValue],
7643
+ // ];
7644
+ // } else {
7645
+ // globalFilter = [`${relatedKey}`, "=", relatedValue];
7646
+ // }
7585
7647
  const recordRelatedListHeader = await getObjectRecordDetailRelatedListHeader(relatedObjectUiSchema, relatedLabel);
7586
7648
  const componentId = `steedos-record-related-list-${relatedObjectName}`;
7587
7649
  const options = {
@@ -7606,9 +7668,9 @@ async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObj
7606
7668
  top: top,
7607
7669
  perPage: perPage,
7608
7670
  setDataToComponentId: componentId,
7609
- tableHiddenOn: hiddenEmptyTable ? "this.$count === 0" : null,
7671
+ // tableHiddenOn: hiddenEmptyTable ? "this.$count === 0" : null,
7610
7672
  appId: appId,
7611
- crudClassName: 'border-t border-slate-300',
7673
+ crudClassName: 'border-t border-slate-300 hidden',
7612
7674
  ...ctx
7613
7675
  };
7614
7676
  const amisSchema= (await getRelatedListSchema(relatedObjectName, 'all', options)).amisSchema;
@@ -7620,15 +7682,9 @@ async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObj
7620
7682
  amisSchema: {
7621
7683
  type: "service",
7622
7684
  id: componentId,
7623
- className: `steedos-record-related-list rounded border border-slate-300 bg-gray-100 mb-4 ${className}`,
7685
+ className: `steedos-record-related-list ${componentId} rounded border border-slate-300 bg-gray-100 mb-4 ${className}`,
7624
7686
  data: {
7625
- "&": "$$",
7626
- appId: "${appId}",
7627
- app_id: "${appId}",
7628
- masterObjectName: objectName,
7629
- masterRecordId: "${recordId}",
7630
7687
  relatedKey: relatedKey,
7631
- objectName: relatedObjectName,
7632
7688
  listViewId: `amis-\${appId}-${relatedObjectName}-listview`,
7633
7689
  _isRelated: true
7634
7690
  },
@@ -7636,12 +7692,6 @@ async function getRecordDetailRelatedListSchema(objectName, recordId, relatedObj
7636
7692
  {
7637
7693
  ...amisSchema,
7638
7694
  data: {
7639
- "&": "$$",
7640
- appId: "${appId}",
7641
- app_id: "${appId}",
7642
- relatedKey: relatedKey,
7643
- objectName: "${objectName}",
7644
- recordId: "${masterRecordId}",
7645
7695
  defaultData: {
7646
7696
  ...{[relatedKey]: getRelatedFieldValue(objectName, relatedValue, relatedObjectUiSchema, relatedKey)}
7647
7697
  }
@@ -7685,13 +7735,13 @@ function getDefaultRelatedListProps(uiSchema, listName, ctx) {
7685
7735
  columns = getListViewColumns(listView, ctx.formFactor);
7686
7736
  sort = getListViewSort(listView);
7687
7737
  filter = getListViewFilter(listView);
7688
- if(_$1.isArray(ctx.globalFilter) && ctx.globalFilter.length && _$1.isArray(filter) && filter.length){
7689
- // 都有值
7690
- filter = [ctx.globalFilter, 'and', filter];
7691
- }else if(ctx.globalFilter && (!filter || !filter.length)){
7692
- // globalFilter有值,filter无值
7693
- filter = ctx.globalFilter;
7694
- }
7738
+ // if(isArray(ctx.globalFilter) && ctx.globalFilter.length && isArray(filter) && filter.length){
7739
+ // // 都有值
7740
+ // filter = [ctx.globalFilter, 'and', filter]
7741
+ // }else if(ctx.globalFilter && (!filter || !filter.length)){
7742
+ // // globalFilter有值,filter无值
7743
+ // filter = ctx.globalFilter;
7744
+ // }
7695
7745
  filtersFunction = listView && listView._filters;
7696
7746
  }else {
7697
7747
  const isNameField = _$1.find(
@@ -7701,9 +7751,9 @@ function getDefaultRelatedListProps(uiSchema, listName, ctx) {
7701
7751
  }
7702
7752
  );
7703
7753
  columns = isNameField ? [isNameField.name] : ['name'];
7704
- if(ctx.globalFilter){
7705
- filter = ctx.globalFilter;
7706
- }
7754
+ // if(ctx.globalFilter){
7755
+ // filter = ctx.globalFilter;
7756
+ // }
7707
7757
  }
7708
7758
 
7709
7759
  return {
@@ -7727,7 +7777,7 @@ function getRelatedListProps(uiSchema, listViewName, ctx) {
7727
7777
  return {
7728
7778
  columns: ctx.columns,
7729
7779
  sort,
7730
- filter: ctx.globalFilter,
7780
+ // filter: ctx.globalFilter,
7731
7781
  filtersFunction: filtersFunction
7732
7782
  }
7733
7783
  } else {
@@ -7766,6 +7816,16 @@ async function getRelatedListSchema(
7766
7816
  delete ctx.filters;
7767
7817
 
7768
7818
  delete ctx.globalFilter;
7819
+
7820
+ const adaptor = `
7821
+ if(setDataToComponentId){
7822
+ if(payload.data.count){
7823
+ setTimeout(function(){
7824
+ window.$("." + setDataToComponentId + " .antd-Crud").removeClass("hidden");
7825
+ }, 10);
7826
+ }
7827
+ };
7828
+ `;
7769
7829
  const amisSchema = {
7770
7830
  "type": "steedos-object-table",
7771
7831
  "objectApiName": objectName,
@@ -7774,6 +7834,8 @@ async function getRelatedListSchema(
7774
7834
  "filters": listviewFilter,
7775
7835
  "filtersFunction": filtersFunction,
7776
7836
  "sort": listViewSort,
7837
+ "filterVisible": false,
7838
+ adaptor,
7777
7839
  "ctx": ctx
7778
7840
  };
7779
7841
  // console.log(`getRelatedListSchema amisSchema`, amisSchema);
@@ -7786,8 +7848,8 @@ async function getRelatedListSchema(
7786
7848
  /*
7787
7849
  * @Author: baozhoutao@steedos.com
7788
7850
  * @Date: 2022-07-05 15:55:39
7789
- * @LastEditors: baozhoutao@steedos.com
7790
- * @LastEditTime: 2023-03-11 17:02:30
7851
+ * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
7852
+ * @LastEditTime: 2023-04-08 17:31:57
7791
7853
  * @Description:
7792
7854
  */
7793
7855
 
@@ -7959,14 +8021,14 @@ async function getField(objectName, fieldName) {
7959
8021
  async function getFormSchema(objectName, ctx) {
7960
8022
  const uiSchema = await getUISchema(objectName);
7961
8023
  const amisSchema = await getObjectForm(uiSchema, ctx);
7962
- // console.log(`getFormSchema====>`, amisSchema)
8024
+ console.log(`getFormSchema====>`, amisSchema);
7963
8025
  return {
7964
8026
  uiSchema,
7965
8027
  amisSchema,
7966
8028
  };
7967
8029
  }
7968
8030
 
7969
- // 获取只读页面
8031
+ // 获取只读页面 recordId 已废弃, 函数签名保持不变, 但recordId变量不可再使用, 请使用运行时的${recordId}
7970
8032
  async function getViewSchema(objectName, recordId, ctx) {
7971
8033
  const uiSchema = await getUISchema(objectName);
7972
8034
  const amisSchema = await getObjectDetail(uiSchema, recordId, ctx);
@@ -8151,6 +8213,7 @@ async function getTableSchema(
8151
8213
  headerToolbarItems: ctx.headerToolbarItems,
8152
8214
  buttons: await getListViewItemButtons(uiSchema, ctx)
8153
8215
  });
8216
+ // console.log('getTableSchema====>amisSchema', amisSchema)
8154
8217
  return {
8155
8218
  uiSchema,
8156
8219
  amisSchema,
@@ -8249,15 +8312,8 @@ async function getRecordDetailSchema(objectName, appId, props = {}){
8249
8312
  "data": {
8250
8313
  "name": `\${event.data.record.${uiSchema?.NAME_FIELD_KEY || 'name'}}`,
8251
8314
  "record": `\${event.data.record}`,
8252
- "recordLoaded": true,
8253
- }
8254
- },
8255
- {
8256
- "actionType": "reload",
8257
- "componentId": `page_readonly_${objectName}_header`, //刷新标题, 详细页面header service 嵌套太多, 导致仅刷新第一层service无法更新recordName
8258
- "data": {
8259
- "name": `\${event.data.record.${uiSchema?.NAME_FIELD_KEY || 'name'}}`,
8260
- "record": `\${event.data.record}`,
8315
+ "_id": "\${event.data.record._id}",
8316
+ "recordId": "\${event.data.record._id}",
8261
8317
  "recordLoaded": true,
8262
8318
  }
8263
8319
  }
@@ -8267,10 +8323,10 @@ async function getRecordDetailSchema(objectName, appId, props = {}){
8267
8323
  },
8268
8324
  content
8269
8325
  ],
8270
- data: {
8271
- "_master.objectName": "${objectName}",
8272
- "_master.recordId": "${recordId}"
8273
- },
8326
+ // data: {
8327
+ // "_master.objectName": "${objectName}",
8328
+ // "_master.recordId": "${recordId}"
8329
+ // },
8274
8330
  onEvent: {
8275
8331
  "recordLoaded": {
8276
8332
  "actions": [
@@ -8278,10 +8334,10 @@ async function getRecordDetailSchema(objectName, appId, props = {}){
8278
8334
  "actionType": "reload",
8279
8335
  "data": {
8280
8336
  "name": `\${record.${uiSchema.NAME_FIELD_KEY || 'name'}}`,
8281
- "_master.record": `\${record}`,
8282
- // 不清楚reload 如何给对象下的某个key复制, 所以此处重复设置_master的objectName、recordId
8283
- "_master.objectName": "${objectName}",
8284
- "_master.recordId": "${recordId}"
8337
+ // "_master.record": `\${record}`,
8338
+ // // 不清楚reload 如何给对象下的某个key复制, 所以此处重复设置_master的objectName、recordId
8339
+ // "_master.objectName": "${objectName}",
8340
+ // "_master.recordId": "${recordId}"
8285
8341
  }
8286
8342
  }
8287
8343
  ]
@@ -8292,51 +8348,6 @@ async function getRecordDetailSchema(objectName, appId, props = {}){
8292
8348
  }
8293
8349
  }
8294
8350
 
8295
- // export async function getRecordDetailRelatedListSchema(objectName,recordId,relatedObjectName){
8296
- // // console.log('b==>',objectName,recordId,relatedObjectName)
8297
- // const relatedObjectUiSchema = await getUISchema(relatedObjectName);
8298
- // const { list_views, label , icon, fields } = relatedObjectUiSchema;
8299
- // const firstListViewName = keys(list_views)[0];
8300
- // const relatedKey = findKey(fields, function(field) {
8301
- // return ["lookup","master_detail"].indexOf(field.type) > -1 && field.reference_to === objectName;
8302
- // });
8303
- // const globalFilter = [relatedKey,'=',recordId];
8304
- // const recordRelatedListHeader = await getObjectRecordDetailRelatedListHeader(relatedObjectUiSchema);
8305
- // const options = {
8306
- // globalFilter,
8307
- // defaults: {
8308
- // listSchema: { headerToolbar:[],columnsTogglable:false },
8309
- // headerSchema: recordRelatedListHeader
8310
- // },
8311
- // showHeader: true
8312
- // }
8313
- // const amisSchema= (await getListSchema(null, relatedObjectName, firstListViewName, options)).amisSchema;
8314
- // return {
8315
- // uiSchema: relatedObjectUiSchema,
8316
- // amisSchema: {
8317
- // type: "service",
8318
- // data: {
8319
- // masterObjectName: objectName,
8320
- // masterRecordId: "${recordId}",
8321
- // relatedKey: relatedKey,
8322
- // objectName: relatedObjectName,
8323
- // listViewId: `amis-\${appId}-${relatedObjectName}-listview`,
8324
- // },
8325
- // body:[
8326
- // {
8327
- // ...amisSchema,
8328
- // data: {
8329
- // filter: ["${relatedKey}", "=", "${masterRecordId}"],
8330
- // objectName: "${objectName}",
8331
- // recordId: "${masterRecordId}",
8332
- // ...{[relatedKey]: getRelatedFieldValue(objectName, "${recordId}", relatedSchema.uiSchema, relatedKey)}
8333
- // }
8334
- // }
8335
- // ]
8336
- // }
8337
- // };
8338
- // }
8339
-
8340
8351
 
8341
8352
  // 获取单个相关表
8342
8353
  async function getObjectRelated(