@ibiz-template/vue3-components 0.7.41-alpha.20 → 0.7.41-alpha.21

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 (133) hide show
  1. package/dist/ibiz-markdown-editor-Bd4vTqbM.js +1 -0
  2. package/dist/index-8Yq7Bpp0.js +11 -0
  3. package/dist/{index-K6B-Odyq.js → index-mjpFeLkH.js} +1 -1
  4. package/dist/{index-Bt6TkADL.js → index-pz3nYBld.js} +1 -1
  5. package/dist/index.min.css +1 -1
  6. package/dist/index.system.min.js +1 -1
  7. package/dist/wang-editor-zhTZMXYX.js +1 -0
  8. package/dist/{xlsx-util-mN5WSU7v.js → xlsx-util-rX1J1Mx_.js} +1 -1
  9. package/es/common/action-toolbar/action-toolbar.css +1 -1
  10. package/es/common/action-toolbar/action-toolbar.d.ts +1 -1
  11. package/es/common/action-toolbar/action-toolbar.mjs +49 -7
  12. package/es/common/index.mjs +2 -1
  13. package/es/control/dashboard/dashboard.d.ts +2 -2
  14. package/es/control/dashboard/dashboard.mjs +3 -2
  15. package/es/control/dashboard/portlet/actionbar-portlet/actionbar-portlet.d.ts +1 -0
  16. package/es/control/dashboard/portlet/actionbar-portlet/actionbar-portlet.mjs +3 -0
  17. package/es/control/dashboard/portlet/actionbar-portlet/index.d.ts +1 -0
  18. package/es/control/dashboard/portlet/portlet-layout/portlet-layout.d.ts +4 -3
  19. package/es/control/dashboard/portlet/portlet-layout/portlet-layout.mjs +6 -3
  20. package/es/control/data-view/data-view.css +1 -1
  21. package/es/control/data-view/data-view.mjs +4 -1
  22. package/es/control/form/edit-form/edit-form.mjs +10 -1
  23. package/es/control/form/form/form.d.ts +1 -1
  24. package/es/control/form/form/form.mjs +2 -1
  25. package/es/control/form/form-detail/form-group-panel/form-group-panel.d.ts +1 -0
  26. package/es/control/form/form-detail/form-group-panel/form-group-panel.mjs +3 -0
  27. package/es/control/form/form-detail/form-group-panel/index.d.ts +1 -0
  28. package/es/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.mjs +3 -1
  29. package/es/control/form/form-detail/form-mdctrl/form-mdctrl.d.ts +2 -1
  30. package/es/control/form/form-detail/form-mdctrl/form-mdctrl.mjs +4 -1
  31. package/es/control/form/form-detail/form-mdctrl/index.d.ts +2 -1
  32. package/es/control/grid/grid/grid.mjs +3 -7
  33. package/es/control/grid/grid-column/grid-field-column/attachment-column/attachment-column.mjs +4 -3
  34. package/es/control/grid/grid-column/grid-field-column/attachment-column/file-util.d.ts +4 -0
  35. package/es/control/grid/grid-column/grid-field-column/attachment-column/file-util.mjs +30 -3
  36. package/es/control/grid/grid-column/grid-field-column/grid-field-column.mjs +1 -1
  37. package/es/control/kanban/kanban.css +1 -1
  38. package/es/control/kanban/kanban.mjs +11 -6
  39. package/es/control/kanban/swimlane-kanban/swimlane-kanban.css +1 -1
  40. package/es/control/kanban/swimlane-kanban/swimlane-kanban.mjs +1 -0
  41. package/es/control/list/list.d.ts +1 -1
  42. package/es/control/list/list.mjs +4 -1
  43. package/es/control/search-bar/index.d.ts +1 -0
  44. package/es/control/search-bar/search-bar.css +1 -1
  45. package/es/control/search-bar/search-bar.d.ts +3 -2
  46. package/es/control/search-bar/search-bar.mjs +26 -3
  47. package/es/control/search-bar/search-groups/search-groups.css +1 -1
  48. package/es/control/search-bar/search-groups/search-groups.d.ts +11 -1
  49. package/es/control/search-bar/search-groups/search-groups.mjs +14 -1
  50. package/es/control/toolbar/index.d.ts +3 -3
  51. package/es/control/toolbar/toolbar.d.ts +5 -5
  52. package/es/control/toolbar/toolbar.mjs +1 -1
  53. package/es/control/tree-grid/tree-grid.mjs +2 -1
  54. package/es/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/index.d.ts +5 -4
  55. package/es/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.d.ts +5 -4
  56. package/es/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.mjs +8 -5
  57. package/es/control/tree-grid-ex/tree-grid-ex.d.ts +1 -1
  58. package/es/control/tree-grid-ex/tree-grid-ex.mjs +3 -2
  59. package/es/editor/carousel/ibiz-carousel/ibiz-carousel.mjs +2 -2
  60. package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.d.ts +1 -1
  61. package/es/editor/data-picker/ibiz-mpicker/ibiz-mpicker.mjs +4 -1
  62. package/es/editor/html/wang-editor/wang-editor.d.ts +2 -0
  63. package/es/editor/html/wang-editor/wang-editor.mjs +3 -3
  64. package/es/editor/index.mjs +6 -0
  65. package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.d.ts +2 -0
  66. package/es/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.mjs +2 -2
  67. package/es/editor/text-box/index.d.ts +1 -0
  68. package/es/editor/text-box/index.mjs +1 -0
  69. package/es/editor/text-box/signature/signature.css +1 -0
  70. package/es/editor/text-box/signature/signature.d.ts +102 -0
  71. package/es/editor/text-box/signature/signature.mjs +238 -0
  72. package/es/editor/text-box/text-box-editor.provider.mjs +4 -0
  73. package/es/editor/upload/ibiz-file-upload/ibiz-file-upload.d.ts +2 -0
  74. package/es/editor/upload/ibiz-image-cropping/ibiz-image-cropping.d.ts +2 -0
  75. package/es/editor/upload/ibiz-image-upload/ibiz-image-upload.d.ts +2 -0
  76. package/es/editor/upload/use/use-iview-upload.mjs +12 -3
  77. package/es/locale/en/index.d.ts +7 -0
  78. package/es/locale/en/index.mjs +7 -0
  79. package/es/locale/zh-CN/index.d.ts +7 -0
  80. package/es/locale/zh-CN/index.mjs +7 -0
  81. package/es/panel-component/panel-static-carousel/panel-static-carousel.d.ts +1 -1
  82. package/es/panel-component/user-message/async-action/async-data-export/async-data-export.mjs +1 -1
  83. package/es/util/open-view-util/open-view-util.mjs +1 -1
  84. package/es/view-engine/gantt-view.engine.mjs +4 -0
  85. package/lib/common/action-toolbar/action-toolbar.cjs +49 -7
  86. package/lib/common/action-toolbar/action-toolbar.css +1 -1
  87. package/lib/common/index.cjs +1 -0
  88. package/lib/control/dashboard/dashboard.cjs +2 -1
  89. package/lib/control/dashboard/portlet/actionbar-portlet/actionbar-portlet.cjs +3 -0
  90. package/lib/control/dashboard/portlet/portlet-layout/portlet-layout.cjs +6 -3
  91. package/lib/control/data-view/data-view.cjs +3 -0
  92. package/lib/control/data-view/data-view.css +1 -1
  93. package/lib/control/form/edit-form/edit-form.cjs +10 -1
  94. package/lib/control/form/form/form.cjs +1 -0
  95. package/lib/control/form/form-detail/form-group-panel/form-group-panel.cjs +3 -0
  96. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl-form/form-mdctrl-form.cjs +3 -1
  97. package/lib/control/form/form-detail/form-mdctrl/form-mdctrl.cjs +4 -1
  98. package/lib/control/grid/grid/grid.cjs +2 -6
  99. package/lib/control/grid/grid-column/grid-field-column/attachment-column/attachment-column.cjs +4 -3
  100. package/lib/control/grid/grid-column/grid-field-column/attachment-column/file-util.cjs +30 -3
  101. package/lib/control/grid/grid-column/grid-field-column/grid-field-column.cjs +1 -1
  102. package/lib/control/kanban/kanban.cjs +10 -5
  103. package/lib/control/kanban/kanban.css +1 -1
  104. package/lib/control/kanban/swimlane-kanban/swimlane-kanban.cjs +1 -0
  105. package/lib/control/kanban/swimlane-kanban/swimlane-kanban.css +1 -1
  106. package/lib/control/list/list.cjs +3 -0
  107. package/lib/control/search-bar/search-bar.cjs +25 -2
  108. package/lib/control/search-bar/search-bar.css +1 -1
  109. package/lib/control/search-bar/search-groups/search-groups.cjs +14 -1
  110. package/lib/control/search-bar/search-groups/search-groups.css +1 -1
  111. package/lib/control/toolbar/toolbar.cjs +1 -1
  112. package/lib/control/tree-grid/tree-grid.cjs +1 -0
  113. package/lib/control/tree-grid-ex/tree-grid-ex-column/tree-grid-ex-field-column/tree-grid-ex-field-column.cjs +8 -5
  114. package/lib/control/tree-grid-ex/tree-grid-ex.cjs +2 -1
  115. package/lib/editor/carousel/ibiz-carousel/ibiz-carousel.cjs +2 -2
  116. package/lib/editor/data-picker/ibiz-mpicker/ibiz-mpicker.cjs +4 -1
  117. package/lib/editor/html/wang-editor/wang-editor.cjs +3 -3
  118. package/lib/editor/index.cjs +6 -0
  119. package/lib/editor/markdown/ibiz-markdown-editor/ibiz-markdown-editor.cjs +2 -2
  120. package/lib/editor/text-box/index.cjs +2 -0
  121. package/lib/editor/text-box/signature/signature.cjs +240 -0
  122. package/lib/editor/text-box/signature/signature.css +1 -0
  123. package/lib/editor/text-box/text-box-editor.provider.cjs +4 -0
  124. package/lib/editor/upload/use/use-iview-upload.cjs +12 -3
  125. package/lib/locale/en/index.cjs +7 -0
  126. package/lib/locale/zh-CN/index.cjs +7 -0
  127. package/lib/panel-component/user-message/async-action/async-data-export/async-data-export.cjs +1 -1
  128. package/lib/util/open-view-util/open-view-util.cjs +1 -1
  129. package/lib/view-engine/gantt-view.engine.cjs +4 -0
  130. package/package.json +6 -6
  131. package/dist/ibiz-markdown-editor-e33m6ees.js +0 -1
  132. package/dist/index-hzGAQk1t.js +0 -11
  133. package/dist/wang-editor-qbGW8Rzj.js +0 -1
@@ -17,6 +17,8 @@ import './wang-editor.scss';
17
17
  * @editorparams {"name":"osscat","parameterType":"string","description":"用于计算上传和下载路径的OSS参数"}
18
18
  * @editorparams {name:ac,parameterType:boolean,defaultvalue:false,description:是否启用ac自填模式}
19
19
  * @editorparams {"name":"readonly","parameterType":"boolean","defaultvalue":false,"description":"设置编辑器是否为只读态"}
20
+ * @editorparams {"name":"appentitytag","parameterType":"string","description":"在应用启用下载授权时,用于指定当前文件所属实体。该参数值会作为验证下载权限的依据。配置格式为(应用代码名称.实体代码名称),示例:web.master"}
21
+ * @editorparams {"name":"datafieldtag","parameterType":"string","description":"在应用启用下载授权时,用于指定当前文件所关联的数据属性。完成配置后,将自动从容器数据(涵盖表单数据、表格行数据、面板数据)、上下文环境以及视图参数中获取该属性的实际值,将其作为验证下载权限的依据"}
20
22
  * @ignoreprops autoFocus | overflowMode
21
23
  * @ignoreemits enter | infoTextChange
22
24
  */
@@ -135,7 +135,7 @@ const IBizHtml = /* @__PURE__ */ defineComponent({
135
135
  },
136
136
  // 单个文件上传成功之后
137
137
  onSuccess(file, res) {
138
- if (ibiz.config.common.enableDownloadTicket) {
138
+ if (ibiz.config.common.enableDownloadTicket && res.ticket) {
139
139
  ibiz.util.file.setDownloadTicket(res.id, res.ticket);
140
140
  }
141
141
  console.log("".concat(file.name, " \u4E0A\u4F20\u6210\u529F"), res);
@@ -154,9 +154,9 @@ const IBizHtml = /* @__PURE__ */ defineComponent({
154
154
  let url = downloadUrl.replace("%fileId%", res.id);
155
155
  const alt = res.filename;
156
156
  if (ibiz.config.common.enableDownloadTicket) {
157
- const downloadTicket = await ibiz.util.file.getDownloadTicket(c.context, {
157
+ const downloadTicket = await ibiz.util.file.getDownloadTicket(c.context, c.params, props.data, {
158
158
  fileId: res.id
159
- });
159
+ }, c.downloadTicketParams);
160
160
  if (downloadTicket && downloadTicket.ticket) {
161
161
  url = downloadUrl.replace("%fileId%", downloadTicket.ticket);
162
162
  insertFn(url, alt, "");
@@ -36,6 +36,7 @@ import { IBizSpanLink } from './span/span-link/span-link.mjs';
36
36
  import { IBizInput } from './text-box/input/input.mjs';
37
37
  import { IBizInputNumber } from './text-box/ibiz-input-number/ibiz-input-number.mjs';
38
38
  import { IBizInputIP } from './text-box/ibiz-input-ip/ibiz-input-ip.mjs';
39
+ import { IBizSignature } from './text-box/signature/signature.mjs';
39
40
  import { IBizDropdown } from './dropdown-list/ibiz-dropdown/ibiz-dropdown.mjs';
40
41
  import { IBizEmojiPicker } from './dropdown-list/ibiz-emoji-picker/ibiz-emoji-picker.mjs';
41
42
  import { IBizTreePicker } from './dropdown-list/ibiz-tree-picker/ibiz-tree-picker.mjs';
@@ -112,6 +113,7 @@ const IBizEditor = {
112
113
  v.component(IBizInput.name, IBizInput);
113
114
  v.component(IBizInputNumber.name, IBizInputNumber);
114
115
  v.component(IBizInputIP.name, IBizInputIP);
116
+ v.component(IBizSignature.name, IBizSignature);
115
117
  v.component(IBizDropdown.name, IBizDropdown);
116
118
  v.component(IBizEmojiPicker.name, IBizEmojiPicker);
117
119
  v.component(IBizTreePicker.name, IBizTreePicker);
@@ -185,6 +187,10 @@ const IBizEditor = {
185
187
  );
186
188
  registerEditorProvider("MOBTEXTAREA", () => textBoxEditorProvider);
187
189
  registerEditorProvider("MOBPASSWORD", () => textBoxEditorProvider);
190
+ registerEditorProvider(
191
+ "TEXTBOX_SIGNATURE",
192
+ () => new TextBoxEditorProvider("SIGNATURE")
193
+ );
188
194
  registerEditorProvider(
189
195
  "DROPDOWNLIST",
190
196
  () => new DropDownListEditorProvider()
@@ -9,6 +9,8 @@ import './ibiz-markdown-editor.scss';
9
9
  * @editorparams {"name":"uploadparams","parameterType":"string","description":"上传参数,图片或文件上传时,用于计算上传路径"}
10
10
  * @editorparams {"name":"exportparams","parameterType":"string","description":"下载参数,图片或文件下载时,用于计算下载路径"}
11
11
  * @editorparams {"name":"osscat","parameterType":"string","description":"用于计算上传和下载路径的OSS参数"}
12
+ * @editorparams {"name":"appentitytag","parameterType":"string","description":"在应用启用下载授权时,用于指定当前文件所属实体。该参数值会作为验证下载权限的依据。配置格式为(应用代码名称.实体代码名称),示例:web.master"}
13
+ * @editorparams {"name":"datafieldtag","parameterType":"string","description":"在应用启用下载授权时,用于指定当前文件所关联的数据属性。完成配置后,将自动从容器数据(涵盖表单数据、表格行数据、面板数据)、上下文环境以及视图参数中获取该属性的实际值,将其作为验证下载权限的依据"}
12
14
  * @ignoreprops autoFocus | overflowMode
13
15
  * @ignoreemits blur | focus | enter | infoTextChange
14
16
  */
@@ -70,9 +70,9 @@ const IBizMarkDown = /* @__PURE__ */ defineComponent({
70
70
  const downloadUrl = getDownloadUrl(props.data || {}, data.fileid);
71
71
  let url = downloadUrl.replace("%fileId%", data.fileid);
72
72
  if (ibiz.config.common.enableDownloadTicket && c) {
73
- const downloadTicket = await ibiz.util.file.getDownloadTicket(c.context, {
73
+ const downloadTicket = await ibiz.util.file.getDownloadTicket(c.context, c.params, props.data || {}, {
74
74
  fileId: data.fileid
75
- });
75
+ }, c.downloadTicketParams);
76
76
  if (downloadTicket && downloadTicket.ticket) {
77
77
  url = downloadUrl.replace("%fileId%", downloadTicket.ticket);
78
78
  callback(url);
@@ -1,5 +1,6 @@
1
1
  export { IBizInput } from './input/input';
2
2
  export { IBizInputNumber } from './ibiz-input-number/ibiz-input-number';
3
3
  export { IBizInputIP } from './ibiz-input-ip/ibiz-input-ip';
4
+ export { IBizSignature } from './signature/signature';
4
5
  export * from './text-box-editor.controller';
5
6
  export * from './text-box-editor.provider';
@@ -1,6 +1,7 @@
1
1
  export { IBizInput } from './input/input.mjs';
2
2
  export { IBizInputNumber } from './ibiz-input-number/ibiz-input-number.mjs';
3
3
  export { IBizInputIP } from './ibiz-input-ip/ibiz-input-ip.mjs';
4
+ export { IBizSignature } from './signature/signature.mjs';
4
5
  export { TextBoxEditorController } from './text-box-editor.controller.mjs';
5
6
  export { TextBoxEditorProvider } from './text-box-editor.provider.mjs';
6
7
 
@@ -0,0 +1 @@
1
+ .ibiz-signature{--ibiz-signature-min-height:200px;width:100%;height:100%;min-height:var(--ibiz-signature-min-height)}.ibiz-signature__pad .ibiz-signature-pad__container{background-color:var(--ibiz-color-bg-0)}.ibiz-signature__toolbar{display:flex;align-items:center;justify-content:flex-end;width:100%;margin-top:var(--ibiz-spacing-base)}.ibiz-signature--readonly{pointer-events:none}.ibiz-signature--disabled{pointer-events:none}.ibiz-form-item .ibiz-signature.is-show-default:hover .ibiz-signature__toolbar{display:flex}.ibiz-form-item .ibiz-signature.is-show-default .ibiz-signature__toolbar{display:none}
@@ -0,0 +1,102 @@
1
+ import { Ref } from 'vue';
2
+ import { TextBoxEditorController } from '../text-box-editor.controller';
3
+ import './signature.scss';
4
+ /**
5
+ * 电子签名(扩展)
6
+ *
7
+ * @description 用于在业务系统中采集、展示和保存用户签名信息。基于`文本框`编辑器进行扩展,编辑器样式代码名称为:SIGNATURE
8
+ * @primary
9
+ * @editorparams {"name":"mode","parameterType":"'img' | 'file'","defaultvalue":"'img'","description":"指定签名的保存格式。当值为'img'时,直接保存为Base64格式的图片URL(以data:协议开头);当值为'file'时,系统会先将签名图片上传至服务器,再保存服务器返回的文件元信息(包含文件ID和名称)"}
10
+ * @editorparams {"name":"buttons","parameterType":"string","defaultvalue":"'\\[{\"label\":\"撤销\",\"type\":\"undo\"},{\"label\":\"重写\",\"type\":\"rewrite\"},{\"label\":\"确认\",\"type\":\"confirm\",\"buttonType\":\"primary\"}\\]'","description":"配置签名的操作按钮。JSON 字符串数组中每个对象表示一个按钮:label为按钮显示文本;type为按钮触发的事件类型(undo-撤销上一步,rewrite-清空重写,confirm-确认保存);buttonType可选,指定按钮样式(支持primary/success/default/danger/warning)。示例:仅显示确认按钮可配置为\\[{\"label\":\"确认\",\"type\":\"confirm\",\"buttonType\":\"primary\"}\\]"}
11
+ * @editorparams {name:dotsize,parameterType:number,defaultvalue:0,description:点的大小(单位:像素)。控制点击画布时生成的点的尺寸,0表示根据线条宽度自动计算点的大小}
12
+ * @editorparams {name:minwidth,parameterType:number,defaultvalue:2,description:线条最小宽度(单位:像素)。控制签名线条的最细宽度,绘制速度越快,线条越接近此值}
13
+ * @editorparams {name:maxwidth,parameterType:number,defaultvalue:2,description:线条最大宽度(单位:像素)。控制签名线条的最粗宽度,绘制速度越慢,线条越接近此值}
14
+ * @editorparams {"name":"pencolor","parameterType":"string","defaultvalue":"'black'","description":"画笔颜色。签名轨迹的颜色,可接受CSS颜色格式(如#ff0000)"}
15
+ * @editorparams {name:velocityfilterweight,parameterType:number,defaultvalue:0.7,description:线条粗细速度敏感度。用于平滑处理绘制速度的计算,影响线条粗细随速度的变化幅度。值越接近1,当前速度对线条粗细影响越大;值越小,线条过渡越平滑}
16
+ * @editorparams {name:mindistance,parameterType:number,defaultvalue:5,description:绘制点最小记录间距(单位:像素)。当点击画布生成的点与后续绘制线的距离小于此值时,不记录后续绘制的线,用于减少冗余数据并优化绘制流畅度}
17
+ * @editorparams {"name":"backgroundcolor","parameterType":"string","defaultvalue":"'rgba(0,0,0,0)'","description":"画布背景色。签名画布的背景颜色,导出图片时会包含此背景,可接受CSS颜色格式"}
18
+ * @editorparams {name:throttle,parameterType:number,defaultvalue:16,description:事件节流时间(单位:毫秒)。限制绘制事件的触发频率,避免高频操作导致性能问题}
19
+ * @editorparams {"name":"readonly","parameterType":"boolean","defaultvalue":false,"description":"设置编辑器是否为只读态"}
20
+ * @editorparams {"name":"appentitytag","parameterType":"string","description":"在应用启用下载授权时,用于指定当前文件所属实体。该参数值会作为验证下载权限的依据。配置格式为(应用代码名称.实体代码名称),示例:web.master"}
21
+ * @editorparams {"name":"datafieldtag","parameterType":"string","description":"在应用启用下载授权时,用于指定当前文件所关联的数据属性。完成配置后,将自动从容器数据(涵盖表单数据、表格行数据、面板数据)、上下文环境以及视图参数中获取该属性的实际值,将其作为验证下载权限的依据"}
22
+ * @ignoreprops autoFocus | overflowMode
23
+ * @ignoreemits blur | focus | enter | infoTextChange
24
+ */
25
+ export declare const IBizSignature: import("vue").DefineComponent<{
26
+ value: (StringConstructor | NumberConstructor)[];
27
+ controller: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<TextBoxEditorController>, undefined, undefined>;
28
+ data: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<import("@ibiz-template/core").IApiData>, undefined, undefined>;
29
+ disabled: {
30
+ type: BooleanConstructor;
31
+ };
32
+ readonly: {
33
+ type: BooleanConstructor;
34
+ default: boolean;
35
+ };
36
+ autoFocus: {
37
+ type: BooleanConstructor;
38
+ default: boolean;
39
+ };
40
+ overflowMode: {
41
+ type: StringConstructor;
42
+ };
43
+ controlParams: {
44
+ type: ObjectConstructor;
45
+ required: boolean;
46
+ };
47
+ }, {
48
+ c: TextBoxEditorController;
49
+ ns: import("@ibiz-template/core").Namespace;
50
+ signatureRef: Ref<any>;
51
+ fullScreen: Ref<boolean>;
52
+ currentDataURL: Ref<string>;
53
+ buttons: ({
54
+ label: string;
55
+ type: string;
56
+ buttonType?: undefined;
57
+ } | {
58
+ label: string;
59
+ type: string;
60
+ buttonType: string;
61
+ })[];
62
+ showFormDefaultContent: import("vue").ComputedRef<boolean>;
63
+ handleButtonClick: (_type: string) => void;
64
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
65
+ change: (_value: unknown, _name?: string | undefined, _ignore?: boolean | undefined) => boolean;
66
+ blur: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
67
+ focus: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
68
+ enter: (_event?: import("@ibiz-template/core").IApiData | undefined) => boolean;
69
+ infoTextChange: (_text: string) => boolean;
70
+ }, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
71
+ value: (StringConstructor | NumberConstructor)[];
72
+ controller: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<TextBoxEditorController>, undefined, undefined>;
73
+ data: import("@ibiz-template/vue3-util").RequiredProp<import("vue").PropType<import("@ibiz-template/core").IApiData>, undefined, undefined>;
74
+ disabled: {
75
+ type: BooleanConstructor;
76
+ };
77
+ readonly: {
78
+ type: BooleanConstructor;
79
+ default: boolean;
80
+ };
81
+ autoFocus: {
82
+ type: BooleanConstructor;
83
+ default: boolean;
84
+ };
85
+ overflowMode: {
86
+ type: StringConstructor;
87
+ };
88
+ controlParams: {
89
+ type: ObjectConstructor;
90
+ required: boolean;
91
+ };
92
+ }>> & {
93
+ onFocus?: ((_event?: import("@ibiz-template/core").IApiData | undefined) => any) | undefined;
94
+ onBlur?: ((_event?: import("@ibiz-template/core").IApiData | undefined) => any) | undefined;
95
+ onChange?: ((_value: unknown, _name?: string | undefined, _ignore?: boolean | undefined) => any) | undefined;
96
+ onInfoTextChange?: ((_text: string) => any) | undefined;
97
+ onEnter?: ((_event?: import("@ibiz-template/core").IApiData | undefined) => any) | undefined;
98
+ }, {
99
+ disabled: boolean;
100
+ readonly: boolean;
101
+ autoFocus: boolean;
102
+ }, {}>;
@@ -0,0 +1,238 @@
1
+ import { ref, computed, nextTick, watch, resolveComponent, createVNode, defineComponent } from 'vue';
2
+ import { getInputProps, getEditorEmits, useNamespace } from '@ibiz-template/vue3-util';
3
+ import { CoreConst, getAppCookie, base64ToBlob } from '@ibiz-template/core';
4
+ import './signature.css';
5
+
6
+ "use strict";
7
+ const IBizSignature = /* @__PURE__ */ defineComponent({
8
+ name: "IBizSignature",
9
+ props: getInputProps(),
10
+ emits: getEditorEmits(),
11
+ setup(props, {
12
+ emit
13
+ }) {
14
+ const ns = useNamespace("signature");
15
+ const c = props.controller;
16
+ const editorModel = c.model;
17
+ const headers = ref({
18
+ ["".concat(ibiz.env.tokenHeader, "Authorization")]: "".concat(ibiz.env.tokenPrefix, "Bearer ").concat(getAppCookie(CoreConst.TOKEN))
19
+ });
20
+ const uploadUrl = ref("");
21
+ const downloadUrl = ref("");
22
+ const signatureRef = ref();
23
+ const fullScreen = ref(false);
24
+ const currentDataURL = ref("");
25
+ const currentVal = ref("");
26
+ let saveMode = "img";
27
+ let buttons = [{
28
+ label: ibiz.i18n.t("editor.signature.undo"),
29
+ type: "undo"
30
+ }, {
31
+ label: ibiz.i18n.t("editor.signature.rewrite"),
32
+ type: "rewrite"
33
+ }, {
34
+ label: ibiz.i18n.t("editor.signature.confirm"),
35
+ type: "confirm",
36
+ buttonType: "primary"
37
+ }];
38
+ if (editorModel.editorParams) {
39
+ if (editorModel.editorParams.mode) {
40
+ saveMode = editorModel.editorParams.mode;
41
+ }
42
+ if (editorModel.editorParams.buttons) {
43
+ try {
44
+ buttons = JSON.parse(editorModel.editorParams.buttons);
45
+ } catch (error) {
46
+ ibiz.log.error(error);
47
+ }
48
+ }
49
+ }
50
+ const showFormDefaultContent = computed(() => {
51
+ if (props.controlParams && props.controlParams.editmode === "hover" && !props.readonly) {
52
+ return true;
53
+ }
54
+ return false;
55
+ });
56
+ const restCavans = () => {
57
+ var _a;
58
+ (_a = signatureRef.value) == null ? void 0 : _a.updateSignaturePad(() => {
59
+ nextTick(() => {
60
+ var _a2, _b;
61
+ if (currentDataURL.value) {
62
+ (_a2 = signatureRef.value) == null ? void 0 : _a2.signaturePad.fromDataURL(currentDataURL.value);
63
+ } else {
64
+ (_b = signatureRef.value) == null ? void 0 : _b.signaturePad.clear();
65
+ }
66
+ });
67
+ });
68
+ };
69
+ const handleCurrentVal = async () => {
70
+ var _a, _b;
71
+ if (currentVal.value) {
72
+ ibiz.loading.showRedirect();
73
+ if (saveMode === "img") {
74
+ currentDataURL.value = currentVal.value;
75
+ } else if (downloadUrl.value) {
76
+ const fileData = JSON.parse(currentVal.value)[0];
77
+ const _url = downloadUrl.value.replace("%fileId%", fileData.id);
78
+ try {
79
+ const editorParams = {
80
+ ...c.editorParams
81
+ };
82
+ if (editorParams.exportparams) {
83
+ editorParams.exportParams = JSON.parse(editorParams.exportparams);
84
+ }
85
+ const fileBlob = await ibiz.util.file.requestFile(_url, void 0, {
86
+ context: c.context,
87
+ params: c.params,
88
+ data: props.data,
89
+ file: {
90
+ fileId: fileData.id
91
+ },
92
+ extraParams: editorParams,
93
+ downloadTicketParams: c.downloadTicketParams
94
+ });
95
+ const dataUrl = await ((_a = signatureRef.value) == null ? void 0 : _a.signaturePad.blobToDataURL(fileBlob));
96
+ currentDataURL.value = dataUrl;
97
+ } catch (error) {
98
+ ibiz.log.error(error);
99
+ }
100
+ }
101
+ restCavans();
102
+ (_b = signatureRef.value) == null ? void 0 : _b.signaturePad.loadImage(currentDataURL.value, () => {
103
+ ibiz.loading.hideRedirect();
104
+ });
105
+ }
106
+ };
107
+ watch(() => props.data, (newVal) => {
108
+ if (newVal) {
109
+ const urls = ibiz.util.file.calcFileUpDownUrl(c.context, c.params, newVal, c.editorParams);
110
+ uploadUrl.value = urls.uploadUrl;
111
+ downloadUrl.value = urls.downloadUrl;
112
+ }
113
+ }, {
114
+ immediate: true,
115
+ deep: true
116
+ });
117
+ watch(() => props.value, async (newVal, oldVal) => {
118
+ if (newVal !== oldVal) {
119
+ if (!newVal) {
120
+ currentVal.value = "";
121
+ } else {
122
+ currentVal.value = "".concat(newVal || "");
123
+ }
124
+ await handleCurrentVal();
125
+ }
126
+ }, {
127
+ immediate: true
128
+ });
129
+ const handleEmit = (_value) => {
130
+ emit("change", _value);
131
+ };
132
+ const getFileType = (dataURL) => {
133
+ const parts = dataURL.split(",");
134
+ const mime = parts[0].split(":")[1].split(";")[0];
135
+ return {
136
+ type: mime
137
+ };
138
+ };
139
+ const handleUpload = async (dataURL) => {
140
+ const {
141
+ type
142
+ } = getFileType(dataURL);
143
+ const blob = base64ToBlob(dataURL);
144
+ const fileName = "signature_".concat(Date.now(), ".png");
145
+ const file = new File([blob], fileName, {
146
+ type
147
+ });
148
+ const fileInfo = await ibiz.util.file.fileUpload(uploadUrl.value, file, headers.value);
149
+ return fileInfo;
150
+ };
151
+ const handleRemove = () => {
152
+ var _a;
153
+ (_a = signatureRef.value) == null ? void 0 : _a.signaturePad.clear();
154
+ currentDataURL.value = "";
155
+ handleEmit(null);
156
+ };
157
+ const handleFileChange = async (dataURL) => {
158
+ const file = await handleUpload(dataURL);
159
+ handleEmit(JSON.stringify([{
160
+ name: file.name,
161
+ id: file.id
162
+ }]));
163
+ };
164
+ const handleConfirm = () => {
165
+ var _a, _b, _c;
166
+ fullScreen.value = false;
167
+ if (!((_a = signatureRef.value) == null ? void 0 : _a.signaturePad.isRedrawn()))
168
+ return;
169
+ if ((_b = signatureRef.value) == null ? void 0 : _b.signaturePad.isEmpty()) {
170
+ handleRemove();
171
+ return;
172
+ }
173
+ const dataURL = (_c = signatureRef.value) == null ? void 0 : _c.signaturePad.toDataURL();
174
+ if (dataURL === currentDataURL.value)
175
+ return;
176
+ currentDataURL.value = dataURL;
177
+ switch (saveMode) {
178
+ case "file":
179
+ handleFileChange(dataURL);
180
+ break;
181
+ case "img":
182
+ default:
183
+ handleEmit(dataURL);
184
+ break;
185
+ }
186
+ };
187
+ const handleButtonClick = (_type) => {
188
+ var _a, _b;
189
+ switch (_type) {
190
+ case "undo":
191
+ (_a = signatureRef.value) == null ? void 0 : _a.signaturePad.undoLastStep();
192
+ break;
193
+ case "rewrite":
194
+ (_b = signatureRef.value) == null ? void 0 : _b.signaturePad.clear();
195
+ break;
196
+ case "confirm":
197
+ handleConfirm();
198
+ break;
199
+ default:
200
+ break;
201
+ }
202
+ };
203
+ return {
204
+ c,
205
+ ns,
206
+ signatureRef,
207
+ fullScreen,
208
+ currentDataURL,
209
+ buttons,
210
+ showFormDefaultContent,
211
+ handleButtonClick
212
+ };
213
+ },
214
+ render() {
215
+ return createVNode("div", {
216
+ "class": [this.ns.b(), this.disabled ? this.ns.m("disabled") : "", this.readonly ? this.ns.m("readonly") : "", this.ns.is("show-default", this.showFormDefaultContent)]
217
+ }, [createVNode(resolveComponent("iBizSignaturePad"), {
218
+ "ref": "signatureRef",
219
+ "class": this.ns.e("pad"),
220
+ "options": {
221
+ ...this.c.model.editorParams,
222
+ ...this.$attrs
223
+ }
224
+ }, null), !this.readonly && createVNode("div", {
225
+ "class": this.ns.e("toolbar")
226
+ }, [this.buttons.map((_btn) => {
227
+ return createVNode(resolveComponent("el-button"), {
228
+ "disabled": this.disabled,
229
+ "type": _btn.buttonType && _btn.buttonType.toLowerCase() || "default",
230
+ "onClick": () => this.handleButtonClick(_btn.type)
231
+ }, {
232
+ default: () => [_btn.label]
233
+ });
234
+ })])]);
235
+ }
236
+ });
237
+
238
+ export { IBizSignature };
@@ -19,6 +19,10 @@ class TextBoxEditorProvider {
19
19
  this.formEditor = "IBizInputIP";
20
20
  this.gridEditor = "IBizInputIP";
21
21
  }
22
+ if (editorType === "SIGNATURE") {
23
+ this.formEditor = "IBizSignature";
24
+ this.gridEditor = "IBizSignature";
25
+ }
22
26
  }
23
27
  async createController(editorModel, parentController) {
24
28
  const c = new TextBoxEditorController(editorModel, parentController);
@@ -13,6 +13,8 @@ import './ibiz-file-upload.scss';
13
13
  * @editorparams {"name":"osscat","parameterType":"string","description":"用于计算上传和下载路径的OSS参数"}
14
14
  * @editorparams {"name":"infomap","parameterType":"string","description":"上传文件信息的映射规则字符串,用于将上传成功后返回的文件数据转换为保存数据所需格式。格式为'源键:目标键;源键2:目标键2'。示例:映射规则('filesize:size;fileext:ext'),源对象({filesize:'10000', fileext:'.gif'}),转换结果({size:'10000', ext:'.gif'})"}
15
15
  * @editorparams {"name":"readonly","parameterType":"boolean","defaultvalue":false,"description":"设置编辑器是否为只读态"}
16
+ * @editorparams {"name":"appentitytag","parameterType":"string","description":"在应用启用下载授权时,用于指定当前文件所属实体。该参数值会作为验证下载权限的依据。配置格式为(应用代码名称.实体代码名称),示例:web.master"}
17
+ * @editorparams {"name":"datafieldtag","parameterType":"string","description":"在应用启用下载授权时,用于指定当前文件所关联的数据属性。完成配置后,将自动从容器数据(涵盖表单数据、表格行数据、面板数据)、上下文环境以及视图参数中获取该属性的实际值,将其作为验证下载权限的依据"}
16
18
  * @ignoreprops autoFocus | overflowMode
17
19
  * @ignoreemits blur | focus | enter | infoTextChange
18
20
  */
@@ -15,6 +15,8 @@ import './ibiz-image-cropping.scss';
15
15
  * @editorparams {"name":"osscat","parameterType":"string","description":"用于计算上传和下载路径的OSS参数"}
16
16
  * @editorparams {"name":"infomap","parameterType":"string","description":"上传文件信息的映射规则字符串,用于将上传成功后返回的文件数据转换为保存数据所需格式。格式为'源键:目标键;源键2:目标键2'。示例:映射规则('filesize:size;fileext:ext'),源对象({filesize:'10000', fileext:'.gif'}),转换结果({size:'10000', ext:'.gif'})"}
17
17
  * @editorparams {"name":"readonly","parameterType":"boolean","defaultvalue":false,"description":"设置编辑器是否为只读态"}
18
+ * @editorparams {"name":"appentitytag","parameterType":"string","description":"在应用启用下载授权时,用于指定当前文件所属实体。该参数值会作为验证下载权限的依据。配置格式为(应用代码名称.实体代码名称),示例:web.master"}
19
+ * @editorparams {"name":"datafieldtag","parameterType":"string","description":"在应用启用下载授权时,用于指定当前文件所关联的数据属性。完成配置后,将自动从容器数据(涵盖表单数据、表格行数据、面板数据)、上下文环境以及视图参数中获取该属性的实际值,将其作为验证下载权限的依据"}
18
20
  * @ignoreprops autoFocus | overflowMode
19
21
  * @ignoreemits blur | focus | enter | infoTextChange
20
22
  */
@@ -13,6 +13,8 @@ import { UploadEditorController } from '../upload-editor.controller';
13
13
  * @editorparams {"name":"osscat","parameterType":"string","description":"用于计算上传和下载路径的OSS参数"}
14
14
  * @editorparams {"name":"infomap","parameterType":"string","description":"上传文件信息的映射规则字符串,用于将上传成功后返回的文件数据转换为保存数据所需格式。格式为'源键:目标键;源键2:目标键2'。示例:映射规则('filesize:size;fileext:ext'),源对象({filesize:'10000', fileext:'.gif'}),转换结果({size:'10000', ext:'.gif'})"}
15
15
  * @editorparams {"name":"readonly","parameterType":"boolean","defaultvalue":false,"description":"设置编辑器是否为只读态"}
16
+ * @editorparams {"name":"appentitytag","parameterType":"string","description":"在应用启用下载授权时,用于指定当前文件所属实体。该参数值会作为验证下载权限的依据。配置格式为(应用代码名称.实体代码名称),示例:web.master"}
17
+ * @editorparams {"name":"datafieldtag","parameterType":"string","description":"在应用启用下载授权时,用于指定当前文件所关联的数据属性。完成配置后,将自动从容器数据(涵盖表单数据、表格行数据、面板数据)、上下文环境以及视图参数中获取该属性的实际值,将其作为验证下载权限的依据"}
16
18
  * @ignoreprops autoFocus | overflowMode
17
19
  * @ignoreemits blur | focus | enter | infoTextChange
18
20
  */
@@ -100,7 +100,15 @@ function useIViewUpload(props, valueChange, c) {
100
100
  const downloadUrl = getDownloadUrl(props.data, file);
101
101
  file.url = file.url || downloadUrl.replace("%fileId%", file.id);
102
102
  if (ibiz.config.common.enableDownloadTicket) {
103
- ibiz.util.file.getDownloadTicket(c.context, { fileId: file.id }).then((downloadTicket) => {
103
+ ibiz.util.file.getDownloadTicket(
104
+ c.context,
105
+ c.params,
106
+ props.data,
107
+ {
108
+ fileId: file.id
109
+ },
110
+ c.downloadTicketParams
111
+ ).then((downloadTicket) => {
104
112
  if (downloadTicket && downloadTicket.ticket) {
105
113
  file.url = downloadUrl.replace(
106
114
  "%fileId%",
@@ -151,7 +159,7 @@ function useIViewUpload(props, valueChange, c) {
151
159
  if (!response) {
152
160
  return;
153
161
  }
154
- if (ibiz.config.common.enableDownloadTicket) {
162
+ if (ibiz.config.common.enableDownloadTicket && response.ticket) {
155
163
  ibiz.util.file.setDownloadTicket(response.id, response.ticket);
156
164
  }
157
165
  uploadCache.cacheFiles.push({
@@ -201,7 +209,8 @@ function useIViewUpload(props, valueChange, c) {
201
209
  params: c.params,
202
210
  data: props.data,
203
211
  file: { fileId: file.id, ...file },
204
- extraParams: editorParams
212
+ extraParams: editorParams,
213
+ downloadTicketParams: c.downloadTicketParams
205
214
  });
206
215
  };
207
216
  const limit = computed(() => {
@@ -1443,6 +1443,13 @@ declare const _default: {
1443
1443
  expandAll: string;
1444
1444
  collapseAll: string;
1445
1445
  };
1446
+ signature: {
1447
+ undo: string;
1448
+ rewrite: string;
1449
+ confirm: string;
1450
+ addSignature: string;
1451
+ signaturePrompt: string;
1452
+ };
1446
1453
  };
1447
1454
  panelComponent: {
1448
1455
  authUserinfo: {
@@ -701,6 +701,13 @@ var index = {
701
701
  allProhibited: "All prohibited",
702
702
  expandAll: "Expand all",
703
703
  collapseAll: "Collapse all"
704
+ },
705
+ signature: {
706
+ undo: "Undo",
707
+ rewrite: "Rewrite",
708
+ confirm: "Confirm",
709
+ addSignature: "Click here to add signature",
710
+ signaturePrompt: "Please write horizontally in the blank area"
704
711
  }
705
712
  },
706
713
  panelComponent: {
@@ -1438,6 +1438,13 @@ declare const _default: {
1438
1438
  expandAll: string;
1439
1439
  collapseAll: string;
1440
1440
  };
1441
+ signature: {
1442
+ undo: string;
1443
+ rewrite: string;
1444
+ confirm: string;
1445
+ addSignature: string;
1446
+ signaturePrompt: string;
1447
+ };
1441
1448
  };
1442
1449
  panelComponent: {
1443
1450
  authUserinfo: {
@@ -697,6 +697,13 @@ var index = {
697
697
  allProhibited: "\u5168\u90E8\u7981\u6B62",
698
698
  expandAll: "\u5168\u90E8\u5C55\u5F00",
699
699
  collapseAll: "\u5168\u90E8\u6536\u8D77"
700
+ },
701
+ signature: {
702
+ undo: "\u64A4\u9500",
703
+ rewrite: "\u91CD\u5199",
704
+ confirm: "\u786E\u8BA4",
705
+ addSignature: "\u70B9\u51FB\u6B64\u5904\u6DFB\u52A0\u7B7E\u540D",
706
+ signaturePrompt: "\u8BF7\u5728\u7A7A\u767D\u533A\u57DF\u5185\u6A2A\u5411\u4E66\u5199"
700
707
  }
701
708
  },
702
709
  panelComponent: {
@@ -7,7 +7,7 @@ import './panel-static-carousel.scss';
7
7
  * @description 使用el-carousel组件,静态轮播组件,可配置静态图片用于轮播展示。
8
8
  * @panelitemparams {name:autoplay,parameterType:string,defaultvalue:-,description:为1时自动播放,为0时不自动播放}
9
9
  * @panelitemparams {name:timespan,parameterType:number,defaultvalue:3000,description:轮播间隔,单位ms}
10
- * @panelitemparams {name:showMode,parameterType:`DEFAULT | CARD`,defaultvalue:DEFAULT,description:为CARD时展示卡片样式}
10
+ * @panelitemparams {name:showMode,parameterType:'DEFAULT' | 'CARD',defaultvalue:'DEFAULT',description:为CARD时展示卡片样式}
11
11
  * @primary
12
12
  */
13
13
  export declare const PanelStaticCarousel: import("vue").DefineComponent<{
@@ -48,7 +48,7 @@ const AsyncDataExport = /* @__PURE__ */ defineComponent({
48
48
  info.isFinish = true;
49
49
  }
50
50
  const onDownLoad = () => {
51
- ibiz.util.file.fileDownload(info.fileUrl, info.fileName);
51
+ ibiz.util.file.fileDownload(info.fileUrl, info.fileName, void 0, false);
52
52
  };
53
53
  return {
54
54
  ns,
@@ -193,7 +193,7 @@ class OpenViewUtil {
193
193
  context,
194
194
  params
195
195
  );
196
- window.open("".concat(UrlHelper.routeBase).concat(path), "_blank", "popup");
196
+ window.open("".concat(UrlHelper.routeBase).concat(path), "_blank");
197
197
  }
198
198
  }
199
199
 
@@ -23,6 +23,10 @@ class GanttViewEngine extends TreeGridExViewEngine {
23
23
  this.gantt.saveAll();
24
24
  return null;
25
25
  }
26
+ if (key === SysUIActionTag.REFRESH) {
27
+ await this.gantt.refresh();
28
+ return null;
29
+ }
26
30
  return super.call(key, args);
27
31
  }
28
32
  async onCreated() {