Skip to content

Commit 24991b8

Browse files
feat: share chat
1 parent bc48a64 commit 24991b8

File tree

2 files changed

+98
-54
lines changed

2 files changed

+98
-54
lines changed

ui/src/api/chat/chat.ts

Lines changed: 81 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Result} from '@/request/Result'
1+
import { Result } from '@/request/Result'
22
import {
33
get,
44
post,
@@ -9,17 +9,17 @@ import {
99
download,
1010
exportFile,
1111
} from '@/request/chat/index'
12-
import {type ChatProfile} from '@/api/type/chat'
13-
import {type Ref} from 'vue'
14-
import type {ResetPasswordRequest} from '@/api/type/user.ts'
12+
import { type ChatProfile } from '@/api/type/chat'
13+
import { type Ref } from 'vue'
14+
import type { ResetPasswordRequest } from '@/api/type/user.ts'
1515

1616
import useStore from '@/stores'
17-
import type {LoginRequest} from '@/api/type/user'
17+
import type { LoginRequest } from '@/api/type/user'
1818

19-
const prefix: any = {_value: '/workspace/'}
19+
const prefix: any = { _value: '/workspace/' }
2020
Object.defineProperty(prefix, 'value', {
2121
get: function () {
22-
const {user} = useStore()
22+
const { user } = useStore()
2323
return this._value + user.getWorkspaceId() + '/application'
2424
},
2525
})
@@ -51,7 +51,7 @@ const chatProfile: (assessToken: string, loading?: Ref<boolean>) => Promise<Resu
5151
assessToken,
5252
loading,
5353
) => {
54-
return get('/profile', {access_token: assessToken}, loading)
54+
return get('/profile', { access_token: assessToken }, loading)
5555
}
5656
/**
5757
* 匿名认证
@@ -63,7 +63,7 @@ const anonymousAuthentication: (
6363
assessToken: string,
6464
loading?: Ref<boolean>,
6565
) => Promise<Result<any>> = (assessToken, loading) => {
66-
return post('/auth/anonymous', {access_token: assessToken}, {}, loading)
66+
return post('/auth/anonymous', { access_token: assessToken }, {}, loading)
6767
}
6868
/**
6969
* 密码认证
@@ -77,7 +77,7 @@ const passwordAuthentication: (
7777
password: string,
7878
loading?: Ref<boolean>,
7979
) => Promise<Result<any>> = (assessToken, password, loading) => {
80-
return post('auth/password', {access_token: assessToken, password: password}, {}, loading)
80+
return post('auth/password', { access_token: assessToken, password: password }, {}, loading)
8181
}
8282
/**
8383
* 获取应用相关信息
@@ -115,8 +115,12 @@ const ldapLogin: (
115115
* @param username
116116
* @param loading 接口加载器
117117
*/
118-
const getCaptcha: (username?: string, accessToken?: string, loading?: Ref<boolean>) => Promise<Result<any>> = (username, accessToken, loading) => {
119-
return get('/captcha', {username: username, accessToken: accessToken}, loading)
118+
const getCaptcha: (
119+
username?: string,
120+
accessToken?: string,
121+
loading?: Ref<boolean>,
122+
) => Promise<Result<any>> = (username, accessToken, loading) => {
123+
return get('/captcha', { username: username, accessToken: accessToken }, loading)
120124
}
121125

122126
/**
@@ -130,35 +134,35 @@ const getQrSource: (loading?: Ref<boolean>) => Promise<Result<any>> = (loading)
130134
return get('auth/qr_type/source', undefined, loading)
131135
}
132136

133-
const getDingCallback: (code: string, accessToken: string, loading?: Ref<boolean>) => Promise<Result<any>> = (
134-
code,
135-
accessToken,
136-
loading,
137-
) => {
138-
return get('auth/dingtalk', {code, accessToken: accessToken}, loading)
137+
const getDingCallback: (
138+
code: string,
139+
accessToken: string,
140+
loading?: Ref<boolean>,
141+
) => Promise<Result<any>> = (code, accessToken, loading) => {
142+
return get('auth/dingtalk', { code, accessToken: accessToken }, loading)
139143
}
140144

141-
const getDingOauth2Callback: (code: string, accessToken: string, loading?: Ref<boolean>) => Promise<Result<any>> = (
142-
code,
143-
accessToken,
144-
loading,
145-
) => {
146-
return get('auth/dingtalk/oauth2', {code, accessToken: accessToken}, loading)
145+
const getDingOauth2Callback: (
146+
code: string,
147+
accessToken: string,
148+
loading?: Ref<boolean>,
149+
) => Promise<Result<any>> = (code, accessToken, loading) => {
150+
return get('auth/dingtalk/oauth2', { code, accessToken: accessToken }, loading)
147151
}
148152

149-
const getWecomCallback: (code: string, accessToken: string, loading?: Ref<boolean>) => Promise<Result<any>> = (
150-
code,
151-
accessToken,
152-
loading,
153-
) => {
154-
return get('auth/wecom', {code, accessToken: accessToken}, loading)
153+
const getWecomCallback: (
154+
code: string,
155+
accessToken: string,
156+
loading?: Ref<boolean>,
157+
) => Promise<Result<any>> = (code, accessToken, loading) => {
158+
return get('auth/wecom', { code, accessToken: accessToken }, loading)
155159
}
156-
const getLarkCallback: (code: string, accessToken: string, loading?: Ref<boolean>) => Promise<Result<any>> = (
157-
code,
158-
accessToken,
159-
loading,
160-
) => {
161-
return get('auth/lark/oauth2', {code, accessToken: accessToken}, loading)
160+
const getLarkCallback: (
161+
code: string,
162+
accessToken: string,
163+
loading?: Ref<boolean>,
164+
) => Promise<Result<any>> = (code, accessToken, loading) => {
165+
return get('auth/lark/oauth2', { code, accessToken: accessToken }, loading)
162166
}
163167

164168
/**
@@ -185,19 +189,20 @@ const vote: (
185189
vote_reason?: string,
186190
vote_other_content?: string,
187191
loading?: Ref<boolean>,
188-
) => Promise<Result<boolean>> = (chat_id, chat_record_id, vote_status, vote_reason, vote_other_content, loading) => {
189-
190-
const data = {
192+
) => Promise<Result<boolean>> = (
193+
chat_id,
194+
chat_record_id,
191195
vote_status,
192-
...(vote_reason !== undefined && { vote_reason }),
193-
...(vote_other_content !== undefined && { vote_other_content })
194-
}
195-
return put(
196-
`/vote/chat/${chat_id}/chat_record/${chat_record_id}`,
197-
data,
198-
undefined,
199-
loading,
200-
)
196+
vote_reason,
197+
vote_other_content,
198+
loading,
199+
) => {
200+
const data = {
201+
vote_status,
202+
...(vote_reason !== undefined && { vote_reason }),
203+
...(vote_other_content !== undefined && { vote_other_content }),
204+
}
205+
return put(`/vote/chat/${chat_id}/chat_record/${chat_record_id}`, data, undefined, loading)
201206
}
202207
const pageChat: (
203208
current_page: number,
@@ -292,9 +297,7 @@ const deleteChat: (chat_id: string, loading?: Ref<boolean>) => Promise<Result<an
292297
* @param loading
293298
* @returns
294299
*/
295-
const clearChat: (loading?: Ref<boolean>) => Promise<Result<any>> = (
296-
loading
297-
) => {
300+
const clearChat: (loading?: Ref<boolean>) => Promise<Result<any>> = (loading) => {
298301
return del(`historical_conversation/clear`, undefined, undefined, loading)
299302
}
300303
/**
@@ -339,9 +342,33 @@ const postUploadFile: (
339342
return post(`/oss/file`, fd, undefined, loading)
340343
}
341344

342-
const getFile: (application_id: string, params: any) => Promise<Result<any>> = (application_id, params) => {
345+
const getFile: (application_id: string, params: any) => Promise<Result<any>> = (
346+
application_id,
347+
params,
348+
) => {
343349
return get(`/oss/get_url/${application_id}`, params)
344350
}
351+
352+
/**
353+
* 生成分享链接
354+
* @param 参数
355+
* chat_id: string
356+
* data
357+
*/
358+
const postShareChat: (
359+
application_id: string,
360+
chat_id: string,
361+
data: any,
362+
loading?: Ref<boolean>,
363+
) => Promise<any> = (application_id, chat_id, data, loading) => {
364+
return post(
365+
`${prefix.value}/${application_id}/chat/${chat_id}/share_chat`,
366+
data,
367+
undefined,
368+
loading,
369+
)
370+
}
371+
345372
export default {
346373
open,
347374
chat,
@@ -372,5 +399,6 @@ export default {
372399
clearChat,
373400
modifyChat,
374401
postUploadFile,
375-
getFile
402+
getFile,
403+
postShareChat,
376404
}

ui/src/components/ai-chat/index.vue

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,11 @@
103103
<el-button @click="cancelCheckHandle">
104104
{{ $t('common.cancel') }}
105105
</el-button>
106-
<el-button type="primary">
106+
<el-button
107+
type="primary"
108+
@click="shareChatHandle"
109+
:disabled="shareLoading || multipleSelectionChat.length === 0"
110+
>
107111
{{ $t('chat.copyLinkText') }}
108112
</el-button>
109113
</div>
@@ -297,9 +301,21 @@ watch(
297301
// 选择对话分享
298302
const checkAll = ref(false)
299303
const multipleSelectionChat = ref<any[]>([])
304+
const shareLoading = ref(false)
305+
function shareChatHandle() {
306+
const obj = {
307+
chat_record_ids: multipleSelectionChat.value,
308+
is_current_all: checkAll.value,
309+
}
310+
chatAPI.postShareChat(id || props.appId, chartOpenId.value, obj, shareLoading).then((res) => {
311+
console.log(res)
312+
313+
})
314+
}
300315
301316
const handleCheckAllChange = (val: CheckboxValueType) => {
302317
multipleSelectionChat.value = val ? chatList.value.map((v) => v.id) : []
318+
checkAll.value = val as boolean
303319
}
304320
const handleCheckedChatChange = (value: CheckboxValueType[]) => {
305321
const checkedCount = value.length

0 commit comments

Comments
 (0)