@ibiz-template/vue3-components 0.6.8 → 0.6.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.
Files changed (137) hide show
  1. package/dist/index-Udkmmoqt.js +4 -0
  2. package/dist/index.min.css +1 -1
  3. package/dist/index.system.min.js +1 -1
  4. package/dist/wang-editor-Zc_Y0dGt.js +1 -0
  5. package/dist/{xlsx-util-Ivrrn3GI.js → xlsx-util-2FgdNqpT.js} +1 -1
  6. package/es/control/calendar/calendar.css +1 -1
  7. package/es/control/drbar/drbar.controller.d.ts +14 -0
  8. package/es/control/drbar/drbar.controller.mjs +57 -4
  9. package/es/control/drbar/drbar.css +1 -1
  10. package/es/control/drbar/drbar.d.ts +1 -0
  11. package/es/control/drbar/drbar.mjs +18 -2
  12. package/es/control/drbar/index.d.ts +1 -0
  13. package/es/control/exp-bar/calendar-exp-bar/calendar-exp-bar.d.ts +1 -1
  14. package/es/control/exp-bar/calendar-exp-bar/calendar-exp-bar.mjs +3 -3
  15. package/es/control/exp-bar/calendar-exp-bar/index.d.ts +1 -1
  16. package/es/control/exp-bar/chart-exp-bar/chart-exp-bar.d.ts +1 -1
  17. package/es/control/exp-bar/chart-exp-bar/chart-exp-bar.mjs +3 -3
  18. package/es/control/exp-bar/chart-exp-bar/index.d.ts +1 -1
  19. package/es/control/exp-bar/data-view-exp-bar/data-view-view-exp-bar.d.ts +1 -1
  20. package/es/control/exp-bar/data-view-exp-bar/data-view-view-exp-bar.mjs +3 -3
  21. package/es/control/exp-bar/data-view-exp-bar/index.d.ts +1 -1
  22. package/es/control/exp-bar/grid-exp-bar/grid-exp-bar.d.ts +1 -1
  23. package/es/control/exp-bar/grid-exp-bar/grid-exp-bar.mjs +3 -3
  24. package/es/control/exp-bar/grid-exp-bar/index.d.ts +1 -1
  25. package/es/control/exp-bar/list-exp-bar/index.d.ts +1 -1
  26. package/es/control/exp-bar/list-exp-bar/list-exp-bar.d.ts +1 -1
  27. package/es/control/exp-bar/list-exp-bar/list-exp-bar.mjs +3 -3
  28. package/es/control/exp-bar/render-util.d.ts +2 -2
  29. package/es/control/exp-bar/render-util.mjs +16 -3
  30. package/es/control/exp-bar/tree-exp-bar/index.d.ts +1 -1
  31. package/es/control/exp-bar/tree-exp-bar/tree-exp-bar.d.ts +1 -1
  32. package/es/control/exp-bar/tree-exp-bar/tree-exp-bar.mjs +3 -3
  33. package/es/control/form/form/form.mjs +16 -2
  34. package/es/control/form/form-detail/form-item/form-item.mjs +2 -1
  35. package/es/control/search-bar/filter-mode-select/filter-mode-select.d.ts +12 -0
  36. package/es/control/search-bar/filter-mode-select/filter-mode-select.mjs +6 -0
  37. package/es/control/search-bar/filter-tree/filter-tree.css +1 -1
  38. package/es/control/search-bar/filter-tree/filter-tree.d.ts +3 -3
  39. package/es/control/search-bar/filter-tree/filter-tree.mjs +90 -9
  40. package/es/control/toolbar/toolbar.mjs +12 -2
  41. package/es/editor/array/ibiz-array/ibiz-array.mjs +5 -5
  42. package/es/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.mjs +3 -3
  43. package/es/editor/carousel/ibiz-carousel/ibiz-carousel.mjs +3 -3
  44. package/es/editor/cascader/ibiz-cascader/ibiz-cascader.mjs +3 -3
  45. package/es/editor/check-box/ibiz-checkbox/ibiz-checkbox.mjs +3 -3
  46. package/es/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.mjs +3 -3
  47. package/es/editor/color-picker/ibiz-color-picker/ibiz-color-picker.mjs +3 -3
  48. package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.css +1 -1
  49. package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.mjs +3 -3
  50. package/es/editor/data-picker/ibiz-picker/ibiz-picker.css +1 -1
  51. package/es/editor/data-picker/ibiz-picker/ibiz-picker.mjs +5 -5
  52. package/es/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.css +1 -1
  53. package/es/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.mjs +3 -3
  54. package/es/editor/date-picker/ibiz-date-picker/ibiz-date-picker.css +1 -1
  55. package/es/editor/date-picker/ibiz-date-picker/ibiz-date-picker.mjs +4 -4
  56. package/es/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.css +1 -1
  57. package/es/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.mjs +5 -5
  58. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs +4 -4
  59. package/es/editor/html/wang-editor/wang-editor.css +1 -1
  60. package/es/editor/html/wang-editor/wang-editor.mjs +8 -2
  61. package/es/editor/list-box/ibiz-list-box/ibiz-list-box.mjs +5 -5
  62. package/es/editor/number-range/ibiz-number-range-picker/ibiz-number-range-picker.mjs +5 -5
  63. package/es/editor/radio-button-list/ibiz-radio/ibiz-radio.mjs +3 -3
  64. package/es/editor/rate/ibiz-rate/ibiz-rate.mjs +3 -3
  65. package/es/editor/slider/ibiz-slider/ibiz-slider.mjs +3 -3
  66. package/es/editor/stepper/ibiz-stepper/ibiz-stepper.mjs +3 -3
  67. package/es/editor/switch/ibiz-switch/ibiz-switch.mjs +3 -3
  68. package/es/editor/text-box/ibiz-input-number/ibiz-input-number.mjs +3 -3
  69. package/es/editor/text-box/input/input.mjs +3 -3
  70. package/es/editor/upload/ibiz-file-upload/ibiz-file-upload.mjs +3 -3
  71. package/es/editor/upload/ibiz-image-preview/ibiz-image-preview.mjs +3 -3
  72. package/es/editor/upload/ibiz-image-upload/ibiz-image-upload.mjs +5 -5
  73. package/es/editor/user/ibiz-searchcond-edit/ibiz-searchcond-edit.mjs +3 -3
  74. package/es/view-engine/exp-view.engine.d.ts +2 -1
  75. package/es/view-engine/exp-view.engine.mjs +10 -0
  76. package/es/view-engine/index.mjs +5 -0
  77. package/es/view-engine/tab-search-view.engine.d.ts +61 -0
  78. package/es/view-engine/tab-search-view.engine.mjs +105 -0
  79. package/es/web-app/guard/auth-guard/auth-guard.d.ts +0 -7
  80. package/es/web-app/guard/auth-guard/auth-guard.mjs +24 -34
  81. package/lib/control/calendar/calendar.css +1 -1
  82. package/lib/control/drbar/drbar.cjs +18 -2
  83. package/lib/control/drbar/drbar.controller.cjs +57 -4
  84. package/lib/control/drbar/drbar.css +1 -1
  85. package/lib/control/exp-bar/calendar-exp-bar/calendar-exp-bar.cjs +3 -3
  86. package/lib/control/exp-bar/chart-exp-bar/chart-exp-bar.cjs +3 -3
  87. package/lib/control/exp-bar/data-view-exp-bar/data-view-view-exp-bar.cjs +3 -3
  88. package/lib/control/exp-bar/grid-exp-bar/grid-exp-bar.cjs +3 -3
  89. package/lib/control/exp-bar/list-exp-bar/list-exp-bar.cjs +3 -3
  90. package/lib/control/exp-bar/render-util.cjs +15 -2
  91. package/lib/control/exp-bar/tree-exp-bar/tree-exp-bar.cjs +3 -3
  92. package/lib/control/form/form/form.cjs +15 -1
  93. package/lib/control/form/form-detail/form-item/form-item.cjs +2 -1
  94. package/lib/control/search-bar/filter-mode-select/filter-mode-select.cjs +6 -0
  95. package/lib/control/search-bar/filter-tree/filter-tree.cjs +90 -9
  96. package/lib/control/search-bar/filter-tree/filter-tree.css +1 -1
  97. package/lib/control/toolbar/toolbar.cjs +12 -2
  98. package/lib/editor/array/ibiz-array/ibiz-array.cjs +4 -4
  99. package/lib/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.cjs +2 -2
  100. package/lib/editor/carousel/ibiz-carousel/ibiz-carousel.cjs +2 -2
  101. package/lib/editor/cascader/ibiz-cascader/ibiz-cascader.cjs +2 -2
  102. package/lib/editor/check-box/ibiz-checkbox/ibiz-checkbox.cjs +2 -2
  103. package/lib/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.cjs +2 -2
  104. package/lib/editor/color-picker/ibiz-color-picker/ibiz-color-picker.cjs +2 -2
  105. package/lib/editor/data-picker/ibiz-mpicker/ibiz-mpicker.cjs +2 -2
  106. package/lib/editor/data-picker/ibiz-mpicker/ibiz-mpicker.css +1 -1
  107. package/lib/editor/data-picker/ibiz-picker/ibiz-picker.cjs +4 -4
  108. package/lib/editor/data-picker/ibiz-picker/ibiz-picker.css +1 -1
  109. package/lib/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.cjs +2 -2
  110. package/lib/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.css +1 -1
  111. package/lib/editor/date-picker/ibiz-date-picker/ibiz-date-picker.cjs +3 -3
  112. package/lib/editor/date-picker/ibiz-date-picker/ibiz-date-picker.css +1 -1
  113. package/lib/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.cjs +4 -4
  114. package/lib/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.css +1 -1
  115. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.cjs +3 -3
  116. package/lib/editor/html/wang-editor/wang-editor.cjs +8 -2
  117. package/lib/editor/html/wang-editor/wang-editor.css +1 -1
  118. package/lib/editor/list-box/ibiz-list-box/ibiz-list-box.cjs +4 -4
  119. package/lib/editor/number-range/ibiz-number-range-picker/ibiz-number-range-picker.cjs +4 -4
  120. package/lib/editor/radio-button-list/ibiz-radio/ibiz-radio.cjs +2 -2
  121. package/lib/editor/rate/ibiz-rate/ibiz-rate.cjs +2 -2
  122. package/lib/editor/slider/ibiz-slider/ibiz-slider.cjs +2 -2
  123. package/lib/editor/stepper/ibiz-stepper/ibiz-stepper.cjs +2 -2
  124. package/lib/editor/switch/ibiz-switch/ibiz-switch.cjs +2 -2
  125. package/lib/editor/text-box/ibiz-input-number/ibiz-input-number.cjs +2 -2
  126. package/lib/editor/text-box/input/input.cjs +2 -2
  127. package/lib/editor/upload/ibiz-file-upload/ibiz-file-upload.cjs +2 -2
  128. package/lib/editor/upload/ibiz-image-preview/ibiz-image-preview.cjs +2 -2
  129. package/lib/editor/upload/ibiz-image-upload/ibiz-image-upload.cjs +4 -4
  130. package/lib/editor/user/ibiz-searchcond-edit/ibiz-searchcond-edit.cjs +2 -2
  131. package/lib/view-engine/exp-view.engine.cjs +10 -0
  132. package/lib/view-engine/index.cjs +5 -0
  133. package/lib/view-engine/tab-search-view.engine.cjs +107 -0
  134. package/lib/web-app/guard/auth-guard/auth-guard.cjs +22 -32
  135. package/package.json +8 -8
  136. package/dist/index-I0JaiEjL.js +0 -4
  137. package/dist/wang-editor-R2mUYWuB.js +0 -1
@@ -0,0 +1,105 @@
1
+ import { SysUIActionTag } from '@ibiz-template/runtime';
2
+ import { TabExpViewEngine } from './tab-exp-view.engine.mjs';
3
+
4
+ "use strict";
5
+ class TabSearchViewEngine extends TabExpViewEngine {
6
+ /**
7
+ * 搜索表单控制器
8
+ * @author lxm
9
+ * @date 2023-05-22 01:56:25
10
+ * @readonly
11
+ */
12
+ get searchForm() {
13
+ return this.view.getController("searchform");
14
+ }
15
+ /**
16
+ * 搜索栏控制器
17
+ * @author lxm
18
+ * @date 2023-05-22 01:56:25
19
+ * @readonly
20
+ */
21
+ get searchBar() {
22
+ return this.view.getController("searchbar");
23
+ }
24
+ /**
25
+ * 分页导航面板控制器
26
+ * @author lxm
27
+ * @date 2023-05-22 01:56:25
28
+ * @readonly
29
+ */
30
+ get tabExpPanel() {
31
+ return this.view.getController("tabexppanel");
32
+ }
33
+ async onCreated() {
34
+ await super.onCreated();
35
+ const { childNames } = this.view;
36
+ childNames.push("searchform", "searchbar");
37
+ }
38
+ async onMounted() {
39
+ await super.onMounted();
40
+ const controller = this.viewLayoutPanel.panelItems.view_searchform;
41
+ if (controller) {
42
+ const formExists = !!this.searchForm;
43
+ controller.state.keepAlive = formExists;
44
+ controller.state.visible = formExists;
45
+ }
46
+ const searchbarC = this.viewLayoutPanel.panelItems.view_searchbar;
47
+ if (searchbarC) {
48
+ const visible = this.searchBar && !!(this.searchBar.model.enableQuickSearch || this.searchBar.model.enableGroup || this.searchBar.model.enableFilter === true);
49
+ searchbarC.state.visible = visible;
50
+ }
51
+ if (this.searchForm) {
52
+ this.searchForm.evt.on("onSearch", () => {
53
+ this.calcViewParams();
54
+ });
55
+ }
56
+ if (this.searchBar) {
57
+ this.searchBar.evt.on("onSearch", () => {
58
+ this.calcViewParams();
59
+ });
60
+ }
61
+ }
62
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types
63
+ async call(key, args) {
64
+ if (key === SysUIActionTag.SEARCH) {
65
+ await this.searchForm.search();
66
+ return null;
67
+ }
68
+ if (key === SysUIActionTag.RESET) {
69
+ await this.searchForm.reset();
70
+ return null;
71
+ }
72
+ if (key === SysUIActionTag.REFRESH) {
73
+ await this.calcViewParams();
74
+ return null;
75
+ }
76
+ return super.call(key, args);
77
+ }
78
+ /**
79
+ * 获取搜索相关的查询参数
80
+ * @author lxm
81
+ * @date 2023-05-22 03:26:04
82
+ * @return {*} {IParams}
83
+ */
84
+ getSearchParams() {
85
+ const params = {};
86
+ if (this.searchForm) {
87
+ Object.assign(params, this.searchForm.getFilterParams());
88
+ }
89
+ if (this.searchBar) {
90
+ Object.assign(params, this.searchBar.getFilterParams());
91
+ }
92
+ return params;
93
+ }
94
+ /**
95
+ * 重新计算视图参数
96
+ * @author lxm
97
+ * @date 2024-03-18 05:00:02
98
+ */
99
+ calcViewParams() {
100
+ this.tabExpPanel.state.expViewParams = this.getSearchParams();
101
+ this.tabExpPanel.refresh();
102
+ }
103
+ }
104
+
105
+ export { TabSearchViewEngine };
@@ -85,11 +85,4 @@ export declare class AuthGuard {
85
85
  */
86
86
  initEnvironment(app: IApplication): Promise<void>;
87
87
  throw401(): void;
88
- /**
89
- * 根据refreshToken获取新token
90
- * @return {*}
91
- * @author: zhujiamin
92
- * @Date: 2024-03-05 11:38:20
93
- */
94
- refreshToken(): Promise<void>;
95
88
  }
@@ -1,7 +1,7 @@
1
- import { RuntimeError, HttpError, CoreConst } from '@ibiz-template/core';
1
+ import { RuntimeError, CoreConst, HttpError } from '@ibiz-template/core';
2
2
  import { mergeDeepRight } from 'ramda';
3
3
  import { AppHooks } from '@ibiz-template/vue3-util';
4
- import { getCookie, setCookie } from 'qx-util';
4
+ import { getCookie } from 'qx-util';
5
5
 
6
6
  "use strict";
7
7
  var __defProp = Object.defineProperty;
@@ -103,11 +103,29 @@ class AuthGuard {
103
103
  * @return {*} {Promise<void>}
104
104
  */
105
105
  async appInit() {
106
- if (ibiz.env.isSaaSMode === true) {
107
- await this.loadOrgData();
106
+ try {
107
+ if (ibiz.env.isSaaSMode === true) {
108
+ await this.loadOrgData();
109
+ }
110
+ await this.loadAppData();
111
+ } catch (error) {
112
+ const responseStatus = error.status;
113
+ const remember = getCookie(CoreConst.TOKEN_REMEMBER);
114
+ const refreshToken = getCookie(CoreConst.REFRESH_TOKEN);
115
+ if (responseStatus === 401 && remember && refreshToken != null && refreshToken !== "") {
116
+ try {
117
+ await ibiz.auth.refreshToken();
118
+ if (ibiz.env.isSaaSMode === true) {
119
+ await this.loadOrgData();
120
+ }
121
+ await this.loadAppData();
122
+ } catch (refreshTokenError) {
123
+ throw error;
124
+ }
125
+ } else {
126
+ throw error;
127
+ }
108
128
  }
109
- await this.refreshToken();
110
- await this.loadAppData();
111
129
  await this.initModel();
112
130
  await ibiz.auth.extendLogin();
113
131
  await ibiz.hub.notice.init();
@@ -215,34 +233,6 @@ class AuthGuard {
215
233
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
216
234
  });
217
235
  }
218
- /**
219
- * 根据refreshToken获取新token
220
- * @return {*}
221
- * @author: zhujiamin
222
- * @Date: 2024-03-05 11:38:20
223
- */
224
- async refreshToken() {
225
- const remember = getCookie(CoreConst.TOKEN_REMEMBER);
226
- const token = getCookie(CoreConst.TOKEN);
227
- const refreshToken = getCookie(CoreConst.REFRESH_TOKEN);
228
- const cacheDay = remember ? 7 : 0;
229
- if (!token && refreshToken != null && refreshToken !== "") {
230
- const res = await ibiz.net.get("/uaa/refresh_token/".concat(refreshToken));
231
- if (res.ok) {
232
- setCookie(CoreConst.TOKEN, res.data.token, cacheDay, true);
233
- const expiredDate = (/* @__PURE__ */ new Date()).getTime() + (res.data.expirein || 7199) * 1e3;
234
- setCookie(CoreConst.TOKEN_EXPIRES, "".concat(expiredDate), cacheDay, true);
235
- if (res.data.refresh_token) {
236
- setCookie(
237
- CoreConst.REFRESH_TOKEN,
238
- res.data.refresh_token,
239
- cacheDay,
240
- true
241
- );
242
- }
243
- }
244
- }
245
- }
246
236
  }
247
237
 
248
238
  export { AuthGuard };
@@ -1 +1 @@
1
- .ibiz-control-calendar{--ibiz-control-calendar-text-color:var(--ibiz-color-text-0);--ibiz-control-calendar-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-active-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-border-color:var(--ibiz-color-primary-active);--ibiz-control-calendar-font-size:var(--ibiz-font-size-small);--ibiz-control-calendar-item-padding:var(--ibiz-spacing-tight);--ibiz-control-calendar-border-radius:var(--ibiz-border-radius-small);--ibiz-control-calendar-margin:var(--ibiz-spacing-extra-tight);width:100%;height:100%}.ibiz-control-calendar__calendar-item{display:flex;align-items:center;padding:var(--ibiz-control-calendar-item-padding)}.ibiz-control-calendar__icon{width:10px;height:10px;margin-right:var(--ibiz-spacing-base-tight);border-radius:50%}.ibiz-control-calendar-content{display:flex;flex-direction:column;width:100%;height:100%}.ibiz-control-calendar-content .el-calendar{display:flex;flex-direction:column;height:100%}.ibiz-control-calendar-content .el-calendar__header{flex-wrap:wrap}.ibiz-control-calendar-content .el-calendar-table,.ibiz-control-calendar-content .el-calendar-table .el-calendar-day{width:100%;height:100%;cursor:pointer}.ibiz-control-calendar-content .el-calendar-table{flex:1;width:-moz-fit-content;width:fit-content}.ibiz-control-calendar-content .el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:var(--el-calendar-selected-bg-color)}.ibiz-control-calendar-content .el-calendar__body{display:flex;flex:1;padding:0;overflow:auto}.ibiz-control-calendar-more{width:100%;font-size:var(--ibiz-font-size-small);border-radius:var(--ibiz-spacing-extra-tight)}.ibiz-control-calendar-more:hover{background-color:var(--ibiz-control-calendar-hover-bg-color)}.ibiz-control-calendar-item{--ibiz-control-calendar-text-color:var(--ibiz-color-text-0);--ibiz-control-calendar-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-active-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-border-color:var(--ibiz-color-primary-active);--ibiz-control-calendar-font-size:var(--ibiz-font-size-small);--ibiz-control-calendar-item-padding:var(--ibiz-spacing-tight);--ibiz-control-calendar-border-radius:var(--ibiz-border-radius-small);--ibiz-control-calendar-margin:var(--ibiz-spacing-extra-tight);height:100%;padding:var(--ibiz-control-calendar-item-padding);margin-bottom:var(--ibiz-control-calendar-margin);overflow:hidden;font-size:var(--ibiz-control-calendar-font-size);color:var(--ibiz-control-calendar-text-color);text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border:solid .5px transparent;border-radius:var(--ibiz-control-calendar-border-radius)}.ibiz-control-calendar-item:hover{background-color:var(--ibiz-control-calendar-hover-bg-color)}.ibiz-control-calendar-item.is-active{background-color:var(--ibiz-control-calendar-active-bg-color);border:solid .5px var(--ibiz-control-calendar-border-color)}.ibiz-control-calendar-date-text{--ibiz-control-calendar-text-color:var(--ibiz-color-text-0);--ibiz-control-calendar-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-active-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-border-color:var(--ibiz-color-primary-active);--ibiz-control-calendar-font-size:var(--ibiz-font-size-small);--ibiz-control-calendar-item-padding:var(--ibiz-spacing-tight);--ibiz-control-calendar-border-radius:var(--ibiz-border-radius-small);--ibiz-control-calendar-margin:var(--ibiz-spacing-extra-tight);padding:var(--ibiz-control-calendar-item-padding);margin:0;text-align:center}.ibiz-control-calendar-day{height:-moz-fit-content;height:fit-content}.ibiz-control-calendar-content-title{line-height:var(--ibiz-editor-default-line-height)}.ibiz-control-calendar-content-header{--ibiz-control-calendar-text-color:var(--ibiz-color-text-0);--ibiz-control-calendar-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-active-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-border-color:var(--ibiz-color-primary-active);--ibiz-control-calendar-font-size:var(--ibiz-font-size-small);--ibiz-control-calendar-item-padding:var(--ibiz-spacing-tight);--ibiz-control-calendar-border-radius:var(--ibiz-border-radius-small);--ibiz-control-calendar-margin:var(--ibiz-spacing-extra-tight);display:flex;align-items:center}.ibiz-control-calendar-content-header>*+*{margin-left:var(--ibiz-control-calendar-item-padding)}.ibiz-control-calendar-legend{display:flex;justify-content:flex-end;width:100%}.ibiz-control-calendar-legend>*+*{margin-left:var(--ibiz-spacing-base-loose)}.ibiz-control-calendar-timeline-content .el-timeline{padding-left:0}
1
+ .ibiz-control-calendar{--ibiz-control-calendar-text-color:var(--ibiz-color-text-0);--ibiz-control-calendar-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-active-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-border-color:var(--ibiz-color-primary-active);--ibiz-control-calendar-font-size:var(--ibiz-font-size-small);--ibiz-control-calendar-item-padding:var(--ibiz-spacing-tight);--ibiz-control-calendar-border-radius:var(--ibiz-border-radius-small);--ibiz-control-calendar-margin:var(--ibiz-spacing-extra-tight);width:100%;height:100%}.ibiz-control-calendar__calendar-item{display:flex;align-items:center;padding:var(--ibiz-control-calendar-item-padding)}.ibiz-control-calendar__icon{width:10px;height:10px;margin-right:var(--ibiz-spacing-base-tight);border-radius:50%}.ibiz-control-calendar .ibiz-control-calendar-item{margin:0}.ibiz-control-calendar-content{display:flex;flex-direction:column;width:100%;height:100%}.ibiz-control-calendar-content .el-calendar{display:flex;flex-direction:column;height:100%}.ibiz-control-calendar-content .el-calendar__header{flex-wrap:wrap}.ibiz-control-calendar-content .el-calendar-table,.ibiz-control-calendar-content .el-calendar-table .el-calendar-day{width:100%;height:100%;min-height:90px;cursor:pointer}.ibiz-control-calendar-content .el-calendar-table{flex:1;width:-moz-fit-content;width:fit-content}.ibiz-control-calendar-content .el-calendar-table .el-calendar-day:hover{cursor:pointer;background-color:var(--el-calendar-selected-bg-color)}.ibiz-control-calendar-content .el-calendar__body{display:flex;flex:1;padding:0;overflow:auto}.ibiz-control-calendar-more{width:100%;font-size:var(--ibiz-font-size-small);border-radius:var(--ibiz-spacing-extra-tight)}.ibiz-control-calendar-more:hover{background-color:var(--ibiz-control-calendar-hover-bg-color)}.ibiz-control-calendar-item{--ibiz-control-calendar-text-color:var(--ibiz-color-text-0);--ibiz-control-calendar-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-active-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-border-color:var(--ibiz-color-primary-active);--ibiz-control-calendar-font-size:var(--ibiz-font-size-small);--ibiz-control-calendar-item-padding:var(--ibiz-spacing-tight);--ibiz-control-calendar-border-radius:var(--ibiz-border-radius-small);--ibiz-control-calendar-margin:var(--ibiz-spacing-extra-tight);height:100%;padding:var(--ibiz-control-calendar-item-padding);margin-bottom:var(--ibiz-control-calendar-margin);overflow:hidden;font-size:var(--ibiz-control-calendar-font-size);color:var(--ibiz-control-calendar-text-color);text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border:solid .5px transparent;border-radius:var(--ibiz-control-calendar-border-radius)}.ibiz-control-calendar-item:hover{background-color:var(--ibiz-control-calendar-hover-bg-color)}.ibiz-control-calendar-item.is-active{background-color:var(--ibiz-control-calendar-active-bg-color);border:solid .5px var(--ibiz-control-calendar-border-color)}.ibiz-control-calendar-date-text{--ibiz-control-calendar-text-color:var(--ibiz-color-text-0);--ibiz-control-calendar-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-active-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-border-color:var(--ibiz-color-primary-active);--ibiz-control-calendar-font-size:var(--ibiz-font-size-small);--ibiz-control-calendar-item-padding:var(--ibiz-spacing-tight);--ibiz-control-calendar-border-radius:var(--ibiz-border-radius-small);--ibiz-control-calendar-margin:var(--ibiz-spacing-extra-tight);padding-bottom:var(--ibiz-control-calendar-item-padding);margin:0;text-align:center}.ibiz-control-calendar-day{height:-moz-fit-content;height:fit-content}.ibiz-control-calendar-content-title{line-height:var(--ibiz-editor-default-line-height)}.ibiz-control-calendar-content-header{--ibiz-control-calendar-text-color:var(--ibiz-color-text-0);--ibiz-control-calendar-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-active-bg-color:var(--ibiz-color-fill-0);--ibiz-control-calendar-border-color:var(--ibiz-color-primary-active);--ibiz-control-calendar-font-size:var(--ibiz-font-size-small);--ibiz-control-calendar-item-padding:var(--ibiz-spacing-tight);--ibiz-control-calendar-border-radius:var(--ibiz-border-radius-small);--ibiz-control-calendar-margin:var(--ibiz-spacing-extra-tight);display:flex;align-items:center}.ibiz-control-calendar-content-header>*+*{margin-left:var(--ibiz-control-calendar-item-padding)}.ibiz-control-calendar-legend{display:flex;justify-content:flex-end;width:100%}.ibiz-control-calendar-legend>*+*{margin-left:var(--ibiz-spacing-base-loose)}.ibiz-control-calendar-timeline-content .el-timeline{padding-left:0}
@@ -60,6 +60,17 @@ const DRBarControl = /* @__PURE__ */ vue.defineComponent({
60
60
  const route = vueRouter.useRoute();
61
61
  const defaultActive = vue.ref("");
62
62
  let expViewRoutePath = "";
63
+ const opens = [];
64
+ vue.watch(() => c.state.isCreated, (_newVal, _oldVal) => {
65
+ if (props.showMode !== "horizontal") {
66
+ const {
67
+ drBarItems
68
+ } = c.state;
69
+ drBarItems.forEach((item) => {
70
+ opens.push(item.tag);
71
+ });
72
+ }
73
+ });
63
74
  if (c.routeDepth) {
64
75
  expViewRoutePath = vue3Util.getNestedRoutePath(route, c.routeDepth);
65
76
  }
@@ -87,6 +98,9 @@ const DRBarControl = /* @__PURE__ */ vue.defineComponent({
87
98
  immediate: true
88
99
  });
89
100
  const renderMenuItems = (item) => {
101
+ if (!item.visible) {
102
+ return;
103
+ }
90
104
  if (item.children) {
91
105
  let subtitle = "";
92
106
  if (props.showMode === "horizontal") {
@@ -130,7 +144,8 @@ const DRBarControl = /* @__PURE__ */ vue.defineComponent({
130
144
  ns,
131
145
  handleSelect,
132
146
  renderMenuItems,
133
- defaultActive
147
+ defaultActive,
148
+ opens
134
149
  };
135
150
  },
136
151
  render() {
@@ -148,7 +163,8 @@ const DRBarControl = /* @__PURE__ */ vue.defineComponent({
148
163
  "class": this.ns.e("menu"),
149
164
  "mode": this.showMode,
150
165
  "default-active": this.defaultActive || defaultItem,
151
- "onSelect": this.handleSelect
166
+ "onSelect": this.handleSelect,
167
+ "default-openeds": this.opens
152
168
  }, _isSlot(_slot = drBarItems.map((item) => {
153
169
  return this.renderMenuItems(item);
154
170
  })) ? _slot : {
@@ -118,6 +118,50 @@ class DRBarController extends runtime.ControlController {
118
118
  this.initDRBarItems();
119
119
  await this.initCounter();
120
120
  }
121
+ /**
122
+ * 计算关系界面组权限
123
+ *
124
+ * @param {IData} item 关系组成员
125
+ * @memberof DRBarController
126
+ */
127
+ async calcPermitted(item) {
128
+ let permitted = true;
129
+ if (item.dataAccessAction) {
130
+ const app = await ibiz.hub.getApp(this.context.srfappid);
131
+ const data = this.getData().length > 0 ? this.getData()[0] : void 0;
132
+ permitted = await app.authority.calcByDataAccessAction(
133
+ item.dataAccessAction,
134
+ this.context,
135
+ data,
136
+ this.model.appDataEntityId
137
+ );
138
+ }
139
+ item.visible = permitted;
140
+ }
141
+ /**
142
+ * 计算是否展示
143
+ *
144
+ * @param {IData} item 关系组成员
145
+ * @memberof DRBarController
146
+ */
147
+ async calcDrBarItemsState() {
148
+ const arr = [];
149
+ this.state.drBarItems.forEach((group) => {
150
+ var _a, _b;
151
+ if ((_a = group.children) == null ? void 0 : _a.length) {
152
+ (_b = group.children) == null ? void 0 : _b.forEach((item) => {
153
+ arr.push(this.calcPermitted(item));
154
+ });
155
+ }
156
+ });
157
+ await Promise.all(arr);
158
+ this.state.drBarItems.forEach((group) => {
159
+ var _a;
160
+ if ((_a = group.children) == null ? void 0 : _a.length) {
161
+ group.visible = !group.children.every((item) => item.visible === false);
162
+ }
163
+ });
164
+ }
121
165
  /**
122
166
  * 加载完成
123
167
  *
@@ -127,7 +171,8 @@ class DRBarController extends runtime.ControlController {
127
171
  async onMounted() {
128
172
  await super.onMounted();
129
173
  if (this.form) {
130
- this.form.evt.on("onLoadSuccess", () => {
174
+ this.form.evt.on("onLoadSuccess", async () => {
175
+ await this.calcDrBarItemsState();
131
176
  this.handleFormChange();
132
177
  this.doDefaultSelect();
133
178
  });
@@ -209,7 +254,9 @@ class DRBarController extends runtime.ControlController {
209
254
  caption: itemCaption,
210
255
  sysImage: item.sysImage,
211
256
  disabled: false,
212
- counterId: item.counterId
257
+ counterId: item.counterId,
258
+ visible: true,
259
+ dataAccessAction: item.dataAccessAction || void 0
213
260
  };
214
261
  };
215
262
  if (dedrbarGroups && dedrctrlItems) {
@@ -234,6 +281,7 @@ class DRBarController extends runtime.ControlController {
234
281
  tag: group.id,
235
282
  caption: itemCaption,
236
283
  sysImage: group.sysImage,
284
+ visible: true,
237
285
  children: groupItems.map((item) => getItemState(item))
238
286
  });
239
287
  } else if (groupItems.length === 1) {
@@ -348,7 +396,12 @@ class DRBarController extends runtime.ControlController {
348
396
  * @return {*} {void}
349
397
  */
350
398
  doDefaultSelect() {
351
- var _a;
399
+ var _a, _b;
400
+ const viewForm = (_a = this.view.layoutPanel) == null ? void 0 : _a.panelItems.view_form;
401
+ if (viewForm) {
402
+ viewForm.state.visible = false;
403
+ viewForm.state.keepAlive = false;
404
+ }
352
405
  if (!this.state.hideEditItem && !this.state.srfnav) {
353
406
  this.setVisible("form");
354
407
  return;
@@ -358,7 +411,7 @@ class DRBarController extends runtime.ControlController {
358
411
  return;
359
412
  }
360
413
  const { drBarItems } = this.state;
361
- let key = ((_a = drBarItems[0].children) == null ? void 0 : _a[0].tag) || drBarItems[0].tag;
414
+ let key = ((_b = drBarItems[0].children) == null ? void 0 : _b[0].tag) || drBarItems[0].tag;
362
415
  if (this.routeDepth && this.state.srfnav) {
363
416
  key = this.state.srfnav;
364
417
  }
@@ -1 +1 @@
1
- .ibiz-control-drbar .el-menu--horizontal.el-menu{border-bottom:none}.ibiz-control-drbar .el-menu-item{justify-content:space-between;line-height:unset}
1
+ .ibiz-control-drbar{height:100%}.ibiz-control-drbar .el-menu--horizontal.el-menu{border-bottom:none}.ibiz-control-drbar .el-menu-item{justify-content:space-between;line-height:unset}.ibiz-control-drbar__menu{height:100%}
@@ -42,14 +42,14 @@ const CalendarExpBarControl = /* @__PURE__ */ vue.defineComponent({
42
42
  const ns = vue3Util.useNamespace("control-".concat(c.model.controlType.toLowerCase()));
43
43
  const {
44
44
  renderTitle,
45
- renderQuickSearch
45
+ renderSearchBar
46
46
  } = renderUtil.useExpBarRender(c, ns);
47
47
  renderUtil.useWatchRouteChange(c);
48
48
  return {
49
49
  c,
50
50
  ns,
51
51
  renderTitle,
52
- renderQuickSearch
52
+ renderSearchBar
53
53
  };
54
54
  },
55
55
  render() {
@@ -62,7 +62,7 @@ const CalendarExpBarControl = /* @__PURE__ */ vue.defineComponent({
62
62
  } = state;
63
63
  const slots = {
64
64
  captionbar: this.renderTitle,
65
- searchbar: this.renderQuickSearch
65
+ searchbar: this.renderSearchBar
66
66
  };
67
67
  if (isCreated) {
68
68
  if (XDataModel) {
@@ -42,14 +42,14 @@ const ChartExpBarControl = /* @__PURE__ */ vue.defineComponent({
42
42
  const ns = vue3Util.useNamespace("control-".concat(c.model.controlType.toLowerCase()));
43
43
  const {
44
44
  renderTitle,
45
- renderQuickSearch
45
+ renderSearchBar
46
46
  } = renderUtil.useExpBarRender(c, ns);
47
47
  renderUtil.useWatchRouteChange(c);
48
48
  return {
49
49
  c,
50
50
  ns,
51
51
  renderTitle,
52
- renderQuickSearch
52
+ renderSearchBar
53
53
  };
54
54
  },
55
55
  render() {
@@ -61,7 +61,7 @@ const ChartExpBarControl = /* @__PURE__ */ vue.defineComponent({
61
61
  } = this.c;
62
62
  const slots = {
63
63
  captionbar: this.renderTitle,
64
- searchbar: this.renderQuickSearch
64
+ searchbar: this.renderSearchBar
65
65
  };
66
66
  if (isCreated) {
67
67
  if (XDataModel) {
@@ -42,14 +42,14 @@ const DataViewExpBarControl = /* @__PURE__ */ vue.defineComponent({
42
42
  const ns = vue3Util.useNamespace("control-".concat(c.model.controlType.toLowerCase()));
43
43
  const {
44
44
  renderTitle,
45
- renderQuickSearch
45
+ renderSearchBar
46
46
  } = renderUtil.useExpBarRender(c, ns);
47
47
  renderUtil.useWatchRouteChange(c);
48
48
  return {
49
49
  c,
50
50
  ns,
51
51
  renderTitle,
52
- renderQuickSearch
52
+ renderSearchBar
53
53
  };
54
54
  },
55
55
  render() {
@@ -61,7 +61,7 @@ const DataViewExpBarControl = /* @__PURE__ */ vue.defineComponent({
61
61
  } = this.c;
62
62
  const slots = {
63
63
  captionbar: this.renderTitle,
64
- searchbar: this.renderQuickSearch
64
+ searchbar: this.renderSearchBar
65
65
  };
66
66
  if (isCreated) {
67
67
  if (XDataModel) {
@@ -42,14 +42,14 @@ const GridExpBarControl = /* @__PURE__ */ vue.defineComponent({
42
42
  const ns = vue3Util.useNamespace("control-".concat(c.model.controlType.toLowerCase()));
43
43
  const {
44
44
  renderTitle,
45
- renderQuickSearch
45
+ renderSearchBar
46
46
  } = renderUtil.useExpBarRender(c, ns);
47
47
  renderUtil.useWatchRouteChange(c);
48
48
  return {
49
49
  c,
50
50
  ns,
51
51
  renderTitle,
52
- renderQuickSearch
52
+ renderSearchBar
53
53
  };
54
54
  },
55
55
  render() {
@@ -61,7 +61,7 @@ const GridExpBarControl = /* @__PURE__ */ vue.defineComponent({
61
61
  } = this.c;
62
62
  const slots = {
63
63
  captionbar: this.renderTitle,
64
- searchbar: this.renderQuickSearch
64
+ searchbar: this.renderSearchBar
65
65
  };
66
66
  if (isCreated) {
67
67
  if (XDataModel) {
@@ -42,14 +42,14 @@ const ListExpBarControl = /* @__PURE__ */ vue.defineComponent({
42
42
  const ns = vue3Util.useNamespace("control-".concat(c.model.controlType.toLowerCase()));
43
43
  const {
44
44
  renderTitle,
45
- renderQuickSearch
45
+ renderSearchBar
46
46
  } = renderUtil.useExpBarRender(c, ns);
47
47
  renderUtil.useWatchRouteChange(c);
48
48
  return {
49
49
  c,
50
50
  ns,
51
51
  renderTitle,
52
- renderQuickSearch
52
+ renderSearchBar
53
53
  };
54
54
  },
55
55
  render() {
@@ -61,7 +61,7 @@ const ListExpBarControl = /* @__PURE__ */ vue.defineComponent({
61
61
  } = this.c;
62
62
  const slots = {
63
63
  captionbar: this.renderTitle,
64
- searchbar: this.renderQuickSearch
64
+ searchbar: this.renderSearchBar
65
65
  };
66
66
  if (isCreated) {
67
67
  if (XDataModel) {
@@ -36,13 +36,26 @@ function useExpBarRender(c, ns) {
36
36
  "class": [ns.be("caption", "text")]
37
37
  }, [title])]);
38
38
  };
39
- const renderQuickSearch = () => {
39
+ const renderSearchBar = () => {
40
+ var _a, _b;
40
41
  const {
41
42
  model
42
43
  } = c;
43
44
  if (!model.enableSearch) {
44
45
  return null;
45
46
  }
47
+ const modelData = (_b = (_a = c.view.model.viewLayoutPanel) == null ? void 0 : _a.controls) == null ? void 0 : _b.find((item) => item.id === "searchbar");
48
+ if (modelData) {
49
+ const ctrlProps = {
50
+ context: c.context,
51
+ params: c.params
52
+ };
53
+ const comp = vue.resolveComponent("IBizControlShell");
54
+ return vue.h(comp, {
55
+ modelData,
56
+ ...ctrlProps
57
+ });
58
+ }
46
59
  return vue.createVNode(vue.resolveComponent("el-input"), {
47
60
  "model-value": c.state.query,
48
61
  "class": [ns.b("quick-search"), expBarNs.b("quick-search")],
@@ -59,7 +72,7 @@ function useExpBarRender(c, ns) {
59
72
  };
60
73
  return {
61
74
  renderTitle,
62
- renderQuickSearch
75
+ renderSearchBar
63
76
  };
64
77
  }
65
78
  function useWatchRouteChange(c) {
@@ -46,7 +46,7 @@ const TreeExpBarControl = /* @__PURE__ */ vue.defineComponent({
46
46
  const ns = vue3Util.useNamespace("control-".concat(c.model.controlType.toLowerCase()));
47
47
  const {
48
48
  renderTitle,
49
- renderQuickSearch
49
+ renderSearchBar
50
50
  } = renderUtil.useExpBarRender(c, ns);
51
51
  renderUtil.useWatchRouteChange(c);
52
52
  const navigational = vue.computed(() => {
@@ -57,7 +57,7 @@ const TreeExpBarControl = /* @__PURE__ */ vue.defineComponent({
57
57
  ns,
58
58
  navigational,
59
59
  renderTitle,
60
- renderQuickSearch
60
+ renderSearchBar
61
61
  };
62
62
  },
63
63
  render() {
@@ -70,7 +70,7 @@ const TreeExpBarControl = /* @__PURE__ */ vue.defineComponent({
70
70
  } = state;
71
71
  const slots = {
72
72
  captionbar: this.renderTitle,
73
- searchbar: this.renderQuickSearch
73
+ searchbar: this.renderSearchBar
74
74
  };
75
75
  if (isCreated) {
76
76
  if (XDataModel) {
@@ -25,6 +25,19 @@ const FormControl = /* @__PURE__ */ vue.defineComponent({
25
25
  const slotProps = {
26
26
  form: c
27
27
  };
28
+ const renderAttrs = (model) => {
29
+ var _a;
30
+ const attrs = {};
31
+ (_a = model.controlAttributes) == null ? void 0 : _a.forEach((item) => {
32
+ if (item.attrName && item.attrValue) {
33
+ attrs[item.attrName] = runtime.ScriptFactory.execSingleLine(item.attrValue, {
34
+ ...props.controller.getEventArgs(),
35
+ data: props.controller.data
36
+ });
37
+ }
38
+ });
39
+ return attrs;
40
+ };
28
41
  const renderByDetailType = (detail) => {
29
42
  if (detail.hidden) {
30
43
  return;
@@ -33,7 +46,8 @@ const FormControl = /* @__PURE__ */ vue.defineComponent({
33
46
  const detailProps = {
34
47
  modelData: detail,
35
48
  controller: c.details[detailId],
36
- key: detail.id
49
+ key: detail.id,
50
+ ...renderAttrs(detail)
37
51
  };
38
52
  if (slots[detailId]) {
39
53
  return vue.renderSlot(slots, detailId, {
@@ -51,7 +51,8 @@ const FormItem = /* @__PURE__ */ vue.defineComponent({
51
51
  controlParams: this.controller.form.controlParams,
52
52
  onFocus: (event) => this.c.onFocus(event),
53
53
  onBlur: (event) => this.c.onBlur(event),
54
- onEnter: (event) => this.controller.onEnter(event)
54
+ onEnter: (event) => this.controller.onEnter(event),
55
+ ...this.$attrs
55
56
  };
56
57
  if (this.c.form.state.isLoaded) {
57
58
  if (this.$slots.default) {
@@ -46,6 +46,12 @@ const FilterModes = [{
46
46
  }, {
47
47
  valueOP: runtime.ValueOP.RIGHT_LIKE,
48
48
  label: "\u6587\u672C\u53F3\u5305\u542B(#%)"
49
+ }, {
50
+ valueOP: runtime.ValueOP.EXISTS,
51
+ label: "\u5B58\u5728(EXISTS)"
52
+ }, {
53
+ valueOP: runtime.ValueOP.NOT_EXISTS,
54
+ label: "\u4E0D\u5B58\u5728(NOTEXISTS)"
49
55
  }];
50
56
  const FilterModeSelect = /* @__PURE__ */ vue.defineComponent({
51
57
  name: "IBizFilterModeSelect",