@ibiz-template/vue3-components 0.6.0-alpha.2 → 0.6.0-alpha.4

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 (66) hide show
  1. package/dist/index-wFXNmg_E.js +4 -0
  2. package/dist/index.min.css +1 -1
  3. package/dist/index.system.min.js +1 -1
  4. package/dist/{xlsx-util-GpIzYBZB.js → xlsx-util-HHmyYumg.js} +1 -1
  5. package/es/common/data-import2/data-import2.mjs +3 -1
  6. package/es/common/doing-notice/doing-notice.css +1 -1
  7. package/es/common/doing-notice/doing-notice.mjs +1 -1
  8. package/es/common/grid-setting/grid-setting.d.ts +1 -0
  9. package/es/control/caption-bar/caption-bar.mjs +10 -1
  10. package/es/control/drbar/drbar.controller.mjs +3 -0
  11. package/es/control/form/form-detail/form-item/form-item.mjs +1 -0
  12. package/es/control/search-bar/filter-tree/filter-tree.d.ts +2 -0
  13. package/es/control/search-bar/filter-tree/filter-tree.mjs +3 -2
  14. package/es/control/tab-exp-panel/tab-exp-panel.mjs +9 -21
  15. package/es/control/toolbar/export-excel/export-excel.css +1 -1
  16. package/es/control/toolbar/export-excel/export-excel.d.ts +8 -0
  17. package/es/control/toolbar/export-excel/export-excel.mjs +81 -4
  18. package/es/control/toolbar/index.d.ts +9 -0
  19. package/es/control/toolbar/toolbar.css +1 -1
  20. package/es/control/toolbar/toolbar.d.ts +9 -0
  21. package/es/control/toolbar/toolbar.mjs +65 -38
  22. package/es/control/tree/tree.css +1 -1
  23. package/es/control/tree/tree.mjs +5 -3
  24. package/es/control/tree-grid-ex/index.d.ts +1 -0
  25. package/es/control/tree-grid-ex/tree-grid-ex.d.ts +1 -0
  26. package/es/control/tree-grid-ex/tree-grid-ex.mjs +8 -0
  27. package/es/editor/color-picker/ibiz-color-picker/ibiz-color-picker.d.ts +1 -0
  28. package/es/editor/color-picker/ibiz-color-picker/ibiz-color-picker.mjs +5 -1
  29. package/es/editor/data-picker/ibiz-picker/ibiz-picker.mjs +2 -2
  30. package/es/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.mjs +1 -1
  31. package/es/editor/span/span/span.css +1 -1
  32. package/es/panel-component/nav-pos-index/nav-pos-index.controller.mjs +1 -0
  33. package/es/panel-component/user-message/internal-message/common/internal-message-default/internal-message-default.provider.mjs +3 -17
  34. package/es/util/app-modal/app-modal-component.d.ts +0 -1
  35. package/es/util/app-modal/app-modal-component.mjs +3 -9
  36. package/es/view-engine/edit-view.engine.d.ts +8 -0
  37. package/es/view-engine/edit-view.engine.mjs +114 -39
  38. package/es/view-engine/opt-view.engine.mjs +4 -0
  39. package/es/web-app/components/modal-router-shell/modal-router-shell.mjs +3 -3
  40. package/lib/common/data-import2/data-import2.cjs +3 -1
  41. package/lib/common/doing-notice/doing-notice.cjs +1 -1
  42. package/lib/common/doing-notice/doing-notice.css +1 -1
  43. package/lib/control/caption-bar/caption-bar.cjs +9 -0
  44. package/lib/control/drbar/drbar.controller.cjs +3 -0
  45. package/lib/control/form/form-detail/form-item/form-item.cjs +1 -0
  46. package/lib/control/search-bar/filter-tree/filter-tree.cjs +3 -1
  47. package/lib/control/tab-exp-panel/tab-exp-panel.cjs +8 -20
  48. package/lib/control/toolbar/export-excel/export-excel.cjs +81 -4
  49. package/lib/control/toolbar/export-excel/export-excel.css +1 -1
  50. package/lib/control/toolbar/toolbar.cjs +65 -38
  51. package/lib/control/toolbar/toolbar.css +1 -1
  52. package/lib/control/tree/tree.cjs +5 -3
  53. package/lib/control/tree/tree.css +1 -1
  54. package/lib/control/tree-grid-ex/tree-grid-ex.cjs +8 -0
  55. package/lib/editor/color-picker/ibiz-color-picker/ibiz-color-picker.cjs +5 -1
  56. package/lib/editor/data-picker/ibiz-picker/ibiz-picker.cjs +1 -1
  57. package/lib/editor/data-picker/ibiz-picker-dropdown/ibiz-picker-dropdown.cjs +1 -1
  58. package/lib/editor/span/span/span.css +1 -1
  59. package/lib/panel-component/nav-pos-index/nav-pos-index.controller.cjs +1 -0
  60. package/lib/panel-component/user-message/internal-message/common/internal-message-default/internal-message-default.provider.cjs +2 -16
  61. package/lib/util/app-modal/app-modal-component.cjs +3 -9
  62. package/lib/view-engine/edit-view.engine.cjs +113 -38
  63. package/lib/view-engine/opt-view.engine.cjs +4 -0
  64. package/lib/web-app/components/modal-router-shell/modal-router-shell.cjs +2 -2
  65. package/package.json +5 -5
  66. package/dist/index-V5mBTTSl.js +0 -4
@@ -1,6 +1,6 @@
1
1
  import { ref, computed, watch, onMounted, resolveComponent, createVNode, defineComponent } from 'vue';
2
2
  import { getDataPickerProps, getEditorEmits, useNamespace, renderString } from '@ibiz-template/vue3-util';
3
- import { isEmpty } from 'ramda';
3
+ import { isEmpty, isNil } from 'ramda';
4
4
  import './ibiz-picker.css';
5
5
 
6
6
  "use strict";
@@ -161,7 +161,7 @@ const IBizPicker = /* @__PURE__ */ defineComponent({
161
161
  onMounted(() => {
162
162
  watch(() => props.data[c.valueItem], async (newVal, oldVal) => {
163
163
  if (newVal !== oldVal) {
164
- if (!isLoaded.value && editorRef.value) {
164
+ if (!isLoaded.value && editorRef.value && isNil(props.value)) {
165
165
  await onSearch("");
166
166
  }
167
167
  const curItem = items.value.find((item) => Object.is(item[c.keyName], newVal));
@@ -89,7 +89,7 @@ const IBizPickerDropDown = /* @__PURE__ */ defineComponent({
89
89
  onMounted(() => {
90
90
  watch(() => props.data[c.valueItem], async (newVal, oldVal) => {
91
91
  if (newVal !== oldVal) {
92
- if (!isLoaded.value && editorRef.value) {
92
+ if (!isLoaded.value && editorRef.value && isNil(props.value)) {
93
93
  shouldLoad.value = true;
94
94
  await onSearch("");
95
95
  }
@@ -1 +1 @@
1
- .ibiz-span{display:inline-block;font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-form-item-line-height);color:var(--ibiz-form-item-text-color);white-space:pre-line}.ibiz-span--readonly{color:var(--ibiz-form-item-readonly-color)}.ibiz-span__code-list{display:inline-block;height:100%}.ibiz-form-item .ibiz-span.is-show-default{padding:var(--ibiz-form-item-hover-edit-padding)}
1
+ .ibiz-span{display:inline-block;font-size:var(--ibiz-form-item-font-size);line-height:var(--ibiz-form-item-line-height);color:var(--ibiz-form-item-text-color);white-space:pre-line}.ibiz-span--readonly{color:var(--ibiz-form-item-readonly-color)}.ibiz-span__code-list{height:100%}.ibiz-form-item .ibiz-span.is-show-default{padding:var(--ibiz-form-item-hover-edit-padding)}
@@ -245,6 +245,7 @@ class NavPosIndexController extends PanelItemController {
245
245
  indexPath += "/".concat(route.params["view".concat(index)], "/").concat(ibiz.env.routePlaceholder);
246
246
  }
247
247
  this.router.push(indexPath);
248
+ ibiz.util.setBrowserTitle("");
248
249
  }
249
250
  }
250
251
  }
@@ -1,5 +1,5 @@
1
1
  import { IBizContext } from '@ibiz-template/core';
2
- import { OpenAppViewCommand } from '@ibiz-template/runtime';
2
+ import { parseViewProtocol, OpenAppViewCommand } from '@ibiz-template/runtime';
3
3
  import { h } from 'vue';
4
4
  import { InternalMessageDefault } from './internal-message-default.mjs';
5
5
 
@@ -39,25 +39,11 @@ class InternalMessageDefaultProvider {
39
39
  */
40
40
  async openRedirectView(msg, redirectUrl) {
41
41
  await ibiz.hub.notice.internalMessage.markRead(msg);
42
- let viewId = "";
43
- const params = {};
44
- const url = new URL(redirectUrl);
45
- if (url.searchParams.size > 0) {
46
- url.searchParams.forEach((value, _key) => {
47
- params[_key] = value;
48
- });
49
- }
50
- const rdTagItems = url.pathname.replace("//", "").split("/");
51
- const [appOrViewTag, viewTag] = rdTagItems;
52
- if (viewTag) {
53
- viewId = viewTag;
54
- } else {
55
- viewId = appOrViewTag;
56
- }
42
+ const { viewId, context, params } = parseViewProtocol(redirectUrl);
57
43
  ibiz.commands.execute(
58
44
  OpenAppViewCommand.TAG,
59
45
  viewId,
60
- IBizContext.create({}),
46
+ IBizContext.create(context),
61
47
  params
62
48
  );
63
49
  }
@@ -21,7 +21,6 @@ export declare const AppModalComponent: import("vue").DefineComponent<{
21
21
  modal: Modal;
22
22
  present: () => void;
23
23
  dismiss: (_data?: IModalData) => void;
24
- onClosed: () => void;
25
24
  onBeforeClose: (done: () => void) => Promise<void>;
26
25
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
27
26
  opts: {
@@ -16,7 +16,6 @@ const AppModalComponent = /* @__PURE__ */ defineComponent({
16
16
  setup(props, ctx) {
17
17
  const ns = useNamespace("modal");
18
18
  const isShow = ref(false);
19
- let data;
20
19
  const {
21
20
  zIndex
22
21
  } = useUIStore();
@@ -50,10 +49,10 @@ const AppModalComponent = /* @__PURE__ */ defineComponent({
50
49
  const modal = new Modal({
51
50
  mode: ViewMode.MODAL,
52
51
  viewUsage: 2,
53
- dismiss: (_data) => {
52
+ dismiss: (data) => {
54
53
  zIndex.decrement();
55
54
  isShow.value = false;
56
- data = _data;
55
+ ctx.emit("dismiss", data);
57
56
  }
58
57
  });
59
58
  const onBeforeClose = async (done) => {
@@ -68,9 +67,6 @@ const AppModalComponent = /* @__PURE__ */ defineComponent({
68
67
  const present = () => {
69
68
  isShow.value = true;
70
69
  };
71
- const onClosed = () => {
72
- ctx.emit("dismiss", data);
73
- };
74
70
  return {
75
71
  ns,
76
72
  isShow,
@@ -80,7 +76,6 @@ const AppModalComponent = /* @__PURE__ */ defineComponent({
80
76
  modal,
81
77
  present,
82
78
  dismiss,
83
- onClosed,
84
79
  onBeforeClose
85
80
  };
86
81
  },
@@ -92,8 +87,7 @@ const AppModalComponent = /* @__PURE__ */ defineComponent({
92
87
  class: [this.ns.b(), this.options.placement && this.ns.m(this.options.placement), this.options.modalClass],
93
88
  style: this.customStyle,
94
89
  zIndex: this.modalZIndex,
95
- onClosed: this.onClosed,
96
- onBeforeClose: this.onBeforeClose,
90
+ beforeClose: this.onBeforeClose,
97
91
  ...this.options
98
92
  }, (_b = (_a = this.$slots).default) == null ? void 0 : _b.call(_a, this.modal));
99
93
  }
@@ -21,6 +21,7 @@ export declare class EditViewEngine extends ViewEngineBase {
21
21
  * @type {string}
22
22
  */
23
23
  deName: string;
24
+ protected init(): void;
24
25
  onCreated(): Promise<void>;
25
26
  onMounted(): Promise<void>;
26
27
  getData(): IData[];
@@ -69,4 +70,11 @@ export declare class EditViewEngine extends ViewEngineBase {
69
70
  * @return {*} {void}
70
71
  */
71
72
  initMarkOpenData(): void;
73
+ /**
74
+ * 刷新确认
75
+ * @author lxm
76
+ * @date 2024-02-06 11:40:36
77
+ * @return {*} {Promise<boolean>}
78
+ */
79
+ reloadConfirm(): Promise<boolean>;
72
80
  }
@@ -1,5 +1,5 @@
1
1
  import { RuntimeError } from '@ibiz-template/core';
2
- import { ViewEngineBase, calcDeCodeNameById, SysUIActionTag, ViewCallTag, ControlVO, getAppViewRef, OpenAppViewCommand } from '@ibiz-template/runtime';
2
+ import { ViewEngineBase, getControl, getControlsByView, calcDeCodeNameById, SysUIActionTag, ViewCallTag, ControlVO, getAppViewRef, OpenAppViewCommand } from '@ibiz-template/runtime';
3
3
  import { isNil } from 'ramda';
4
4
 
5
5
  "use strict";
@@ -23,6 +23,27 @@ class EditViewEngine extends ViewEngineBase {
23
23
  get form() {
24
24
  return this.view.getController("form");
25
25
  }
26
+ init() {
27
+ super.init();
28
+ if (this.view.model.multiFormMode === 1 && this.view.params.srfdatatype) {
29
+ const model = getControl(
30
+ this.view.model,
31
+ "_form_".concat(this.view.params.srfdatatype)
32
+ );
33
+ if (model) {
34
+ const controls = getControlsByView(this.view.model).filter((item) => {
35
+ return item.controlType !== "FORM";
36
+ });
37
+ model.name = "form";
38
+ controls.push(model);
39
+ if (this.view.model.viewLayoutPanel) {
40
+ this.view.model.viewLayoutPanel.controls = controls;
41
+ } else {
42
+ this.view.model.controls = controls;
43
+ }
44
+ }
45
+ }
46
+ }
26
47
  async onCreated() {
27
48
  await super.onCreated();
28
49
  const { childNames, modal } = this.view;
@@ -32,8 +53,12 @@ class EditViewEngine extends ViewEngineBase {
32
53
  this.view.slotProps.form = {};
33
54
  }
34
55
  this.view.slotProps.form.loadDefault = false;
56
+ if (!this.view.slotProps.toolbar) {
57
+ this.view.slotProps.toolbar = {};
58
+ }
59
+ this.view.slotProps.toolbar.manualCalcButtonState = true;
35
60
  modal.hooks.shouldDismiss.tapPromise(async (context) => {
36
- if (this.form.state.modified) {
61
+ if (this.form.state.modified && this.view.model.enableDirtyChecking === true) {
37
62
  const isAllow = await ibiz.confirm.error({
38
63
  title: "\u5173\u95ED\u63D0\u9192",
39
64
  desc: "\u8868\u5355\u6570\u636E\u5DF2\u7ECF\u4FEE\u6539\uFF0C\u786E\u5B9A\u8981\u5173\u95ED\uFF1F"
@@ -242,11 +267,12 @@ class EditViewEngine extends ViewEngineBase {
242
267
  * @return {*} {void}
243
268
  */
244
269
  initMarkOpenData() {
245
- if (isNil(this.view.modal.routeDepth)) {
270
+ if (isNil(this.view.modal.routeDepth) || !this.view.model.markOpenDataMode) {
246
271
  return;
247
272
  }
248
- let srfkey;
249
- const callback = (data) => {
273
+ const modes = this.view.model.markOpenDataMode.split(";");
274
+ let hasOpenConfirm = false;
275
+ const callback = async (data) => {
250
276
  if (!this.view.state.activated) {
251
277
  return;
252
278
  }
@@ -267,44 +293,93 @@ class EditViewEngine extends ViewEngineBase {
267
293
  }
268
294
  ibiz.notification.info({
269
295
  position: "bottom-right",
270
- title: data.username,
271
- desc: "".concat(actionMsg, " ").concat(this.view.state.caption, "-").concat(dataInfo)
272
- });
273
- };
274
- this.form.evt.on("onLoadSuccess", (event) => {
275
- const formData = event.data[0];
276
- srfkey = formData.srfkey;
277
- ibiz.markOpenData.action(this.deName, srfkey, "VIEW");
278
- ibiz.markOpenData.subscribe(this.deName, srfkey, callback);
279
- this.view.evt.on("onDestroyed", () => {
280
- ibiz.markOpenData.unsubscribe(this.deName, srfkey, callback);
296
+ title: "\u901A\u77E5",
297
+ desc: "".concat(modes.includes("DISPLAYOPPERSON") ? data.username : "\u6709\u4EBA", " ").concat(actionMsg, " ").concat(this.view.state.caption, "-").concat(dataInfo)
281
298
  });
282
- });
283
- let isWait = false;
284
- const actionEdit = () => {
285
- if (!srfkey || isWait) {
286
- return;
299
+ if (hasOpenConfirm === false && data.action === "UPDATE" && modes.includes("NOTICERELOAD")) {
300
+ hasOpenConfirm = true;
301
+ const isReload = await this.reloadConfirm();
302
+ if (isReload) {
303
+ this.refresh();
304
+ }
305
+ hasOpenConfirm = false;
287
306
  }
288
- isWait = true;
289
- ibiz.markOpenData.action(this.deName, srfkey, "EDIT");
290
- setTimeout(
291
- () => {
292
- isWait = false;
293
- },
294
- 1e3 * 60 * 5
295
- );
296
307
  };
297
- this.form.evt.on("onFormDataChange", actionEdit);
298
- this.form.evt.on("onSaveSuccess", () => {
299
- if (srfkey) {
300
- ibiz.markOpenData.action(this.deName, srfkey, "UPDATE");
301
- }
302
- });
303
- this.view.evt.on("onCloseView", () => {
304
- if (srfkey) {
305
- ibiz.markOpenData.action(this.deName, srfkey, "CLOSE");
306
- }
308
+ const doActions = [];
309
+ if (modes.includes("EDITDATA") || modes.includes("DISPLAYOPPERSON") || modes.includes("NOTICERELOAD")) {
310
+ doActions.push("EDIT", "VIEW", "UPDATE", "CLOSE");
311
+ } else if (modes.includes("OPENDATA")) {
312
+ doActions.push("VIEW", "CLOSE");
313
+ }
314
+ if (doActions.length === 0) {
315
+ return;
316
+ }
317
+ let srfkey;
318
+ let hasSubscribe = false;
319
+ if (doActions.includes("VIEW")) {
320
+ this.form.evt.on("onLoadSuccess", (event) => {
321
+ const formData = event.data[0];
322
+ srfkey = formData.srfkey;
323
+ ibiz.markOpenData.action(this.deName, srfkey, "VIEW");
324
+ if (!hasSubscribe) {
325
+ ibiz.markOpenData.subscribe(this.deName, srfkey, callback);
326
+ this.view.evt.on("onDestroyed", () => {
327
+ ibiz.markOpenData.unsubscribe(this.deName, srfkey, callback);
328
+ });
329
+ hasSubscribe = true;
330
+ }
331
+ });
332
+ }
333
+ if (doActions.includes("EDIT")) {
334
+ let isWait = false;
335
+ const actionEdit = () => {
336
+ if (!srfkey || isWait) {
337
+ return;
338
+ }
339
+ isWait = true;
340
+ ibiz.markOpenData.action(this.deName, srfkey, "EDIT");
341
+ setTimeout(
342
+ () => {
343
+ isWait = false;
344
+ },
345
+ 1e3 * 60 * 5
346
+ );
347
+ };
348
+ this.form.evt.on("onFormDataChange", actionEdit);
349
+ }
350
+ if (doActions.includes("UPDATE")) {
351
+ this.form.evt.on("onSaveSuccess", () => {
352
+ if (srfkey) {
353
+ ibiz.markOpenData.action(this.deName, srfkey, "UPDATE");
354
+ }
355
+ });
356
+ }
357
+ if (doActions.includes("CLOSE")) {
358
+ this.view.evt.on("onCloseView", () => {
359
+ if (srfkey) {
360
+ ibiz.markOpenData.action(this.deName, srfkey, "CLOSE");
361
+ }
362
+ });
363
+ }
364
+ }
365
+ /**
366
+ * 刷新确认
367
+ * @author lxm
368
+ * @date 2024-02-06 11:40:36
369
+ * @return {*} {Promise<boolean>}
370
+ */
371
+ async reloadConfirm() {
372
+ const result = await ibiz.confirm.info({
373
+ title: "\u662F\u5426\u5237\u65B0",
374
+ desc: "\u6570\u636E\u5DF2\u88AB\u4FEE\u6539\u662F\u5426\u5237\u65B0\u9875\u9762\uFF1F"
307
375
  });
376
+ if (result && this.form.state.modified) {
377
+ return ibiz.confirm.warning({
378
+ title: "\u5237\u65B0\u63D0\u9192",
379
+ desc: "\u8868\u5355\u6570\u636E\u5DF2\u7ECF\u4FEE\u6539\uFF0C\u786E\u5B9A\u8981\u5237\u65B0\uFF1F"
380
+ });
381
+ }
382
+ return result;
308
383
  }
309
384
  }
310
385
 
@@ -25,6 +25,10 @@ class OptViewEngine extends ViewEngineBase {
25
25
  this.view.slotProps.form = {};
26
26
  }
27
27
  this.view.slotProps.form.loadDefault = false;
28
+ if (!this.view.slotProps.toolbar) {
29
+ this.view.slotProps.toolbar = {};
30
+ }
31
+ this.view.slotProps.toolbar.manualCalcButtonState = true;
28
32
  modal.hooks.shouldDismiss.tapPromise(async (context) => {
29
33
  if (this.form.state.modified) {
30
34
  const isAllow = await ibiz.confirm.error({
@@ -1,4 +1,4 @@
1
- import { ref, toRaw, onUnmounted, createTextVNode, createVNode, defineComponent } from 'vue';
1
+ import { ref, toRaw, onUnmounted, createVNode, defineComponent } from 'vue';
2
2
  import { parseRouteViewData, createOverlayView } from '@ibiz-template/vue3-util';
3
3
  import { useRoute, useRouter } from 'vue-router';
4
4
  import { IBizContext } from '@ibiz-template/core';
@@ -111,8 +111,8 @@ const ModalRouterShell = /* @__PURE__ */ defineComponent({
111
111
  },
112
112
  render() {
113
113
  return createVNode("div", {
114
- "style": "width: 0;height: 0;"
115
- }, [createTextVNode("\u8DEF\u7531\u6A21\u6001\u5360\u4F4D")]);
114
+ "style": "position: absolute;width: 0;height: 0;"
115
+ }, null);
116
116
  }
117
117
  });
118
118
 
@@ -454,7 +454,9 @@ const DataImport2 = /* @__PURE__ */ vue.defineComponent({
454
454
  }), this.previewinfo[0] && this.previewinfo[0].length ? vue.createVNode("div", {
455
455
  "class": "ibiz-control-toolbar__item"
456
456
  }, [vue.createVNode(vue.resolveComponent("el-button"), {
457
- "onClick": this.onButtonImportClick
457
+ "onClick": this.onButtonImportClick,
458
+ "disabled": !this.selectValues.join(""),
459
+ "title": !this.selectValues.join("") ? "\u8BF7\u9009\u62E9\u5217\u5BFC\u5165\u5C5E\u6027!" : ""
458
460
  }, _isSlot(_slot2 = ibiz.i18n.t("component.dataImport2.import")) ? _slot2 : {
459
461
  default: () => [_slot2]
460
462
  })]) : ""])])])]), vue.createVNode(vue.resolveComponent("data-import2-table"), {
@@ -26,7 +26,7 @@ const DoingNotice = /* @__PURE__ */ vue.defineComponent({
26
26
  "class": this.ns.e("text")
27
27
  }, [vue.createTextVNode("\u6709"), vue.createVNode("span", {
28
28
  "class": this.ns.e("num")
29
- }, [this.info.num]), vue.createTextVNode("\u4E2A\u5F02\u6B65\u64CD\u4F5C\u6B63\u5728\u6267\u884C\uFF0C\u8BF7\u7A0D\u540E")]), vue.createVNode("svg", {
29
+ }, [this.info.num]), vue.createTextVNode("\u4E2A\u540E\u53F0\u4F5C\u4E1A\u6B63\u5728\u6267\u884C\uFF0C\u8BF7\u7A0D\u540E")]), vue.createVNode("svg", {
30
30
  "class": this.ns.e("loading-icon"),
31
31
  "viewBox": "-10, -10, 50, 50"
32
32
  }, [vue.createVNode("path", {
@@ -1 +1 @@
1
- .ibiz-async-action-notice.el-notification{width:auto}.ibiz-async-action-notice.el-notification .el-notification__group{margin:0}.ibiz-async-action-notice.el-notification .el-notification__closeBtn{top:5px;right:5px}.ibiz-doing-notice__text{margin-right:8px}.ibiz-doing-notice__num{margin:0 8px;font-size:18px;font-weight:700;color:var(--ibiz-color-danger)}.ibiz-doing-notice__loading-icon{width:18px;height:18px;margin-right:6px;vertical-align:middle;animation:loading-rotate 2s linear infinite}.ibiz-doing-notice__loading-icon .path{stroke:var(--ibiz-color-primary);stroke-dasharray:90,150;stroke-dashoffset:0;stroke-linecap:round;stroke-width:2;animation:loading-dash 1.5s ease-in-out infinite}
1
+ .ibiz-async-action-notice.el-notification{width:auto}.ibiz-async-action-notice.el-notification .el-notification__group{margin:0}.ibiz-async-action-notice.el-notification .el-notification__closeBtn{top:5px;right:5px}.ibiz-doing-notice__text{margin-right:8px}.ibiz-doing-notice__num{margin:0 8px;font-size:18px;font-weight:700;color:var(--ibiz-color-primary)}.ibiz-doing-notice__loading-icon{width:18px;height:18px;margin-right:6px;vertical-align:middle;animation:loading-rotate 2s linear infinite}.ibiz-doing-notice__loading-icon .path{stroke:var(--ibiz-color-primary);stroke-dasharray:90,150;stroke-dashoffset:0;stroke-linecap:round;stroke-width:2;animation:loading-dash 1.5s ease-in-out infinite}
@@ -28,6 +28,15 @@ const CaptionBarControl = /* @__PURE__ */ vue.defineComponent({
28
28
  setup() {
29
29
  const c = vue3Util.useControlController((...args) => new runtime.CaptionBarController(...args));
30
30
  const ns = vue3Util.useNamespace("control-".concat(c.model.controlType.toLowerCase()));
31
+ const modalMode = c.view.modal.mode;
32
+ if (modalMode === "ROUTE") {
33
+ ibiz.util.setBrowserTitle(c.state.caption);
34
+ }
35
+ vue.onActivated(() => {
36
+ if (modalMode === "ROUTE") {
37
+ ibiz.util.setBrowserTitle(c.state.caption);
38
+ }
39
+ });
31
40
  return {
32
41
  c,
33
42
  ns
@@ -252,6 +252,9 @@ class DRBarController extends runtime.ControlController {
252
252
  */
253
253
  handleSelectChange(key, isRoutePushed = false) {
254
254
  var _a;
255
+ if (this.state.selectedItem === key) {
256
+ return;
257
+ }
255
258
  const drBarItem = (_a = this.model.dedrctrlItems) == null ? void 0 : _a.find((item) => item.id === key);
256
259
  if (drBarItem) {
257
260
  this.setVisible("navPos");
@@ -69,6 +69,7 @@ const FormItem = /* @__PURE__ */ vue.defineComponent({
69
69
  }
70
70
  return vue.createVNode(vue.resolveComponent("iBizFormItemContainer"), {
71
71
  "class": [this.ns.b(), this.ns.m(this.modelData.id), ...this.controller.containerClass],
72
+ "style": this.modelData.cssStyle,
72
73
  "required": this.c.state.required,
73
74
  "error": this.c.state.error,
74
75
  "label": this.c.labelCaption,
@@ -49,6 +49,7 @@ const FilterModes = [{
49
49
  valueOP: runtime.ValueOP.RIGHT_LIKE,
50
50
  label: "\u6587\u672C\u53F3\u5305\u542B(#%)"
51
51
  }];
52
+ const ExcludeOPs = [runtime.ValueOP.IS_NULL, runtime.ValueOP.IS_NOT_NULL];
52
53
  const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
53
54
  name: "IBizFilterTreeControl",
54
55
  props: {
@@ -152,7 +153,7 @@ const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
152
153
  });
153
154
  };
154
155
  const renderEditor = (node, filterC) => {
155
- if (filterC.noEditor) {
156
+ if (filterC.noEditor || node.valueOP && ExcludeOPs.includes(node.valueOP)) {
156
157
  return null;
157
158
  }
158
159
  let editor = null;
@@ -311,4 +312,5 @@ const FilterTreeControl = /* @__PURE__ */ vue.defineComponent({
311
312
  }
312
313
  });
313
314
 
315
+ exports.ExcludeOPs = ExcludeOPs;
314
316
  exports.FilterTreeControl = FilterTreeControl;
@@ -44,28 +44,16 @@ const TabExpPanelControl = /* @__PURE__ */ vue.defineComponent({
44
44
  const route = vueRouter.useRoute();
45
45
  vue.watch(() => route.fullPath, (newVal, oldVal) => {
46
46
  if (newVal !== oldVal) {
47
- const viewCodeName = c.view.model.codeName.toLowerCase();
48
- const viewRouteKey = Object.keys(route.params).find((key) => {
49
- return route.params[key] === viewCodeName;
50
- });
51
- if (!viewRouteKey) {
52
- return;
53
- }
54
- const nextKeyNumber = (parseInt(viewRouteKey[viewRouteKey.length - 1], 10) + 2) * 2;
55
- const tempFullPath = route.fullPath.split("/").slice(0, nextKeyNumber).join("/");
56
- c.state.tabPages.forEach((page) => {
57
- if (page.fullPath === tempFullPath) {
58
- c.state.activeName = page.tabTag;
47
+ const depth = c.view.modal.routeDepth;
48
+ if (depth) {
49
+ const routePath = vue3Util.route2routePath(route);
50
+ const {
51
+ srfnav
52
+ } = routePath.pathNodes[depth - 1];
53
+ if (srfnav && c.state.activeName && c.state.activeName !== srfnav) {
54
+ c.state.activeName = srfnav;
59
55
  c.handleTabChange();
60
56
  }
61
- });
62
- if (c.state.activeName) {
63
- const currentPage = c.state.tabPages.find((page) => {
64
- return page.tabTag === c.state.activeName;
65
- });
66
- if (currentPage) {
67
- currentPage.fullPath = tempFullPath;
68
- }
69
57
  }
70
58
  }
71
59
  }, {
@@ -11,6 +11,10 @@ function _isSlot(s) {
11
11
  const IBizExportExcel = /* @__PURE__ */ vue.defineComponent({
12
12
  name: "IBizExportExcel",
13
13
  props: {
14
+ mode: {
15
+ type: String,
16
+ required: false
17
+ },
14
18
  size: {
15
19
  type: String,
16
20
  required: false
@@ -52,20 +56,93 @@ const IBizExportExcel = /* @__PURE__ */ vue.defineComponent({
52
56
  };
53
57
  },
54
58
  render() {
55
- return vue.createVNode(vue.resolveComponent("el-dropdown"), {
59
+ return this.$props.mode === "menu" ? vue.createVNode(vue.resolveComponent("el-sub-menu"), {
60
+ "index": this.$props.item.id,
61
+ "class": this.ns.b("submenu"),
62
+ "popper-class": this.ns.b("submenu-popper")
63
+ }, {
64
+ title: () => {
65
+ let _slot;
66
+ return vue.createVNode(vue.resolveComponent("el-button"), {
67
+ "title": this.item.tooltip,
68
+ "size": this.$props.size,
69
+ "class": this.ns.b("submenu-button")
70
+ }, _isSlot(_slot = this.btnContent(this.item)) ? _slot : {
71
+ default: () => [_slot]
72
+ });
73
+ },
74
+ default: () => {
75
+ return [vue.createVNode(vue.resolveComponent("el-menu-item"), {
76
+ "class": this.ns.b("menu-item"),
77
+ "onClick": (e) => this.onCommand("maxRowCount", e)
78
+ }, {
79
+ default: () => [vue.createTextVNode("\u5BFC\u51FA\u5168\u90E8(\u6700\u5927\u5BFC\u51FA1000\u884C)")]
80
+ }), vue.createVNode(vue.resolveComponent("el-menu-item"), {
81
+ "class": this.ns.b("menu-item"),
82
+ "onClick": (e) => this.onCommand("activatedPage", e)
83
+ }, {
84
+ default: () => [vue.createTextVNode("\u5BFC\u51FA\u5F53\u524D\u9875")]
85
+ }), vue.createVNode(vue.resolveComponent("el-menu-item"), {
86
+ "class": this.ns.b("menu-item"),
87
+ "onClick": (e) => this.onCommand("selectedRows", e)
88
+ }, {
89
+ default: () => [vue.createTextVNode("\u5BFC\u51FA\u5F53\u524D\u9009\u4E2D")]
90
+ }), vue.createVNode(vue.resolveComponent("el-menu-item"), {
91
+ "class": [this.ns.b("menu-item"), this.ns.e("custom")]
92
+ }, {
93
+ default: () => [vue.createVNode(vue.resolveComponent("el-input"), {
94
+ "type": "number",
95
+ "modelValue": this.startPage,
96
+ "onUpdate:modelValue": ($event) => this.startPage = $event,
97
+ "size": "small",
98
+ "maxlength": "4",
99
+ "onClick": (event) => {
100
+ event.stopPropagation();
101
+ },
102
+ "onChange": (value) => {
103
+ this.startPage = value;
104
+ }
105
+ }, null), vue.createVNode("span", {
106
+ "class": "item-text",
107
+ "onClick": (event) => {
108
+ event.stopPropagation();
109
+ }
110
+ }, [vue.createTextVNode("-")]), vue.createVNode(vue.resolveComponent("el-input"), {
111
+ "modelValue": this.endPage,
112
+ "onUpdate:modelValue": ($event) => this.endPage = $event,
113
+ "size": "small",
114
+ "type": "number",
115
+ "maxlength": "4",
116
+ "onClick": (event) => {
117
+ event.stopPropagation();
118
+ }
119
+ }, null), vue.createVNode("span", {
120
+ "class": "item-text",
121
+ "onClick": (event) => {
122
+ event.stopPropagation();
123
+ }
124
+ }, [vue.createTextVNode("\u9875")]), vue.createVNode(vue.resolveComponent("el-button"), {
125
+ "onClick": (e) => this.onCommand("customPage", e),
126
+ "size": "small"
127
+ }, {
128
+ default: () => [vue.createTextVNode("\u5BFC\u51FA")]
129
+ })]
130
+ })];
131
+ }
132
+ }) : vue.createVNode(vue.resolveComponent("el-dropdown"), {
56
133
  "size": this.$props.size,
57
134
  "onCommand": this.onCommand,
58
135
  "popper-class": this.ns.b(),
59
136
  "trigger": "click"
60
137
  }, {
61
138
  default: () => {
62
- let _slot;
139
+ let _slot2;
63
140
  return vue.createVNode(vue.resolveComponent("el-button"), {
64
141
  "title": this.item.tooltip,
65
142
  "size": this.$props.size,
66
143
  "class": this.ns.e("button")
67
- }, _isSlot(_slot = this.btnContent(this.item)) ? _slot : {
68
- default: () => [_slot]
144
+ }, _isSlot(_slot2 = this.btnContent(this.item)) ? _slot2 : {
145
+ default: () => [_slot2]
69
146
  });
70
147
  },
71
148
  dropdown: () => {
@@ -1 +1 @@
1
- .ibiz-export-excel{width:270px}.ibiz-export-excel__custom{display:flex;align-items:center;justify-content:center}.ibiz-export-excel__custom>*+*{margin-left:10px}.ibiz-export-excel__custom.el-dropdown-menu__item:focus{color:var(--el-text-color-regular);background-color:transparent}.ibiz-export-excel__custom .el-input{--el-input-text-color:var(--ibiz-color-white)}.ibiz-export-excel__button{display:flex;align-items:center;justify-content:center;padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base)}.ibiz-export-excel__button>span{display:flex;align-items:center;justify-content:center;font-size:14px;pointer-events:none}.ibiz-export-excel__button i,.ibiz-export-excel__button img{display:inline-block;max-width:var(--ibiz-width-icon-medium);max-height:var(--ibiz-width-icon-medium);margin:0 var(--ibiz-spacing-extra-tight) 0 0}
1
+ .ibiz-export-excel{width:270px}.ibiz-export-excel__custom{display:flex;align-items:center;justify-content:center}.ibiz-export-excel__custom>*+*{margin-left:10px}.ibiz-export-excel__custom.el-dropdown-menu__item:focus{color:var(--el-text-color-regular);background-color:transparent}.ibiz-export-excel__custom .el-input{--el-input-text-color:var(--ibiz-color-white)}.ibiz-export-excel__button{display:flex;align-items:center;justify-content:center;padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base)}.ibiz-export-excel__button>span{display:flex;align-items:center;justify-content:center;font-size:14px;pointer-events:none}.ibiz-export-excel__button i,.ibiz-export-excel__button img{display:inline-block;max-width:var(--ibiz-width-icon-medium);max-height:var(--ibiz-width-icon-medium);margin:0 var(--ibiz-spacing-extra-tight) 0 0}.ibiz-export-excel-submenu-button{justify-content:flex-start;width:100%;height:36px;padding:0 10px;border-radius:0}.ibiz-export-excel-submenu-button i{margin:0 var(--ibiz-spacing-extra-tight) 0 0}.ibiz-control-toolbar-submenu-popper .ibiz-export-excel-submenu .el-sub-menu__title{padding:0}.ibiz-control-toolbar-submenu-popper .ibiz-export-excel-submenu .el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.ibiz-control-toolbar-submenu-popper .ibiz-export-excel-submenu.hover{color:var(--ibiz-color-primary-hover-text);background-color:var(--ibiz-color-primary-hover)}.ibiz-control-toolbar-submenu-popper .ibiz-export-excel-submenu .ibiz-export-excel-submenu-popper{width:270px;color:var(--ibiz-color-primary-text);background-color:var(--ibiz-color-primary)}