@ibiz-template/vue3-components 0.7.41-alpha.52 → 0.7.41-alpha.53

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 (39) hide show
  1. package/dist/{index-B0XiEslO.js → index-B65kCxFK.js} +1 -1
  2. package/dist/index-BF8huIAU.js +11 -0
  3. package/dist/{index-B6kaPJDO.js → index-CIEKzp7k.js} +1 -1
  4. package/dist/index.min.css +1 -1
  5. package/dist/index.system.min.js +1 -1
  6. package/dist/{wang-editor-BbR16ZTX.js → wang-editor-uEldtkHX.js} +1 -1
  7. package/dist/{xlsx-util-BkJoKKKt.js → xlsx-util-DmPcr7YV.js} +1 -1
  8. package/es/common/action-toolbar/action-toolbar.css +1 -1
  9. package/es/locale/en/index.mjs +4 -0
  10. package/es/locale/zh-CN/index.mjs +4 -0
  11. package/es/panel-component/user-message/internal-message/common/internal-message-container/internal-message-container.mjs +7 -6
  12. package/es/panel-component/user-message/internal-message/common/internal-message-default/internal-message-default.mjs +3 -1
  13. package/es/panel-component/user-message/internal-message/common/internal-message-default/internal-message-default.provider.mjs +0 -1
  14. package/es/panel-component/user-message/internal-message/index.mjs +2 -0
  15. package/es/panel-component/user-message/internal-message/internal-message-group/internal-message-group.css +1 -0
  16. package/es/panel-component/user-message/internal-message/internal-message-group/internal-message-group.mjs +122 -0
  17. package/es/panel-component/user-message/internal-message/internal-message-html/internal-message-html.mjs +4 -2
  18. package/es/panel-component/user-message/internal-message/internal-message-json/internal-message-json.mjs +5 -3
  19. package/es/panel-component/user-message/internal-message/internal-message-tab/internal-message-tab.mjs +75 -12
  20. package/es/panel-component/user-message/internal-message/internal-message-text/internal-message-text.mjs +3 -1
  21. package/es/util/ai-chat-util/ai-chat-util.mjs +58 -6
  22. package/es/view-engine/wf-dyna-edit-view.engine.mjs +2 -2
  23. package/lib/common/action-toolbar/action-toolbar.css +1 -1
  24. package/lib/locale/en/index.cjs +4 -0
  25. package/lib/locale/zh-CN/index.cjs +4 -0
  26. package/lib/panel-component/user-message/internal-message/common/internal-message-container/internal-message-container.cjs +7 -6
  27. package/lib/panel-component/user-message/internal-message/common/internal-message-default/internal-message-default.cjs +3 -1
  28. package/lib/panel-component/user-message/internal-message/common/internal-message-default/internal-message-default.provider.cjs +0 -1
  29. package/lib/panel-component/user-message/internal-message/index.cjs +2 -0
  30. package/lib/panel-component/user-message/internal-message/internal-message-group/internal-message-group.cjs +124 -0
  31. package/lib/panel-component/user-message/internal-message/internal-message-group/internal-message-group.css +1 -0
  32. package/lib/panel-component/user-message/internal-message/internal-message-html/internal-message-html.cjs +4 -2
  33. package/lib/panel-component/user-message/internal-message/internal-message-json/internal-message-json.cjs +5 -3
  34. package/lib/panel-component/user-message/internal-message/internal-message-tab/internal-message-tab.cjs +75 -12
  35. package/lib/panel-component/user-message/internal-message/internal-message-text/internal-message-text.cjs +3 -1
  36. package/lib/util/ai-chat-util/ai-chat-util.cjs +58 -6
  37. package/lib/view-engine/wf-dyna-edit-view.engine.cjs +2 -2
  38. package/package.json +8 -8
  39. package/dist/index-DFvp2f5r.js +0 -11
@@ -1 +1 @@
1
- @charset "UTF-8";.ibiz-action-toolbar{--ibiz-action-toolbar-item-margin:var(--ibiz-spacing-none) var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none) var(--ibiz-spacing-none);--ibiz-action-toolbar-item-padding:var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-separator-height:var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-separator-width:var(--ibiz-spacing-super-tight);--ibiz-action-toolbar-separator-color:var(--ibiz-color-border);--ibiz-action-toolbar-popover-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-popover-button-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-popover-button-color:var(--ibiz-color-text-2);--ibiz-action-toolbar-popover-button-hover-bg:var(--ibiz-color-bg-0);display:flex;flex-wrap:wrap}.ibiz-action-toolbar__item{padding:var(--ibiz-action-toolbar-item-padding);margin:var(--ibiz-action-toolbar-item-margin)}.ibiz-action-toolbar__item--icon.is-has-icon{display:flex;align-items:baseline;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);margin-right:var(--ibiz-spacing-extra-tight);margin-left:var(--ibiz-spacing-extra-tight);font-size:var(--ibiz-width-icon-medium)}.ibiz-action-toolbar__item--label.is-has-caption{margin-right:var(--ibiz-spacing-extra-tight)}.ibiz-action-toolbar__item+.ibiz-action-toolbar__item{margin:var(--ibiz-action-toolbar-item-margin)}.ibiz-action-toolbar__group-item>span{width:100%}.ibiz-action-toolbar__group-item--content{display:flex;gap:var(--ibiz-spacing-extra-tight);align-items:center;justify-content:space-between;width:100%}.ibiz-action-toolbar__group-item--caption{display:flex;align-items:center;padding:var(--ibiz-action-toolbar-item-padding);margin:var(--ibiz-action-toolbar-item-margin)}.ibiz-action-toolbar__separator{height:auto}.ibiz-action-toolbar__popover{--ibiz-action-toolbar-item-margin:var(--ibiz-spacing-none) var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none) var(--ibiz-spacing-none);--ibiz-action-toolbar-item-padding:var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-separator-height:var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-separator-width:var(--ibiz-spacing-super-tight);--ibiz-action-toolbar-separator-color:var(--ibiz-color-border);--ibiz-action-toolbar-popover-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-popover-button-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-popover-button-color:var(--ibiz-color-text-2);--ibiz-action-toolbar-popover-button-hover-bg:var(--ibiz-color-bg-0);width:auto!important;min-width:150px;--el-popover-padding:var(--ibiz-action-toolbar-popover-padding)}.ibiz-action-toolbar__popover .el-button{--el-button-size:getCssVar("height-control", "large");display:block;width:100%;padding:var(--ibiz-action-toolbar-popover-button-padding);margin:var(--ibiz-spacing-none);font-size:var(--ibiz-font-size-regular);color:var(--ibiz-action-toolbar-popover-button-color);text-align:left;border-radius:0}.ibiz-action-toolbar__popover .el-button:hover{background-color:var(--ibiz-action-toolbar-popover-button-hover-bg)}.ibiz-action-toolbar__popover .el-button .ibiz-icon{margin-right:var(--ibiz-spacing-extra-tight)}.ibiz-action-toolbar__popover .ibiz-action-toolbar__separator{margin:var(--ibiz-spacing-none)}.ibiz-action-toolbar--dropdown .ibiz-action-toolbar__caption{cursor:pointer}.ibiz-action-toolbar--dropdown .ibiz-action-toolbar__caption-icon{vertical-align:bottom}
1
+ @charset "UTF-8";.ibiz-action-toolbar{--ibiz-action-toolbar-item-margin:var(--ibiz-spacing-none) var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none) var(--ibiz-spacing-none);--ibiz-action-toolbar-item-padding:var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-separator-height:var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-separator-width:var(--ibiz-spacing-super-tight);--ibiz-action-toolbar-separator-color:var(--ibiz-color-border);--ibiz-action-toolbar-popover-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-popover-button-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-popover-button-color:var(--ibiz-color-text-2);--ibiz-action-toolbar-popover-button-hover-bg:var(--ibiz-color-bg-0);display:flex;flex-wrap:wrap}.ibiz-action-toolbar__item{padding:var(--ibiz-action-toolbar-item-padding);margin:var(--ibiz-action-toolbar-item-margin)}.ibiz-action-toolbar__item--icon.is-has-icon{position:relative;display:flex;align-items:baseline;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);margin-right:var(--ibiz-spacing-extra-tight);margin-left:var(--ibiz-spacing-extra-tight);font-size:var(--ibiz-width-icon-medium)}.ibiz-action-toolbar__item--icon.is-has-icon .ibiz-icon{position:absolute;top:50%;left:0;transform:translateY(-50%)}.ibiz-action-toolbar__item--label.is-has-caption{margin-right:var(--ibiz-spacing-extra-tight)}.ibiz-action-toolbar__item+.ibiz-action-toolbar__item{margin:var(--ibiz-action-toolbar-item-margin)}.ibiz-action-toolbar__group-item>span{width:100%}.ibiz-action-toolbar__group-item--content{display:flex;gap:var(--ibiz-spacing-extra-tight);align-items:center;justify-content:space-between;width:100%}.ibiz-action-toolbar__group-item--caption{display:flex;align-items:center;padding:var(--ibiz-action-toolbar-item-padding);margin:var(--ibiz-action-toolbar-item-margin)}.ibiz-action-toolbar__separator{height:auto}.ibiz-action-toolbar__popover{--ibiz-action-toolbar-item-margin:var(--ibiz-spacing-none) var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none) var(--ibiz-spacing-none);--ibiz-action-toolbar-item-padding:var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-separator-height:var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-separator-width:var(--ibiz-spacing-super-tight);--ibiz-action-toolbar-separator-color:var(--ibiz-color-border);--ibiz-action-toolbar-popover-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-popover-button-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-popover-button-color:var(--ibiz-color-text-2);--ibiz-action-toolbar-popover-button-hover-bg:var(--ibiz-color-bg-0);width:auto!important;min-width:150px;--el-popover-padding:var(--ibiz-action-toolbar-popover-padding)}.ibiz-action-toolbar__popover .el-button{--el-button-size:getCssVar("height-control", "large");display:block;width:100%;padding:var(--ibiz-action-toolbar-popover-button-padding);margin:var(--ibiz-spacing-none);font-size:var(--ibiz-font-size-regular);color:var(--ibiz-action-toolbar-popover-button-color);text-align:left;border-radius:0}.ibiz-action-toolbar__popover .el-button:hover{background-color:var(--ibiz-action-toolbar-popover-button-hover-bg)}.ibiz-action-toolbar__popover .el-button .ibiz-action-toolbar__item--icon.is-has-icon{margin:0 var(--ibiz-spacing-tight) 0 0}.ibiz-action-toolbar__popover .ibiz-action-toolbar__separator{margin:var(--ibiz-spacing-none)}.ibiz-action-toolbar--dropdown .ibiz-action-toolbar__caption{cursor:pointer}.ibiz-action-toolbar--dropdown .ibiz-action-toolbar__caption-icon{vertical-align:bottom}
@@ -802,6 +802,10 @@ var index = {
802
802
  notificationYet: "Current no notification",
803
803
  loadMore: "Load more({length})",
804
804
  onlyShowUnread: "Only show unread"
805
+ },
806
+ internalMessageGroup: {
807
+ expand: "Expand",
808
+ collapse: "Collapse"
805
809
  }
806
810
  },
807
811
  customSetting: {
@@ -798,6 +798,10 @@ var index = {
798
798
  notificationYet: "\u6682\u65E0\u901A\u77E5",
799
799
  loadMore: "\u52A0\u8F7D\u66F4\u591A({length})",
800
800
  onlyShowUnread: "\u53EA\u663E\u793A\u672A\u8BFB"
801
+ },
802
+ internalMessageGroup: {
803
+ expand: "\u5C55\u5F00",
804
+ collapse: "\u6536\u8D77"
801
805
  }
802
806
  },
803
807
  customSetting: {
@@ -26,7 +26,8 @@ const InternalMessageContainer = /* @__PURE__ */ defineComponent({
26
26
  },
27
27
  emits: {
28
28
  toolbarClick: (_key) => true,
29
- close: () => true
29
+ close: () => true,
30
+ read: () => true
30
31
  },
31
32
  setup(props, {
32
33
  emit
@@ -49,7 +50,7 @@ const InternalMessageContainer = /* @__PURE__ */ defineComponent({
49
50
  const onToolbarClick = (event, key) => {
50
51
  event.stopPropagation();
51
52
  if (key === "read") {
52
- ibiz.hub.notice.internalMessage.markRead(props.message);
53
+ emit("read");
53
54
  } else {
54
55
  emit("toolbarClick", key);
55
56
  }
@@ -63,18 +64,18 @@ const InternalMessageContainer = /* @__PURE__ */ defineComponent({
63
64
  const onClick = async (event) => {
64
65
  if (isClickable.value && props.provider.onClick) {
65
66
  const isClose = await props.provider.onClick(props.message, event);
66
- if (isClose) {
67
+ if (isClose)
67
68
  emit("close");
68
- }
69
69
  }
70
+ emit("read");
70
71
  };
71
72
  return {
72
73
  ns,
73
74
  isUnread,
74
75
  isClickable,
75
76
  finalToolbarItems,
76
- onToolbarClick,
77
- onClick
77
+ onClick,
78
+ onToolbarClick
78
79
  };
79
80
  },
80
81
  render() {
@@ -34,7 +34,8 @@ const InternalMessageDefault = /* @__PURE__ */ defineComponent({
34
34
  }
35
35
  },
36
36
  emits: {
37
- close: () => true
37
+ close: () => true,
38
+ read: () => true
38
39
  },
39
40
  setup() {
40
41
  const ns = useNamespace("internal-message");
@@ -56,6 +57,7 @@ const InternalMessageDefault = /* @__PURE__ */ defineComponent({
56
57
  "class": [this.ns.b()],
57
58
  "message": this.message,
58
59
  "provider": this.provider,
60
+ "onRead": () => this.$emit("read"),
59
61
  "onClose": () => this.$emit("close")
60
62
  }, {
61
63
  default: () => [createVNode("div", {
@@ -23,7 +23,6 @@ class InternalMessageDefaultProvider {
23
23
  });
24
24
  }
25
25
  async onClick(message, _event) {
26
- await ibiz.hub.notice.internalMessage.markRead(message);
27
26
  const redirectUrl = ibiz.env.isMob ? message.mobile_url : message.url;
28
27
  return this.openViewByUrl(redirectUrl);
29
28
  }
@@ -8,10 +8,12 @@ import { InternalMessageHTML } from './internal-message-html/internal-message-ht
8
8
  import { InternalMessageHTMLtProvider } from './internal-message-html/internal-message-html.provider.mjs';
9
9
  import { InternalMessageTextProvider } from './internal-message-text/internal-message-text.provider.mjs';
10
10
  import { InternalMessageText } from './internal-message-text/internal-message-text.mjs';
11
+ import { InternalMessagGroup } from './internal-message-group/internal-message-group.mjs';
11
12
  export { InternalMessageTab } from './internal-message-tab/internal-message-tab.mjs';
12
13
 
13
14
  "use strict";
14
15
  function installInternalMessage(v) {
16
+ v.component(InternalMessagGroup.name, InternalMessagGroup);
15
17
  v.component(InternalMessageContainer.name, InternalMessageContainer);
16
18
  v.component(InternalMessageDefault.name, InternalMessageDefault);
17
19
  v.component(InternalMessageJSON.name, InternalMessageJSON);
@@ -0,0 +1 @@
1
+ .ibiz-internal-message-group{display:flex;flex-flow:column nowrap;height:auto}.ibiz-internal-message-group__content{position:relative;flex-shrink:0;min-height:60px;padding:var(--ibiz-spacing-tight);cursor:pointer}.ibiz-internal-message-group__content:hover{background-color:var(--ibiz-color-fill-1)}.ibiz-internal-message-group__content:hover .ibiz-internal-message-group__badge{display:none}.ibiz-internal-message-group__content:hover .ibiz-internal-message-group__action--read{display:block}.ibiz-internal-message-group__badge{color:var(--ibiz-color-white)!important;background-color:var(--ibiz-color-danger)!important}.ibiz-internal-message-group__action{position:absolute;top:var(--ibiz-spacing-tight);right:var(--ibiz-spacing-tight);display:flex;gap:var(--ibiz-spacing-tight);align-items:center;width:40px;height:18px}.ibiz-internal-message-group__action--item{cursor:pointer}.ibiz-internal-message-group__action--item:hover{color:var(--ibiz-color-primary)}.ibiz-internal-message-group__action--read{display:none}.ibiz-internal-message-group__children{flex-grow:1;padding-left:var(--ibiz-spacing-loose)}.ibiz-internal-message-group__children--item{min-height:60px;padding:var(--ibiz-spacing-tight)}.ibiz-internal-message-group__children--item:hover{background-color:var(--ibiz-color-fill-1)}
@@ -0,0 +1,122 @@
1
+ import { defineComponent, createVNode, resolveComponent, ref, computed } from 'vue';
2
+ import { useNamespace } from '@ibiz-template/vue3-util';
3
+ import { showTitle } from '@ibiz-template/core';
4
+ import { getInternalMessageProvider } from '@ibiz-template/runtime';
5
+ import '../../../../util/index.mjs';
6
+ import './internal-message-group.css';
7
+ import { parseHtml } from '../../../../util/wang-editor-util/wang-editor-util.mjs';
8
+
9
+ "use strict";
10
+ const InternalMessagGroup = /* @__PURE__ */ defineComponent({
11
+ name: "IBizInternalMessageGroup",
12
+ props: {
13
+ message: {
14
+ type: Object,
15
+ required: true
16
+ },
17
+ provider: {
18
+ type: Object,
19
+ required: true
20
+ }
21
+ },
22
+ emits: {
23
+ close: (_msg) => true,
24
+ read: (_msg) => true
25
+ },
26
+ setup(props, {
27
+ emit
28
+ }) {
29
+ const ns = useNamespace("internal-message-group");
30
+ const isExpand = ref(false);
31
+ const onExpandChange = () => {
32
+ isExpand.value = !isExpand.value;
33
+ };
34
+ const html = computed(() => {
35
+ const {
36
+ content_type,
37
+ content
38
+ } = props.message;
39
+ if (content_type === "JSON")
40
+ return content ? JSON.parse(content).html : content;
41
+ if (content === "HTML")
42
+ return parseHtml(content);
43
+ return content;
44
+ });
45
+ const onClose = (msg) => {
46
+ emit("close", msg);
47
+ };
48
+ const onRead = (msg) => {
49
+ emit("read", msg);
50
+ };
51
+ const onClick = async (event) => {
52
+ if (props.provider.onClick) {
53
+ const isClose = await props.provider.onClick(props.message, event);
54
+ if (isClose)
55
+ onClose();
56
+ }
57
+ onRead(props.message);
58
+ };
59
+ return {
60
+ ns,
61
+ html,
62
+ isExpand,
63
+ onRead,
64
+ onClose,
65
+ onClick,
66
+ onExpandChange
67
+ };
68
+ },
69
+ render() {
70
+ var _a, _b;
71
+ return createVNode("div", {
72
+ "class": this.ns.b()
73
+ }, [createVNode("div", {
74
+ "class": this.ns.e("content")
75
+ }, [createVNode("div", {
76
+ "innerHTML": this.html,
77
+ "onClick": this.onClick,
78
+ "class": this.ns.em("content", "html")
79
+ }, null), createVNode("div", {
80
+ "class": this.ns.e("action")
81
+ }, [createVNode("ion-icon", {
82
+ "class": this.ns.em("action", "item"),
83
+ "title": showTitle(this.isExpand ? ibiz.i18n.t("panelComponent.userMessage.internalMessageGroup.collapse") : ibiz.i18n.t("panelComponent.userMessage.internalMessageGroup.expand")),
84
+ "name": this.isExpand ? "chevron-down-outline" : "chevron-forward-outline",
85
+ "onClick": this.onExpandChange
86
+ }, null), createVNode(resolveComponent("iBizBadge"), {
87
+ "class": this.ns.e("badge"),
88
+ "value": (_a = this.message.children) == null ? void 0 : _a.length
89
+ }, null), createVNode(resolveComponent("iBizIcon"), {
90
+ "baseDir": "iconfont",
91
+ "icon": {
92
+ imagePath: "svg/read.svg"
93
+ },
94
+ "class": [this.ns.em("action", "item"), this.ns.em("action", "read")],
95
+ "title": showTitle(ibiz.i18n.t("panelComponent.userMessage.internalMessageContainer.markAsRead")),
96
+ "onClick": () => this.onRead(this.message)
97
+ }, null)])]), this.isExpand && createVNode("div", {
98
+ "class": this.ns.e("children")
99
+ }, [(_b = this.message.children) == null ? void 0 : _b.map((msg) => {
100
+ let provider;
101
+ try {
102
+ provider = getInternalMessageProvider(msg);
103
+ } catch (error) {
104
+ ibiz.log.error(error);
105
+ }
106
+ if (provider)
107
+ return provider.render({
108
+ message: msg,
109
+ class: this.ns.em("children", "item"),
110
+ onClose: () => this.onClose(msg),
111
+ onRead: () => this.onRead(msg)
112
+ });
113
+ return createVNode("div", {
114
+ "class": this.ns.em("children", "item")
115
+ }, [ibiz.i18n.t("panelComponent.userMessage.internalMessageTab.noSupportType", {
116
+ type: msg.content_type
117
+ })]);
118
+ })])]);
119
+ }
120
+ });
121
+
122
+ export { InternalMessagGroup };
@@ -1,7 +1,7 @@
1
1
  import { defineComponent, createVNode, resolveComponent, computed } from 'vue';
2
2
  import { useNamespace } from '@ibiz-template/vue3-util';
3
- import './internal-message-html.css';
4
3
  import '../../../../util/index.mjs';
4
+ import './internal-message-html.css';
5
5
  import { parseHtml } from '../../../../util/wang-editor-util/wang-editor-util.mjs';
6
6
 
7
7
  "use strict";
@@ -18,7 +18,8 @@ const InternalMessageHTML = /* @__PURE__ */ defineComponent({
18
18
  }
19
19
  },
20
20
  emits: {
21
- close: () => true
21
+ close: () => true,
22
+ read: () => true
22
23
  },
23
24
  setup(props) {
24
25
  const ns = useNamespace("internal-message-html");
@@ -35,6 +36,7 @@ const InternalMessageHTML = /* @__PURE__ */ defineComponent({
35
36
  "class": [this.ns.b()],
36
37
  "message": this.message,
37
38
  "provider": this.provider,
39
+ "onRead": () => this.$emit("read"),
38
40
  "onClose": () => this.$emit("close")
39
41
  }, {
40
42
  default: () => [createVNode("div", {
@@ -19,7 +19,8 @@ const InternalMessageJSON = /* @__PURE__ */ defineComponent({
19
19
  }
20
20
  },
21
21
  emits: {
22
- close: () => true
22
+ close: () => true,
23
+ read: () => true
23
24
  },
24
25
  setup(props, {
25
26
  emit
@@ -58,10 +59,10 @@ const InternalMessageJSON = /* @__PURE__ */ defineComponent({
58
59
  };
59
60
  return {
60
61
  ns,
61
- jsonContent,
62
- toolbarItems,
63
62
  redirectUrl,
64
63
  isWFMessage,
64
+ jsonContent,
65
+ toolbarItems,
65
66
  onToolbarClick
66
67
  };
67
68
  },
@@ -104,6 +105,7 @@ const InternalMessageJSON = /* @__PURE__ */ defineComponent({
104
105
  "clickable": !!this.redirectUrl || !!this.isWFMessage,
105
106
  "toolbarItems": this.toolbarItems,
106
107
  "onToolbarClick": this.onToolbarClick,
108
+ "onRead": () => this.$emit("read"),
107
109
  "onClose": () => this.$emit("close")
108
110
  }, _isSlot(content) ? content : {
109
111
  default: () => [content]
@@ -1,8 +1,9 @@
1
1
  import { defineComponent, createVNode, resolveComponent, ref, watch, reactive, onUnmounted, onMounted } from 'vue';
2
+ import dayjs from 'dayjs';
3
+ import { clone } from 'ramda';
2
4
  import { useNamespace } from '@ibiz-template/vue3-util';
3
5
  import { getInternalMessageProvider } from '@ibiz-template/runtime';
4
6
  import './internal-message-tab.css';
5
- import { clone } from 'ramda';
6
7
 
7
8
  "use strict";
8
9
  const InternalMessageTab = /* @__PURE__ */ defineComponent({
@@ -28,6 +29,18 @@ const InternalMessageTab = /* @__PURE__ */ defineComponent({
28
29
  const hiddenPopover = () => {
29
30
  emit("hiddenPopover");
30
31
  };
32
+ const onMarkRead = async (message, filter) => {
33
+ var _a2;
34
+ if ((_a2 = message.children) == null ? void 0 : _a2.length) {
35
+ await Promise.all(message.children.filter((child) => child.id !== (filter == null ? void 0 : filter.id)).map((child) => ibiz.hub.notice.internalMessage.markRead(child)));
36
+ } else {
37
+ await ibiz.hub.notice.internalMessage.markRead(message);
38
+ }
39
+ };
40
+ const onGroupClose = async (message, filter) => {
41
+ hiddenPopover();
42
+ await onMarkRead(message, filter);
43
+ };
31
44
  const c = props.controller;
32
45
  const unreadOnlyTag = "".concat((_a = ibiz.appData) == null ? void 0 : _a.context.srfsystemid, "-unreadOnly");
33
46
  const hasNotice = ref(false);
@@ -45,15 +58,55 @@ const InternalMessageTab = /* @__PURE__ */ defineComponent({
45
58
  }
46
59
  });
47
60
  const allItems = ref([]);
61
+ const messages = ref([]);
48
62
  const state = reactive({
49
63
  total: 0,
50
64
  pageSize: 0,
51
65
  unreadOnly: c.unreadOnly
52
66
  });
67
+ const handleMessageGroup = () => {
68
+ const grouped = {};
69
+ const ungrouped = [];
70
+ allItems.value.forEach((item) => {
71
+ const key = ibiz.env.isMob ? "".concat(item.message_type).concat(item.mobile_url) : "".concat(item.message_type).concat(item.url);
72
+ const shouldGroup = key && item.status === "RECEIVED";
73
+ if (shouldGroup) {
74
+ if (!grouped[key])
75
+ grouped[key] = [];
76
+ grouped[key].push({
77
+ ...item
78
+ });
79
+ } else {
80
+ ungrouped.push({
81
+ ...item
82
+ });
83
+ }
84
+ });
85
+ const finalResult = [...ungrouped];
86
+ Object.values(grouped).forEach((group) => {
87
+ if (group.length === 1) {
88
+ finalResult.push({
89
+ ...group[0]
90
+ });
91
+ } else {
92
+ const parent = {
93
+ ...group[0]
94
+ };
95
+ parent.children = group.map((item) => ({
96
+ ...item
97
+ }));
98
+ finalResult.push(parent);
99
+ }
100
+ });
101
+ messages.value = finalResult.sort((a, b) => {
102
+ return dayjs(a.update_time).isAfter(b.update_time) ? -1 : 1;
103
+ });
104
+ };
53
105
  const updateData = () => {
54
- allItems.value = clone(c.messages);
55
106
  state.total = c.total;
56
107
  state.pageSize = c.size;
108
+ allItems.value = clone(c.messages);
109
+ handleMessageGroup();
57
110
  };
58
111
  updateData();
59
112
  const updateUnreadOnlyChange = (val) => {
@@ -90,11 +143,14 @@ const InternalMessageTab = /* @__PURE__ */ defineComponent({
90
143
  });
91
144
  return {
92
145
  ns,
93
- allItems,
94
146
  state,
95
- hiddenPopover,
147
+ allItems,
148
+ messages,
96
149
  showMore,
97
- switchChange
150
+ onMarkRead,
151
+ onGroupClose,
152
+ switchChange,
153
+ hiddenPopover
98
154
  };
99
155
  },
100
156
  render() {
@@ -103,20 +159,27 @@ const InternalMessageTab = /* @__PURE__ */ defineComponent({
103
159
  "class": [this.ns.b()]
104
160
  }, [createVNode("div", {
105
161
  "class": this.ns.b("content")
106
- }, [this.allItems.length > 0 && this.allItems.map((msg) => {
162
+ }, [this.allItems.length > 0 && this.messages.map((msg) => {
163
+ var _a;
107
164
  let provider;
108
165
  try {
109
166
  provider = getInternalMessageProvider(msg);
110
167
  } catch (error) {
111
168
  ibiz.log.error(error);
112
169
  }
113
- if (provider) {
114
- return provider.render({
115
- class: [this.ns.e("item")],
170
+ if (provider)
171
+ return ((_a = msg.children) == null ? void 0 : _a.length) ? createVNode(resolveComponent("iBizInternalMessageGroup"), {
172
+ "message": msg,
173
+ "provider": provider,
174
+ "class": this.ns.e("group"),
175
+ "onRead": this.onMarkRead,
176
+ "onClose": (filter) => this.onGroupClose(msg, filter)
177
+ }, null) : provider.render({
116
178
  message: msg,
117
- onClose: this.hiddenPopover
179
+ class: this.ns.e("item"),
180
+ onClose: this.hiddenPopover,
181
+ onRead: () => this.onMarkRead(msg)
118
182
  });
119
- }
120
183
  return createVNode("div", {
121
184
  "class": this.ns.e("item")
122
185
  }, [ibiz.i18n.t("panelComponent.userMessage.internalMessageTab.noSupportType", {
@@ -135,7 +198,7 @@ const InternalMessageTab = /* @__PURE__ */ defineComponent({
135
198
  "value": this.state.unreadOnly,
136
199
  "onChange": this.switchChange,
137
200
  "class": this.ns.be("footer", "switch")
138
- }, null), " ", ibiz.i18n.t("panelComponent.userMessage.internalMessageTab.onlyShowUnread")])]);
201
+ }, null), ibiz.i18n.t("panelComponent.userMessage.internalMessageTab.onlyShowUnread")])]);
139
202
  }
140
203
  });
141
204
 
@@ -16,7 +16,8 @@ const InternalMessageText = /* @__PURE__ */ defineComponent({
16
16
  }
17
17
  },
18
18
  emits: {
19
- close: () => true
19
+ close: () => true,
20
+ read: () => true
20
21
  },
21
22
  setup() {
22
23
  const ns = useNamespace("internal-message-text");
@@ -34,6 +35,7 @@ const InternalMessageText = /* @__PURE__ */ defineComponent({
34
35
  "class": [this.ns.b()],
35
36
  "message": this.message,
36
37
  "provider": this.provider,
38
+ "onRead": () => this.$emit("read"),
37
39
  "onClose": () => this.$emit("close")
38
40
  }, {
39
41
  default: () => [createVNode("div", {
@@ -34,6 +34,7 @@ class AIChatUtil {
34
34
  * @param data
35
35
  */
36
36
  async getEditorExAIChatParams(editorParams, context, params, data, deACMode, args) {
37
+ var _a;
37
38
  const containerOptions = {};
38
39
  if (editorParams.enableaiminimize) {
39
40
  containerOptions.enableAIMinimize = editorParams.enableaiminimize === "true";
@@ -273,13 +274,16 @@ class AIChatUtil {
273
274
  }
274
275
  return null;
275
276
  };
277
+ const app = ibiz.hub.getApp(context.srfappid);
278
+ const folder = app.model.defaultOSSCat || ((_a = app.model.userParam) == null ? void 0 : _a.DefaultOSSCat);
276
279
  chatOptions.uploader = {
280
+ folder: "".concat(folder, "$"),
277
281
  onUpload: async (file, reportProgress, options) => {
278
282
  const fileMeata = ibiz.util.file.calcFileUpDownUrl(
279
283
  (options == null ? void 0 : options.context) || context,
280
284
  (options == null ? void 0 : options.params) || params,
281
285
  {},
282
- { enableNoAccess: true }
286
+ { enableNoAccess: true, osscat: folder }
283
287
  );
284
288
  const fielUploadHeaders = ibiz.util.file.getUploadHeaders();
285
289
  const formData = new FormData();
@@ -295,16 +299,38 @@ class AIChatUtil {
295
299
  }
296
300
  });
297
301
  return res.data;
302
+ },
303
+ onDownLoad: async (file, options) => {
304
+ const { downloadUrl } = ibiz.util.file.calcFileUpDownUrl(
305
+ (options == null ? void 0 : options.context) || context,
306
+ (options == null ? void 0 : options.params) || params,
307
+ {},
308
+ { enableNoAccess: true, osscat: folder }
309
+ );
310
+ const url = downloadUrl.replace("%fileId%", file.fileid);
311
+ await ibiz.util.file.fileDownload(
312
+ url,
313
+ file.filename,
314
+ {
315
+ context: (options == null ? void 0 : options.context) || context,
316
+ params: (options == null ? void 0 : options.params) || params,
317
+ data: {},
318
+ file: { fileId: file.id, ...file },
319
+ extraParams: { enableNoAccess: true, osscat: folder }
320
+ },
321
+ void 0,
322
+ true
323
+ );
298
324
  }
299
325
  };
300
326
  chatOptions.extendToolbarClick = async (event, source, context2, params2, data2) => {
301
- var _a, _b, _c;
327
+ var _a2, _b, _c;
302
328
  const { id: id2, isPluginApp } = source;
303
329
  let appId = source.appId;
304
330
  const tempContext = IBizContext.create(context2);
305
331
  if (isPluginApp) {
306
332
  const mainApp = ibiz.hub.getApp();
307
- const targetApp = (_a = mainApp.model.subAppRefs) == null ? void 0 : _a.find(
333
+ const targetApp = (_a2 = mainApp.model.subAppRefs) == null ? void 0 : _a2.find(
308
334
  (subAppRef) => subAppRef.appId.endsWith("__".concat(appId))
309
335
  );
310
336
  if (targetApp) {
@@ -355,6 +381,7 @@ class AIChatUtil {
355
381
  * @returns
356
382
  */
357
383
  async getUIActionExAIChatParams(context, params, data, deACMode, args) {
384
+ var _a;
358
385
  const containerOptions = {};
359
386
  if (params.hasOwnProperty("enableaiminimize")) {
360
387
  containerOptions.enableAIMinimize = params.enableaiminimize === "true";
@@ -651,13 +678,16 @@ class AIChatUtil {
651
678
  }
652
679
  return null;
653
680
  };
681
+ const app = ibiz.hub.getApp(context.srfappid);
682
+ const folder = app.model.defaultOSSCat || ((_a = app.model.userParam) == null ? void 0 : _a.DefaultOSSCat);
654
683
  chatOptions.uploader = {
684
+ folder: "".concat(folder, "$"),
655
685
  onUpload: async (file, reportProgress, options) => {
656
686
  const { uploadUrl } = ibiz.util.file.calcFileUpDownUrl(
657
687
  (options == null ? void 0 : options.context) || context,
658
688
  (options == null ? void 0 : options.params) || params,
659
689
  {},
660
- { enableNoAccess: true }
690
+ { enableNoAccess: true, osscat: folder }
661
691
  );
662
692
  const headers = ibiz.util.file.getUploadHeaders();
663
693
  const formData = new FormData();
@@ -673,16 +703,38 @@ class AIChatUtil {
673
703
  }
674
704
  });
675
705
  return res.data;
706
+ },
707
+ onDownLoad: async (file, options) => {
708
+ const { downloadUrl } = ibiz.util.file.calcFileUpDownUrl(
709
+ (options == null ? void 0 : options.context) || context,
710
+ (options == null ? void 0 : options.params) || params,
711
+ {},
712
+ { enableNoAccess: true, osscat: folder }
713
+ );
714
+ const url = downloadUrl.replace("%fileId%", file.fileid);
715
+ await ibiz.util.file.fileDownload(
716
+ url,
717
+ file.filename,
718
+ {
719
+ context: (options == null ? void 0 : options.context) || context,
720
+ params: (options == null ? void 0 : options.params) || params,
721
+ data: {},
722
+ file: { fileId: file.id, ...file },
723
+ extraParams: { enableNoAccess: true, osscat: folder }
724
+ },
725
+ void 0,
726
+ true
727
+ );
676
728
  }
677
729
  };
678
730
  chatOptions.extendToolbarClick = async (event, source, context2, params2, data2) => {
679
- var _a, _b, _c;
731
+ var _a2, _b, _c;
680
732
  const { id: id2, isPluginApp } = source;
681
733
  let appId = source.appId;
682
734
  const tempContext = IBizContext.create(context2);
683
735
  if (isPluginApp) {
684
736
  const mainApp = ibiz.hub.getApp();
685
- const targetApp = (_a = mainApp.model.subAppRefs) == null ? void 0 : _a.find(
737
+ const targetApp = (_a2 = mainApp.model.subAppRefs) == null ? void 0 : _a2.find(
686
738
  (subAppRef) => subAppRef.appId.endsWith("__".concat(appId))
687
739
  );
688
740
  if (targetApp) {
@@ -222,7 +222,7 @@ class WFDynaEditViewEngine extends EditViewEngine {
222
222
  const submitView = getWFSubmitViewId(this.view.model, link);
223
223
  if (!submitView) {
224
224
  await this.form.wfSubmit({ viewParam: newParams });
225
- await this.view.closeView();
225
+ await this.view.closeView({ ok: true, data: this.form.getData() });
226
226
  return;
227
227
  }
228
228
  const result = await ibiz.commands.execute(
@@ -232,7 +232,7 @@ class WFDynaEditViewEngine extends EditViewEngine {
232
232
  newParams
233
233
  );
234
234
  if (result.ok) {
235
- await this.view.closeView();
235
+ await this.view.closeView({ ok: true, data: this.form.getData() });
236
236
  }
237
237
  }
238
238
  }
@@ -1 +1 @@
1
- @charset "UTF-8";.ibiz-action-toolbar{--ibiz-action-toolbar-item-margin:var(--ibiz-spacing-none) var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none) var(--ibiz-spacing-none);--ibiz-action-toolbar-item-padding:var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-separator-height:var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-separator-width:var(--ibiz-spacing-super-tight);--ibiz-action-toolbar-separator-color:var(--ibiz-color-border);--ibiz-action-toolbar-popover-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-popover-button-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-popover-button-color:var(--ibiz-color-text-2);--ibiz-action-toolbar-popover-button-hover-bg:var(--ibiz-color-bg-0);display:flex;flex-wrap:wrap}.ibiz-action-toolbar__item{padding:var(--ibiz-action-toolbar-item-padding);margin:var(--ibiz-action-toolbar-item-margin)}.ibiz-action-toolbar__item--icon.is-has-icon{display:flex;align-items:baseline;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);margin-right:var(--ibiz-spacing-extra-tight);margin-left:var(--ibiz-spacing-extra-tight);font-size:var(--ibiz-width-icon-medium)}.ibiz-action-toolbar__item--label.is-has-caption{margin-right:var(--ibiz-spacing-extra-tight)}.ibiz-action-toolbar__item+.ibiz-action-toolbar__item{margin:var(--ibiz-action-toolbar-item-margin)}.ibiz-action-toolbar__group-item>span{width:100%}.ibiz-action-toolbar__group-item--content{display:flex;gap:var(--ibiz-spacing-extra-tight);align-items:center;justify-content:space-between;width:100%}.ibiz-action-toolbar__group-item--caption{display:flex;align-items:center;padding:var(--ibiz-action-toolbar-item-padding);margin:var(--ibiz-action-toolbar-item-margin)}.ibiz-action-toolbar__separator{height:auto}.ibiz-action-toolbar__popover{--ibiz-action-toolbar-item-margin:var(--ibiz-spacing-none) var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none) var(--ibiz-spacing-none);--ibiz-action-toolbar-item-padding:var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-separator-height:var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-separator-width:var(--ibiz-spacing-super-tight);--ibiz-action-toolbar-separator-color:var(--ibiz-color-border);--ibiz-action-toolbar-popover-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-popover-button-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-popover-button-color:var(--ibiz-color-text-2);--ibiz-action-toolbar-popover-button-hover-bg:var(--ibiz-color-bg-0);width:auto!important;min-width:150px;--el-popover-padding:var(--ibiz-action-toolbar-popover-padding)}.ibiz-action-toolbar__popover .el-button{--el-button-size:getCssVar("height-control", "large");display:block;width:100%;padding:var(--ibiz-action-toolbar-popover-button-padding);margin:var(--ibiz-spacing-none);font-size:var(--ibiz-font-size-regular);color:var(--ibiz-action-toolbar-popover-button-color);text-align:left;border-radius:0}.ibiz-action-toolbar__popover .el-button:hover{background-color:var(--ibiz-action-toolbar-popover-button-hover-bg)}.ibiz-action-toolbar__popover .el-button .ibiz-icon{margin-right:var(--ibiz-spacing-extra-tight)}.ibiz-action-toolbar__popover .ibiz-action-toolbar__separator{margin:var(--ibiz-spacing-none)}.ibiz-action-toolbar--dropdown .ibiz-action-toolbar__caption{cursor:pointer}.ibiz-action-toolbar--dropdown .ibiz-action-toolbar__caption-icon{vertical-align:bottom}
1
+ @charset "UTF-8";.ibiz-action-toolbar{--ibiz-action-toolbar-item-margin:var(--ibiz-spacing-none) var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none) var(--ibiz-spacing-none);--ibiz-action-toolbar-item-padding:var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-separator-height:var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-separator-width:var(--ibiz-spacing-super-tight);--ibiz-action-toolbar-separator-color:var(--ibiz-color-border);--ibiz-action-toolbar-popover-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-popover-button-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-popover-button-color:var(--ibiz-color-text-2);--ibiz-action-toolbar-popover-button-hover-bg:var(--ibiz-color-bg-0);display:flex;flex-wrap:wrap}.ibiz-action-toolbar__item{padding:var(--ibiz-action-toolbar-item-padding);margin:var(--ibiz-action-toolbar-item-margin)}.ibiz-action-toolbar__item--icon.is-has-icon{position:relative;display:flex;align-items:baseline;justify-content:center;width:var(--ibiz-width-icon-medium);height:var(--ibiz-width-icon-medium);margin-right:var(--ibiz-spacing-extra-tight);margin-left:var(--ibiz-spacing-extra-tight);font-size:var(--ibiz-width-icon-medium)}.ibiz-action-toolbar__item--icon.is-has-icon .ibiz-icon{position:absolute;top:50%;left:0;transform:translateY(-50%)}.ibiz-action-toolbar__item--label.is-has-caption{margin-right:var(--ibiz-spacing-extra-tight)}.ibiz-action-toolbar__item+.ibiz-action-toolbar__item{margin:var(--ibiz-action-toolbar-item-margin)}.ibiz-action-toolbar__group-item>span{width:100%}.ibiz-action-toolbar__group-item--content{display:flex;gap:var(--ibiz-spacing-extra-tight);align-items:center;justify-content:space-between;width:100%}.ibiz-action-toolbar__group-item--caption{display:flex;align-items:center;padding:var(--ibiz-action-toolbar-item-padding);margin:var(--ibiz-action-toolbar-item-margin)}.ibiz-action-toolbar__separator{height:auto}.ibiz-action-toolbar__popover{--ibiz-action-toolbar-item-margin:var(--ibiz-spacing-none) var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none) var(--ibiz-spacing-none);--ibiz-action-toolbar-item-padding:var(--ibiz-spacing-extra-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-separator-height:var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-separator-width:var(--ibiz-spacing-super-tight);--ibiz-action-toolbar-separator-color:var(--ibiz-color-border);--ibiz-action-toolbar-popover-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-none);--ibiz-action-toolbar-popover-button-padding:var(--ibiz-spacing-tight) var(--ibiz-spacing-base-loose);--ibiz-action-toolbar-popover-button-color:var(--ibiz-color-text-2);--ibiz-action-toolbar-popover-button-hover-bg:var(--ibiz-color-bg-0);width:auto!important;min-width:150px;--el-popover-padding:var(--ibiz-action-toolbar-popover-padding)}.ibiz-action-toolbar__popover .el-button{--el-button-size:getCssVar("height-control", "large");display:block;width:100%;padding:var(--ibiz-action-toolbar-popover-button-padding);margin:var(--ibiz-spacing-none);font-size:var(--ibiz-font-size-regular);color:var(--ibiz-action-toolbar-popover-button-color);text-align:left;border-radius:0}.ibiz-action-toolbar__popover .el-button:hover{background-color:var(--ibiz-action-toolbar-popover-button-hover-bg)}.ibiz-action-toolbar__popover .el-button .ibiz-action-toolbar__item--icon.is-has-icon{margin:0 var(--ibiz-spacing-tight) 0 0}.ibiz-action-toolbar__popover .ibiz-action-toolbar__separator{margin:var(--ibiz-spacing-none)}.ibiz-action-toolbar--dropdown .ibiz-action-toolbar__caption{cursor:pointer}.ibiz-action-toolbar--dropdown .ibiz-action-toolbar__caption-icon{vertical-align:bottom}
@@ -806,6 +806,10 @@ var index = {
806
806
  notificationYet: "Current no notification",
807
807
  loadMore: "Load more({length})",
808
808
  onlyShowUnread: "Only show unread"
809
+ },
810
+ internalMessageGroup: {
811
+ expand: "Expand",
812
+ collapse: "Collapse"
809
813
  }
810
814
  },
811
815
  customSetting: {