@ibiz-template/vue3-components 0.7.41-alpha.51 → 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 (47) 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-Bcmawui0.js → wang-editor-uEldtkHX.js} +1 -1
  7. package/dist/{xlsx-util-fU5jMSIx.js → xlsx-util-DmPcr7YV.js} +1 -1
  8. package/es/common/action-toolbar/action-toolbar.css +1 -1
  9. package/es/control/form/form-detail/form-button/form-button.css +1 -1
  10. package/es/control/form/form-detail/form-button/form-button.mjs +1 -1
  11. package/es/locale/en/index.mjs +4 -0
  12. package/es/locale/zh-CN/index.mjs +4 -0
  13. package/es/panel-component/user-message/internal-message/common/internal-message-container/internal-message-container.mjs +7 -6
  14. package/es/panel-component/user-message/internal-message/common/internal-message-default/internal-message-default.mjs +3 -1
  15. package/es/panel-component/user-message/internal-message/common/internal-message-default/internal-message-default.provider.mjs +0 -1
  16. package/es/panel-component/user-message/internal-message/index.mjs +2 -0
  17. package/es/panel-component/user-message/internal-message/internal-message-group/internal-message-group.css +1 -0
  18. package/es/panel-component/user-message/internal-message/internal-message-group/internal-message-group.mjs +122 -0
  19. package/es/panel-component/user-message/internal-message/internal-message-html/internal-message-html.mjs +4 -2
  20. package/es/panel-component/user-message/internal-message/internal-message-json/internal-message-json.mjs +5 -3
  21. package/es/panel-component/user-message/internal-message/internal-message-tab/internal-message-tab.mjs +75 -12
  22. package/es/panel-component/user-message/internal-message/internal-message-text/internal-message-text.mjs +3 -1
  23. package/es/util/ai-chat-util/ai-chat-util.mjs +66 -16
  24. package/es/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.hook.mjs +29 -16
  25. package/es/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.mjs +10 -11
  26. package/es/view-engine/wf-dyna-edit-view.engine.mjs +2 -2
  27. package/lib/common/action-toolbar/action-toolbar.css +1 -1
  28. package/lib/control/form/form-detail/form-button/form-button.cjs +1 -1
  29. package/lib/control/form/form-detail/form-button/form-button.css +1 -1
  30. package/lib/locale/en/index.cjs +4 -0
  31. package/lib/locale/zh-CN/index.cjs +4 -0
  32. package/lib/panel-component/user-message/internal-message/common/internal-message-container/internal-message-container.cjs +7 -6
  33. package/lib/panel-component/user-message/internal-message/common/internal-message-default/internal-message-default.cjs +3 -1
  34. package/lib/panel-component/user-message/internal-message/common/internal-message-default/internal-message-default.provider.cjs +0 -1
  35. package/lib/panel-component/user-message/internal-message/index.cjs +2 -0
  36. package/lib/panel-component/user-message/internal-message/internal-message-group/internal-message-group.cjs +124 -0
  37. package/lib/panel-component/user-message/internal-message/internal-message-group/internal-message-group.css +1 -0
  38. package/lib/panel-component/user-message/internal-message/internal-message-html/internal-message-html.cjs +4 -2
  39. package/lib/panel-component/user-message/internal-message/internal-message-json/internal-message-json.cjs +5 -3
  40. package/lib/panel-component/user-message/internal-message/internal-message-tab/internal-message-tab.cjs +75 -12
  41. package/lib/panel-component/user-message/internal-message/internal-message-text/internal-message-text.cjs +3 -1
  42. package/lib/util/ai-chat-util/ai-chat-util.cjs +66 -16
  43. package/lib/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.cjs +10 -11
  44. package/lib/util/inline-ai-util/inline-ai-textarea/inline-ai-textarea.hook.cjs +28 -15
  45. package/lib/view-engine/wf-dyna-edit-view.engine.cjs +2 -2
  46. package/package.json +8 -8
  47. package/dist/index-CXaTaGlg.js +0 -11
@@ -18,7 +18,8 @@ const InternalMessageText = /* @__PURE__ */ vue.defineComponent({
18
18
  }
19
19
  },
20
20
  emits: {
21
- close: () => true
21
+ close: () => true,
22
+ read: () => true
22
23
  },
23
24
  setup() {
24
25
  const ns = vue3Util.useNamespace("internal-message-text");
@@ -36,6 +37,7 @@ const InternalMessageText = /* @__PURE__ */ vue.defineComponent({
36
37
  "class": [this.ns.b()],
37
38
  "message": this.message,
38
39
  "provider": this.provider,
40
+ "onRead": () => this.$emit("read"),
39
41
  "onClose": () => this.$emit("close")
40
42
  }, {
41
43
  default: () => [vue.createVNode("div", {
@@ -36,6 +36,7 @@ class AIChatUtil {
36
36
  * @param data
37
37
  */
38
38
  async getEditorExAIChatParams(editorParams, context, params, data, deACMode, args) {
39
+ var _a;
39
40
  const containerOptions = {};
40
41
  if (editorParams.enableaiminimize) {
41
42
  containerOptions.enableAIMinimize = editorParams.enableaiminimize === "true";
@@ -81,12 +82,9 @@ class AIChatUtil {
81
82
  if (editorParams.srfaiagent) {
82
83
  chatOptions.activeAIAgentID = editorParams.srfaiagent;
83
84
  }
84
- const aiAgentlist = await this.getAIAgentList(
85
- context,
86
- params,
87
- editorParams
88
- );
89
- chatOptions.aiAgentlist = aiAgentlist;
85
+ chatOptions.fetchAgentList = () => {
86
+ return this.getAIAgentList(context, params, editorParams);
87
+ };
90
88
  if (deACMode) {
91
89
  const {
92
90
  contentToolbarItems,
@@ -278,13 +276,16 @@ class AIChatUtil {
278
276
  }
279
277
  return null;
280
278
  };
279
+ const app = ibiz.hub.getApp(context.srfappid);
280
+ const folder = app.model.defaultOSSCat || ((_a = app.model.userParam) == null ? void 0 : _a.DefaultOSSCat);
281
281
  chatOptions.uploader = {
282
+ folder: "".concat(folder, "$"),
282
283
  onUpload: async (file, reportProgress, options) => {
283
284
  const fileMeata = ibiz.util.file.calcFileUpDownUrl(
284
285
  (options == null ? void 0 : options.context) || context,
285
286
  (options == null ? void 0 : options.params) || params,
286
287
  {},
287
- { enableNoAccess: true }
288
+ { enableNoAccess: true, osscat: folder }
288
289
  );
289
290
  const fielUploadHeaders = ibiz.util.file.getUploadHeaders();
290
291
  const formData = new FormData();
@@ -300,17 +301,39 @@ class AIChatUtil {
300
301
  }
301
302
  });
302
303
  return res.data;
304
+ },
305
+ onDownLoad: async (file, options) => {
306
+ const { downloadUrl } = ibiz.util.file.calcFileUpDownUrl(
307
+ (options == null ? void 0 : options.context) || context,
308
+ (options == null ? void 0 : options.params) || params,
309
+ {},
310
+ { enableNoAccess: true, osscat: folder }
311
+ );
312
+ const url = downloadUrl.replace("%fileId%", file.fileid);
313
+ await ibiz.util.file.fileDownload(
314
+ url,
315
+ file.filename,
316
+ {
317
+ context: (options == null ? void 0 : options.context) || context,
318
+ params: (options == null ? void 0 : options.params) || params,
319
+ data: {},
320
+ file: { fileId: file.id, ...file },
321
+ extraParams: { enableNoAccess: true, osscat: folder }
322
+ },
323
+ void 0,
324
+ true
325
+ );
303
326
  }
304
327
  };
305
328
  chatOptions.extendToolbarClick = async (event, source, context2, params2, data2) => {
306
- var _a, _b, _c;
329
+ var _a2, _b, _c;
307
330
  const { id: id2, isPluginApp } = source;
308
331
  let appId = source.appId;
309
332
  const tempContext = core.IBizContext.create(context2);
310
333
  if (isPluginApp) {
311
334
  const mainApp = ibiz.hub.getApp();
312
- const targetApp = (_a = mainApp.model.subAppRefs) == null ? void 0 : _a.find(
313
- (subAppRef) => subAppRef.appId.endsWith(appId)
335
+ const targetApp = (_a2 = mainApp.model.subAppRefs) == null ? void 0 : _a2.find(
336
+ (subAppRef) => subAppRef.appId.endsWith("__".concat(appId))
314
337
  );
315
338
  if (targetApp) {
316
339
  const targetAppId = targetApp.appId;
@@ -360,6 +383,7 @@ class AIChatUtil {
360
383
  * @returns
361
384
  */
362
385
  async getUIActionExAIChatParams(context, params, data, deACMode, args) {
386
+ var _a;
363
387
  const containerOptions = {};
364
388
  if (params.hasOwnProperty("enableaiminimize")) {
365
389
  containerOptions.enableAIMinimize = params.enableaiminimize === "true";
@@ -464,8 +488,9 @@ class AIChatUtil {
464
488
  delete params.srfenableaiagentchange;
465
489
  }
466
490
  chatOptions.enableAIAgentChange = enableAIAgentChange;
467
- const aiAgentlist = await this.getAIAgentList(context, params);
468
- chatOptions.aiAgentlist = aiAgentlist;
491
+ chatOptions.fetchAgentList = () => {
492
+ return this.getAIAgentList(context, params);
493
+ };
469
494
  if (deACMode) {
470
495
  const {
471
496
  contentToolbarItems,
@@ -655,13 +680,16 @@ class AIChatUtil {
655
680
  }
656
681
  return null;
657
682
  };
683
+ const app = ibiz.hub.getApp(context.srfappid);
684
+ const folder = app.model.defaultOSSCat || ((_a = app.model.userParam) == null ? void 0 : _a.DefaultOSSCat);
658
685
  chatOptions.uploader = {
686
+ folder: "".concat(folder, "$"),
659
687
  onUpload: async (file, reportProgress, options) => {
660
688
  const { uploadUrl } = ibiz.util.file.calcFileUpDownUrl(
661
689
  (options == null ? void 0 : options.context) || context,
662
690
  (options == null ? void 0 : options.params) || params,
663
691
  {},
664
- { enableNoAccess: true }
692
+ { enableNoAccess: true, osscat: folder }
665
693
  );
666
694
  const headers = ibiz.util.file.getUploadHeaders();
667
695
  const formData = new FormData();
@@ -677,17 +705,39 @@ class AIChatUtil {
677
705
  }
678
706
  });
679
707
  return res.data;
708
+ },
709
+ onDownLoad: async (file, options) => {
710
+ const { downloadUrl } = ibiz.util.file.calcFileUpDownUrl(
711
+ (options == null ? void 0 : options.context) || context,
712
+ (options == null ? void 0 : options.params) || params,
713
+ {},
714
+ { enableNoAccess: true, osscat: folder }
715
+ );
716
+ const url = downloadUrl.replace("%fileId%", file.fileid);
717
+ await ibiz.util.file.fileDownload(
718
+ url,
719
+ file.filename,
720
+ {
721
+ context: (options == null ? void 0 : options.context) || context,
722
+ params: (options == null ? void 0 : options.params) || params,
723
+ data: {},
724
+ file: { fileId: file.id, ...file },
725
+ extraParams: { enableNoAccess: true, osscat: folder }
726
+ },
727
+ void 0,
728
+ true
729
+ );
680
730
  }
681
731
  };
682
732
  chatOptions.extendToolbarClick = async (event, source, context2, params2, data2) => {
683
- var _a, _b, _c;
733
+ var _a2, _b, _c;
684
734
  const { id: id2, isPluginApp } = source;
685
735
  let appId = source.appId;
686
736
  const tempContext = core.IBizContext.create(context2);
687
737
  if (isPluginApp) {
688
738
  const mainApp = ibiz.hub.getApp();
689
- const targetApp = (_a = mainApp.model.subAppRefs) == null ? void 0 : _a.find(
690
- (subAppRef) => subAppRef.appId.endsWith(appId)
739
+ const targetApp = (_a2 = mainApp.model.subAppRefs) == null ? void 0 : _a2.find(
740
+ (subAppRef) => subAppRef.appId.endsWith("__".concat(appId))
691
741
  );
692
742
  if (targetApp) {
693
743
  const targetAppId = targetApp.appId;
@@ -98,22 +98,21 @@ const InlineAITextArea = /* @__PURE__ */ vue.defineComponent({
98
98
  textareaRef
99
99
  }, message);
100
100
  const {
101
+ stopAsk,
101
102
  syncAskAI,
102
103
  asyncAskAI,
103
104
  parseContent,
104
- loadAiHistory,
105
- abortController
105
+ loadAiHistory
106
106
  } = inlineAiTextarea_hook.useAI(props, {
107
107
  srfmode,
108
108
  srfaiagent,
109
109
  srfaiappendcurdata
110
110
  });
111
- inlineAiTextarea_hook.useInLineAIContainerClick(props, message, isLoading, abortController);
112
- const stopQuestionAndClose = () => {
113
- var _a;
114
- (_a = abortController.value) == null ? void 0 : _a.abort();
115
- props.unMountAIChat();
116
- };
111
+ inlineAiTextarea_hook.useInLineAIContainerClick(props, {
112
+ message,
113
+ isLoading,
114
+ stopAsk
115
+ });
117
116
  const handleAnswer = (answer) => {
118
117
  switch (answer.state) {
119
118
  case 20:
@@ -255,12 +254,12 @@ const InlineAITextArea = /* @__PURE__ */ vue.defineComponent({
255
254
  containerRef,
256
255
  contentStyle,
257
256
  containerStyle,
257
+ stopAsk,
258
258
  onKeydown,
259
259
  renderError,
260
260
  sendQuestion,
261
261
  handleAction,
262
- renderLoading,
263
- stopQuestionAndClose
262
+ renderLoading
264
263
  };
265
264
  },
266
265
  render() {
@@ -298,7 +297,7 @@ const InlineAITextArea = /* @__PURE__ */ vue.defineComponent({
298
297
  "class": this.ns.em("content", "suffix")
299
298
  }, [this.isLoading && vue.createVNode("div", {
300
299
  "class": this.ns.em("content", "stop-icon"),
301
- "onClick": () => this.stopQuestionAndClose()
300
+ "onClick": () => this.stopAsk()
302
301
  }, [icon.StopIcon, vue.createVNode("span", null, [ibiz.i18n.t("util.inlineAiUtil.stopEdit")])]), !this.disabled && vue.createVNode("div", {
303
302
  "class": this.ns.em("content", "sand-icon"),
304
303
  "onClick": () => this.sendQuestion(this.message.content)
@@ -26,9 +26,9 @@ const computedInLineAIParams = (props) => {
26
26
  inlinecompletionmode: (_g = (_f = params.inlinecompletionmode) != null ? _f : editorParams.inlinecompletionmode) != null ? _g : "async"
27
27
  };
28
28
  };
29
- const useInLineAIContainerClick = (props, message, isLoading, abortController) => {
29
+ const useInLineAIContainerClick = (props, opts) => {
30
+ const { message, isLoading, stopAsk } = opts;
30
31
  const handMousedown = async (evt) => {
31
- var _a;
32
32
  const target = evt.target;
33
33
  if (!target.closest(".ibiz-inline-ai-textarea-container") && !target.closest(".ibiz-inline-ai-alert")) {
34
34
  const isChange = props.content !== message.value.content;
@@ -42,12 +42,8 @@ const useInLineAIContainerClick = (props, message, isLoading, abortController) =
42
42
  }
43
43
  });
44
44
  }
45
- if (isClose) {
46
- if (isLoading.value) {
47
- (_a = abortController.value) == null ? void 0 : _a.abort();
48
- }
49
- props.unMountAIChat();
50
- }
45
+ if (isClose)
46
+ await stopAsk();
51
47
  }
52
48
  };
53
49
  vue.onMounted(() => {
@@ -95,7 +91,6 @@ const useAI = (props, opts) => {
95
91
  );
96
92
  }
97
93
  };
98
- const abortController = vue.ref();
99
94
  const attachUrlParam = (url) => {
100
95
  {
101
96
  const urlSplit = url.split("?");
@@ -174,6 +169,8 @@ const useAI = (props, opts) => {
174
169
  }
175
170
  return { think, content, toolcalls };
176
171
  };
172
+ let asyncacitonid;
173
+ const abortController = vue.ref();
177
174
  const asyncAskAI = (question, callBack, errorBack) => {
178
175
  return new Promise((resolve) => {
179
176
  abortController.value = new AbortController();
@@ -189,6 +186,8 @@ const useAI = (props, opts) => {
189
186
  if (e.data) {
190
187
  const msg = JSON.parse(e.data);
191
188
  let content = msg.actionresult || "";
189
+ if (msg.actionstate === 20)
190
+ asyncacitonid = msg.asyncacitonid;
192
191
  if (msg.actionstate === 30 && content)
193
192
  content = (_a = JSON.parse(content).choices) == null ? void 0 : _a[0].content;
194
193
  callBack({ state: msg.actionstate, content });
@@ -235,12 +234,28 @@ const useAI = (props, opts) => {
235
234
  return answer;
236
235
  }
237
236
  };
237
+ const stopAsk = async () => {
238
+ var _a;
239
+ (_a = abortController.value) == null ? void 0 : _a.abort();
240
+ if (asyncacitonid) {
241
+ const deService = await app.deService.getService(
242
+ context,
243
+ deACMode.appDataEntityId
244
+ );
245
+ await deService.aiChatCancel(context, params, {
246
+ asyncacitonid,
247
+ sessionid
248
+ });
249
+ asyncacitonid = void 0;
250
+ }
251
+ props.unMountAIChat();
252
+ };
238
253
  return {
254
+ stopAsk,
239
255
  syncAskAI,
240
256
  asyncAskAI,
241
257
  parseContent,
242
- loadAiHistory,
243
- abortController
258
+ loadAiHistory
244
259
  };
245
260
  };
246
261
  const useBase = (props, element, message) => {
@@ -297,11 +312,8 @@ const useBase = (props, element, message) => {
297
312
  height: options.height ? "".concat(options.height, "px") : "auto",
298
313
  "max-height": "".concat(options.maxHeight || (options.height && options.height > 300 ? options.height : 300), "px")
299
314
  });
300
- const toolcalls = vue.computed(() => {
301
- return message.value.toolcalls || [];
302
- });
303
315
  vue.watch(
304
- () => [toolcalls.value.length, message.value.think, message.value.content],
316
+ () => message.value,
305
317
  () => {
306
318
  vue.nextTick(() => {
307
319
  if (!textareaRef.value)
@@ -312,6 +324,7 @@ const useBase = (props, element, message) => {
312
324
  });
313
325
  },
314
326
  {
327
+ deep: true,
315
328
  immediate: true
316
329
  }
317
330
  );
@@ -224,7 +224,7 @@ class WFDynaEditViewEngine extends editView_engine.EditViewEngine {
224
224
  const submitView = runtime.getWFSubmitViewId(this.view.model, link);
225
225
  if (!submitView) {
226
226
  await this.form.wfSubmit({ viewParam: newParams });
227
- await this.view.closeView();
227
+ await this.view.closeView({ ok: true, data: this.form.getData() });
228
228
  return;
229
229
  }
230
230
  const result = await ibiz.commands.execute(
@@ -234,7 +234,7 @@ class WFDynaEditViewEngine extends editView_engine.EditViewEngine {
234
234
  newParams
235
235
  );
236
236
  if (result.ok) {
237
- await this.view.closeView();
237
+ await this.view.closeView({ ok: true, data: this.form.getData() });
238
238
  }
239
239
  }
240
240
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibiz-template/vue3-components",
3
- "version": "0.7.41-alpha.51",
3
+ "version": "0.7.41-alpha.53",
4
4
  "description": "web端组件库(vue3)",
5
5
  "main": "lib/index.cjs",
6
6
  "module": "es/index.mjs",
@@ -30,16 +30,16 @@
30
30
  "dependencies": {
31
31
  "@amap/amap-jsapi-loader": "^1.0.1",
32
32
  "@floating-ui/dom": "^1.5.3",
33
- "@ibiz-template-plugin/ai-chat": "^0.0.42",
33
+ "@ibiz-template-plugin/ai-chat": "^0.0.44",
34
34
  "@ibiz-template-plugin/gantt": "0.1.8-alpha.378",
35
- "@ibiz-template-plugin/bi-report": "0.0.30",
35
+ "@ibiz-template-plugin/bi-report": "0.0.31",
36
36
  "@ibiz-template-plugin/data-view": "0.0.6",
37
37
  "@ibiz-template/core": "0.7.41-alpha.53",
38
- "@ibiz-template/devtool": "0.0.13",
39
- "@ibiz-template/model-helper": "0.7.41-alpha.53",
40
- "@ibiz-template/runtime": "0.7.41-alpha.53",
38
+ "@ibiz-template/devtool": "0.0.14",
39
+ "@ibiz-template/model-helper": "0.7.41-alpha.55",
40
+ "@ibiz-template/runtime": "0.7.41-alpha.55",
41
41
  "@ibiz-template/theme": "0.7.39",
42
- "@ibiz-template/vue3-util": "0.7.41-alpha.53",
42
+ "@ibiz-template/vue3-util": "0.7.41-alpha.55",
43
43
  "@ibiz-template/web-theme": "3.10.0",
44
44
  "@ibiz/model-core": "^0.1.84",
45
45
  "@imengyu/vue3-context-menu": "^1.3.5",
@@ -74,7 +74,7 @@
74
74
  "devDependencies": {
75
75
  "@commitlint/cli": "^18.5.0",
76
76
  "@commitlint/config-conventional": "^18.5.0",
77
- "@ibiz-template/cli": "^0.3.23",
77
+ "@ibiz-template/cli": "^0.3.31",
78
78
  "@types/lodash-es": "^4.17.12",
79
79
  "@types/sortablejs": "^1.15.8",
80
80
  "@types/node": "^20.11.5",