@ibiz-template/runtime 0.7.41-alpha.34 → 0.7.41-alpha.35

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.
Files changed (44) hide show
  1. package/dist/index.esm.js +211 -29
  2. package/dist/index.system.min.js +1 -1
  3. package/out/config/global-config.d.ts.map +1 -1
  4. package/out/config/global-config.js +2 -0
  5. package/out/controller/control/dashboard/dashboard.controller.d.ts.map +1 -1
  6. package/out/controller/control/dashboard/dashboard.controller.js +15 -2
  7. package/out/controller/control/exp-bar/tree-exp-bar.controller.d.ts.map +1 -1
  8. package/out/controller/control/exp-bar/tree-exp-bar.controller.js +9 -1
  9. package/out/controller/control/form/edit-form/edit-form.controller.d.ts.map +1 -1
  10. package/out/controller/control/form/form/form.controller.d.ts +19 -0
  11. package/out/controller/control/form/form/form.controller.d.ts.map +1 -1
  12. package/out/controller/control/form/form/form.controller.js +34 -2
  13. package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts +13 -1
  14. package/out/controller/control/form/form-detail/form-item/form-item.controller.d.ts.map +1 -1
  15. package/out/controller/control/form/form-detail/form-item/form-item.controller.js +36 -1
  16. package/out/controller/control/tab-exp-panel/tab-exp-panel.controller.d.ts +13 -0
  17. package/out/controller/control/tab-exp-panel/tab-exp-panel.controller.d.ts.map +1 -1
  18. package/out/controller/control/tab-exp-panel/tab-exp-panel.controller.js +29 -0
  19. package/out/controller/control/tree/tree.controller.d.ts +7 -0
  20. package/out/controller/control/tree/tree.controller.d.ts.map +1 -1
  21. package/out/controller/control/tree/tree.controller.js +9 -0
  22. package/out/controller/notification/internal-message.controller.d.ts.map +1 -1
  23. package/out/controller/notification/internal-message.controller.js +22 -13
  24. package/out/interface/api/common/global-config/i-api-global-form-config.d.ts +9 -0
  25. package/out/interface/api/common/global-config/i-api-global-form-config.d.ts.map +1 -1
  26. package/out/interface/api/common/global-config/i-api-global-mob-config.d.ts +8 -0
  27. package/out/interface/api/common/global-config/i-api-global-mob-config.d.ts.map +1 -1
  28. package/out/interface/api/controller/control/i-api-edit-form.controller.d.ts +2 -0
  29. package/out/interface/api/controller/control/i-api-edit-form.controller.d.ts.map +1 -1
  30. package/out/interface/api/controller/control/i-api-search-form.controller.d.ts +2 -0
  31. package/out/interface/api/controller/control/i-api-search-form.controller.d.ts.map +1 -1
  32. package/out/interface/api/controller/control/i-api-tree.controller.d.ts +1 -0
  33. package/out/interface/api/controller/control/i-api-tree.controller.d.ts.map +1 -1
  34. package/out/interface/api/state/control/i-api-tab-exp-panel.state.d.ts +7 -1
  35. package/out/interface/api/state/control/i-api-tab-exp-panel.state.d.ts.map +1 -1
  36. package/out/interface/api/util/i-api-modal-util.d.ts +7 -0
  37. package/out/interface/api/util/i-api-modal-util.d.ts.map +1 -1
  38. package/out/service/service/internal-message/internal-message.service.d.ts.map +1 -1
  39. package/out/service/service/internal-message/internal-message.service.js +13 -2
  40. package/out/ui-logic/ui-logic-node/msg-box-node/msg-box-node.d.ts.map +1 -1
  41. package/out/ui-logic/ui-logic-node/msg-box-node/msg-box-node.js +21 -0
  42. package/out/utils/open-redirect-view/open-redirect-view.d.ts.map +1 -1
  43. package/out/utils/open-redirect-view/open-redirect-view.js +13 -7
  44. package/package.json +3 -3
package/dist/index.esm.js CHANGED
@@ -19396,7 +19396,8 @@ var GlobalConfig = class {
19396
19396
  showTipsIcon: true,
19397
19397
  validateMode: "default",
19398
19398
  srfCachePos: false,
19399
- srfCacheKeyTempl: ""
19399
+ srfCacheKeyTempl: "",
19400
+ enableDynaFormJsonSchema: false
19400
19401
  };
19401
19402
  // 全局看板配置
19402
19403
  this.kanban = {
@@ -19477,7 +19478,8 @@ var GlobalConfig = class {
19477
19478
  mobGetSignMethod: "post",
19478
19479
  mobWeChatDebug: false,
19479
19480
  showUploadLoading: false,
19480
- mobShowBackTop: false
19481
+ mobShowBackTop: false,
19482
+ mobEnableStoredQuery: false
19481
19483
  };
19482
19484
  /**
19483
19485
  * @description 图片压缩配置
@@ -21364,17 +21366,22 @@ async function getLocalOpenWFRedirectView(context, linkUrl, opts = {}) {
21364
21366
  );
21365
21367
  }
21366
21368
  const app = ibiz.hub.getApp(context.srfappid);
21367
- const deCodeName = app.deName2DeCodeName.get(deName.toUpperCase());
21369
+ let deCodeName = app.deName2DeCodeName.get(
21370
+ deName.toUpperCase()
21371
+ );
21368
21372
  if (!deCodeName) {
21369
- throw new RuntimeError2(
21370
- ibiz.i18n.t("runtime.utils.openRedirectView.noFoundSpecifiedEntity", {
21371
- deName
21372
- })
21373
- );
21373
+ deCodeName = deName.toLowerCase();
21374
+ }
21375
+ params[deCodeName] = params[deName.toLowerCase()];
21376
+ let deRdViewCodeName = "";
21377
+ let deRdView;
21378
+ try {
21379
+ deRdViewCodeName = "".concat(deCodeName).concat(ibiz.env.isMob ? "Mob" : "", "RedirectView");
21380
+ deRdView = await ibiz.hub.getAppView(deRdViewCodeName);
21381
+ } catch (error) {
21382
+ deRdViewCodeName = "".concat(deCodeName).concat(ibiz.env.isMob ? "_mob" : "", "_redirect_view");
21383
+ deRdView = await ibiz.hub.getAppView(deRdViewCodeName);
21374
21384
  }
21375
- params[deCodeName.toLowerCase()] = params[deName.toLowerCase()];
21376
- const deRdViewCodeName = "".concat(deCodeName).concat(ibiz.env.isMob ? "Mob" : "", "RedirectView");
21377
- const deRdView = await ibiz.hub.getAppView(deRdViewCodeName);
21378
21385
  delete params.srfdename;
21379
21386
  if (params.srfwf !== "undo") {
21380
21387
  const tags = params.processDefinitionKey.split("-");
@@ -33003,7 +33010,8 @@ var InternalMessageService = class {
33003
33010
  * @return {*} {Promise<number>}
33004
33011
  */
33005
33012
  async getUnreadNum() {
33006
- const res = await ibiz.net.post("".concat(this.baseUrl, "/fetch_cur_receiver"), {
33013
+ var _a3;
33014
+ const fetchParams = {
33007
33015
  page: 0,
33008
33016
  size: 1,
33009
33017
  sort: "timestamp,desc",
@@ -33022,7 +33030,19 @@ var InternalMessageService = class {
33022
33030
  ]
33023
33031
  }
33024
33032
  ]
33025
- });
33033
+ };
33034
+ if (!ibiz.env.isPortalApp) {
33035
+ fetchParams.searchconds[0].searchconds.push({
33036
+ condop: "EQ",
33037
+ condtype: "DEFIELD",
33038
+ fieldname: "system_tag",
33039
+ value: (_a3 = ibiz.appData) == null ? void 0 : _a3.context.srfdcsystemid
33040
+ });
33041
+ }
33042
+ const res = await ibiz.net.post(
33043
+ "".concat(this.baseUrl, "/fetch_cur_receiver"),
33044
+ fetchParams
33045
+ );
33026
33046
  if (res.headers["x-total"]) {
33027
33047
  return Number(res.headers["x-total"]);
33028
33048
  }
@@ -41175,6 +41195,21 @@ var MsgBoxNode = class extends UILogicNode {
41175
41195
  modalParams.showCancelButton = true;
41176
41196
  resultTags = ["yes", "no"];
41177
41197
  break;
41198
+ case "YESNOCANCEL":
41199
+ modalParams.confirmButtonText = ibiz.i18n.t("runtime.uiLogic.yes");
41200
+ modalParams.cancelButtonText = ibiz.i18n.t("runtime.uiLogic.no");
41201
+ modalParams.showConfirmButton = true;
41202
+ modalParams.showCancelButton = true;
41203
+ if (ibiz.env.isMob) {
41204
+ modalParams.options = {
41205
+ closeOnClickOverlay: true
41206
+ };
41207
+ } else {
41208
+ modalParams.options = {
41209
+ distinguishCancelAndClose: true
41210
+ };
41211
+ }
41212
+ break;
41178
41213
  case "OK":
41179
41214
  modalParams.confirmButtonText = ibiz.i18n.t(
41180
41215
  "runtime.uiLogic.determine"
@@ -41207,6 +41242,11 @@ var MsgBoxNode = class extends UILogicNode {
41207
41242
  message
41208
41243
  })
41209
41244
  );
41245
+ if (buttonsType === "YESNOCANCEL") {
41246
+ const result2 = await ibiz.modal.extendConfirm(modalParams);
41247
+ ctx.setLastReturn(result2);
41248
+ return;
41249
+ }
41210
41250
  const result = await ibiz.modal.confirm(modalParams);
41211
41251
  ctx.setLastReturn(resultTags[result ? 0 : 1]);
41212
41252
  }
@@ -47285,6 +47325,7 @@ var DashboardController = class extends ControlController {
47285
47325
  * @return {*} {(Promise<IDBPortletPart | undefined>)}
47286
47326
  */
47287
47327
  async loadDynaPortletById(id) {
47328
+ var _a3;
47288
47329
  const app = ibiz.hub.getApp(this.model.appId);
47289
47330
  const tempContext = clone31(this.context);
47290
47331
  Object.assign(tempContext, { psappportlet: id });
@@ -47297,10 +47338,22 @@ var DashboardController = class extends ControlController {
47297
47338
  this.dynaPortletMap.set(id, res.data);
47298
47339
  if (res && res.data && res.data.controlmodel) {
47299
47340
  const controlModel = JSON.parse(res.data.controlmodel);
47300
- return await ibiz.hub.translationModelToDsl(
47341
+ const result = await ibiz.hub.translationModelToDsl(
47301
47342
  controlModel,
47302
47343
  "CTRL"
47303
47344
  );
47345
+ const appId2 = res.data.pssysappid;
47346
+ if (appId2) {
47347
+ const mainApp = ibiz.hub.getApp(ibiz.env.appId);
47348
+ const targetApp = (_a3 = mainApp.model.subAppRefs) == null ? void 0 : _a3.find((subAppRef) => {
47349
+ var _a4;
47350
+ return (_a4 = subAppRef.id) == null ? void 0 : _a4.endsWith(appId2);
47351
+ });
47352
+ if (targetApp && targetApp.id) {
47353
+ deepFillSubAppId(result, targetApp.id);
47354
+ }
47355
+ }
47356
+ return result;
47304
47357
  }
47305
47358
  }
47306
47359
  /**
@@ -52018,12 +52071,20 @@ var TreeExpBarController = class extends ExpBarControlController {
52018
52071
  const result = this.prepareParams(nodeModel, deData, context, params);
52019
52072
  result.context.currentSrfNav = nodeId;
52020
52073
  this.state.srfnav = nodeId;
52021
- return {
52074
+ const navViewMsg = {
52022
52075
  key: nodeId,
52023
52076
  viewId: nodeModel.navAppViewId,
52024
52077
  isCache: this.isCache,
52025
52078
  ...result
52026
52079
  };
52080
+ if (ibiz.env.isMob) {
52081
+ Object.assign(navViewMsg, {
52082
+ modalOptions: {
52083
+ replace: true
52084
+ }
52085
+ });
52086
+ }
52087
+ return navViewMsg;
52027
52088
  }
52028
52089
  navByFirstItem() {
52029
52090
  const data = this.xDataController.state.items.find((node) => {
@@ -52373,6 +52434,18 @@ var FormController = class extends ControlController {
52373
52434
  return ibiz.config.form.srfCacheKeyTempl;
52374
52435
  return "".concat(this.context.srfuserid, "_").concat(this.view.model.codeName, "_").concat(this.model.codeName);
52375
52436
  }
52437
+ /**
52438
+ * @description 是否启用jsonschema
52439
+ * @readonly
52440
+ * @type {boolean}
52441
+ * @memberof FormController
52442
+ */
52443
+ get enableJsonSchema() {
52444
+ if (this.controlParams.enablejsonschema) {
52445
+ return this.controlParams.enablejsonschema === "true";
52446
+ }
52447
+ return ibiz.config.form.enableDynaFormJsonSchema;
52448
+ }
52376
52449
  initState() {
52377
52450
  var _a3, _b2;
52378
52451
  super.initState();
@@ -52476,6 +52549,7 @@ var FormController = class extends ControlController {
52476
52549
  * @returns {*} {Promise<void>}
52477
52550
  */
52478
52551
  async onCreated() {
52552
+ await this.initByEntitySchema();
52479
52553
  await super.onCreated();
52480
52554
  await this.initCounter();
52481
52555
  await this.initDetailControllers();
@@ -52864,6 +52938,35 @@ var FormController = class extends ControlController {
52864
52938
  getFormDetail(type, id) {
52865
52939
  return this.details[id];
52866
52940
  }
52941
+ /**
52942
+ * @description 初始化jsonschema
52943
+ * @returns {*} {Promise<void>}
52944
+ * @memberof FormController
52945
+ */
52946
+ async initByEntitySchema() {
52947
+ if (!this.enableJsonSchema) {
52948
+ return;
52949
+ }
52950
+ const jsonSchemaParams = JSON.parse(
52951
+ this.controlParams.jsonschemaparams || "{}"
52952
+ );
52953
+ const jsonSchemaQuery = convertNavData(
52954
+ jsonSchemaParams,
52955
+ this.params,
52956
+ this.context
52957
+ );
52958
+ const tempParams = clone37(jsonSchemaQuery);
52959
+ Object.assign(tempParams, this.params);
52960
+ const json = await getEntitySchema(
52961
+ this.model.appDataEntityId,
52962
+ this.context,
52963
+ tempParams
52964
+ );
52965
+ if (!json) {
52966
+ return;
52967
+ }
52968
+ this.jsonSchemaProperties = json.properties;
52969
+ }
52867
52970
  };
52868
52971
 
52869
52972
  // src/controller/control/form/search-form/search-form.service.ts
@@ -54516,6 +54619,7 @@ var FormGroupPanelController = class extends FormContainerController {
54516
54619
  // src/controller/control/form/form-detail/form-item/form-item.controller.ts
54517
54620
  import Schema from "async-validator";
54518
54621
  import { isNilOrEmpty as isNilOrEmpty7 } from "qx-util";
54622
+ import { isObject as isObject3 } from "lodash-es";
54519
54623
 
54520
54624
  // src/controller/control/form/form-detail/form-item/form-item.state.ts
54521
54625
  var FormItemState = class extends FormDetailState {
@@ -54721,13 +54825,47 @@ var FormItemController = class extends FormDetailController {
54721
54825
  this.editorProvider = await getEditorProvider(this.model.editor);
54722
54826
  if (this.editorProvider) {
54723
54827
  this.editor = await this.editorProvider.createController(
54724
- this.model.editor,
54828
+ this.createEditorModel(),
54725
54829
  this
54726
54830
  );
54727
54831
  await this.initRules();
54728
54832
  }
54729
54833
  }
54730
54834
  }
54835
+ /**
54836
+ * @description 获取 enumOptions
54837
+ * @returns {*} {(IParams | undefined)}
54838
+ * @memberof FormItemController
54839
+ */
54840
+ getEnumOptions() {
54841
+ var _a3;
54842
+ const { jsonSchemaProperties } = this.form;
54843
+ const deField = this.model.fieldName || this.model.appDEFieldId;
54844
+ if (!deField)
54845
+ return;
54846
+ return (_a3 = jsonSchemaProperties == null ? void 0 : jsonSchemaProperties[deField]) == null ? void 0 : _a3.enumOptions;
54847
+ }
54848
+ /**
54849
+ * @description 创建编辑器模型
54850
+ * @returns {*} {IEditor}
54851
+ * @memberof FormItemController
54852
+ */
54853
+ createEditorModel() {
54854
+ const editorModel = { ...this.model.editor };
54855
+ const enumOptions = this.getEnumOptions();
54856
+ if (isObject3(enumOptions)) {
54857
+ const editorParams = { ...editorModel.editorParams };
54858
+ Object.assign(editorParams, {
54859
+ enumOptions: Object.keys(enumOptions).map((key) => ({
54860
+ id: key,
54861
+ value: key,
54862
+ text: enumOptions[key]
54863
+ }))
54864
+ });
54865
+ editorModel.editorParams = editorParams;
54866
+ }
54867
+ return editorModel;
54868
+ }
54731
54869
  /**
54732
54870
  * 初始化tips
54733
54871
  *
@@ -62599,6 +62737,7 @@ var TabExpPanelController = class extends ControlController {
62599
62737
  this.state.tabPages = [];
62600
62738
  this.state.activeName = "";
62601
62739
  this.state.expViewParams = {};
62740
+ this.state.counterData = {};
62602
62741
  }
62603
62742
  /**
62604
62743
  * 创建完成
@@ -62608,8 +62747,10 @@ var TabExpPanelController = class extends ControlController {
62608
62747
  * @memberof TabExpPanelController
62609
62748
  */
62610
62749
  async onCreated() {
62750
+ var _a3;
62611
62751
  await super.onCreated();
62612
62752
  await this.initCounter();
62753
+ (_a3 = this.counter) == null ? void 0 : _a3.onChange(this.onCounterChange.bind(this));
62613
62754
  this.layoutPanel = this.view.layoutPanel;
62614
62755
  this.initTabPages();
62615
62756
  this.initIconCaption();
@@ -62781,6 +62922,10 @@ var TabExpPanelController = class extends ControlController {
62781
62922
  refresh() {
62782
62923
  const navViewMsg = this.getNavViewMsg(this.activeTabViewPanelModel);
62783
62924
  navViewMsg.key += createUUID18();
62925
+ if (ibiz.env.isMob) {
62926
+ navViewMsg.isCache = false;
62927
+ navViewMsg.isRoutePushed = !!(this.routeDepth !== void 0 && hasSubRoute(this.routeDepth));
62928
+ }
62784
62929
  this.evt.emit("onNavViewChange", { navViewMsg });
62785
62930
  }
62786
62931
  /**
@@ -62802,6 +62947,14 @@ var TabExpPanelController = class extends ControlController {
62802
62947
  );
62803
62948
  }
62804
62949
  }
62950
+ /**
62951
+ * @description 计数器对象数据改变
62952
+ * @param {IData} data
62953
+ * @memberof TabExpPanelController
62954
+ */
62955
+ onCounterChange(data) {
62956
+ this.state.counterData = data;
62957
+ }
62805
62958
  /**
62806
62959
  * @description 设置激活项
62807
62960
  * @param {string} name
@@ -62811,6 +62964,18 @@ var TabExpPanelController = class extends ControlController {
62811
62964
  this.state.activeName = name2;
62812
62965
  this.handleTabChange();
62813
62966
  }
62967
+ /**
62968
+ * @description 生命周期-销毁完成
62969
+ * @protected
62970
+ * @returns {*} {Promise<void>}
62971
+ * @memberof TabExpPanelController
62972
+ */
62973
+ async onDestroyed() {
62974
+ await super.onDestroyed();
62975
+ if (this.counter) {
62976
+ this.counter.destroy();
62977
+ }
62978
+ }
62814
62979
  };
62815
62980
 
62816
62981
  // src/controller/control/tree/tree.controller.ts
@@ -63613,6 +63778,15 @@ var TreeController = class extends MDControlController {
63613
63778
  }
63614
63779
  return ibiz.config.tree.enableClickNav;
63615
63780
  }
63781
+ /**
63782
+ * @description 面包屑显示模式
63783
+ * @readonly
63784
+ * @type {('DEFAULT' | 'HEADERSTYLE')}
63785
+ * @memberof TreeController
63786
+ */
63787
+ get crumbShowMode() {
63788
+ return this.controlParams.crumbshowmode || "DEFAULT";
63789
+ }
63616
63790
  initState() {
63617
63791
  super.initState();
63618
63792
  this.state.defaultExpandedKeys = [];
@@ -82687,6 +82861,7 @@ var InternalMessageController = class {
82687
82861
  this.load();
82688
82862
  }
82689
82863
  async fetch(loadMore = false) {
82864
+ var _a3;
82690
82865
  if (loadMore === false) {
82691
82866
  this.page = 0;
82692
82867
  } else {
@@ -82695,24 +82870,31 @@ var InternalMessageController = class {
82695
82870
  const fetchParams = {
82696
82871
  page: this.page,
82697
82872
  size: this.size,
82698
- sort: "timestamp,desc"
82699
- };
82700
- if (this.unreadOnly) {
82701
- fetchParams.searchconds = [
82873
+ sort: "timestamp,desc",
82874
+ searchconds: [
82702
82875
  {
82703
82876
  condtype: "GROUP",
82704
82877
  condop: "AND",
82705
82878
  bnotmode: false,
82706
- searchconds: [
82707
- {
82708
- condop: "EQ",
82709
- condtype: "DEFIELD",
82710
- fieldname: "status",
82711
- value: "RECEIVED"
82712
- }
82713
- ]
82879
+ searchconds: []
82714
82880
  }
82715
- ];
82881
+ ]
82882
+ };
82883
+ if (!ibiz.env.isPortalApp) {
82884
+ fetchParams.searchconds[0].searchconds.push({
82885
+ condop: "EQ",
82886
+ condtype: "DEFIELD",
82887
+ fieldname: "system_id",
82888
+ value: (_a3 = ibiz.appData) == null ? void 0 : _a3.context.srfsystemid
82889
+ });
82890
+ }
82891
+ if (this.unreadOnly) {
82892
+ fetchParams.searchconds[0].searchconds.push({
82893
+ condop: "EQ",
82894
+ condtype: "DEFIELD",
82895
+ fieldname: "status",
82896
+ value: "RECEIVED"
82897
+ });
82716
82898
  }
82717
82899
  const res = await this.service.fetch(fetchParams);
82718
82900
  this.total = res.total;