@steedos-widgets/amis-object 1.3.4-beta.11 → 1.3.4-beta.13

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.
@@ -1599,9 +1599,6 @@ body.steedos {
1599
1599
  .antd-Select-popover .antd-Select-menu .antd-Select-option .antd-Checkbox--checkbox {
1600
1600
  white-space: nowrap;
1601
1601
  }
1602
- .antd-Select-popover .antd-Select-menu .antd-Select-option .antd-Checkbox--checkbox > span {
1603
- vertical-align: text-top;
1604
- }
1605
1602
  }
1606
1603
  .steedos-object-form .steedos-input-rich-text-readonly .antd-RichTextControl {
1607
1604
  border: 0;
@@ -3612,8 +3612,8 @@ function getLookupListView(refObjectConfig) {
3612
3612
  /*
3613
3613
  * @Author: baozhoutao@steedos.com
3614
3614
  * @Date: 2022-05-23 09:53:08
3615
- * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
3616
- * @LastEditTime: 2023-09-19 14:38:39
3615
+ * @LastEditors: liaodaxue
3616
+ * @LastEditTime: 2023-10-11 17:32:17
3617
3617
  * @Description:
3618
3618
  */
3619
3619
 
@@ -3674,7 +3674,7 @@ function getSelectMap(selectOptions){
3674
3674
  if(optionColor){
3675
3675
  const background = optionColor.charAt(0) === '#' ? optionColor : '#'+optionColor;
3676
3676
  const color = getContrastColor(background);
3677
- const optionColorStyle = 'background:'+background+';color:'+color;
3677
+ const optionColorStyle = 'background:'+background+';color:'+color+';line-height:1.5rem';
3678
3678
  map[optionValue] = `<span class="rounded-xl px-2 py-1" style='${optionColorStyle}'>${option.label}</span>`;
3679
3679
  }else {
3680
3680
  map[optionValue] = option.label;
@@ -4131,17 +4131,17 @@ async function getFindQuery(object, recordId, fields, options){
4131
4131
  }
4132
4132
 
4133
4133
  const countQuery = options.count === false ? "" : `,count:${object.name}__count(filters:{__filters})`;
4134
- const moreQuerie = options.moreQueries?.length ? ("," + options.moreQueries.map(function(item){
4135
- // 把最外层的{}去除
4136
- return item.replace(/^{/,"").replace(/}$/,"");
4137
- }).join(",")) : "";
4134
+ // const moreQuerie = options.moreQueries?.length ? ("," + options.moreQueries.map(function(item){
4135
+ // // 把最外层的{}去除
4136
+ // return item.replace(/^{/,"").replace(/}$/,"");
4137
+ // }).join(",")) : "";
4138
4138
 
4139
4139
  return {
4140
4140
  orderBy: "${orderBy}",
4141
4141
  orderDir: "${orderDir}",
4142
4142
  pageNo: "${page}",
4143
4143
  pageSize: "${perPage}",
4144
- query: `{${alias}:${object.name}${queryOptions}{${await getFieldsTemplate(fields, options.expand)}${treeFields}${cfsFields}}${countQuery}${moreQuerie}}`
4144
+ query: `{${alias}:${object.name}${queryOptions}{${await getFieldsTemplate(fields, options.expand)}${treeFields}${cfsFields}}${countQuery}}`
4145
4145
  }
4146
4146
  }
4147
4147
 
@@ -9354,10 +9354,10 @@ async function lookupToAmisSelect(field, readonly, ctx){
9354
9354
  // const labelFieldKey = referenceTo && referenceTo.labelField?.name || 'name';
9355
9355
 
9356
9356
  let apiInfo;
9357
-
9357
+ let defaultValueOptionsQueryData;
9358
9358
  if(referenceTo){
9359
9359
  // 字段值单独走一个请求合并到source的同一个GraphQL接口中
9360
- const defaultValueOptionsQueryData = await getFindQuery({ name: referenceTo.objectName }, null, [
9360
+ defaultValueOptionsQueryData = await getFindQuery({ name: referenceTo.objectName }, null, [
9361
9361
  Object.assign({}, referenceTo.labelField, {alias: 'label'}),
9362
9362
  Object.assign({}, referenceTo.valueField, {alias: 'value'})
9363
9363
  ], {
@@ -9370,7 +9370,7 @@ async function lookupToAmisSelect(field, readonly, ctx){
9370
9370
  }, null, [
9371
9371
  Object.assign({}, referenceTo.labelField, {alias: 'label'}),
9372
9372
  Object.assign({}, referenceTo.valueField, {alias: 'value'})
9373
- ], {expand: false, alias: 'options', queryOptions: `filters: {__filters}, top: {__top}, sort: "{__sort}"`, moreQueries: [defaultValueOptionsQueryData.query]});
9373
+ ], {expand: false, alias: 'options', queryOptions: `filters: {__filters}, top: {__top}, sort: "{__sort}"`});
9374
9374
 
9375
9375
  apiInfo.adaptor = `
9376
9376
  const data = payload.data;
@@ -9464,13 +9464,16 @@ async function lookupToAmisSelect(field, readonly, ctx){
9464
9464
  var optionsFiltersOp = "${field.multiple ? "in" : "="}";
9465
9465
  var optionsFilters = [["${valueFieldKey}", optionsFiltersOp, []]];
9466
9466
  if (defaultValue && !api.data.$term) {
9467
+ const defaultValueOptionsQueryData = ${JSON.stringify(defaultValueOptionsQueryData)};
9468
+ const defaultValueOptionsQuery = defaultValueOptionsQueryData.query.replace(/^{/,"").replace(/}$/,"");
9467
9469
  // 字段值单独请求,没值的时候在请求中返回空
9468
9470
  optionsFilters = [["${valueFieldKey}", optionsFiltersOp, defaultValue]];
9469
9471
  if(filters.length > 0){
9470
9472
  optionsFilters = [filters, optionsFilters];
9471
9473
  }
9474
+ api.data.query = "{"+api.data.query.replace(/^{/,"").replace(/}$/,"")+","+defaultValueOptionsQuery+"}";
9475
+ api.data.query = api.data.query.replace(/{__options_filters}/g, JSON.stringify(optionsFilters))
9472
9476
  }
9473
- api.data.query = api.data.query.replace(/{__options_filters}/g, JSON.stringify(optionsFilters));
9474
9477
  return api;
9475
9478
  `;
9476
9479
  referenceTo ? referenceTo.labelField.name : '';
@@ -12025,18 +12028,30 @@ function getReadonlyFormAdaptor(object, fields, options){
12025
12028
  payload.status = 2;
12026
12029
  payload.msg = payload.errors[0].message;
12027
12030
  }
12031
+ ${options && options.initApiAdaptor || ''}
12028
12032
  return payload;
12029
12033
  `
12030
12034
  }
12031
12035
 
12032
12036
  async function getReadonlyFormInitApi(object, recordId, fields, options){
12037
+ let findOneOptions;
12038
+ if (!recordId && options && options.isEditor) {
12039
+ // 设计器中只读表单返回第一条记录
12040
+ findOneOptions = {
12041
+ filters: [],
12042
+ queryOptions: "top: 1"
12043
+ };
12044
+ }
12033
12045
  return {
12034
12046
  method: "post",
12035
12047
  url: getApi$2() + '&objectName=${objectName}' + "&recordId=${recordId}",
12036
12048
  cache: API_CACHE,
12037
- // requestAdaptor: "console.log('getReadonlyFormInitApi requestAdaptor', api);return api;",
12049
+ requestAdaptor: `
12050
+ ${options && options.initApiRequestAdaptor || ''}
12051
+ return api;
12052
+ `,
12038
12053
  adaptor: getReadonlyFormAdaptor(object, fields, options),
12039
- data: await getFindOneQuery$1(object, recordId, fields, options),
12054
+ data: await getFindOneQuery$1(object, recordId, fields, findOneOptions),
12040
12055
  headers: {
12041
12056
  Authorization: "Bearer ${context.tenantId},${context.authToken}"
12042
12057
  }
@@ -13011,7 +13026,7 @@ function deleteVariable(data, key) {
13011
13026
  * @Author: baozhoutao@steedos.com
13012
13027
  * @Date: 2022-05-26 16:02:08
13013
13028
  * @LastEditors: 殷亮辉 yinlianghui@hotoa.com
13014
- * @LastEditTime: 2023-09-15 15:36:17
13029
+ * @LastEditTime: 2023-10-12 18:25:05
13015
13030
  * @Description:
13016
13031
  */
13017
13032
 
@@ -13031,8 +13046,9 @@ const getFieldSchemaArray = (formFields, ctx) => {
13031
13046
  }
13032
13047
 
13033
13048
  let forceHidden = false;
13034
- if(!recordId && field.readonly){
13049
+ if(!recordId && field.readonly && !ctx.isEditor){
13035
13050
  // 新建记录时,只读字段先隐藏,后续支持显示后,即任务:https://github.com/steedos/steedos-platform/issues/3164 完成后再放开
13051
+ // 表单只读时所有字段都是readonly,设计器中如果forceHidden会造成整个表单在只读的时候显示为空白了,所以要排除掉
13036
13052
  forceHidden = true;
13037
13053
  }
13038
13054
 
@@ -13596,7 +13612,7 @@ async function getObjectForm(objectSchema, ctx){
13596
13612
  }
13597
13613
 
13598
13614
  async function getObjectDetail(objectSchema, recordId, ctx){
13599
- const { formFactor, layout = formFactor === 'SMALL' ? 'normal' : "normal", labelAlign, formInitProps } = ctx;
13615
+ const { formFactor, layout = formFactor === 'SMALL' ? 'normal' : "normal", labelAlign } = ctx;
13600
13616
  const fields = _$1__default["default"].values(objectSchema.fields);
13601
13617
  const formFields = getFormFields(objectSchema, ctx);
13602
13618
  const serviceId = `service_detail_page`;
@@ -13605,7 +13621,7 @@ async function getObjectDetail(objectSchema, recordId, ctx){
13605
13621
  name: `page_readonly_${recordId}`,
13606
13622
  id: serviceId,
13607
13623
  data: {global: getGlobalData('read'), context: {rootUrl: getRootUrl(), tenantId: getTenantId(), authToken: getAuthToken()}},
13608
- api: await getReadonlyFormInitApi(objectSchema, recordId, fields, formInitProps),
13624
+ api: await getReadonlyFormInitApi(objectSchema, recordId, fields, ctx),
13609
13625
  body: [
13610
13626
  {
13611
13627
  "type": "wrapper", //form 的 hiddenOn 会导致 form onEvent 异常, 使用wrapper包裹一次form,并在wrapper上控制显隐
@@ -13624,7 +13640,11 @@ async function getObjectDetail(objectSchema, recordId, ctx){
13624
13640
  "formData": "$$"
13625
13641
  },
13626
13642
  wrapWithPanel: false,
13627
- body: await getFormBody(_$1.map(fields, (field)=>{field.readonly = true; return field;}), _$1.map(formFields, (field)=>{field.readonly = true; return field;}), Object.assign({}, ctx, {showSystemFields: true,fieldGroups: objectSchema.field_groups})),
13643
+ body: await getFormBody(
13644
+ _$1.map(fields, (field) => { field.readonly = true; return field; }),
13645
+ _$1.map(formFields, (field) => { field.readonly = true; return field; }),
13646
+ Object.assign({}, ctx, { showSystemFields: true, fieldGroups: objectSchema.field_groups })
13647
+ ),
13628
13648
  className: 'steedos-amis-form bg-white',
13629
13649
  actions: [], // 不显示表单默认的提交按钮
13630
13650
  onEvent: {
@@ -17109,10 +17129,18 @@ const getOpinionFieldStepsName = (field, top_keywords) => {
17109
17129
  * @Author: baozhoutao@steedos.com
17110
17130
  * @Date: 2022-09-09 17:47:37
17111
17131
  * @LastEditors: baozhoutao@steedos.com
17112
- * @LastEditTime: 2023-03-18 15:32:34
17132
+ * @LastEditTime: 2023-10-10 13:57:02
17113
17133
  * @Description:
17114
17134
  */
17115
17135
 
17136
+ const getMoment = ()=>{
17137
+ if(window.amisRequire){
17138
+ return window.amisRequire("moment");
17139
+ }else if(window.moment){
17140
+ return window.moment;
17141
+ }
17142
+ };
17143
+
17116
17144
  const getTrace = ({ instance, traceId }) => {
17117
17145
  return _$1.find(instance.traces, (trace) => {
17118
17146
  return trace._id === traceId;
@@ -17332,6 +17360,8 @@ const getInstanceInfo = async ({ instanceId, box }) => {
17332
17360
  method: "get",
17333
17361
  });
17334
17362
 
17363
+ const moment = getMoment();
17364
+
17335
17365
  return {
17336
17366
  box: box,
17337
17367
  _id: instanceId,
@@ -17342,7 +17372,7 @@ const getInstanceInfo = async ({ instanceId, box }) => {
17342
17372
  applicant_name: instance.applicant_name,
17343
17373
  submitter: instance.submitter,
17344
17374
  submit_date: instance.submit_date
17345
- ? amisRequire("moment")(instance.submit_date).format("YYYY-MM-DD")
17375
+ ? (moment && moment(instance.submit_date).format("YYYY-MM-DD"))
17346
17376
  : "",
17347
17377
  state: instance.state,
17348
17378
  approveValues: values,
@@ -17382,8 +17412,7 @@ const getInstanceInfo = async ({ instanceId, box }) => {
17382
17412
  finishDate = approve.is_read ? "已读" : "未处理";
17383
17413
  judge = null;
17384
17414
  } else {
17385
- finishDate =
17386
- amisRequire("moment")(finishDate).format("YYYY-MM-DD HH:mm");
17415
+ finishDate = moment && moment(finishDate).format("YYYY-MM-DD HH:mm");
17387
17416
  }
17388
17417
 
17389
17418
  switch (judge) {
@@ -17992,16 +18021,15 @@ var AmisObjectForm = function (props) { return __awaiter(void 0, void 0, void 0,
17992
18021
  uiSchema = schema.uiSchema;
17993
18022
  return [3 /*break*/, 4];
17994
18023
  case 2:
17995
- // formInitProps
17996
- if (!recordId && props.$$editor) {
17997
- // 设计器中只读表单返回第一条记录
17998
- options.formInitProps = {
17999
- filters: [],
18000
- queryOptions: "top: 1",
18001
- isEditor: true
18002
- };
18024
+ if (props.$$editor) {
18025
+ options.isEditor = true;
18003
18026
  }
18004
- return [4 /*yield*/, getViewSchema(objectApiName, recordId, options)];
18027
+ return [4 /*yield*/, getViewSchema(objectApiName, recordId, Object.assign({}, options, {
18028
+ initApiRequestAdaptor: initApiRequestAdaptor,
18029
+ initApiAdaptor: initApiAdaptor,
18030
+ enableTabs: enableTabs,
18031
+ tabsMode: tabsMode
18032
+ }))];
18005
18033
  case 3:
18006
18034
  schema = _e.sent();
18007
18035
  amisSchema = schema.amisSchema;
@@ -18942,7 +18970,7 @@ var AmisAppMenu = function (props) { return __awaiter(void 0, void 0, void 0, fu
18942
18970
  schemaApi: {
18943
18971
  "method": "get",
18944
18972
  "url": "${context.rootUrl}/service/api/apps/".concat(appId, "/menus"),
18945
- "adaptor": "\n try {\n // console.log('payload====>', payload)\n if(payload.nav_schema){\n payload.data = payload.nav_schema;\n return payload\n }\n\n const data = { nav: [] };\n const stacked = ".concat(stacked, ";\n const showIcon = ").concat(showIcon, ";\n const selectedId = '").concat(selectedId, "';\n const tab_groups = payload.tab_groups;\n const locationPathname = window.location.pathname;\n var customTabId = \"\";\n var objectTabId = \"").concat(data.tabId, "\";\n if(stacked){\n _.each(_.groupBy(payload.children, 'group'), (tabs, groupName) => {\n if (groupName === 'undefined' || groupName === '') {\n _.each(tabs, (tab) => {\n if(locationPathname == tab.path){\n customTabId = tab.id;\n }else if(locationPathname.startsWith(tab.path + \"/\")){\n objectTabId = tab.id;\n }\n data.nav.push({\n \"label\": showIcon ? {\n type: 'tpl',\n tpl: `<span class='fill-slate-500 word-break leading-6 block -ml-px no-underline group flex items-center text-[15px] rounded-md'><svg class=\"mr-1 flex-shrink-0 h-6 w-6\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || 'account'}\"></use></svg>${tab.name}</span>`\n } : tab.name,\n \"to\": tab.path,\n \"target\":tab.target,\n \"id\": tab.id,\n \"activeOn\": \"\\\\${tabId == '\"+ tab.id +\"'}\",\n \"index\": tab.index\n // active: selectedId === tab.id,\n })\n })\n } else {\n var tabGroup = _.find(tab_groups, {\"group_name\": groupName});\n data.nav.push({\n \"label\": groupName,\n \"unfolded\": tabGroup && tabGroup.default_open != false,\n \"isGroup\": true,\n \"children\": _.sortBy(_.map(tabs, (tab) => {\n if(locationPathname == tab.path){\n customTabId = tab.id;\n }else if(locationPathname.startsWith(tab.path + \"/\")){\n objectTabId = tab.id;\n }\n return {\n \"label\": showIcon ? {\n type: 'tpl',\n tpl: `<span class='fill-slate-500 word-break leading-6 block -ml-px no-underline group flex items-center text-[15px] rounded-md'><svg class=\"mr-1 flex-shrink-0 h-6 w-6\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || 'account'}\"></use></svg>${tab.name}</span>`\n } : tab.name,\n \"to\": tab.path,\n \"target\":tab.target,\n \"id\": tab.id,\n \"activeOn\": \"\\\\${tabId == '\"+ tab.id +\"'}\",\n \"index\": tab.index\n // active: selectedId === tab.id,\n }\n }),(tab) => {return tab.index})\n }) \n }\n });\n \n }else{\n _.each(payload.children, (tab)=>{\n if(locationPathname == tab.path){\n customTabId = tab.id;\n }else if(locationPathname.startsWith(tab.path + \"/\")){\n objectTabId = tab.id;\n }\n data.nav.push({\n \"label\": showIcon ? {\n type: 'tpl',\n tpl: `<span class='fill-slate-500 word-break leading-6 block -ml-px no-underline group flex items-center text-[15px] rounded-md'><svg class=\"mr-1 flex-shrink-0 h-6 w-6\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || 'account'}\"></use></svg>${tab.name}</span>`\n } : tab.name,\n \"to\": tab.path,\n \"target\":tab.target,\n \"id\": tab.id,\n \"activeOn\": \"\\\\${tabId == '\"+ tab.id +\"'}\",\n \"index\": tab.index\n // active: selectedId === tab.id,\n });\n })\n }\n //\u4EE5\u4E0B\u4E3Anav\u7B2C\u4E00\u5C42\u6392\u5E8F\uFF0C\u5305\u62EC\u5206\u7EC4\u4E0E\u9009\u9879\u5361\n let groupLength = ((payload.tab_groups && payload.tab_groups.length) || 0) + 1000;\n data.nav = _.sortBy(data.nav, function(tab){\n if(tab.isGroup){\n return _.findIndex(payload.tab_groups, function(group){\n return group.group_name === tab.label;\n });\n }else{\n return groupLength + tab.index;\n }\n })\n payload.data = {\n \"type\":\"service\",\n \"data\":{\n \"tabId\": customTabId || objectTabId,\n \"items\": data.nav\n },\n \"id\": \"appMenuService\",\n \"body\":{\n \"type\": \"nav\",\n className: \"").concat(className, " text-black\",\n \"stacked\": ").concat(stacked, ",\n \"overflow\": ").concat(JSON.stringify(overflow), ",\n \"indentSize\": ").concat(indentSize, ",\n \"source\": \"${items}\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"setValue\",\n \"componentId\": \"appMenuService\",\n \"args\": {\n \"value\": {\n \"tabId\": \"${event.data.item.id}\",\n \"items\": data.nav\n }\n },\n \"expression\":\"${event.data.item.id}\"\n },\n {\n \"actionType\": \"custom\",\n \"script\" : \"window.postMessage(Object.assign({type: 'nav.click', data: event.data.item}), '*');\"\n }\n ]\n },\n \"@tabId.changed\":{\n \"actions\":[\n {\n \"actionType\": \"setValue\",\n \"componentId\": \"appMenuService\",\n \"args\": {\n \"value\": {\n \"tabId\": \"${event.data.tabId}\",\n \"items\": data.nav\n }\n },\n \"expression\":\"${event.data.tabId}\"\n },\n {\n \"actionType\": \"custom\",\n \"script\" : \"window.postMessage(Object.assign({type: 'nav.click', data: event.data.item}), '*');\"\n }\n ]\n }\n }\n }\n };\n } catch (error) {\n console.log(`error`, error)\n }\n // console.log('payload===2==>', payload)\n return payload;\n "),
18973
+ "adaptor": "\n try {\n // console.log('payload====>', payload)\n if(payload.nav_schema){\n payload.data = payload.nav_schema;\n return payload\n }\n\n const data = { nav: [] };\n const stacked = ".concat(stacked, ";\n const showIcon = ").concat(showIcon, ";\n const selectedId = '").concat(selectedId, "';\n const tab_groups = payload.tab_groups;\n const locationPathname = window.location.pathname;\n var customTabId = \"\";\n var objectTabId = \"").concat(data.tabId, "\";\n if(stacked){\n _.each(_.groupBy(payload.children, 'group'), (tabs, groupName) => {\n if (groupName === 'undefined' || groupName === '') {\n _.each(tabs, (tab) => {\n if(locationPathname == tab.path){\n customTabId = tab.id;\n }else if(locationPathname.startsWith(tab.path + \"/\")){\n objectTabId = tab.id;\n }\n data.nav.push({\n \"label\": showIcon ? {\n type: 'tpl',\n tpl: `<span class='fill-slate-500 word-break leading-6 block -ml-px no-underline group flex items-center text-[15px] rounded-md'><svg class=\"mr-1 flex-shrink-0 h-6 w-6\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || 'account'}\"></use></svg>${tab.name}</span>`\n } : tab.name,\n \"to\": tab.path,\n \"target\":tab.target,\n \"id\": tab.id,\n \"activeOn\": \"\\\\${tabId == '\"+ tab.id +\"'}\",\n \"index\": tab.index\n // active: selectedId === tab.id,\n })\n })\n } else {\n var tabGroup = _.find(tab_groups, {\"group_name\": groupName});\n data.nav.push({\n \"label\": groupName,\n \"unfolded\": tabGroup && tabGroup.default_open != false,\n \"isGroup\": true,\n \"children\": _.sortBy(_.map(tabs, (tab) => {\n if(locationPathname == tab.path){\n customTabId = tab.id;\n }else if(locationPathname.startsWith(tab.path + \"/\")){\n objectTabId = tab.id;\n }\n return {\n \"label\": showIcon ? {\n type: 'tpl',\n tpl: `<span class='fill-slate-500 word-break leading-6 block -ml-px no-underline group flex items-center text-[15px] rounded-md'><svg class=\"mr-1 flex-shrink-0 h-6 w-6\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || 'account'}\"></use></svg>${tab.name}</span>`\n } : tab.name,\n \"to\": tab.path,\n \"target\":tab.target,\n \"id\": tab.id,\n \"activeOn\": \"\\\\${tabId == '\"+ tab.id +\"'}\",\n \"index\": tab.index\n // active: selectedId === tab.id,\n }\n }),(tab) => {return tab.index})\n }) \n }\n });\n \n }else{\n _.each(payload.children, (tab)=>{\n if(locationPathname == tab.path){\n customTabId = tab.id;\n }else if(locationPathname.startsWith(tab.path + \"/\")){\n objectTabId = tab.id;\n }\n data.nav.push({\n \"label\": showIcon ? {\n type: 'tpl',\n tpl: `<span class='fill-slate-500 word-break leading-6 block -ml-px no-underline group flex items-center text-[15px] rounded-md'><svg class=\"mr-1 flex-shrink-0 h-6 w-6\"><use xlink:href=\"/assets/icons/standard-sprite/svg/symbols.svg#${tab.icon || 'account'}\"></use></svg>${tab.name}</span>`\n } : tab.name,\n \"to\": tab.path,\n \"target\":tab.target,\n \"id\": tab.id,\n \"activeOn\": \"\\\\${tabId == '\"+ tab.id +\"'}\",\n \"index\": tab.index\n // active: selectedId === tab.id,\n });\n })\n }\n //\u4EE5\u4E0B\u4E3Anav\u7B2C\u4E00\u5C42\u6392\u5E8F\uFF0C\u5305\u62EC\u5206\u7EC4\u4E0E\u9009\u9879\u5361\n // let groupLength = ((payload.tab_groups && payload.tab_groups.length) || 0) + 1000;\n data.nav = _.sortBy(data.nav, function(tab){\n if(tab.isGroup){\n return _.findIndex(payload.tab_groups, function(group){\n return group.group_name === tab.label;\n });\n }else{\n // \u6CA1\u6709\u5206\u7EC4\u7684\u9009\u9879\u5361\u6309index\u6392\u5217\u5728\u6709\u5206\u7EC4\u7684\u9009\u9879\u5361\u524D\u65B9\n return (tab.index || 0) - 1000;\n }\n })\n payload.data = {\n \"type\":\"service\",\n \"data\":{\n \"tabId\": customTabId || objectTabId,\n \"items\": data.nav\n },\n \"id\": \"appMenuService\",\n \"body\":{\n \"type\": \"nav\",\n className: \"").concat(className, " text-black\",\n \"stacked\": ").concat(stacked, ",\n \"overflow\": ").concat(JSON.stringify(overflow), ",\n \"indentSize\": ").concat(indentSize, ",\n \"source\": \"${items}\",\n \"onEvent\": {\n \"click\": {\n \"actions\": [\n {\n \"actionType\": \"setValue\",\n \"componentId\": \"appMenuService\",\n \"args\": {\n \"value\": {\n \"tabId\": \"${event.data.item.id}\",\n \"items\": data.nav\n }\n },\n \"expression\":\"${event.data.item.id}\"\n },\n {\n \"actionType\": \"custom\",\n \"script\" : \"window.postMessage(Object.assign({type: 'nav.click', data: event.data.item}), '*');\"\n }\n ]\n },\n \"@tabId.changed\":{\n \"actions\":[\n {\n \"actionType\": \"setValue\",\n \"componentId\": \"appMenuService\",\n \"args\": {\n \"value\": {\n \"tabId\": \"${event.data.tabId}\",\n \"items\": data.nav\n }\n },\n \"expression\":\"${event.data.tabId}\"\n },\n {\n \"actionType\": \"custom\",\n \"script\" : \"window.postMessage(Object.assign({type: 'nav.click', data: event.data.item}), '*');\"\n }\n ]\n }\n }\n }\n };\n } catch (error) {\n console.log(`error`, error)\n }\n // console.log('payload===2==>', payload)\n return payload;\n "),
18946
18974
  "headers": {
18947
18975
  "Authorization": "Bearer ${context.tenantId},${context.authToken}"
18948
18976
  }