diff --git a/.gitignore b/.gitignore index a4f1152..1a9742a 100644 --- a/.gitignore +++ b/.gitignore @@ -33,4 +33,7 @@ CURSOR_RULES.md config/unplugin/*.d.ts config/unplugin/.eslintrc* -analyzer.html \ No newline at end of file +analyzer.html + +.cursor/* +.lingma/* diff --git a/README.md b/README.md index d5e7b93..2e73bce 100644 --- a/README.md +++ b/README.md @@ -182,8 +182,3 @@ export { default as Comp } from './comp/index.vue'; ``` - -### `ui` 框架 [`Ant Design Vue`](https://antdv.com/) - -- 自动导入组件,无需再次导入 -- 图标库已配置,同组件使用 diff --git a/src/App.vue b/src/App.vue index 94e8c54..5079c0d 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,6 +1,6 @@ diff --git a/src/api/all/chat.ts b/src/api/all/chat.ts index 0e502a0..d81c85e 100644 --- a/src/api/all/chat.ts +++ b/src/api/all/chat.ts @@ -46,9 +46,7 @@ export const getHeaders = () => { }; }; -/** - * 获取智能体信息 - */ +// 获取智能体信息 export const getAgentData = async () => { const { data } = await axios.get(`${BASE_PYTHON_URL}/api/agent/info`, { headers: getHeaders(), @@ -56,12 +54,19 @@ export const getAgentData = async () => { return data; }; -/** - * 生成会话id - */ +// 生成会话id export const createSession = async () => { const { data } = await axios.get(`${BASE_PYTHON_URL}/api/agent/create_session`, { headers: getHeaders(), }); return data; }; + +// 中断智能体执行 +export const stopAgentTask = async (params = {}) => { + const { data } = await axios.get(`${BASE_PYTHON_URL}/api/agent/stop-task`, { + headers: getHeaders(), + params, + }); + return data; +}; diff --git a/src/api/all/index.ts b/src/api/all/index.ts index f1f4383..e4c8038 100644 --- a/src/api/all/index.ts +++ b/src/api/all/index.ts @@ -122,7 +122,7 @@ export const sendUpdateMobileCaptcha = (data: any) => { // 修改绑定的手机号 export const updateMobile = (data: any) => { - return Http.post(`/v1/me/mobile`, data); + return Http.patch(`/v1/me/mobile`, data); }; // 修改我的信息 diff --git a/src/api/all/login.ts b/src/api/all/login.ts index d54db76..09047ea 100644 --- a/src/api/all/login.ts +++ b/src/api/all/login.ts @@ -44,7 +44,7 @@ export const fetchBindPhone = (params = {}) => { }; // 根据id获取企业信息 -export const fetchEnterpriseInfo = (id: number) => { +export const fetchEnterpriseInfo = (id: number | string) => { return Http.get(`/v1/enterprises/${id}`); }; @@ -59,16 +59,52 @@ export const postRegister = (params = {}) => { }; // 发送注册验证码 -export const postRegisterCaptcha = (params = {}) => { +export const postRegisterCaptcha = (params = {}) => { return Http.post('/v1/sms/register-captcha', params); }; // 发送忘记密码验证码 -export const postForgetPasswordCaptcha = (params = {}) => { +export const postForgetPasswordCaptcha = (params = {}) => { return Http.post('/v1/sms/forget-password-captcha', params); }; // 忘记密码 -export const postForgetPassword = (params = {}) => { +export const postForgetPassword = (params = {}) => { return Http.post('/v1/users/forget-password', params); -}; \ No newline at end of file +}; + +// 创建企业 +export const postCreateEnterprises = (params = {}) => { + return Http.post('/v1/enterprises', params); +}; + +// 获取我的企业列表 +export const getMyEnterprises = () => { + return Http.get('/v1/me/enterprises'); +}; + +// 获取我的主企业信息 +export const getMyPrimaryEnterprise = () => { + return Http.get('/v1/me/primary-enterprise'); +}; + +// 发送修改手机号验证码 +export const postUpdateMobileCaptcha = (params = {}) => { + return Http.post('/v1/sms/update-mobile-captcha', params); +}; + +// 发送修改密码验证码 +export const postUpdatePasswordCaptcha = (params = {}) => { + return Http.post('/v1/sms/update-password-captcha', params); +}; + + +// 验证修改密码验证码 +export const postCheckUpdatePasswordCaptcha = (params = {}) => { + return Http.post('/v1/sms/check-update-password-captcha', params); +}; + +// 修改密码 +export const postUpdatePassword = (params = {}) => { + return Http.patch('/v1/me/password', params); +}; diff --git a/src/api/index.ts b/src/api/index.ts index 86bf9a9..dfeca91 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -64,6 +64,9 @@ export class Request { const { data, status } = res; switch (status) { case HttpStatusCode.Success: + if (data.code !== HttpStatusCode.Success) { + message.error(data.message); + } return data; default: return Promise.reject(data); diff --git a/src/assets/svg/svg-managementAccount-active.svg b/src/assets/svg/svg-managementAccount-active.svg new file mode 100644 index 0000000..50d03f4 --- /dev/null +++ b/src/assets/svg/svg-managementAccount-active.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/assets/svg/svg-managementAccount.svg b/src/assets/svg/svg-managementAccount.svg index cbe43b7..8901716 100644 --- a/src/assets/svg/svg-managementAccount.svg +++ b/src/assets/svg/svg-managementAccount.svg @@ -1,6 +1,6 @@ - - - - - - \ No newline at end of file + + + + + + diff --git a/src/assets/svg/svg-managementEnterprise-active.svg b/src/assets/svg/svg-managementEnterprise-active.svg new file mode 100644 index 0000000..fccce66 --- /dev/null +++ b/src/assets/svg/svg-managementEnterprise-active.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/assets/svg/svg-managementEnterprise.svg b/src/assets/svg/svg-managementEnterprise.svg index 0cd10b0..329e1ae 100644 --- a/src/assets/svg/svg-managementEnterprise.svg +++ b/src/assets/svg/svg-managementEnterprise.svg @@ -1,10 +1,3 @@ - - - - - - - - - - \ No newline at end of file + + + diff --git a/src/assets/svg/svg-managementPerson-active.svg b/src/assets/svg/svg-managementPerson-active.svg new file mode 100644 index 0000000..c5a8e93 --- /dev/null +++ b/src/assets/svg/svg-managementPerson-active.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/assets/svg/svg-managementPerson.svg b/src/assets/svg/svg-managementPerson.svg index 961dfd6..7e6bfd6 100644 --- a/src/assets/svg/svg-managementPerson.svg +++ b/src/assets/svg/svg-managementPerson.svg @@ -1,6 +1,5 @@ - - - - - - \ No newline at end of file + + + + + diff --git a/src/assets/svg/svg-organization.svg b/src/assets/svg/svg-organization.svg new file mode 100644 index 0000000..94bbbb2 --- /dev/null +++ b/src/assets/svg/svg-organization.svg @@ -0,0 +1,12 @@ + + + + + + + + + + diff --git a/src/components/xt-chat/chat-view/index.vue b/src/components/xt-chat/chat-view/index.vue index b1eb5c5..51aa4e4 100644 --- a/src/components/xt-chat/chat-view/index.vue +++ b/src/components/xt-chat/chat-view/index.vue @@ -5,7 +5,7 @@ import SenderInput from './components/sender-input/index.vue'; import RightView from './components/right-view/index.vue'; import { useChatStore } from '@/stores/modules/chat'; -import { getConversationList } from '@/api/all/chat'; +import { getConversationList, stopAgentTask } from '@/api/all/chat'; import querySSE from '@/utils/querySSE'; import useChatHandler from './useChatHandler'; import { QUESTION_ROLE, LOADING_ROLE } from './constants'; @@ -58,6 +58,7 @@ export default { if (generateLoading.value) { bubbleListRef.value?.abortTypingByKey(generateTeamRunTaskId.value); sseController.value?.abort?.(); + stopAgentTask({ run_id: generateTeamRunTaskId.value }); } if (showRightView.value) { rightViewRef.value?.abortTyping?.(); @@ -165,7 +166,7 @@ export default { enterpriseStore.isOpenEnterprise); + const handleSearch = () => { chatStore.setSearchValue(keyWord.value); chatStore.onCreateSession(); keyWord.value = ''; }; + + if (!hasOpenEnterprise.value) return null; + return () => (
- diff --git a/src/layouts/components/navbar/components/right-side/img/admin.png b/src/layouts/components/navbar/components/right-side/img/admin.png new file mode 100644 index 0000000..d0826d9 Binary files /dev/null and b/src/layouts/components/navbar/components/right-side/img/admin.png differ diff --git a/src/layouts/components/navbar/components/right-side/index.vue b/src/layouts/components/navbar/components/right-side/index.vue index 8609e5a..1636ae0 100644 --- a/src/layouts/components/navbar/components/right-side/index.vue +++ b/src/layouts/components/navbar/components/right-side/index.vue @@ -1,17 +1,31 @@