@ibiz-template/vue3-components 0.6.17 → 0.7.0

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 (94) hide show
  1. package/dist/chart-jfPZ04eU.js +1 -0
  2. package/dist/index-Wk7Kbc7Z.js +4 -0
  3. package/dist/index.min.css +1 -1
  4. package/dist/index.system.min.js +1 -1
  5. package/dist/{xlsx-util-tKOH6BvT.js → xlsx-util-keqImqNu.js} +1 -1
  6. package/es/common/pagination/pagination.d.ts +9 -0
  7. package/es/common/pagination/pagination.mjs +12 -2
  8. package/es/common/view-message/view-message.css +1 -1
  9. package/es/common/view-message/view-message.d.ts +27 -1
  10. package/es/common/view-message/view-message.mjs +130 -17
  11. package/es/control/chart/chart.css +1 -1
  12. package/es/control/chart/chart.d.ts +3 -1
  13. package/es/control/chart/chart.mjs +70 -6
  14. package/es/control/data-view/data-view.mjs +1 -0
  15. package/es/control/drbar/drbar.controller.d.ts +9 -0
  16. package/es/control/drbar/drbar.controller.mjs +16 -1
  17. package/es/control/drtab/drtab.controller.d.ts +9 -0
  18. package/es/control/drtab/drtab.controller.mjs +16 -1
  19. package/es/control/form/form-detail/form-mdctrl/form-mdctrl.css +1 -1
  20. package/es/control/form/form-detail/form-mdctrl/form-mdctrl.d.ts +2 -1
  21. package/es/control/form/form-detail/form-mdctrl/form-mdctrl.mjs +13 -4
  22. package/es/control/form/form-detail/form-mdctrl/index.d.ts +1 -0
  23. package/es/control/form/form-detail/form-rawitem/form-rawitem.d.ts +2 -1
  24. package/es/control/form/form-detail/form-rawitem/form-rawitem.mjs +31 -1
  25. package/es/control/form/form-detail/form-rawitem/index.d.ts +1 -0
  26. package/es/control/grid/grid/grid.mjs +1 -0
  27. package/es/control/list/list.mjs +1 -0
  28. package/es/control/search-bar/filter-tree/filter-tree.d.ts +3 -3
  29. package/es/control/search-bar/filter-tree/filter-tree.mjs +98 -37
  30. package/es/control/search-bar/index.d.ts +1 -0
  31. package/es/control/search-bar/index.mjs +2 -0
  32. package/es/control/search-bar/quick-search-select/quick-search-select.css +1 -0
  33. package/es/control/search-bar/quick-search-select/quick-search-select.d.ts +16 -0
  34. package/es/control/search-bar/quick-search-select/quick-search-select.mjs +72 -0
  35. package/es/control/search-bar/search-bar.css +1 -1
  36. package/es/control/search-bar/search-bar.d.ts +1 -0
  37. package/es/control/search-bar/search-bar.mjs +14 -3
  38. package/es/control/tree-grid/tree-grid.mjs +1 -0
  39. package/es/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.mjs +11 -3
  40. package/es/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs +13 -2
  41. package/es/editor/list-box/ibiz-list-box/ibiz-list-box.mjs +13 -5
  42. package/es/editor/raw/ibiz-raw/ibiz-raw.mjs +7 -0
  43. package/es/editor/user/ibiz-searchcond-edit/ibiz-searchcond-edit.mjs +3 -3
  44. package/es/panel-component/index.mjs +2 -0
  45. package/es/panel-component/panel-index-view-search/index.d.ts +1 -0
  46. package/es/panel-component/panel-index-view-search/panel-index-view-search.d.ts +1 -0
  47. package/es/panel-component/panel-index-view-search/panel-index-view-search.mjs +22 -2
  48. package/es/panel-component/view-msg-pos/index.d.ts +25 -0
  49. package/es/panel-component/view-msg-pos/index.mjs +16 -0
  50. package/es/panel-component/view-msg-pos/view-msg-pos.controller.d.ts +21 -0
  51. package/es/panel-component/view-msg-pos/view-msg-pos.controller.mjs +48 -0
  52. package/es/panel-component/view-msg-pos/view-msg-pos.d.ts +25 -0
  53. package/es/panel-component/view-msg-pos/view-msg-pos.mjs +47 -0
  54. package/es/panel-component/view-msg-pos/view-msg-pos.provider.d.ts +16 -0
  55. package/es/panel-component/view-msg-pos/view-msg-pos.provider.mjs +21 -0
  56. package/es/view-engine/index.mjs +4 -0
  57. package/es/view-engine/panel-view-engine.d.ts +2 -2
  58. package/es/web-app/App.mjs +9 -1
  59. package/lib/common/pagination/pagination.cjs +12 -2
  60. package/lib/common/view-message/view-message.cjs +129 -16
  61. package/lib/common/view-message/view-message.css +1 -1
  62. package/lib/control/chart/chart.cjs +69 -5
  63. package/lib/control/chart/chart.css +1 -1
  64. package/lib/control/data-view/data-view.cjs +1 -0
  65. package/lib/control/drbar/drbar.controller.cjs +16 -1
  66. package/lib/control/drtab/drtab.controller.cjs +16 -1
  67. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.cjs +13 -4
  68. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.css +1 -1
  69. package/lib/control/form/form-detail/form-rawitem/form-rawitem.cjs +30 -0
  70. package/lib/control/grid/grid/grid.cjs +1 -0
  71. package/lib/control/list/list.cjs +1 -0
  72. package/lib/control/search-bar/filter-tree/filter-tree.cjs +98 -37
  73. package/lib/control/search-bar/index.cjs +2 -0
  74. package/lib/control/search-bar/quick-search-select/quick-search-select.cjs +74 -0
  75. package/lib/control/search-bar/quick-search-select/quick-search-select.css +1 -0
  76. package/lib/control/search-bar/search-bar.cjs +14 -3
  77. package/lib/control/search-bar/search-bar.css +1 -1
  78. package/lib/control/tree-grid/tree-grid.cjs +1 -0
  79. package/lib/editor/check-box-list/ibiz-checkbox-list/ibiz-checkbox-list.cjs +11 -3
  80. package/lib/editor/dropdown-list/ibiz-dropdown/ibiz-dropdown.cjs +13 -2
  81. package/lib/editor/list-box/ibiz-list-box/ibiz-list-box.cjs +13 -5
  82. package/lib/editor/raw/ibiz-raw/ibiz-raw.cjs +7 -0
  83. package/lib/editor/user/ibiz-searchcond-edit/ibiz-searchcond-edit.cjs +2 -2
  84. package/lib/panel-component/index.cjs +2 -0
  85. package/lib/panel-component/panel-index-view-search/panel-index-view-search.cjs +21 -1
  86. package/lib/panel-component/view-msg-pos/index.cjs +22 -0
  87. package/lib/panel-component/view-msg-pos/view-msg-pos.cjs +49 -0
  88. package/lib/panel-component/view-msg-pos/view-msg-pos.controller.cjs +50 -0
  89. package/lib/panel-component/view-msg-pos/view-msg-pos.provider.cjs +23 -0
  90. package/lib/view-engine/index.cjs +4 -0
  91. package/lib/web-app/App.cjs +8 -0
  92. package/package.json +12 -12
  93. package/dist/chart-IsmrW_d0.js +0 -1
  94. package/dist/index-fN8w56IX.js +0 -4
@@ -1,4 +1,4 @@
1
- import { computed, resolveComponent, createVNode, defineComponent } from 'vue';
1
+ import { ref, computed, watch, resolveComponent, createVNode, defineComponent } from 'vue';
2
2
  import { useNamespace } from '@ibiz-template/vue3-util';
3
3
  import { FormRawItemController } from '@ibiz-template/runtime';
4
4
  import './form-rawitem.css';
@@ -18,14 +18,43 @@ const FormRawItem = /* @__PURE__ */ defineComponent({
18
18
  },
19
19
  setup(props) {
20
20
  const ns = useNamespace("form-raw-item");
21
+ const c = props.controller;
22
+ const content = ref("");
21
23
  const showFormDefaultContent = computed(() => {
22
24
  if (props.controller.form.controlParams && props.controller.form.controlParams.editmode === "hover") {
23
25
  return true;
24
26
  }
25
27
  return false;
26
28
  });
29
+ watch(() => c.data, async (newVal) => {
30
+ if (newVal) {
31
+ const rawItemModel = c.model.rawItem;
32
+ if (!rawItemModel) {
33
+ return;
34
+ }
35
+ let rawItemContent = "";
36
+ const obj = {
37
+ ...newVal
38
+ };
39
+ if (rawItemModel.contentType === "RAW") {
40
+ rawItemContent = rawItemModel.caption;
41
+ } else if (rawItemModel.contentType === "HTML") {
42
+ rawItemContent = rawItemModel.content;
43
+ }
44
+ if (rawItemContent && rawItemModel.templateMode) {
45
+ content.value = await ibiz.util.hbs.render(rawItemContent.replaceAll("//n", "\n"), Object.assign(obj, {
46
+ data: {
47
+ ...newVal
48
+ }
49
+ }));
50
+ }
51
+ }
52
+ }, {
53
+ immediate: true
54
+ });
27
55
  return {
28
56
  ns,
57
+ content,
29
58
  showFormDefaultContent
30
59
  };
31
60
  },
@@ -36,6 +65,7 @@ const FormRawItem = /* @__PURE__ */ defineComponent({
36
65
  return createVNode(resolveComponent("iBizRawItem"), {
37
66
  "class": [this.ns.b(), ...this.controller.containerClass, this.ns.is("show-default", this.showFormDefaultContent)],
38
67
  "rawItem": this.modelData,
68
+ "content": this.content,
39
69
  "onClick": (event) => this.controller.onClick(event)
40
70
  }, null);
41
71
  }
@@ -9,6 +9,7 @@ export declare const IBizFormRawItem: import("@ibiz-template/vue3-util").TypeWit
9
9
  };
10
10
  }, {
11
11
  ns: import("@ibiz-template/core").Namespace;
12
+ content: import("vue").Ref<string | number | undefined>;
12
13
  showFormDefaultContent: import("vue").ComputedRef<boolean>;
13
14
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
14
15
  modelData: {
@@ -292,6 +292,7 @@ const GridControl = /* @__PURE__ */ defineComponent({
292
292
  "total": state.total,
293
293
  "curPage": state.curPage,
294
294
  "size": state.size,
295
+ "totalPages": state.totalPages,
295
296
  "onChange": this.onPageChange,
296
297
  "onPageSizeChange": this.onPageSizeChange,
297
298
  "onPageRefresh": this.onPageRefresh
@@ -212,6 +212,7 @@ const ListControl = /* @__PURE__ */ defineComponent({
212
212
  "total": this.c.state.total,
213
213
  "curPage": this.c.state.curPage,
214
214
  "size": this.c.state.size,
215
+ "totalPages": this.c.state.totalPages,
215
216
  "onChange": this.onPageChange,
216
217
  "onPageSizeChange": this.onPageSizeChange,
217
218
  "onPageRefresh": this.onPageRefresh
@@ -1,4 +1,4 @@
1
- import { IFilterBranchNode, IFilterLeafNode, IFilterNode, SearchBarFilterController, SearchBarFilterItemsController } from '@ibiz-template/runtime';
1
+ import { IFilterNodeGroup, IFilterNodeField, IFilterNode, SearchBarFilterController, SearchBarFilterItemsController, IFilterNodeItems } from '@ibiz-template/runtime';
2
2
  import { PropType } from 'vue';
3
3
  import './filter-tree.scss';
4
4
  /** 不需要编辑器的OP */
@@ -27,8 +27,8 @@ export declare const FilterTreeControl: import("vue").DefineComponent<{
27
27
  };
28
28
  }, {
29
29
  ns: import("@ibiz-template/core").Namespace;
30
- renderFilterGroup: (node: IFilterBranchNode, itemsC?: SearchBarFilterItemsController) => JSX.Element;
31
- renderFilterItem: (node: IFilterLeafNode, itemsC?: SearchBarFilterItemsController) => JSX.Element;
30
+ renderFilterGroup: (node: IFilterNodeGroup | IFilterNodeItems, itemsC?: SearchBarFilterItemsController) => any;
31
+ renderFilterItem: (node: IFilterNodeField, itemsC?: SearchBarFilterItemsController) => JSX.Element | undefined;
32
32
  onConfirm: () => void;
33
33
  onCancel: () => void;
34
34
  isInSearchBar: import("vue").ComputedRef<boolean>;
@@ -2,6 +2,7 @@ import { isVNode, computed, resolveComponent, h, createVNode, createTextVNode, d
2
2
  import { ValueOP } from '@ibiz-template/runtime';
3
3
  import { useNamespace } from '@ibiz-template/vue3-util';
4
4
  import './filter-tree.css';
5
+ import { clearAll } from 'qx-util';
5
6
 
6
7
  "use strict";
7
8
  function _isSlot(s) {
@@ -90,33 +91,49 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
90
91
  const UiFilterNodes = computed(() => {
91
92
  return props.filterNodes;
92
93
  });
93
- const findFilterController = (fieldName, valueOP) => {
94
+ const findFilterController = (node) => {
95
+ if (node.nodeType === "ITEMS" && node.simple) {
96
+ const subNode = node.children[0];
97
+ return props.filterControllers.find((item) => {
98
+ if (item.type === "SIMPLE_ITEMS") {
99
+ const simpleC = item;
100
+ if (simpleC.fieldName === node.field && simpleC.valueOP === node.valueOP && simpleC.subFieldName === subNode.field && simpleC.subValueOP === subNode.valueOP) {
101
+ return true;
102
+ }
103
+ }
104
+ return false;
105
+ });
106
+ }
107
+ const {
108
+ field,
109
+ valueOP
110
+ } = node;
94
111
  return props.filterControllers.find((item) => {
95
- if (item.fieldName === fieldName) {
112
+ if (item.type === "SIMPLE_ITEMS") {
113
+ return false;
114
+ }
115
+ if (item.fieldName === field) {
96
116
  return item.valueOP ? item.valueOP === valueOP : true;
97
117
  }
98
118
  return false;
99
119
  });
100
120
  };
101
121
  const allFields = [];
102
- const getFilterModes = (fieldName, fieldInfos = allFields) => {
103
- if (!fieldName) {
104
- return;
105
- }
106
- const field = fieldInfos.find((item) => item.name === fieldName);
107
- if (!field) {
122
+ props.filterControllers.forEach((filterC) => {
123
+ let find = allFields.find((x) => x.name === filterC.key);
124
+ if (filterC.hidden) {
108
125
  return;
109
126
  }
110
- return field.valueOPs;
111
- };
112
- props.filterControllers.forEach((filterC) => {
113
- let find = allFields.find((x) => x.name === filterC.fieldName);
114
127
  if (find === void 0) {
115
128
  find = {
116
- name: filterC.fieldName,
129
+ name: filterC.key,
130
+ fieldName: filterC.fieldName,
117
131
  label: filterC.label,
118
132
  valueOPs: []
119
133
  };
134
+ if (filterC.type === "SIMPLE_ITEMS") {
135
+ find.simpleFilterC = filterC;
136
+ }
120
137
  allFields.push(find);
121
138
  }
122
139
  if (!filterC.valueOP) {
@@ -125,25 +142,38 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
125
142
  find.valueOPs.push(filterC.valueOP);
126
143
  }
127
144
  });
128
- const onFieldSelect = (node, field) => {
129
- node.value = null;
130
- node.valueOP = null;
131
- node.field = field;
132
- Object.assign(node, {
133
- leaf: true,
134
- logicType: void 0,
135
- children: void 0
136
- });
145
+ const getFilterModes = (fieldName, fieldInfos = allFields) => {
146
+ if (!fieldName) {
147
+ return;
148
+ }
149
+ const field = fieldInfos.find((item) => item.name === fieldName);
150
+ if (!field) {
151
+ return;
152
+ }
153
+ return field.valueOPs;
154
+ };
155
+ const onFieldSelect = (node, key, fields = allFields) => {
156
+ const fieldInfo = fields.find((item) => item.name === key);
157
+ if (!fieldInfo) {
158
+ ibiz.log.error("allFields\u627E\u4E0D\u5230\u5C5E\u6027\u6807\u8BC6\u4E3A".concat(key, "\u7684"));
159
+ return;
160
+ }
161
+ clearAll(node);
162
+ if (fieldInfo.simpleFilterC) {
163
+ fieldInfo.simpleFilterC.addSimpleFilterNode(node);
164
+ return;
165
+ }
166
+ node.nodeType = "FIELD";
167
+ node.field = fieldInfo.fieldName;
137
168
  };
138
169
  const onValueOPSelect = (node, valueOP) => {
139
170
  node.valueOP = valueOP;
140
171
  node.value = null;
141
172
  if (["EXISTS", "NOTEXISTS"].includes(valueOP)) {
142
173
  Object.assign(node, {
143
- leaf: false,
144
- logicType: "ITEMS",
174
+ nodeType: "ITEMS",
145
175
  children: [{
146
- leaf: true,
176
+ nodeType: "FIELD",
147
177
  field: null,
148
178
  valueOP: null,
149
179
  value: null
@@ -151,8 +181,7 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
151
181
  });
152
182
  } else {
153
183
  Object.assign(node, {
154
- leaf: true,
155
- logicType: void 0,
184
+ nodeType: "FIELD",
156
185
  children: void 0
157
186
  });
158
187
  }
@@ -162,10 +191,10 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
162
191
  };
163
192
  const addGroup = (node) => {
164
193
  node.children.push({
165
- leaf: false,
194
+ nodeType: "GROUP",
166
195
  logicType: "AND",
167
196
  children: [{
168
- leaf: true,
197
+ nodeType: "FIELD",
169
198
  field: null,
170
199
  valueOP: null,
171
200
  value: null
@@ -174,7 +203,7 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
174
203
  };
175
204
  const addItem = (node) => {
176
205
  node.children.push({
177
- leaf: true,
206
+ nodeType: "FIELD",
178
207
  field: null,
179
208
  valueOP: null,
180
209
  value: null
@@ -212,6 +241,9 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
212
241
  };
213
242
  const renderFilterItem = (node, itemsC) => {
214
243
  let _slot;
244
+ if (node.hidden) {
245
+ return;
246
+ }
215
247
  let fieldInfos = allFields;
216
248
  if (itemsC) {
217
249
  fieldInfos = itemsC.allFields;
@@ -223,7 +255,7 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
223
255
  const subFilterC = itemsC.getSubFilterController(node.field, node.valueOP);
224
256
  editor = renderEditor(node, subFilterC);
225
257
  } else {
226
- const filterC = findFilterController(node.field, node.valueOP);
258
+ const filterC = findFilterController(node);
227
259
  if (filterC && !["EXISTS", "NOTEXISTS"].includes(filterC.valueOP)) {
228
260
  editor = renderEditor(node, filterC);
229
261
  }
@@ -237,7 +269,7 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
237
269
  "teleported": false,
238
270
  "class": ns.e("field-select"),
239
271
  "onChange": (field) => {
240
- onFieldSelect(node, field);
272
+ onFieldSelect(node, field, fieldInfos);
241
273
  }
242
274
  }, _isSlot(_slot = fieldInfos.map((field) => {
243
275
  return createVNode(resolveComponent("el-option"), {
@@ -259,7 +291,10 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
259
291
  };
260
292
  let renderFilterItems = (_node) => createVNode("div", null, null);
261
293
  const renderFilterGroup = (node, itemsC) => {
262
- if (node.logicType === "ITEMS") {
294
+ if (node.hidden) {
295
+ return;
296
+ }
297
+ if (node.nodeType === "ITEMS") {
263
298
  return renderFilterItems(node);
264
299
  }
265
300
  return createVNode("div", {
@@ -301,7 +336,10 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
301
336
  })]), createVNode("div", {
302
337
  "class": ns.be("group", "list")
303
338
  }, [node.children.length > 0 && node.children.map((child, index) => {
304
- const childContent = child.leaf ? renderFilterItem(child, itemsC) : renderFilterGroup(child, itemsC);
339
+ const childContent = child.nodeType === "FIELD" ? renderFilterItem(child, itemsC) : renderFilterGroup(child, itemsC);
340
+ if (!childContent) {
341
+ return null;
342
+ }
305
343
  return createVNode("div", {
306
344
  "class": ns.be("group", "list-item")
307
345
  }, [createVNode("div", {
@@ -318,7 +356,30 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
318
356
  })])]);
319
357
  };
320
358
  renderFilterItems = (node) => {
321
- const itemsC = findFilterController(node.field, node.valueOP);
359
+ const itemsC = findFilterController(node);
360
+ if (node.simple) {
361
+ let _slot2;
362
+ const child = node.children[0];
363
+ if (!child) {
364
+ return;
365
+ }
366
+ return [createVNode(resolveComponent("el-select"), {
367
+ "model-value": itemsC.key,
368
+ "teleported": false,
369
+ "class": ns.e("field-select"),
370
+ "onChange": (field) => {
371
+ onFieldSelect(node, field);
372
+ }
373
+ }, _isSlot(_slot2 = allFields.map((field) => {
374
+ return createVNode(resolveComponent("el-option"), {
375
+ "key": field.name,
376
+ "value": field.name,
377
+ "label": field.label
378
+ }, null);
379
+ })) ? _slot2 : {
380
+ default: () => [_slot2]
381
+ }), renderEditor(child, itemsC)];
382
+ }
322
383
  return createVNode("div", {
323
384
  "class": (ns.b("group"), ns.bm("group", "items"))
324
385
  }, [createVNode("div", {
@@ -333,7 +394,7 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
333
394
  })]), createVNode("div", {
334
395
  "class": ns.be("group", "list")
335
396
  }, [node.children.length > 0 && node.children.map((child, index) => {
336
- const childContent = child.leaf ? renderFilterItem(child, itemsC) : renderFilterGroup(child, itemsC);
397
+ const childContent = child.nodeType === "FIELD" ? renderFilterItem(child, itemsC) : renderFilterGroup(child, itemsC);
337
398
  return createVNode("div", {
338
399
  "class": ns.be("group", "list-item")
339
400
  }, [createVNode("div", {
@@ -369,7 +430,7 @@ const FilterTreeControl = /* @__PURE__ */ defineComponent({
369
430
  return createVNode("div", {
370
431
  "class": [this.ns.b()]
371
432
  }, [this.UiFilterNodes.length > 0 && this.UiFilterNodes.map((node) => {
372
- if (node.leaf) {
433
+ if (node.nodeType === "FIELD") {
373
434
  return this.renderFilterItem(node);
374
435
  }
375
436
  return this.renderFilterGroup(node);
@@ -25,6 +25,7 @@ export declare const IBizSearchBarControl: import("@ibiz-template/vue3-util").Ty
25
25
  onGroupClick: (item: import("@ibiz/model-core").ISearchBarGroup) => void;
26
26
  triggerFilter: () => void;
27
27
  handleSave: () => void;
28
+ renderAdvancedSearch: () => JSX.Element | null;
28
29
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
29
30
  modelData: {
30
31
  type: import("vue").PropType<import("@ibiz/model-core").ISearchBar>;
@@ -5,6 +5,7 @@ import { SearchBarProvider } from './search-bar.provider.mjs';
5
5
  import { FilterTreeControl } from './filter-tree/filter-tree.mjs';
6
6
  import { FilterModeSelect } from './filter-mode-select/filter-mode-select.mjs';
7
7
  import { SearchGroups } from './search-groups/search-groups.mjs';
8
+ import { QuickSearchSelect } from './quick-search-select/quick-search-select.mjs';
8
9
 
9
10
  "use strict";
10
11
  const IBizSearchBarControl = withInstall(
@@ -14,6 +15,7 @@ const IBizSearchBarControl = withInstall(
14
15
  v.component(FilterTreeControl.name, FilterTreeControl);
15
16
  v.component(FilterModeSelect.name, FilterModeSelect);
16
17
  v.component(SearchGroups.name, SearchGroups);
18
+ v.component(QuickSearchSelect.name, QuickSearchSelect);
17
19
  registerControlProvider(
18
20
  ControlType.SEARCHBAR,
19
21
  () => new SearchBarProvider()
@@ -0,0 +1 @@
1
+ .ibiz-quick-search-select{width:40px;height:100%;color:var(--ibiz-color-white);cursor:pointer;background-color:var(--ibiz-color-primary);border-top-left-radius:var(--el-input-border-radius);border-bottom-left-radius:var(--el-input-border-radius)}.ibiz-quick-search-select:hover{background-color:var(--ibiz-color-primary-hover)}.ibiz-quick-search-select__icon{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.ibiz-quick-search-select-popover{--ibiz-quick-search-select-item-text-color:var(--ibiz-color-text-2);--ibiz-quick-search-select-item-bg-color:var(--ibiz-color-bg-1);--ibiz-quick-search-select-item-hover-text-color:var(--ibiz-color-text-0);--ibiz-quick-search-select-item-hover-bg-color:var(--ibiz-color-fill-0);--ibiz-quick-search-select-item-selected-text-color:var(--ibiz-color-primary);--ibiz-quick-search-select-item-selected-bg-color:var(--ibiz-color-bg-1)}.ibiz-quick-search-select-popover.el-popper.el-dropdown__popper .el-scrollbar .el-dropdown__list{background-color:var(--ibiz-color-bg-1)}.ibiz-quick-search-select-popover.el-popper.el-dropdown__popper .el-scrollbar .el-dropdown__list .el-dropdown-menu{background-color:var(--ibiz-color-bg-1)}.ibiz-quick-search-select-popover.el-popper.el-dropdown__popper .el-scrollbar .el-dropdown__list .el-dropdown-menu__item{color:var(--ibiz-quick-search-select-item-text-color);background-color:var(--ibiz-quick-search-select-item-bg-color)}.ibiz-quick-search-select-popover.el-popper.el-dropdown__popper .el-scrollbar .el-dropdown__list .el-dropdown-menu__item:hover{color:var(--ibiz-quick-search-select-item-hover-text-color);background-color:var(--ibiz-quick-search-select-item-hover-bg-color)}.ibiz-quick-search-select-popover__item--selected{font-weight:700;--ibiz-quick-search-select-item-text-color:var(--ibiz-quick-search-select-item-selected-text-color);--ibiz-quick-search-select-item-bg-color:var(--ibiz-quick-search-select-item-selected-bg-color)}
@@ -0,0 +1,16 @@
1
+ import { IQuickSearchItem, SearchBarController } from '@ibiz-template/runtime';
2
+ import './quick-search-select.scss';
3
+ export declare const QuickSearchSelect: import("vue").DefineComponent<{
4
+ controller: {
5
+ type: typeof SearchBarController;
6
+ required: true;
7
+ };
8
+ }, {
9
+ ns: import("@ibiz-template/core").Namespace;
10
+ onItemClick: (item: IQuickSearchItem) => void;
11
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
12
+ controller: {
13
+ type: typeof SearchBarController;
14
+ required: true;
15
+ };
16
+ }>>, {}, {}>;
@@ -0,0 +1,72 @@
1
+ import { isVNode, resolveComponent, createVNode, defineComponent } from 'vue';
2
+ import { SearchBarController } from '@ibiz-template/runtime';
3
+ import { useNamespace } from '@ibiz-template/vue3-util';
4
+ import './quick-search-select.css';
5
+
6
+ "use strict";
7
+ function _isSlot(s) {
8
+ return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
9
+ }
10
+ const QuickSearchSelect = /* @__PURE__ */ defineComponent({
11
+ name: "IBizQuickSearchSelect",
12
+ props: {
13
+ controller: {
14
+ type: SearchBarController,
15
+ required: true
16
+ }
17
+ },
18
+ setup(props) {
19
+ const ns = useNamespace("quick-search-select");
20
+ const onItemClick = (item) => {
21
+ const key = item.fieldName;
22
+ const {
23
+ quickSearchFieldNames
24
+ } = props.controller.state;
25
+ const index = quickSearchFieldNames.indexOf(key);
26
+ if (index === -1) {
27
+ quickSearchFieldNames.push(key);
28
+ } else {
29
+ quickSearchFieldNames.splice(index, 1);
30
+ }
31
+ props.controller.calcQuickSearchPlaceHolder();
32
+ };
33
+ return {
34
+ ns,
35
+ onItemClick
36
+ };
37
+ },
38
+ render() {
39
+ const {
40
+ state
41
+ } = this.controller;
42
+ return createVNode(resolveComponent("el-dropdown"), {
43
+ "onCommand": this.onItemClick,
44
+ "trigger": "click",
45
+ "hide-on-click": false,
46
+ "class": [this.ns.b()],
47
+ "popper-class": [this.ns.b("popover")]
48
+ }, {
49
+ default: () => createVNode("div", {
50
+ "class": this.ns.e("icon")
51
+ }, [createVNode("ion-icon", {
52
+ "name": "settings-outline"
53
+ }, null)]),
54
+ dropdown: () => {
55
+ let _slot;
56
+ return createVNode(resolveComponent("el-dropdown-menu"), null, _isSlot(_slot = state.quickSearchItems.map((item) => {
57
+ const isSelected = state.quickSearchFieldNames.includes(item.fieldName);
58
+ return createVNode(resolveComponent("el-dropdown-item"), {
59
+ "class": [this.ns.be("popover", "item"), isSelected && this.ns.bem("popover", "item", "selected")],
60
+ "command": item
61
+ }, {
62
+ default: () => [item.label]
63
+ });
64
+ })) ? _slot : {
65
+ default: () => [_slot]
66
+ });
67
+ }
68
+ });
69
+ }
70
+ });
71
+
72
+ export { QuickSearchSelect };
@@ -1 +1 @@
1
- @charset "UTF-8";.ibiz-control-searchbar{--ibiz-control-searchbar-quick-search-width:220px;--ibiz-control-searchbar-quick-group-item-padding:var(--ibiz-spacing-tight);--ibiz-control-searchbar-quick-group-item-margin:var(--ibiz-spacing-tight);display:flex;align-items:center;justify-content:flex-start;height:100%}.ibiz-control-searchbar .ibiz-control-searchbar-quick-search{width:var(--ibiz-control-searchbar-quick-search-width);margin-left:var(--ibiz-spacing-base-tight);font-size:14px;color:var(--ibiz-text-color);background:var(--ibiz-color-white);border:1px solid var(--ibiz-border-color);border-radius:4px}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group{height:100%;overflow-x:auto;white-space:nowrap}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group .ibiz-control-searchbar-quick-group-item{position:relative;display:inline-block;height:100%;padding:var(--ibiz-control-searchbar-quick-group-item-padding);margin-right:var(--ibiz-control-searchbar-quick-group-item-margin);font-size:var(--ibiz-font-size-regular);cursor:pointer}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group .ibiz-control-searchbar-quick-group-item.is-selected::after{position:absolute;bottom:2px;left:0;width:100%;height:2px;content:"";background-color:var(--ibiz-color-primary)}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group .ibiz-control-searchbar-quick-group-item:hover{color:var(--ibiz-color-primary)}.ibiz-control-searchbar .el-input__icon{cursor:pointer}.ibiz-control-searchbar-filter{margin-right:var(--ibiz-spacing-extra-tight);margin-left:var(--ibiz-spacing-base-tight)}.ibiz-control-searchbar-save{margin-left:var(--ibiz-spacing-base-tight)}
1
+ @charset "UTF-8";.ibiz-control-searchbar{--ibiz-control-searchbar-quick-search-width:220px;--ibiz-control-searchbar-quick-group-item-padding:var(--ibiz-spacing-tight);--ibiz-control-searchbar-quick-group-item-margin:var(--ibiz-spacing-tight);display:flex;align-items:center;justify-content:flex-start;height:100%}.ibiz-control-searchbar .ibiz-control-searchbar-quick-search{width:var(--ibiz-control-searchbar-quick-search-width);margin-left:var(--ibiz-spacing-base-tight);font-size:14px;color:var(--ibiz-text-color);background:var(--ibiz-color-white);border:1px solid var(--ibiz-border-color);border-radius:4px}.ibiz-control-searchbar .ibiz-control-searchbar-quick-search .el-input-group__prepend,.ibiz-control-searchbar .ibiz-control-searchbar-quick-search.el-input-group__append{padding:0}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group{height:100%;overflow-x:auto;white-space:nowrap}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group .ibiz-control-searchbar-quick-group-item{position:relative;display:inline-block;height:100%;padding:var(--ibiz-control-searchbar-quick-group-item-padding);margin-right:var(--ibiz-control-searchbar-quick-group-item-margin);font-size:var(--ibiz-font-size-regular);cursor:pointer}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group .ibiz-control-searchbar-quick-group-item.is-selected::after{position:absolute;bottom:2px;left:0;width:100%;height:2px;content:"";background-color:var(--ibiz-color-primary)}.ibiz-control-searchbar .ibiz-control-searchbar-quick-group .ibiz-control-searchbar-quick-group-item:hover{color:var(--ibiz-color-primary)}.ibiz-control-searchbar .el-input__icon{cursor:pointer}.ibiz-control-searchbar-filter{margin-right:var(--ibiz-spacing-extra-tight);margin-left:var(--ibiz-spacing-base-tight)}.ibiz-control-searchbar-save{margin-left:var(--ibiz-spacing-base-tight)}
@@ -29,6 +29,7 @@ export declare const SearchBarControl: import("vue").DefineComponent<{
29
29
  onGroupClick: (item: ISearchBarGroup) => void;
30
30
  triggerFilter: () => void;
31
31
  handleSave: () => void;
32
+ renderAdvancedSearch: () => JSX.Element | null;
32
33
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
33
34
  modelData: {
34
35
  type: PropType<ISearchBar>;
@@ -94,6 +94,14 @@ const SearchBarControl = /* @__PURE__ */ defineComponent({
94
94
  const handleSave = () => {
95
95
  c.handleSave();
96
96
  };
97
+ const renderAdvancedSearch = () => {
98
+ if (!c.state.advancedQuickSearch) {
99
+ return null;
100
+ }
101
+ return createVNode(resolveComponent("iBizQuickSearchSelect"), {
102
+ "controller": c
103
+ }, null);
104
+ };
97
105
  return {
98
106
  c,
99
107
  ns,
@@ -104,7 +112,8 @@ const SearchBarControl = /* @__PURE__ */ defineComponent({
104
112
  onKeydown,
105
113
  onGroupClick,
106
114
  triggerFilter,
107
- handleSave
115
+ handleSave,
116
+ renderAdvancedSearch
108
117
  };
109
118
  },
110
119
  render() {
@@ -137,7 +146,7 @@ const SearchBarControl = /* @__PURE__ */ defineComponent({
137
146
  "modelValue": this.c.state.query,
138
147
  "onUpdate:modelValue": ($event) => this.c.state.query = $event,
139
148
  "class": this.ns.b("quick-search"),
140
- "placeholder": this.c.placeHolder,
149
+ "placeholder": this.c.state.quickSearchPlaceHolder,
141
150
  "clearable": true,
142
151
  "onKeydown": this.onKeydown,
143
152
  "onClear": this.onClear,
@@ -146,7 +155,9 @@ const SearchBarControl = /* @__PURE__ */ defineComponent({
146
155
  "class": this.ns.e("search-icon"),
147
156
  "name": "search"
148
157
  }, null)
149
- }, null), this.c.enableFilter && createVNode(resolveComponent("el-button"), {
158
+ }, {
159
+ prepend: () => this.renderAdvancedSearch()
160
+ }), this.c.enableFilter && createVNode(resolveComponent("el-button"), {
150
161
  "ref": "filterButtonRef",
151
162
  "type": "primary",
152
163
  "title": "\u8FC7\u6EE4",
@@ -237,6 +237,7 @@ const TreeGridControl = /* @__PURE__ */ defineComponent({
237
237
  "total": state.total,
238
238
  "curPage": state.curPage,
239
239
  "size": state.size,
240
+ "totalPages": state.totalPages,
240
241
  "onChange": this.onPageChange,
241
242
  "onPageSizeChange": this.onPageSizeChange,
242
243
  "onPageRefresh": this.onPageRefresh
@@ -59,7 +59,7 @@ const IBizCheckboxList = /* @__PURE__ */ defineComponent({
59
59
  const strVal = props.value;
60
60
  if (strVal !== "") {
61
61
  if (codeList) {
62
- const selects = strVal.split(valueSeparator);
62
+ const selects = c.model.valueType === "SIMPLES" ? strVal : strVal.split(valueSeparator);
63
63
  if (codeList.codeItemValueNumber) {
64
64
  for (let i = 0, len = selects.length; i < len; i++) {
65
65
  selects[i] = Number(selects[i]);
@@ -81,7 +81,11 @@ const IBizCheckboxList = /* @__PURE__ */ defineComponent({
81
81
  const numVal = typeof item === "string" ? parseInt(item, 10) : item;
82
82
  temp |= numVal;
83
83
  });
84
- value = temp;
84
+ if (c.model.valueType === "SIMPLES") {
85
+ value = [temp];
86
+ } else if (c.model.valueType === "SIMPLE") {
87
+ value = temp;
88
+ }
85
89
  } else if (Object.is(currentMode.value, "str")) {
86
90
  const _datas = [];
87
91
  if (items.value.length > 0) {
@@ -92,7 +96,11 @@ const IBizCheckboxList = /* @__PURE__ */ defineComponent({
92
96
  }
93
97
  _datas.push(_item.value);
94
98
  });
95
- value = _datas.join(valueSeparator);
99
+ if (c.model.valueType === "SIMPLES") {
100
+ value = _datas;
101
+ } else if (c.model.valueType === "SIMPLE") {
102
+ value = _datas.join(valueSeparator);
103
+ }
96
104
  }
97
105
  }
98
106
  emit("change", value);
@@ -109,14 +109,25 @@ const IBizDropdown = /* @__PURE__ */ defineComponent({
109
109
  if (editorItems && editorItems.length > 0 && !c.multiple) {
110
110
  return props.data[editorItems[0].id];
111
111
  }
112
- if (props.value) {
112
+ if (props.value && typeof props.value === "string") {
113
113
  return c.multiple ? (_a = props.value) == null ? void 0 : _a.toString().split(",") : props.value.toString();
114
114
  }
115
+ if (props.value && Array.isArray(props.value)) {
116
+ return c.multiple ? props.value : props.value.toString();
117
+ }
115
118
  return (_b = props.value) == null ? void 0 : _b.toString();
116
119
  },
117
120
  set(select) {
118
121
  if (Array.isArray(select)) {
119
- emit("change", select.length === 0 ? null : select.join(","));
122
+ let selectArr = null;
123
+ if (select.length === 0) {
124
+ selectArr = null;
125
+ } else if (c.model.valueType === "SIMPLES") {
126
+ selectArr = select;
127
+ } else {
128
+ selectArr = select.join(",");
129
+ }
130
+ emit("change", selectArr);
120
131
  } else if (editorItems && editorItems.length > 0) {
121
132
  emit("change", select, editorItems[0].id);
122
133
  const selectItem = getCodeListItemByValue(select);
@@ -77,8 +77,8 @@ const IBizListBox = /* @__PURE__ */ defineComponent({
77
77
  });
78
78
  } else if (Object.is(currentMode.value, "str")) {
79
79
  if (newVal !== "") {
80
- if (codeList && typeof newVal === "string") {
81
- selectsArray = newVal.split(valueSeparator);
80
+ if (codeList && (typeof newVal === "string" || Array.isArray(newVal))) {
81
+ selectsArray = Array.isArray(newVal) ? newVal : newVal.split(valueSeparator);
82
82
  if (codeList.codeItemValueNumber) {
83
83
  for (let i = 0, len = selectsArray.length; i < len; i++) {
84
84
  selectsArray[i] = Number(selectsArray[i]);
@@ -89,7 +89,7 @@ const IBizListBox = /* @__PURE__ */ defineComponent({
89
89
  }
90
90
  } else if (editorType === "LISTBOXPICKUP") {
91
91
  if (newVal !== "") {
92
- selectsArray = newVal.split(valueSeparator);
92
+ selectsArray = c.model.valueType === "SIMPLES" && Array.isArray(newVal) ? newVal : newVal.split(valueSeparator);
93
93
  }
94
94
  }
95
95
  selectArray.value = selectsArray;
@@ -115,10 +115,18 @@ const IBizListBox = /* @__PURE__ */ defineComponent({
115
115
  });
116
116
  _value = temp;
117
117
  } else if (Object.is(currentMode, "str")) {
118
- _value = values.join(valueSeparator);
118
+ if (c.model.valueType === "SIMPLES") {
119
+ _value = values;
120
+ } else if (c.model.valueType === "SIMPLE") {
121
+ _value = values.join(valueSeparator);
122
+ }
119
123
  }
120
124
  } else if (Object.is("LISTBOXPICKUP", editorType)) {
121
- _value = values.join(valueSeparator);
125
+ if (c.model.valueType === "SIMPLES") {
126
+ _value = values;
127
+ } else if (c.model.valueType === "SIMPLE") {
128
+ _value = values.join(valueSeparator);
129
+ }
122
130
  }
123
131
  } else {
124
132
  _value = value;