diff --git a/resources/assets/js/components/AIAssistant.vue b/resources/assets/js/components/AIAssistant.vue index 42d9aa2c9..8f34c7042 100644 --- a/resources/assets/js/components/AIAssistant.vue +++ b/resources/assets/js/components/AIAssistant.vue @@ -918,25 +918,28 @@ export default { e.stopPropagation(); // 解析 dootask:// 协议链接 - // 格式: dootask://type/id 例如 dootask://task/123 - const match = href.match(/^dootask:\/\/(\w+)\/(\d+)$/); + // 格式: dootask://type/id 或 dootask://type/id1/id2 例如 dootask://task/123 或 dootask://message/789/1234 + const match = href.match(/^dootask:\/\/(\w+)\/(\d+)(?:\/(\d+))?$/); if (!match) { return; } - const [, type, id] = match; + const [, type, id, id2] = match; const numId = parseInt(id, 10); + const numId2 = id2 ? parseInt(id2, 10) : null; switch (type) { case 'task': - this.$store.dispatch('openTask', {id: numId}); + this.$store.dispatch('openTask', {id: (numId2 && numId2 > 0) ? numId2 : numId}); break; case 'project': + this.showModal = false; this.goForward({name: 'manage-project', params: {projectId: numId}}); break; case 'file': + this.showModal = false; this.goForward({name: 'manage-file', params: {folderId: 0, fileId: null, shakeId: numId}}); this.$store.state.fileShakeId = numId; setTimeout(() => { @@ -949,6 +952,16 @@ export default { $A.modalError(msg || this.$L('打开会话失败')); }); break; + + case 'message': + this.$store.dispatch('openDialog', numId).then(() => { + if (numId2) { + this.$store.state.dialogSearchMsgId = numId2; + } + }).catch(({msg}) => { + $A.modalError(msg || this.$L('打开会话失败')); + }); + break; } }, diff --git a/resources/assets/js/components/SearchBox.vue b/resources/assets/js/components/SearchBox.vue index 94b086cd4..2f8e2b96c 100755 --- a/resources/assets/js/components/SearchBox.vue +++ b/resources/assets/js/components/SearchBox.vue @@ -17,7 +17,7 @@
-