@ibiz-template/vue3-components 0.6.12 → 0.6.14

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 (35) hide show
  1. package/dist/index-i8g3CeYA.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-u4LQibbt.js → xlsx-util-eoOYCW_R.js} +1 -1
  5. package/es/common/data-import/data-import.mjs +1 -1
  6. package/es/control/form/form/form.mjs +3 -2
  7. package/es/control/form/form-detail/form-item/form-item.mjs +1 -1
  8. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.mjs +1 -1
  9. package/es/control/grid/grid/grid-control.util.mjs +7 -1
  10. package/es/control/grid/grid-column/grid-field-edit-column/cell-edit.mjs +1 -1
  11. package/es/editor/date-picker/ibiz-date-picker/ibiz-date-picker.mjs +2 -3
  12. package/es/editor/date-range/date-range-editor.controller.d.ts +9 -0
  13. package/es/editor/date-range/date-range-editor.controller.mjs +18 -0
  14. package/es/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.d.ts +1 -0
  15. package/es/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.mjs +8 -2
  16. package/es/panel-component/index.mjs +3 -1
  17. package/es/panel-component/user-message/async-action/async-action-preview/async-action-preview.mjs +5 -2
  18. package/es/view-engine/edit-view.engine.mjs +11 -5
  19. package/es/view-engine/tab-search-view.engine.d.ts +15 -3
  20. package/es/view-engine/tab-search-view.engine.mjs +30 -0
  21. package/lib/common/data-import/data-import.cjs +1 -1
  22. package/lib/control/form/form/form.cjs +2 -1
  23. package/lib/control/form/form-detail/form-item/form-item.cjs +1 -1
  24. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-repeater/repeater-grid/repeater-grid.cjs +1 -1
  25. package/lib/control/grid/grid/grid-control.util.cjs +6 -0
  26. package/lib/control/grid/grid-column/grid-field-edit-column/cell-edit.cjs +1 -1
  27. package/lib/editor/date-picker/ibiz-date-picker/ibiz-date-picker.cjs +2 -3
  28. package/lib/editor/date-range/date-range-editor.controller.cjs +18 -0
  29. package/lib/editor/date-range/ibiz-date-range-picker/ibiz-date-range-picker.cjs +8 -2
  30. package/lib/panel-component/index.cjs +2 -0
  31. package/lib/panel-component/user-message/async-action/async-action-preview/async-action-preview.cjs +5 -2
  32. package/lib/view-engine/edit-view.engine.cjs +11 -5
  33. package/lib/view-engine/tab-search-view.engine.cjs +30 -0
  34. package/package.json +8 -8
  35. package/dist/index-225rMkM4.js +0 -4
@@ -65,7 +65,7 @@ const DataImport = /* @__PURE__ */ defineComponent({
65
65
  result = await importData(selectedFile, props.appDataEntity, props.dataImport, props.context);
66
66
  ibiz.mc.command.send({
67
67
  srfdecodename: props.appDataEntity.codeName
68
- }, "OBJECTCREATED");
68
+ }, "OBJECTCREATED", "DATAIMPORT");
69
69
  const {
70
70
  success,
71
71
  total,
@@ -1,5 +1,5 @@
1
1
  import { isVNode, renderSlot, createVNode, resolveComponent, h, defineComponent } from 'vue';
2
- import { ScriptFactory, findChildFormDetails } from '@ibiz-template/runtime';
2
+ import { ScriptFactory, findChildFormDetails, ControlType } from '@ibiz-template/runtime';
3
3
  import { useNamespace } from '@ibiz-template/vue3-util';
4
4
  import './form.css';
5
5
 
@@ -113,7 +113,8 @@ const FormControl = /* @__PURE__ */ defineComponent({
113
113
  });
114
114
  };
115
115
  } else {
116
- const key = controlPanel ? model.name : "default";
116
+ const formSlotKey = model.controlType === ControlType.SEARCHFORM ? "searchform" : "form";
117
+ const key = controlPanel ? formSlotKey : "default";
117
118
  slots[key] = () => {
118
119
  return createVNode(resolveComponent("iBizFormPage"), {
119
120
  "modelData": this.c.model,
@@ -42,7 +42,7 @@ const FormItem = /* @__PURE__ */ defineComponent({
42
42
  data: this.controller.data,
43
43
  controller: this.controller.editor,
44
44
  disabled: this.controller.state.disabled,
45
- readonly: this.controller.model.editor.readOnly,
45
+ readonly: this.controller.state.readonly,
46
46
  onChange: this.onValueChange,
47
47
  controlParams: this.controller.form.controlParams,
48
48
  onFocus: (event) => this.c.onFocus(event),
@@ -187,7 +187,7 @@ const RepeaterGrid = /* @__PURE__ */ defineComponent({
187
187
  data: formItemC.data,
188
188
  controller: formItemC.editor,
189
189
  disabled: formItemC.state.disabled,
190
- readonly: formItemC.model.editor.readOnly,
190
+ readonly: formItemC.state.readonly,
191
191
  onChange: (val, name) => {
192
192
  formItemC.setDataValue(val, name);
193
193
  }
@@ -1,4 +1,4 @@
1
- import { ControlVO, GridRowState } from '@ibiz-template/runtime';
1
+ import { Srfuf, ControlVO, GridRowState } from '@ibiz-template/runtime';
2
2
  import { ref, watch, nextTick, computed, watchEffect, onUnmounted } from 'vue';
3
3
 
4
4
  "use strict";
@@ -7,6 +7,9 @@ function useITableEvent(c) {
7
7
  let forbidChange = false;
8
8
  let isGridUISort = false;
9
9
  async function onRowClick(data, _column, _event) {
10
+ if (data.srfuf === Srfuf.CREATE) {
11
+ return;
12
+ }
10
13
  if (ibiz.config.grid.editShowMode === "row" && c.model.enableRowEdit) {
11
14
  const row = c.findRowState(data);
12
15
  if (row && row.showRowEdit !== true) {
@@ -17,6 +20,9 @@ function useITableEvent(c) {
17
20
  }
18
21
  }
19
22
  function onDbRowClick(data) {
23
+ if (data.srfuf === Srfuf.CREATE) {
24
+ return;
25
+ }
20
26
  c.onDbRowClick(data);
21
27
  }
22
28
  function onSelectionChange(selection) {
@@ -32,7 +32,7 @@ function useCellEdit(props, componentRef) {
32
32
  return cellEditable.value && !editable.value;
33
33
  });
34
34
  const stopPropagation = computed(() => {
35
- return cellEditable.value;
35
+ return cellEditable.value || editorShowEdit.value;
36
36
  });
37
37
  let funcs;
38
38
  const onMaskClick = () => {
@@ -77,9 +77,8 @@ const IBizDatePicker = /* @__PURE__ */ defineComponent({
77
77
  };
78
78
  if (props.autoFocus) {
79
79
  watch(editorRef, (newVal) => {
80
- if (newVal) {
81
- const input = newVal.$el.getElementsByTagName("input")[0];
82
- input.click();
80
+ if (newVal && newVal.focus) {
81
+ newVal.focus();
83
82
  }
84
83
  });
85
84
  }
@@ -8,6 +8,15 @@ import { IDateRange } from '@ibiz/model-core';
8
8
  * @extends {EditorController}
9
9
  */
10
10
  export declare class DateRangeEditorController extends EditorController<IDateRange> {
11
+ /**
12
+ * 日期选择弹框内选中的时间值
13
+ *
14
+ * @author ljx
15
+ * @date 2024-03-28 16:11:21
16
+ * @public
17
+ * @returns {*} {string}
18
+ */
19
+ dateRange: IData;
11
20
  /**
12
21
  * 根据编辑器类型获取格式化
13
22
  *
@@ -1,7 +1,25 @@
1
1
  import { EditorController } from '@ibiz-template/runtime';
2
2
 
3
3
  "use strict";
4
+ var __defProp = Object.defineProperty;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __publicField = (obj, key, value) => {
7
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
8
+ return value;
9
+ };
4
10
  class DateRangeEditorController extends EditorController {
11
+ constructor() {
12
+ super(...arguments);
13
+ /**
14
+ * 日期选择弹框内选中的时间值
15
+ *
16
+ * @author ljx
17
+ * @date 2024-03-28 16:11:21
18
+ * @public
19
+ * @returns {*} {string}
20
+ */
21
+ __publicField(this, "dateRange", []);
22
+ }
5
23
  /**
6
24
  * 根据编辑器类型获取格式化
7
25
  *
@@ -43,6 +43,7 @@ export declare const IBizDateRangePicker: import("vue").DefineComponent<{
43
43
  setEditable: (flag: boolean) => void;
44
44
  showFormDefaultContent: import("vue").ComputedRef<boolean>;
45
45
  handleKeyUp: (e: KeyboardEvent) => void;
46
+ onCalendarChange: (val: IData) => void;
46
47
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
47
48
  change: (_value: unknown, _name?: string | undefined) => boolean;
48
49
  blur: (_event?: IData | undefined) => boolean;
@@ -1,5 +1,6 @@
1
1
  import { ref, computed, resolveComponent, mergeProps, createVNode, defineComponent } from 'vue';
2
2
  import { getDateRangeProps, getEditorEmits, useNamespace } from '@ibiz-template/vue3-util';
3
+ import { clone } from 'ramda';
3
4
  import './ibiz-date-range-picker.css';
4
5
 
5
6
  "use strict";
@@ -109,6 +110,9 @@ const IBizDateRangePicker = /* @__PURE__ */ defineComponent({
109
110
  emit("blur", e);
110
111
  setEditable(false);
111
112
  };
113
+ const onCalendarChange = (val) => {
114
+ c.dateRange = clone(val);
115
+ };
112
116
  const valueText = computed(() => {
113
117
  if (curValue.value.length > 0) {
114
118
  return "".concat(curValue.value[0], " ").concat(rangeSeparator, " ").concat(curValue.value[1]);
@@ -139,7 +143,8 @@ const IBizDateRangePicker = /* @__PURE__ */ defineComponent({
139
143
  isEditable,
140
144
  setEditable,
141
145
  showFormDefaultContent,
142
- handleKeyUp
146
+ handleKeyUp,
147
+ onCalendarChange
143
148
  };
144
149
  },
145
150
  render() {
@@ -159,7 +164,8 @@ const IBizDateRangePicker = /* @__PURE__ */ defineComponent({
159
164
  "end-placeholder": this.endPlaceHolder,
160
165
  "unlink-panels": this.unlinkPanels,
161
166
  "onFocus": this.onFocus,
162
- "onBlur": this.onBlur
167
+ "onBlur": this.onBlur,
168
+ "onCalendarChange": this.onCalendarChange
163
169
  }, this.$attrs), null);
164
170
  const readonlyContent = createVNode("div", {
165
171
  "class": (this.ns.b(), this.ns.m("readonly"))
@@ -1,4 +1,4 @@
1
- import { IBizPanelContainer, IBizPanelCtrlPos, IBizScrollContainer, IBizNavPos, IBizSingleDataContainer, IBizMultiDataContainer, IBizPanelField, IBizPanelRawItem, IBizGridContainer, IBizPanelTabPage, IBizPanelContainerGroup, IBizPanelContainerImage, IBizPanelItemRender } from '@ibiz-template/vue3-util';
1
+ import { IBizPanelContainer, IBizPanelCtrlPos, IBizScrollContainer, IBizNavPos, IBizSingleDataContainer, IBizMultiDataContainer, IBizPanelField, IBizPanelRawItem, IBizGridContainer, IBizPanelTabPage, IBizPanelContainerGroup, IBizPanelContainerImage, IBizPanelItemRender, IBizTeleportPlaceholder, IBizPanelContainerTabs } from '@ibiz-template/vue3-util';
2
2
  import { IBizAuthUserinfo } from './auth-userinfo/index.mjs';
3
3
  import { IBizNavPosIndex } from './nav-pos-index/index.mjs';
4
4
  import { IBizNavTabs } from './nav-tabs/index.mjs';
@@ -59,6 +59,8 @@ const IBizPanelComponents = {
59
59
  v.use(IBizPanelItemRender);
60
60
  v.use(IBizViewMessage);
61
61
  v.use(IBizPanelStaticCarousel);
62
+ v.use(IBizTeleportPlaceholder);
63
+ v.use(IBizPanelContainerTabs);
62
64
  }
63
65
  };
64
66
 
@@ -12,10 +12,13 @@ function fileDownload(file) {
12
12
  baseURL: ""
13
13
  // 已经有baseURL了,这里无需再写
14
14
  }).then((response) => {
15
- const filename = qs.parse(response.headers["content-disposition"], {
15
+ let filename = qs.parse(response.headers["content-disposition"], {
16
16
  delimiter: ";"
17
17
  }).filename;
18
18
  if (filename) {
19
+ if (filename.startsWith('"') && filename.endsWith('"')) {
20
+ filename = filename.substring(1, filename.length - 1);
21
+ }
19
22
  file.name += ".".concat(filename.split(".")[1]);
20
23
  }
21
24
  if (response.status !== 200) {
@@ -85,7 +88,7 @@ const AsyncActionPreview = /* @__PURE__ */ defineComponent({
85
88
  info.errorDetails = [];
86
89
  }
87
90
  if (actionResult.errorfile) {
88
- info.errorFileUrl = "".concat(ibiz.env.baseUrl, "/").concat(ibiz.env.appId).concat(ibiz.env.downloadFileUrl, "/").concat(actionResult.errorfile.folder, "/").concat(actionResult.errorfile.fileid);
91
+ info.errorFileUrl = "".concat(ibiz.env.baseUrl, "/").concat(ibiz.env.appId).concat(ibiz.env.downloadFileUrl, "/").concat(actionResult.errorfile.folder, "/").concat(actionResult.errorfile.fileid).replace("/{cat}", "");
89
92
  }
90
93
  }
91
94
  const onDownLoad = () => {
@@ -81,10 +81,12 @@ class EditViewEngine extends ViewEngineBase {
81
81
  var _a;
82
82
  const data = event.data[0];
83
83
  (_a = this.toolbar) == null ? void 0 : _a.calcButtonState(data, formDeId);
84
- if (data.srfkey) {
85
- evt.emit("onViewInfoChange", { dataInfo: data.srfmajortext || "" });
86
- } else {
87
- evt.emit("onViewInfoChange", { dataInfo: "\u65B0\u5EFA" });
84
+ if (model.showDataInfoBar) {
85
+ if (data.srfkey) {
86
+ evt.emit("onViewInfoChange", { dataInfo: data.srfmajortext || "" });
87
+ } else {
88
+ evt.emit("onViewInfoChange", { dataInfo: "\u65B0\u5EFA" });
89
+ }
88
90
  }
89
91
  };
90
92
  this.form.evt.on("onLoadSuccess", (event) => {
@@ -261,7 +263,11 @@ class EditViewEngine extends ViewEngineBase {
261
263
  },
262
264
  data instanceof ControlVO ? data.getOrigin() : data
263
265
  );
264
- ibiz.mc.command.send({ srfdecodename: "SysTodo" }, "OBJECTUPDATED");
266
+ ibiz.mc.command.send(
267
+ { srfdecodename: "SysTodo" },
268
+ "OBJECTUPDATED",
269
+ "WITHDRAW"
270
+ );
265
271
  }
266
272
  /**
267
273
  * 初始化标记打开数据相关逻辑
@@ -1,5 +1,5 @@
1
1
  import { ISearchBarController, ISearchFormController, ITabExpPanelController, ITabSearchViewEvent, ITabSearchViewState, ViewController } from '@ibiz-template/runtime';
2
- import { IAppDEEditView } from '@ibiz/model-core';
2
+ import { IAppDETabSearchView } from '@ibiz/model-core';
3
3
  import { TabExpViewEngine } from './tab-exp-view.engine';
4
4
  /**
5
5
  * 编辑视图3(分页关系)
@@ -14,13 +14,13 @@ export declare class TabSearchViewEngine extends TabExpViewEngine {
14
14
  *
15
15
  * @protected
16
16
  * @type {ViewController<
17
- * IAppDEEditView,
17
+ * IAppDETabSearchView,
18
18
  * ITabSearchViewState,
19
19
  * ITabSearchViewEvent
20
20
  * >}
21
21
  * @memberof TabSearchViewEngine
22
22
  */
23
- protected view: ViewController<IAppDEEditView, ITabSearchViewState, ITabSearchViewEvent>;
23
+ protected view: ViewController<IAppDETabSearchView, ITabSearchViewState, ITabSearchViewEvent>;
24
24
  /**
25
25
  * 搜索表单控制器
26
26
  * @author lxm
@@ -42,6 +42,7 @@ export declare class TabSearchViewEngine extends TabExpViewEngine {
42
42
  * @readonly
43
43
  */
44
44
  get tabExpPanel(): ITabExpPanelController;
45
+ protected preprocessTabExpModelLayout(): void;
45
46
  onCreated(): Promise<void>;
46
47
  onMounted(): Promise<void>;
47
48
  call(key: string, args: any): Promise<IData | null | undefined>;
@@ -52,6 +53,17 @@ export declare class TabSearchViewEngine extends TabExpViewEngine {
52
53
  * @return {*} {IParams}
53
54
  */
54
55
  protected getSearchParams(): IParams;
56
+ /**
57
+ * 计算视图头部元素的显示与否
58
+ * 所有部件容器名称均为:view_部件名称
59
+ * - 注意 分页导航和分页搜索的默认布局不一致
60
+ *
61
+ * 分页导航:分页导航栏在视图头中
62
+ *
63
+ * 分页搜索:分页导航栏不在视图头中
64
+ * @protected
65
+ */
66
+ protected calcViewHeaderVisible(): boolean;
55
67
  /**
56
68
  * 重新计算视图参数
57
69
  * @author lxm
@@ -30,6 +30,8 @@ class TabSearchViewEngine extends TabExpViewEngine {
30
30
  get tabExpPanel() {
31
31
  return this.view.getController("tabexppanel");
32
32
  }
33
+ preprocessTabExpModelLayout() {
34
+ }
33
35
  async onCreated() {
34
36
  await super.onCreated();
35
37
  const { childNames } = this.view;
@@ -91,6 +93,34 @@ class TabSearchViewEngine extends TabExpViewEngine {
91
93
  }
92
94
  return params;
93
95
  }
96
+ /**
97
+ * 计算视图头部元素的显示与否
98
+ * 所有部件容器名称均为:view_部件名称
99
+ * - 注意 分页导航和分页搜索的默认布局不一致
100
+ *
101
+ * 分页导航:分页导航栏在视图头中
102
+ *
103
+ * 分页搜索:分页导航栏不在视图头中
104
+ * @protected
105
+ */
106
+ calcViewHeaderVisible() {
107
+ let showHeader = false;
108
+ const { model } = this.view;
109
+ if (model.showCaptionBar) {
110
+ showHeader = true;
111
+ }
112
+ if (ibiz.env.isMob) {
113
+ if (this.isExistAndInLayout("lefttoolbar")) {
114
+ showHeader = true;
115
+ }
116
+ if (this.isExistAndInLayout("righttoolbar")) {
117
+ showHeader = true;
118
+ }
119
+ } else if (this.isExistAndInLayout("toolbar")) {
120
+ showHeader = true;
121
+ }
122
+ return showHeader;
123
+ }
94
124
  /**
95
125
  * 重新计算视图参数
96
126
  * @author lxm
@@ -67,7 +67,7 @@ const DataImport = /* @__PURE__ */ vue.defineComponent({
67
67
  result = await runtime.importData(selectedFile, props.appDataEntity, props.dataImport, props.context);
68
68
  ibiz.mc.command.send({
69
69
  srfdecodename: props.appDataEntity.codeName
70
- }, "OBJECTCREATED");
70
+ }, "OBJECTCREATED", "DATAIMPORT");
71
71
  const {
72
72
  success,
73
73
  total,
@@ -115,7 +115,8 @@ const FormControl = /* @__PURE__ */ vue.defineComponent({
115
115
  });
116
116
  };
117
117
  } else {
118
- const key = controlPanel ? model.name : "default";
118
+ const formSlotKey = model.controlType === runtime.ControlType.SEARCHFORM ? "searchform" : "form";
119
+ const key = controlPanel ? formSlotKey : "default";
119
120
  slots[key] = () => {
120
121
  return vue.createVNode(vue.resolveComponent("iBizFormPage"), {
121
122
  "modelData": this.c.model,
@@ -46,7 +46,7 @@ const FormItem = /* @__PURE__ */ vue.defineComponent({
46
46
  data: this.controller.data,
47
47
  controller: this.controller.editor,
48
48
  disabled: this.controller.state.disabled,
49
- readonly: this.controller.model.editor.readOnly,
49
+ readonly: this.controller.state.readonly,
50
50
  onChange: this.onValueChange,
51
51
  controlParams: this.controller.form.controlParams,
52
52
  onFocus: (event) => this.c.onFocus(event),
@@ -189,7 +189,7 @@ const RepeaterGrid = /* @__PURE__ */ vue.defineComponent({
189
189
  data: formItemC.data,
190
190
  controller: formItemC.editor,
191
191
  disabled: formItemC.state.disabled,
192
- readonly: formItemC.model.editor.readOnly,
192
+ readonly: formItemC.state.readonly,
193
193
  onChange: (val, name) => {
194
194
  formItemC.setDataValue(val, name);
195
195
  }
@@ -9,6 +9,9 @@ function useITableEvent(c) {
9
9
  let forbidChange = false;
10
10
  let isGridUISort = false;
11
11
  async function onRowClick(data, _column, _event) {
12
+ if (data.srfuf === runtime.Srfuf.CREATE) {
13
+ return;
14
+ }
12
15
  if (ibiz.config.grid.editShowMode === "row" && c.model.enableRowEdit) {
13
16
  const row = c.findRowState(data);
14
17
  if (row && row.showRowEdit !== true) {
@@ -19,6 +22,9 @@ function useITableEvent(c) {
19
22
  }
20
23
  }
21
24
  function onDbRowClick(data) {
25
+ if (data.srfuf === runtime.Srfuf.CREATE) {
26
+ return;
27
+ }
22
28
  c.onDbRowClick(data);
23
29
  }
24
30
  function onSelectionChange(selection) {
@@ -34,7 +34,7 @@ function useCellEdit(props, componentRef) {
34
34
  return cellEditable.value && !editable.value;
35
35
  });
36
36
  const stopPropagation = vue.computed(() => {
37
- return cellEditable.value;
37
+ return cellEditable.value || editorShowEdit.value;
38
38
  });
39
39
  let funcs;
40
40
  const onMaskClick = () => {
@@ -79,9 +79,8 @@ const IBizDatePicker = /* @__PURE__ */ vue.defineComponent({
79
79
  };
80
80
  if (props.autoFocus) {
81
81
  vue.watch(editorRef, (newVal) => {
82
- if (newVal) {
83
- const input = newVal.$el.getElementsByTagName("input")[0];
84
- input.click();
82
+ if (newVal && newVal.focus) {
83
+ newVal.focus();
85
84
  }
86
85
  });
87
86
  }
@@ -3,7 +3,25 @@
3
3
  var runtime = require('@ibiz-template/runtime');
4
4
 
5
5
  "use strict";
6
+ var __defProp = Object.defineProperty;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __publicField = (obj, key, value) => {
9
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
10
+ return value;
11
+ };
6
12
  class DateRangeEditorController extends runtime.EditorController {
13
+ constructor() {
14
+ super(...arguments);
15
+ /**
16
+ * 日期选择弹框内选中的时间值
17
+ *
18
+ * @author ljx
19
+ * @date 2024-03-28 16:11:21
20
+ * @public
21
+ * @returns {*} {string}
22
+ */
23
+ __publicField(this, "dateRange", []);
24
+ }
7
25
  /**
8
26
  * 根据编辑器类型获取格式化
9
27
  *
@@ -2,6 +2,7 @@
2
2
 
3
3
  var vue = require('vue');
4
4
  var vue3Util = require('@ibiz-template/vue3-util');
5
+ var ramda = require('ramda');
5
6
  require('./ibiz-date-range-picker.css');
6
7
 
7
8
  "use strict";
@@ -111,6 +112,9 @@ const IBizDateRangePicker = /* @__PURE__ */ vue.defineComponent({
111
112
  emit("blur", e);
112
113
  setEditable(false);
113
114
  };
115
+ const onCalendarChange = (val) => {
116
+ c.dateRange = ramda.clone(val);
117
+ };
114
118
  const valueText = vue.computed(() => {
115
119
  if (curValue.value.length > 0) {
116
120
  return "".concat(curValue.value[0], " ").concat(rangeSeparator, " ").concat(curValue.value[1]);
@@ -141,7 +145,8 @@ const IBizDateRangePicker = /* @__PURE__ */ vue.defineComponent({
141
145
  isEditable,
142
146
  setEditable,
143
147
  showFormDefaultContent,
144
- handleKeyUp
148
+ handleKeyUp,
149
+ onCalendarChange
145
150
  };
146
151
  },
147
152
  render() {
@@ -161,7 +166,8 @@ const IBizDateRangePicker = /* @__PURE__ */ vue.defineComponent({
161
166
  "end-placeholder": this.endPlaceHolder,
162
167
  "unlink-panels": this.unlinkPanels,
163
168
  "onFocus": this.onFocus,
164
- "onBlur": this.onBlur
169
+ "onBlur": this.onBlur,
170
+ "onCalendarChange": this.onCalendarChange
165
171
  }, this.$attrs), null);
166
172
  const readonlyContent = vue.createVNode("div", {
167
173
  "class": (this.ns.b(), this.ns.m("readonly"))
@@ -63,6 +63,8 @@ const IBizPanelComponents = {
63
63
  v.use(vue3Util.IBizPanelItemRender);
64
64
  v.use(index$h.IBizViewMessage);
65
65
  v.use(index$i.IBizPanelStaticCarousel);
66
+ v.use(vue3Util.IBizTeleportPlaceholder);
67
+ v.use(vue3Util.IBizPanelContainerTabs);
66
68
  }
67
69
  };
68
70
 
@@ -14,10 +14,13 @@ function fileDownload(file) {
14
14
  baseURL: ""
15
15
  // 已经有baseURL了,这里无需再写
16
16
  }).then((response) => {
17
- const filename = qs.parse(response.headers["content-disposition"], {
17
+ let filename = qs.parse(response.headers["content-disposition"], {
18
18
  delimiter: ";"
19
19
  }).filename;
20
20
  if (filename) {
21
+ if (filename.startsWith('"') && filename.endsWith('"')) {
22
+ filename = filename.substring(1, filename.length - 1);
23
+ }
21
24
  file.name += ".".concat(filename.split(".")[1]);
22
25
  }
23
26
  if (response.status !== 200) {
@@ -87,7 +90,7 @@ const AsyncActionPreview = /* @__PURE__ */ vue.defineComponent({
87
90
  info.errorDetails = [];
88
91
  }
89
92
  if (actionResult.errorfile) {
90
- info.errorFileUrl = "".concat(ibiz.env.baseUrl, "/").concat(ibiz.env.appId).concat(ibiz.env.downloadFileUrl, "/").concat(actionResult.errorfile.folder, "/").concat(actionResult.errorfile.fileid);
93
+ info.errorFileUrl = "".concat(ibiz.env.baseUrl, "/").concat(ibiz.env.appId).concat(ibiz.env.downloadFileUrl, "/").concat(actionResult.errorfile.folder, "/").concat(actionResult.errorfile.fileid).replace("/{cat}", "");
91
94
  }
92
95
  }
93
96
  const onDownLoad = () => {
@@ -83,10 +83,12 @@ class EditViewEngine extends runtime.ViewEngineBase {
83
83
  var _a;
84
84
  const data = event.data[0];
85
85
  (_a = this.toolbar) == null ? void 0 : _a.calcButtonState(data, formDeId);
86
- if (data.srfkey) {
87
- evt.emit("onViewInfoChange", { dataInfo: data.srfmajortext || "" });
88
- } else {
89
- evt.emit("onViewInfoChange", { dataInfo: "\u65B0\u5EFA" });
86
+ if (model.showDataInfoBar) {
87
+ if (data.srfkey) {
88
+ evt.emit("onViewInfoChange", { dataInfo: data.srfmajortext || "" });
89
+ } else {
90
+ evt.emit("onViewInfoChange", { dataInfo: "\u65B0\u5EFA" });
91
+ }
90
92
  }
91
93
  };
92
94
  this.form.evt.on("onLoadSuccess", (event) => {
@@ -263,7 +265,11 @@ class EditViewEngine extends runtime.ViewEngineBase {
263
265
  },
264
266
  data instanceof runtime.ControlVO ? data.getOrigin() : data
265
267
  );
266
- ibiz.mc.command.send({ srfdecodename: "SysTodo" }, "OBJECTUPDATED");
268
+ ibiz.mc.command.send(
269
+ { srfdecodename: "SysTodo" },
270
+ "OBJECTUPDATED",
271
+ "WITHDRAW"
272
+ );
267
273
  }
268
274
  /**
269
275
  * 初始化标记打开数据相关逻辑
@@ -32,6 +32,8 @@ class TabSearchViewEngine extends tabExpView_engine.TabExpViewEngine {
32
32
  get tabExpPanel() {
33
33
  return this.view.getController("tabexppanel");
34
34
  }
35
+ preprocessTabExpModelLayout() {
36
+ }
35
37
  async onCreated() {
36
38
  await super.onCreated();
37
39
  const { childNames } = this.view;
@@ -93,6 +95,34 @@ class TabSearchViewEngine extends tabExpView_engine.TabExpViewEngine {
93
95
  }
94
96
  return params;
95
97
  }
98
+ /**
99
+ * 计算视图头部元素的显示与否
100
+ * 所有部件容器名称均为:view_部件名称
101
+ * - 注意 分页导航和分页搜索的默认布局不一致
102
+ *
103
+ * 分页导航:分页导航栏在视图头中
104
+ *
105
+ * 分页搜索:分页导航栏不在视图头中
106
+ * @protected
107
+ */
108
+ calcViewHeaderVisible() {
109
+ let showHeader = false;
110
+ const { model } = this.view;
111
+ if (model.showCaptionBar) {
112
+ showHeader = true;
113
+ }
114
+ if (ibiz.env.isMob) {
115
+ if (this.isExistAndInLayout("lefttoolbar")) {
116
+ showHeader = true;
117
+ }
118
+ if (this.isExistAndInLayout("righttoolbar")) {
119
+ showHeader = true;
120
+ }
121
+ } else if (this.isExistAndInLayout("toolbar")) {
122
+ showHeader = true;
123
+ }
124
+ return showHeader;
125
+ }
96
126
  /**
97
127
  * 重新计算视图参数
98
128
  * @author lxm
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/vue3-components",
3
- "version": "0.6.12",
3
+ "version": "0.6.14",
4
4
  "description": "使用 rollup 编译 vue 组件或者 jsx",
5
5
  "main": "lib/index.cjs",
6
6
  "module": "es/index.mjs",
@@ -30,14 +30,14 @@
30
30
  "@floating-ui/dom": "^1.5.3",
31
31
  "@ibiz-template-plugin/ai-chat": "^0.0.1",
32
32
  "@ibiz-template-plugin/gantt": "0.1.3-alpha.46",
33
- "@ibiz-template/core": "0.6.13",
33
+ "@ibiz-template/core": "0.6.15",
34
34
  "@ibiz-template/devtool": "0.0.1-dev.6",
35
- "@ibiz-template/model-helper": "0.6.13",
36
- "@ibiz-template/runtime": "0.6.13",
35
+ "@ibiz-template/model-helper": "0.6.15",
36
+ "@ibiz-template/runtime": "0.6.15",
37
37
  "@ibiz-template/theme": "^0.6.0",
38
- "@ibiz-template/vue3-util": "0.6.13",
39
- "@ibiz-template/web-theme": "^1.1.12",
40
- "@ibiz/model-core": "^0.1.18",
38
+ "@ibiz-template/vue3-util": "0.6.15",
39
+ "@ibiz-template/web-theme": "^1.1.14",
40
+ "@ibiz/model-core": "^0.1.19",
41
41
  "@imengyu/vue3-context-menu": "^1.3.5",
42
42
  "@monaco-editor/loader": "^1.4.0",
43
43
  "@wangeditor/editor": "^5.1.23",
@@ -100,7 +100,7 @@
100
100
  "@ibiz-template/runtime": "^0.6.0",
101
101
  "@ibiz-template/theme": "^0.6.0",
102
102
  "@ibiz-template/vue3-util": "^0.6.0",
103
- "@ibiz/model-core": "^0.1.17",
103
+ "@ibiz/model-core": "^0.1.19",
104
104
  "@imengyu/vue3-context-menu": "^1.3.3",
105
105
  "@monaco-editor/loader": "^1.3.3",
106
106
  "@wangeditor/editor": "^5.1.23",