@ibiz-template/vue3-components 0.1.2 → 0.1.5

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 (168) hide show
  1. package/dist/{chart-efad8ee0.js → chart-0d4e59ff.js} +2 -2
  2. package/dist/chart-0d4e59ff.js.map +1 -0
  3. package/dist/{ibiz-markdown-editor-3745dfd5.js → ibiz-markdown-editor-a426becc.js} +2 -2
  4. package/dist/ibiz-markdown-editor-a426becc.js.map +1 -0
  5. package/dist/index.min.css +1 -1
  6. package/dist/index.system.min.js +3 -3
  7. package/dist/index.system.min.js.map +1 -1
  8. package/dist/wang-editor-675011c6.js.map +1 -1
  9. package/dist/xlsx-util-fac1c045.js.map +1 -1
  10. package/es/common/icon/icon.d.ts +1 -3
  11. package/es/common/index.d.ts +0 -2
  12. package/es/common/index.mjs +1 -5
  13. package/es/common/router-view/router-view.d.ts +1 -3
  14. package/es/control/app-menu/app-menu.css +1 -1
  15. package/es/control/app-menu-icon-view/app-menu-icon-view.d.ts +3 -3
  16. package/es/control/app-menu-icon-view/index.d.ts +6 -2
  17. package/es/control/calendar/calendar.controller.d.ts +93 -0
  18. package/es/control/calendar/calendar.controller.mjs +162 -0
  19. package/es/control/calendar/calendar.css +1 -0
  20. package/es/control/calendar/calendar.d.ts +49 -0
  21. package/es/control/calendar/calendar.mjs +211 -0
  22. package/es/control/calendar/calendar.provider.d.ts +13 -0
  23. package/es/control/calendar/calendar.provider.mjs +13 -0
  24. package/es/control/calendar/calendar.service.d.ts +49 -0
  25. package/es/control/calendar/calendar.service.mjs +88 -0
  26. package/es/control/calendar/index.d.ts +47 -0
  27. package/es/control/calendar/index.mjs +15 -0
  28. package/es/control/chart/generator/chart-options-generator.mjs +1 -1
  29. package/es/control/chart/generator/funnel-series-generator.d.ts +1 -1
  30. package/es/control/chart/generator/pie-series-generator.d.ts +1 -1
  31. package/es/control/dashboard/dashboard.css +1 -0
  32. package/es/control/dashboard/dashboard.d.ts +1 -0
  33. package/es/control/dashboard/dashboard.mjs +1 -0
  34. package/es/control/dashboard/portlet/portlet-layout/portlet-layout.d.ts +1 -0
  35. package/es/control/dashboard/portlet/portlet-layout/portlet-layout.mjs +1 -0
  36. package/es/control/dashboard/portlet/portlet-part/portlet-part.controller.mjs +1 -1
  37. package/es/control/data-view/data-view.controller.mjs +0 -1
  38. package/es/control/data-view/data-view.css +1 -1
  39. package/es/control/drbar/drbar.controller.d.ts +2 -5
  40. package/es/control/drbar/drbar.d.ts +2 -2
  41. package/es/control/drbar/index.d.ts +3 -1
  42. package/es/control/drtab/drtab.controller.d.ts +2 -5
  43. package/es/control/exp-bar/calendar-exp-bar/calendar-exp-bar.controller.d.ts +34 -0
  44. package/es/control/exp-bar/calendar-exp-bar/calendar-exp-bar.controller.mjs +89 -0
  45. package/es/control/exp-bar/calendar-exp-bar/calendar-exp-bar.css +0 -0
  46. package/es/control/exp-bar/calendar-exp-bar/calendar-exp-bar.d.ts +49 -0
  47. package/es/control/exp-bar/calendar-exp-bar/calendar-exp-bar.mjs +78 -0
  48. package/es/control/exp-bar/calendar-exp-bar/calendar-exp-bar.provider.d.ts +11 -0
  49. package/es/control/exp-bar/calendar-exp-bar/calendar-exp-bar.provider.mjs +13 -0
  50. package/es/control/exp-bar/calendar-exp-bar/index.d.ts +49 -0
  51. package/es/control/exp-bar/calendar-exp-bar/index.mjs +18 -0
  52. package/es/control/exp-bar/exp-bar.controller.d.ts +5 -5
  53. package/es/control/exp-bar/exp-bar.controller.mjs +17 -11
  54. package/es/control/exp-bar/index.d.ts +1 -0
  55. package/es/control/exp-bar/index.mjs +3 -0
  56. package/es/control/exp-bar/tree-exp-bar/tree-exp-bar.controller.d.ts +20 -3
  57. package/es/control/exp-bar/tree-exp-bar/tree-exp-bar.controller.mjs +49 -25
  58. package/es/control/exp-bar/tree-exp-bar/tree-exp-bar.mjs +2 -1
  59. package/es/control/form/form/form.d.ts +1 -5
  60. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.mjs +4 -3
  61. package/es/control/form/form-detail/form-page/form-page.mjs +2 -2
  62. package/es/control/grid/grid/grid-control.util.d.ts +2 -1
  63. package/es/control/grid/grid/grid.controller.d.ts +73 -5
  64. package/es/control/grid/grid/grid.controller.mjs +201 -6
  65. package/es/control/grid/grid/grid.css +1 -1
  66. package/es/control/grid/grid/grid.d.ts +6 -1
  67. package/es/control/grid/grid/grid.mjs +62 -10
  68. package/es/control/grid/grid/index.d.ts +5 -1
  69. package/es/control/grid/grid-column/grid-field-column/grid-field-column.controller.d.ts +11 -2
  70. package/es/control/grid/grid-column/grid-field-column/grid-field-column.controller.mjs +53 -0
  71. package/es/control/grid/grid-column/grid-field-column/grid-field-column.css +1 -1
  72. package/es/control/grid/grid-column/grid-field-edit-column/grid-edit-item/grid-edit-item.css +1 -1
  73. package/es/control/index.d.ts +1 -0
  74. package/es/control/index.mjs +6 -0
  75. package/es/control/toolbar/index.d.ts +6 -2
  76. package/es/control/toolbar/toolbar.d.ts +3 -3
  77. package/es/control/tree/index.d.ts +7 -1
  78. package/es/control/tree/tree.controller.d.ts +23 -11
  79. package/es/control/tree/tree.controller.mjs +60 -44
  80. package/es/control/tree/tree.d.ts +7 -1
  81. package/es/control/tree/tree.mjs +27 -7
  82. package/es/control/tree/tree.service.d.ts +23 -4
  83. package/es/control/tree/tree.service.mjs +123 -50
  84. package/es/editor/autocomplete/ibiz-autocomplete/ibiz-autocomplete.d.ts +1 -1
  85. package/es/editor/cascader/ibiz-cascader/ibiz-cascader.d.ts +1 -1
  86. package/es/editor/code/code-editor.controller.d.ts +2 -2
  87. package/es/editor/data-picker/ibiz-picker/ibiz-picker.d.ts +1 -1
  88. package/es/editor/html/wang-editor/wang-editor.d.ts +1 -1
  89. package/es/editor/upload/use/use-ibiz-upload.d.ts +2 -2
  90. package/es/editor/upload/use/use-iview-upload.d.ts +2 -2
  91. package/es/index.mjs +9 -2
  92. package/es/panel-component/nav-pos/nav-pos.mjs +6 -4
  93. package/es/panel-component/nav-pos-index/nav-pos-index.controller.mjs +1 -2
  94. package/es/panel-component/nav-pos-index/nav-pos-index.mjs +3 -2
  95. package/es/panel-component/nav-pos-index/nav-pos-index.state.mjs +1 -1
  96. package/es/panel-component/panel-app-title/panel-app-title.css +1 -1
  97. package/es/panel-component/panel-app-title/panel-app-title.mjs +1 -1
  98. package/es/panel-component/panel-field/panel-field.controller.d.ts +1 -1
  99. package/es/view/portal-view/portal-view.mjs +1 -18
  100. package/es/view-engine/calendar-exp-view.engine.d.ts +25 -0
  101. package/es/view-engine/calendar-exp-view.engine.mjs +33 -0
  102. package/es/view-engine/calendar-view.engine.d.ts +5 -0
  103. package/es/view-engine/calendar-view.engine.mjs +6 -0
  104. package/es/view-engine/grid-view.engine.mjs +1 -1
  105. package/es/view-engine/index.mjs +10 -0
  106. package/es/view-engine/pickup-view2.engine.mjs +5 -1
  107. package/es/view-engine/wf-dyna-action-view.engine.mjs +1 -1
  108. package/es/view-engine/wf-dyna-start-view.engine.mjs +1 -1
  109. package/lib/common/index.cjs +0 -13
  110. package/lib/control/app-menu/app-menu.css +1 -1
  111. package/lib/control/calendar/calendar.cjs +213 -0
  112. package/lib/control/calendar/calendar.controller.cjs +164 -0
  113. package/lib/control/calendar/calendar.css +1 -0
  114. package/lib/control/calendar/calendar.provider.cjs +15 -0
  115. package/lib/control/calendar/calendar.service.cjs +90 -0
  116. package/lib/control/calendar/index.cjs +22 -0
  117. package/lib/control/chart/generator/chart-options-generator.cjs +1 -1
  118. package/lib/control/dashboard/dashboard.cjs +1 -0
  119. package/lib/control/dashboard/dashboard.css +1 -0
  120. package/lib/control/dashboard/portlet/portlet-layout/portlet-layout.cjs +1 -0
  121. package/lib/control/dashboard/portlet/portlet-part/portlet-part.controller.cjs +1 -1
  122. package/lib/control/data-view/data-view.controller.cjs +0 -1
  123. package/lib/control/data-view/data-view.css +1 -1
  124. package/lib/control/exp-bar/calendar-exp-bar/calendar-exp-bar.cjs +80 -0
  125. package/lib/control/exp-bar/calendar-exp-bar/calendar-exp-bar.controller.cjs +91 -0
  126. package/lib/control/exp-bar/calendar-exp-bar/calendar-exp-bar.css +0 -0
  127. package/lib/control/exp-bar/calendar-exp-bar/calendar-exp-bar.provider.cjs +15 -0
  128. package/lib/control/exp-bar/calendar-exp-bar/index.cjs +25 -0
  129. package/lib/control/exp-bar/exp-bar.controller.cjs +17 -11
  130. package/lib/control/exp-bar/index.cjs +6 -0
  131. package/lib/control/exp-bar/tree-exp-bar/tree-exp-bar.cjs +2 -1
  132. package/lib/control/exp-bar/tree-exp-bar/tree-exp-bar.controller.cjs +49 -25
  133. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.cjs +4 -3
  134. package/lib/control/form/form-detail/form-page/form-page.cjs +2 -2
  135. package/lib/control/grid/grid/grid.cjs +62 -10
  136. package/lib/control/grid/grid/grid.controller.cjs +200 -5
  137. package/lib/control/grid/grid/grid.css +1 -1
  138. package/lib/control/grid/grid-column/grid-field-column/grid-field-column.controller.cjs +53 -0
  139. package/lib/control/grid/grid-column/grid-field-column/grid-field-column.css +1 -1
  140. package/lib/control/grid/grid-column/grid-field-edit-column/grid-edit-item/grid-edit-item.css +1 -1
  141. package/lib/control/index.cjs +28 -16
  142. package/lib/control/tree/tree.cjs +27 -7
  143. package/lib/control/tree/tree.controller.cjs +59 -43
  144. package/lib/control/tree/tree.service.cjs +122 -49
  145. package/lib/index.cjs +79 -76
  146. package/lib/panel-component/nav-pos/nav-pos.cjs +6 -4
  147. package/lib/panel-component/nav-pos-index/nav-pos-index.cjs +3 -2
  148. package/lib/panel-component/nav-pos-index/nav-pos-index.controller.cjs +1 -2
  149. package/lib/panel-component/nav-pos-index/nav-pos-index.state.cjs +1 -1
  150. package/lib/panel-component/panel-app-title/panel-app-title.cjs +1 -1
  151. package/lib/panel-component/panel-app-title/panel-app-title.css +1 -1
  152. package/lib/view/portal-view/portal-view.cjs +1 -18
  153. package/lib/view-engine/calendar-exp-view.engine.cjs +35 -0
  154. package/lib/view-engine/calendar-view.engine.cjs +8 -0
  155. package/lib/view-engine/grid-view.engine.cjs +1 -1
  156. package/lib/view-engine/index.cjs +10 -0
  157. package/lib/view-engine/pickup-view2.engine.cjs +5 -1
  158. package/lib/view-engine/wf-dyna-action-view.engine.cjs +1 -1
  159. package/lib/view-engine/wf-dyna-start-view.engine.cjs +1 -1
  160. package/package.json +18 -18
  161. package/dist/chart-efad8ee0.js.map +0 -1
  162. package/dist/ibiz-markdown-editor-3745dfd5.js.map +0 -1
  163. package/es/common/keep-alive/keep-alive.d.ts +0 -45
  164. package/es/common/keep-alive/keep-alive.mjs +0 -293
  165. package/es/common/keep-alive/scheduler.d.ts +0 -41
  166. package/es/common/keep-alive/scheduler.mjs +0 -168
  167. package/lib/common/keep-alive/keep-alive.cjs +0 -304
  168. package/lib/common/keep-alive/scheduler.cjs +0 -178
@@ -64,7 +64,8 @@ const TreeExpBarControl = /* @__PURE__ */ vue.defineComponent({
64
64
  "params": this.c.params,
65
65
  "modelData": XDataModel,
66
66
  "singleSelect": true,
67
- "mdctrlActiveMode": 1
67
+ "mdctrlActiveMode": 1,
68
+ "default-expanded-keys": this.c.defaultExpandedKeys
68
69
  }, null);
69
70
  };
70
71
  }
@@ -12,6 +12,13 @@ var __publicField = (obj, key, value) => {
12
12
  class TreeExpBarController extends expBar_controller.ExpBarControlController {
13
13
  constructor() {
14
14
  super(...arguments);
15
+ /**
16
+ * 默认展开节点集合
17
+ * @author lxm
18
+ * @date 2023-08-08 05:35:12
19
+ * @type {string[]}
20
+ */
21
+ __publicField(this, "defaultExpandedKeys");
15
22
  /**
16
23
  * 导航栏key
17
24
  *
@@ -50,6 +57,18 @@ class TreeExpBarController extends expBar_controller.ExpBarControlController {
50
57
  }
51
58
  return nodeModel;
52
59
  }
60
+ /**
61
+ * 多数据激活
62
+ *
63
+ * @author zk
64
+ * @date 2023-05-29 03:05:36
65
+ * @param {IData} data
66
+ * @memberof ExpBarControlController
67
+ */
68
+ xDataActive(event) {
69
+ const { nodeData } = event;
70
+ super.xDataActive({ ...event, data: [nodeData] });
71
+ }
53
72
  /**
54
73
  * 获取导航视图
55
74
  *
@@ -59,28 +78,27 @@ class TreeExpBarController extends expBar_controller.ExpBarControlController {
59
78
  * @return {*} {Promise<INavViewMsg>}
60
79
  * @memberof TabExpPanelController
61
80
  */
62
- getNavViewMsg(data) {
63
- if (!data[0]) {
64
- return void 0;
81
+ getNavViewMsg(data, context, params) {
82
+ if (data.length === 0) {
83
+ return;
65
84
  }
66
- const item = data[0];
67
- const nodeModel = this.getNodeModel(item.nodeId);
85
+ const node = data[0];
86
+ const nodeId = node.id;
87
+ const deData = node.deData || node;
88
+ const nodeModel = this.getNodeModel(node.nodeId);
68
89
  if (nodeModel) {
69
- const { context, params } = this.prepareParams(nodeModel, [
70
- item.deData ? item.deData : item
71
- ]);
72
- context.currentSrfNav = item[this.navKeyName];
90
+ const result = this.prepareParams(nodeModel, [deData], context, params);
91
+ result.context.currentSrfNav = nodeId;
73
92
  return {
74
- key: item[this.navKeyName],
75
- context,
76
- params,
77
- viewId: nodeModel.navAppViewId
93
+ key: nodeId,
94
+ viewId: nodeModel.navAppViewId,
95
+ ...result
78
96
  };
79
97
  }
80
98
  return {
81
- key: item[this.navKeyName],
82
- context: this.context,
83
- params: this.params
99
+ key: nodeId,
100
+ context,
101
+ params
84
102
  };
85
103
  }
86
104
  /**
@@ -92,18 +110,24 @@ class TreeExpBarController extends expBar_controller.ExpBarControlController {
92
110
  * @memberof ExpBarControlController
93
111
  */
94
112
  setNavPosDefaultOpenView() {
95
- const expandedNode = [];
96
- this.state.srfnav.split(":").forEach((item, index) => {
97
- if (index === 0) {
98
- expandedNode.push(item);
99
- } else {
100
- expandedNode.push(`${expandedNode[index - 1]}:${item}`);
101
- }
102
- });
103
- this.xDataController.setExpandedKeys(expandedNode);
104
113
  this.setDefaultXDataSelect({ [this.navKeyName]: this.state.srfnav });
105
114
  this.setDefaultOpenView([{ [this.navKeyName]: this.state.srfnav }]);
106
115
  }
116
+ async onCreated() {
117
+ await super.onCreated();
118
+ if (this.state.srfnav) {
119
+ const expandedKeys = [];
120
+ this.state.srfnav.split(":").forEach((item, index) => {
121
+ if (index === 0) {
122
+ expandedKeys.push(item);
123
+ } else {
124
+ expandedKeys.push(`${expandedKeys[index - 1]}:${item}`);
125
+ }
126
+ });
127
+ expandedKeys.pop();
128
+ this.defaultExpandedKeys = expandedKeys;
129
+ }
130
+ }
107
131
  }
108
132
 
109
133
  exports.TreeExpBarController = TreeExpBarController;
@@ -34,10 +34,11 @@ const FormMDCtrlForm = /* @__PURE__ */ vue.defineComponent({
34
34
  const renderContent = () => {
35
35
  if (c.controlModel && c.provider) {
36
36
  return c.state.data.map((item, index) => {
37
- var _a;
38
37
  const tempContext = c.parent.form.context.clone();
39
- const codeName = runtime.calcDeCodeNameById((_a = c.model.contentControl) == null ? void 0 : _a.appDataEntityId);
40
- tempContext[codeName] = item.srfkey;
38
+ if (c.model.contentControl) {
39
+ const codeName = runtime.calcDeCodeNameById(c.model.contentControl.appDataEntityId);
40
+ tempContext[codeName] = item.srfkey;
41
+ }
41
42
  const controlProps = {
42
43
  modelData: c.controlModel,
43
44
  context: tempContext,
@@ -56,9 +56,9 @@ const FormPage = /* @__PURE__ */ vue.defineComponent({
56
56
  label: () => {
57
57
  return vue.createVNode("span", {
58
58
  "class": c.labelClass
59
- }, [c.model.sysImage && vue.createVNode(vue.resolveComponent("iBizIcon"), {
59
+ }, [c.model.sysImage ? vue.createVNode(vue.resolveComponent("iBizIcon"), {
60
60
  "icon": c.model.sysImage
61
- }, null), c.model.showCaption && c.model.caption]);
61
+ }, null) : null, c.model.caption]);
62
62
  }
63
63
  });
64
64
  })) ? _slot : {
@@ -89,11 +89,41 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
89
89
  });
90
90
  const tableData = vue.computed(() => {
91
91
  const state = c.state;
92
+ if (c.model.enableGroup) {
93
+ const result = [];
94
+ state.groups.forEach((item) => {
95
+ if (!item.children.length) {
96
+ return;
97
+ }
98
+ const children = [...item.children];
99
+ const first = children.shift();
100
+ result.push({
101
+ srfkey: (first == null ? void 0 : first.srfkey) || item.caption,
102
+ isGroupData: true,
103
+ caption: item.caption,
104
+ first,
105
+ children
106
+ });
107
+ });
108
+ return result;
109
+ }
92
110
  return state.rows.map((row) => row.data);
93
111
  });
94
112
  const renderColumns = vue.computed(() => {
95
- var _a;
96
- return ((_a = c.model.degridColumns) == null ? void 0 : _a.filter((item) => !item.hideDefault)) || [];
113
+ if (c.isMultistageHeader) {
114
+ return c.model.degridColumns || [];
115
+ }
116
+ const columns = [];
117
+ c.state.columnStates.forEach((item) => {
118
+ if (item.hidden) {
119
+ return;
120
+ }
121
+ const columnModel = c.fieldColumns[item.key].model;
122
+ if (columnModel) {
123
+ columns.push(columnModel);
124
+ }
125
+ });
126
+ return columns;
97
127
  });
98
128
  const renderNoData = () => {
99
129
  const {
@@ -101,6 +131,18 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
101
131
  } = c.state;
102
132
  return isLoaded && vue.createVNode(vue.resolveComponent("iBizNoData"), null, null);
103
133
  };
134
+ const summaryMethod = ({
135
+ columns,
136
+ data
137
+ }) => {
138
+ console.log(columns, data);
139
+ return columns.map((item, index) => {
140
+ if (index === 0) {
141
+ return c.aggTitle;
142
+ }
143
+ return c.state.aggResult[item.property];
144
+ });
145
+ };
104
146
  return {
105
147
  c,
106
148
  ns,
@@ -115,7 +157,8 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
115
157
  onPageSizeChange,
116
158
  onPageRefresh,
117
159
  handleRowClassName,
118
- renderNoData
160
+ renderNoData,
161
+ summaryMethod
119
162
  };
120
163
  },
121
164
  render() {
@@ -128,6 +171,9 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
128
171
  } = this.c.model;
129
172
  const renderColumn = (model, index) => {
130
173
  var _a;
174
+ if (model.hideDefault) {
175
+ return null;
176
+ }
131
177
  const {
132
178
  codeName: columnName,
133
179
  width
@@ -146,16 +192,19 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
146
192
  "align": ((_a = model.align) == null ? void 0 : _a.toLowerCase()) || "center"
147
193
  }), {
148
194
  default: ({
149
- row,
150
- $index
195
+ row
151
196
  }) => {
152
- const rowController = state.rows[$index];
153
- if (rowController) {
197
+ let elRow = row;
198
+ if (row.isGroupData) {
199
+ elRow = row.first;
200
+ }
201
+ const rowState = state.rows.find((item) => item.data.srfkey === elRow.srfkey);
202
+ if (rowState) {
154
203
  const comp = vue.resolveComponent(this.c.providers[columnName].component);
155
204
  return vue.h(comp, {
156
205
  controller: columnC,
157
- row: rowController,
158
- key: row.srfkey + columnName
206
+ row: rowState,
207
+ key: elRow.srfkey + columnName
159
208
  });
160
209
  }
161
210
  return null;
@@ -185,7 +234,7 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
185
234
  return renderColumn(model, index);
186
235
  };
187
236
  return vue.createVNode(vue.resolveComponent("iBizControlBase"), {
188
- "class": [this.ns.is("show-header", !hideHeader), this.ns.is("enable-page", enablePagingBar)],
237
+ "class": [this.ns.is("show-header", !hideHeader), this.ns.is("enable-page", enablePagingBar), this.ns.is("enable-group", this.c.model.enableGroup)],
189
238
  "controller": this.c
190
239
  }, {
191
240
  default: () => [vue.createVNode(vue.resolveComponent("el-table"), {
@@ -197,8 +246,11 @@ const GridControl = /* @__PURE__ */ vue.defineComponent({
197
246
  },
198
247
  "border": true,
199
248
  "show-header": !hideHeader,
249
+ "show-summary": this.c.enableAgg,
250
+ "summary-method": this.summaryMethod,
200
251
  "highlight-current-row": state.singleSelect,
201
252
  "row-class-name": this.handleRowClassName,
253
+ "row-key": "srfkey",
202
254
  "data": this.tableData,
203
255
  "onRowClick": this.onRowClick,
204
256
  "onRowDblclick": this.onDbRowClick,
@@ -15,6 +15,20 @@ var __publicField = (obj, key, value) => {
15
15
  class GridController extends runtime.MDControlController {
16
16
  constructor() {
17
17
  super(...arguments);
18
+ /**
19
+ * 是否有配置宽度自适应列
20
+ *
21
+ * @type {boolean}
22
+ * @memberof GridController
23
+ */
24
+ __publicField(this, "hasAdaptiveColumn", false);
25
+ /**
26
+ * 是否有多级表头
27
+ * @author lxm
28
+ * @date 2023-08-07 02:26:16
29
+ * @type {boolean}
30
+ */
31
+ __publicField(this, "isMultistageHeader", false);
18
32
  /**
19
33
  * 所有表格列控制器集合
20
34
  *
@@ -56,12 +70,39 @@ class GridController extends runtime.MDControlController {
56
70
  */
57
71
  __publicField(this, "providers", {});
58
72
  /**
59
- * 是否有配置宽度自适应列
60
- *
61
- * @type {boolean}
62
- * @memberof GridController
73
+ * 分组属性列控制器
74
+ * @author lxm
75
+ * @date 2023-08-07 09:45:30
76
+ * @type {string}
63
77
  */
64
- __publicField(this, "hasAdaptiveColumn", false);
78
+ __publicField(this, "groupFieldColumn");
79
+ /**
80
+ * 聚合行标题
81
+ * @author lxm
82
+ * @date 2023-08-07 04:11:00
83
+ * @type {string}
84
+ */
85
+ __publicField(this, "aggTitle", "\u5408\u8BA1");
86
+ }
87
+ /**
88
+ * 分组代码表项集合
89
+ * @author lxm
90
+ * @date 2023-08-07 09:09:42
91
+ * @type {readonly}
92
+ */
93
+ get groupCodeListItems() {
94
+ var _a;
95
+ return (_a = this.groupFieldColumn) == null ? void 0 : _a.codeListItems;
96
+ }
97
+ /**
98
+ * 是否启用表格聚合
99
+ * @author lxm
100
+ * @date 2023-08-07 04:10:55
101
+ * @readonly
102
+ * @type {boolean}
103
+ */
104
+ get enableAgg() {
105
+ return this.model.aggMode !== "NONE";
65
106
  }
66
107
  initState() {
67
108
  super.initState();
@@ -69,6 +110,8 @@ class GridController extends runtime.MDControlController {
69
110
  this.state.noSort = this.model.noSort === true;
70
111
  this.state.size = this.model.pagingSize || 20;
71
112
  this.state.singleSelect = this.model.singleSelect === true;
113
+ this.state.columnStates = [];
114
+ this.state.aggResult = {};
72
115
  }
73
116
  /**
74
117
  * 初始化方法
@@ -91,6 +134,57 @@ class GridController extends runtime.MDControlController {
91
134
  200
92
135
  );
93
136
  this.setSort();
137
+ await this.initGroup();
138
+ }
139
+ /**
140
+ * 初始化表格分组
141
+ * @author lxm
142
+ * @date 2023-08-07 09:10:17
143
+ * @protected
144
+ * @return {*} {Promise<void>}
145
+ */
146
+ async initGroup() {
147
+ if (!this.model.enableGroup) {
148
+ return;
149
+ }
150
+ const { groupAppDEFieldId, groupCodeListId, groupMode } = this.model;
151
+ this.groupFieldColumn = Object.values(this.fieldColumns).find(
152
+ (item) => item.model.appDEFieldId === groupAppDEFieldId
153
+ );
154
+ if (!this.groupFieldColumn) {
155
+ throw new core.RuntimeModelError(this.model, "\u6CA1\u6709\u914D\u7F6E\u5206\u7EC4\u5C5E\u6027\u7684\u5C5E\u6027\u5217");
156
+ }
157
+ const groupFieldName = this.groupFieldColumn.model.id;
158
+ if (!this.groupFieldColumn.model.appCodeListId) {
159
+ throw new core.RuntimeModelError(
160
+ this.groupFieldColumn.model,
161
+ `\u5206\u7EC4\u5C5E\u6027\u7684\u5C5E\u6027\u5217${groupFieldName}\u6CA1\u6709\u914D\u7F6E\u4EE3\u7801\u8868`
162
+ );
163
+ }
164
+ const index = this.state.columnStates.findIndex(
165
+ (item) => item.key === this.groupFieldColumn.model.codeName
166
+ );
167
+ if (index !== -1 && index !== 0) {
168
+ if (this.isMultistageHeader) {
169
+ throw new core.RuntimeModelError(
170
+ this.model,
171
+ `\u8BF7\u5C06\u5206\u7EC4\u5C5E\u6027\u5217${groupFieldName}\u914D\u7F6E\u4E3A\u7B2C\u4E00\u5217`
172
+ );
173
+ }
174
+ const removeEls = this.state.columnStates.splice(index, 1);
175
+ this.state.columnStates.unshift(...removeEls);
176
+ }
177
+ if (groupMode === "CODELIST") {
178
+ if (!groupCodeListId) {
179
+ throw new core.RuntimeModelError(this.model, "\u4EE3\u7801\u8868\u5206\u7EC4\u6A21\u5F0F\u9700\u8981\u914D\u7F6E\u4EE3\u7801\u8868");
180
+ }
181
+ if (this.groupFieldColumn.model.appCodeListId !== groupCodeListId) {
182
+ throw new core.RuntimeModelError(
183
+ this.model,
184
+ `\u5206\u7EC4\u4EE3\u7801\u8868\u4E0E\u5C5E\u6027\u5217${groupFieldName}\u7684\u4EE3\u7801\u8868\u4E0D\u4E00\u81F4`
185
+ );
186
+ }
187
+ }
94
188
  }
95
189
  async afterLoad(args, items) {
96
190
  await super.afterLoad(args, items);
@@ -109,8 +203,92 @@ class GridController extends runtime.MDControlController {
109
203
  uaState.update(row.data.getOrigin(), this.model.appDataEntityId);
110
204
  });
111
205
  });
206
+ this.calcGroupData(items);
207
+ this.calcAggResult(items);
112
208
  return items;
113
209
  }
210
+ /**
211
+ * 计算分组数据
212
+ * @author lxm
213
+ * @date 2023-08-07 02:16:39
214
+ * @protected
215
+ * @param {IData[]} items
216
+ */
217
+ calcGroupData(items) {
218
+ const { enableGroup, groupMode } = this.model;
219
+ if (enableGroup) {
220
+ const groupMap = /* @__PURE__ */ new Map();
221
+ const codeListGroup = groupMode === "CODELIST";
222
+ const groupFiledName = this.groupFieldColumn.model.id;
223
+ if (codeListGroup) {
224
+ this.groupCodeListItems.forEach((item) => {
225
+ groupMap.set(item.value, []);
226
+ });
227
+ }
228
+ items.forEach((item) => {
229
+ const groupFieldValue = item[groupFiledName];
230
+ if (!codeListGroup && !groupMap.has(groupFieldValue)) {
231
+ groupMap.set(groupFieldValue, []);
232
+ }
233
+ if (groupMap.has(groupFieldValue)) {
234
+ groupMap.get(groupFieldValue).push(item);
235
+ }
236
+ });
237
+ this.state.groups = [];
238
+ groupMap.forEach((value, key) => {
239
+ const codeListItem = this.groupCodeListItems.find(
240
+ (item) => item.value === key
241
+ );
242
+ this.state.groups.push({
243
+ caption: (codeListItem == null ? void 0 : codeListItem.text) || `${key}`,
244
+ children: value
245
+ });
246
+ });
247
+ }
248
+ }
249
+ /**
250
+ * 加载远程聚合数据
251
+ * @author lxm
252
+ * @date 2023-08-07 05:35:36
253
+ * @protected
254
+ * @return {*} {Promise<void>}
255
+ */
256
+ async loadRemoteAgg() {
257
+ const { aggMode, aggAppDataEntityId, aggAppDEDataSetId } = this.model;
258
+ if (aggMode !== "ALL") {
259
+ return;
260
+ }
261
+ if (!aggAppDEDataSetId || !aggAppDataEntityId) {
262
+ throw new core.RuntimeModelError(this.model, "\u7F3A\u5C11\u914D\u7F6E\u805A\u5408\u5B9E\u4F53\u6216\u805A\u5408\u6570\u636E\u96C6");
263
+ }
264
+ const params = await this.getFetchParams();
265
+ const app = ibiz.hub.getApp(this.context.srfappid);
266
+ const res = await app.deService.exec(
267
+ aggAppDataEntityId,
268
+ aggAppDEDataSetId,
269
+ this.context,
270
+ void 0,
271
+ params
272
+ );
273
+ if (res.data.length) {
274
+ this.state.remoteAggResult = res.data[0];
275
+ }
276
+ }
277
+ /**
278
+ * 计算当前页的聚合数据
279
+ * @author lxm
280
+ * @date 2023-08-07 04:22:09
281
+ * @protected
282
+ * @param {IData[]} items
283
+ */
284
+ calcAggResult(items) {
285
+ Object.values(this.fieldColumns).forEach((column) => {
286
+ const result = column.calcFieldAgg(items);
287
+ if (result) {
288
+ this.state.aggResult[column.model.id] = result;
289
+ }
290
+ });
291
+ }
114
292
  /**
115
293
  * 后台删除结束后界面删除逻辑
116
294
  *
@@ -124,6 +302,16 @@ class GridController extends runtime.MDControlController {
124
302
  (item) => item.data.srfkey === data.srfkey
125
303
  );
126
304
  this.state.rows.splice(index, 1);
305
+ this.state.groups.forEach((item) => {
306
+ if (item.children.length) {
307
+ const findIndex = item.children.findIndex(
308
+ (item2) => item2.srfkey === data.srfkey
309
+ );
310
+ if (findIndex !== -1) {
311
+ item.children.splice(findIndex, 1);
312
+ }
313
+ }
314
+ });
127
315
  }
128
316
  /**
129
317
  * 新建行
@@ -162,6 +350,7 @@ class GridController extends runtime.MDControlController {
162
350
  }
163
351
  if (rowState.processing) {
164
352
  await core.awaitTimeout(500, this.save.bind(this), [data]);
353
+ return;
165
354
  }
166
355
  const isValid = await this.validate(rowState);
167
356
  if (!isValid) {
@@ -209,9 +398,15 @@ class GridController extends runtime.MDControlController {
209
398
  if (column.enableRowEdit) {
210
399
  this.editColumns[column.codeName] = controller;
211
400
  }
401
+ this.state.columnStates.push({
402
+ key: column.codeName,
403
+ caption: column.caption,
404
+ hidden: !!column.hideDefault
405
+ });
212
406
  } else if (column.columnType === "UAGRIDCOLUMN") {
213
407
  this.uaColumns[column.codeName] = controller;
214
408
  } else if (column.columnType === "GROUPGRIDCOLUMN") {
409
+ this.isMultistageHeader = true;
215
410
  await Promise.all(
216
411
  ((_a = column.degridColumns) == null ? void 0 : _a.map(async (childColumn) => {
217
412
  await this.initColumnsController(childColumn);
@@ -1 +1 @@
1
- .ibiz-control-grid{--ibiz-control-grid-text-color:var(--ibiz-color-text-0);--ibiz-control-grid-bg-color:transparent;--ibiz-control-grid-padding:0;--ibiz-control-grid-cell-padding:var(--ibiz-spacing-tight);--ibiz-control-grid-selection-padding:var(--ibiz-spacing-base-loose);--ibiz-control-grid-header-text-color:var(--ibiz-color-text-2);--ibiz-control-grid-header-cell-padding:var(--ibiz-control-grid-cell-padding);--ibiz-control-grid-header-height:auto;--ibiz-control-grid-content-text-color:var(--ibiz-control-grid-text-color);--ibiz-control-grid-content-item-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-control-grid-content-row-height:48px;--ibiz-control-grid-page-text-color:var(--ibiz-control-grid-text-color);--ibiz-control-grid-page-height:50px;--ibiz-control-grid-page-padding:0 var(--ibiz-spacing-base-tight);width:100%;height:100%;padding:var(--ibiz-control-grid-padding);background-color:var(--ibiz-control-grid-bg-color)}.ibiz-control-grid.is-enable-page .ibiz-control-grid__table{height:calc(100% - var(--ibiz-control-grid-page-height))}.ibiz-control-grid__table{width:100%;height:100%}.ibiz-control-grid__table .caret-wrapper{gap:3px;justify-content:center}.ibiz-control-grid__table .sort-caret{position:initial}.ibiz-control-grid__table.el-table .el-table__cell{padding:0}.ibiz-control-grid__table .el-table__header-wrapper .cell{height:var(--ibiz-control-grid-header-height);padding:var(--ibiz-control-grid-header-cell-padding);color:var(--ibiz-control-grid-header-text-color);word-break:break-word;white-space:pre-wrap}.ibiz-control-grid__table .el-table__header-wrapper .el-table-column--selection .cell{padding:var(--ibiz-control-grid-selection-padding)}.ibiz-control-grid__table .el-table__header-wrapper .is-sortable.el-table__cell .cell{display:flex;align-items:center;justify-content:var(--ibiz-grid-column-justify-content)}.ibiz-control-grid__table .el-table__body-wrapper{color:var(--ibiz-control-grid-content-text-color);border-bottom:.1px solid var(--ibiz-color-border)}.ibiz-control-grid__table .el-table__body-wrapper .el-table__row{height:var(--ibiz-control-grid-content-row-height);cursor:pointer}.ibiz-control-grid__table .el-table__body-wrapper .el-table__row>td{height:0}@-moz-document url-prefix(){.ibiz-control-grid__table .el-table__body-wrapper .el-table__row>td{height:100%}}.ibiz-control-grid__table .el-table__body-wrapper .cell{height:100%;padding:0}.ibiz-control-grid__table .el-table__body-wrapper .el-table-column--selection .cell{padding:var(--ibiz-control-grid-selection-padding)}.ibiz-control-grid__table .el-table__cell.is-center{--ibiz-grid-column-text-align:center;--ibiz-grid-column-justify-content:center}.ibiz-control-grid__table .el-table__cell.is-left{--ibiz-grid-column-text-align:left;--ibiz-grid-column-justify-content:flex-start}.ibiz-control-grid__table .el-table__cell.is-right{--ibiz-grid-column-text-align:right;--ibiz-grid-column-justify-content:flex-end}.ibiz-control-grid .ibiz-grid-page{display:flex;justify-content:flex-end;height:var(--ibiz-control-grid-page-height);padding:var(--ibiz-control-grid-page-padding)}.ibiz-control-grid .ibiz-grid-page .el-pagination{overflow:auto}
1
+ .ibiz-control-grid{--ibiz-control-grid-text-color:var(--ibiz-color-text-0);--ibiz-control-grid-bg-color:transparent;--ibiz-control-grid-padding:0;--ibiz-control-grid-cell-padding:var(--ibiz-spacing-tight);--ibiz-control-grid-selection-padding:var(--ibiz-spacing-base-loose);--ibiz-control-grid-header-text-color:var(--ibiz-color-text-2);--ibiz-control-grid-header-cell-padding:var(--ibiz-control-grid-cell-padding);--ibiz-control-grid-header-height:auto;--ibiz-control-grid-content-text-color:var(--ibiz-control-grid-text-color);--ibiz-control-grid-content-item-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-control-grid-content-row-height:48px;--ibiz-control-grid-page-text-color:var(--ibiz-control-grid-text-color);--ibiz-control-grid-page-height:50px;--ibiz-control-grid-page-padding:0 var(--ibiz-spacing-base-tight);width:100%;height:100%;padding:var(--ibiz-control-grid-padding);background-color:var(--ibiz-control-grid-bg-color)}.ibiz-control-grid.is-enable-page .ibiz-control-grid__table{height:calc(100% - var(--ibiz-control-grid-page-height))}.ibiz-control-grid.is-enable-group .el-table__indent{display:none}.ibiz-control-grid__table{width:100%;height:100%}.ibiz-control-grid__table .caret-wrapper{gap:3px;justify-content:center}.ibiz-control-grid__table .sort-caret{position:initial}.ibiz-control-grid__table.el-table .el-table__cell{padding:0}.ibiz-control-grid__table .el-table__header-wrapper .cell{height:var(--ibiz-control-grid-header-height);padding:var(--ibiz-control-grid-header-cell-padding);color:var(--ibiz-control-grid-header-text-color);word-break:break-word;white-space:pre-wrap}.ibiz-control-grid__table .el-table__header-wrapper .el-table-column--selection .cell{padding:var(--ibiz-control-grid-selection-padding)}.ibiz-control-grid__table .el-table__header-wrapper .is-sortable.el-table__cell .cell{display:flex;align-items:center;justify-content:var(--ibiz-grid-column-justify-content)}.ibiz-control-grid__table .el-table__body-wrapper{color:var(--ibiz-control-grid-content-text-color);border-bottom:.1px solid var(--ibiz-color-border)}.ibiz-control-grid__table .el-table__body-wrapper .el-table__row{height:var(--ibiz-control-grid-content-row-height);cursor:pointer}.ibiz-control-grid__table .el-table__body-wrapper .el-table__row>td{height:0}@-moz-document url-prefix(){.ibiz-control-grid__table .el-table__body-wrapper .el-table__row>td{height:100%}}.ibiz-control-grid__table .el-table__body-wrapper .cell{display:flex;align-items:center;height:100%;padding:0}.ibiz-control-grid__table .el-table__body-wrapper .el-table-column--selection .cell{padding:var(--ibiz-control-grid-selection-padding)}.ibiz-control-grid__table .el-table__cell.is-center{--ibiz-grid-column-text-align:center;--ibiz-grid-column-justify-content:center}.ibiz-control-grid__table .el-table__cell.is-left{--ibiz-grid-column-text-align:left;--ibiz-grid-column-justify-content:flex-start}.ibiz-control-grid__table .el-table__cell.is-right{--ibiz-grid-column-text-align:right;--ibiz-grid-column-justify-content:flex-end}.ibiz-control-grid .ibiz-grid-page{display:flex;justify-content:flex-end;height:var(--ibiz-control-grid-page-height);padding:var(--ibiz-control-grid-page-padding)}.ibiz-control-grid .ibiz-grid-page .el-pagination{overflow:auto}
@@ -166,6 +166,59 @@ class GridFieldColumnController extends gridColumn_controller.GridColumnControll
166
166
  this.codeListItems = dataItems;
167
167
  return dataItems;
168
168
  }
169
+ /**
170
+ * 计算聚合属性列的值
171
+ * 无配置返回undefined
172
+ * @author lxm
173
+ * @date 2023-08-07 04:50:47
174
+ * @param {IData[]} items
175
+ * @return {*} {(string | undefined)}
176
+ */
177
+ calcFieldAgg(items) {
178
+ const { aggField, aggMode, aggValueFormat } = this.model;
179
+ if (aggMode === "NONE") {
180
+ return;
181
+ }
182
+ const fieldName = aggField || this.model.id;
183
+ let aggValue;
184
+ if (this.grid.model.aggMode === "PAGE") {
185
+ switch (aggMode) {
186
+ case "SUM":
187
+ aggValue = items.map((item) => item[fieldName]).reduce((a, b) => a + b, 0);
188
+ break;
189
+ case "AVG":
190
+ aggValue = items.map((item) => item[fieldName]).reduce((a, b) => a + b, 0) / items.length;
191
+ break;
192
+ case "MAX":
193
+ aggValue = Math.max(...items.map((item) => item[fieldName]));
194
+ break;
195
+ case "MIN":
196
+ aggValue = Math.min(...items.map((item) => item[fieldName]));
197
+ break;
198
+ default:
199
+ throw new core.ModelError(this.model, `\u6682\u672A\u652F\u6301\u5C5E\u6027\u5217\u805A\u5408\u6A21\u5F0F${aggMode}`);
200
+ }
201
+ } else if (this.grid.model.aggMode === "ALL") {
202
+ throw new core.ModelError(this.model, `\u8FDC\u7A0B\u805A\u5408\u6682\u672A\u652F\u6301`);
203
+ } else {
204
+ throw new core.ModelError(
205
+ this.grid.model,
206
+ `\u6682\u672A\u652F\u6301\u805A\u5408\u6A21\u5F0F${this.grid.model.aggMode}`
207
+ );
208
+ }
209
+ if (!aggValueFormat) {
210
+ return `${aggValue}`;
211
+ }
212
+ const formatValue = "";
213
+ switch (aggValueFormat) {
214
+ default:
215
+ throw new core.ModelError(
216
+ this.model,
217
+ `\u6682\u672A\u652F\u6301${aggValueFormat}\u7684\u805A\u5408\u503C\u683C\u5F0F\u5316`
218
+ );
219
+ }
220
+ return formatValue;
221
+ }
169
222
  }
170
223
 
171
224
  exports.GridFieldColumnController = GridFieldColumnController;
@@ -1 +1 @@
1
- .ibiz-grid-field-column{--ibiz-grid-field-column-cell-padding:var(--ibiz-spacing-tight);--ibiz-grid-field-column-text-color:var(--ibiz-color-primary);display:flex;align-items:center;justify-content:var(--ibiz-grid-column-justify-content);width:100%;height:100%;padding:var(--ibiz-grid-field-column-cell-padding)}.ibiz-grid-field-column__text{word-break:break-word;white-space:pre-wrap}.ibiz-grid-field-column--clickable{color:var(--ibiz-grid-field-column-text-color);cursor:pointer}
1
+ .ibiz-grid-field-column{--ibiz-grid-field-column-cell-padding:var(--ibiz-spacing-tight);--ibiz-grid-field-column-text-color:var(--ibiz-color-primary);display:inline-flex;align-items:center;justify-content:var(--ibiz-grid-column-justify-content);width:auto;height:100%;padding:var(--ibiz-grid-field-column-cell-padding)}.ibiz-grid-field-column__text{word-break:break-word;white-space:pre-wrap}.ibiz-grid-field-column--clickable{color:var(--ibiz-grid-field-column-text-color);cursor:pointer}
@@ -1 +1 @@
1
- .ibiz-grid-edit-item{--ibiz-grid-edit-item-cell-hover-bg-color:var(--ibiz-color-fill-0);width:100%;height:100%}.ibiz-grid-edit-item.is-error .ibiz-grid-edit-item__tooltip{border:1px solid red}.ibiz-grid-edit-item__tooltip{display:flex;align-items:center;justify-content:var(--ibiz-grid-column-justify-content);width:100%;height:100%;text-align:var(--ibiz-grid-column-text-align)}.ibiz-grid-edit-item .ibiz-checkbox--readonly,.ibiz-grid-edit-item .ibiz-date-picker--readonly,.ibiz-grid-edit-item .ibiz-dropdown--readonly,.ibiz-grid-edit-item .ibiz-input--readonly,.ibiz-grid-edit-item .ibiz-mpicker--readonly,.ibiz-grid-edit-item .ibiz-picker--readonly,.ibiz-grid-edit-item .ibiz-picker-dropdown--readonly,.ibiz-grid-edit-item .ibiz-radio--readonly{color:var(--ibiz-color-text-0)}.ibiz-grid-edit-item--show-mask:hover{cursor:pointer;background-color:var(--ibiz-grid-edit-item-cell-hover-bg-color)}
1
+ .ibiz-grid-edit-item{--ibiz-grid-edit-item-cell-hover-bg-color:var(--ibiz-color-fill-0);width:100%;height:100%}.ibiz-grid-edit-item.is-error .ibiz-grid-edit-item__tooltip{border:1px solid red}.ibiz-grid-edit-item__tooltip{display:flex;align-items:center;justify-content:var(--ibiz-grid-column-justify-content);width:100%;height:100%;padding:var(--ibiz-spacing-tight);text-align:var(--ibiz-grid-column-text-align)}.ibiz-grid-edit-item .ibiz-checkbox--readonly,.ibiz-grid-edit-item .ibiz-date-picker--readonly,.ibiz-grid-edit-item .ibiz-dropdown--readonly,.ibiz-grid-edit-item .ibiz-input--readonly,.ibiz-grid-edit-item .ibiz-mpicker--readonly,.ibiz-grid-edit-item .ibiz-picker--readonly,.ibiz-grid-edit-item .ibiz-picker-dropdown--readonly,.ibiz-grid-edit-item .ibiz-radio--readonly{color:var(--ibiz-color-text-0)}.ibiz-grid-edit-item--show-mask:hover{cursor:pointer;background-color:var(--ibiz-grid-edit-item-cell-hover-bg-color)}