From a1d5d0f079c4a8865fb1f15f76443825330f2018 Mon Sep 17 00:00:00 2001 From: "chong.yanning@ebiz-digits.com" Date: Wed, 17 Dec 2025 09:50:58 +0800 Subject: [PATCH] =?UTF-8?q?feat(cases):=20=E8=A7=84=E8=8C=83=E5=8C=96?= =?UTF-8?q?=E6=A1=88=E4=BE=8B=E6=A8=A1=E5=9D=97=E6=8E=A5=E5=8F=A3=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E5=8F=8A=E6=96=B0=E5=A2=9EAI=E4=BC=9A=E8=AF=9D?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E5=8A=9F=E8=83=BD=20-=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20initChat=20=E6=96=B9=E6=B3=95=E7=94=A8=E4=BA=8E?= =?UTF-8?q?=E8=8E=B7=E5=8F=96AI=E4=BC=9A=E8=AF=9DID=20-=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20handleStop=E6=96=B9=E6=B3=95=20=E5=81=9C=E6=AD=A2?= =?UTF-8?q?=E5=BD=93=E5=89=8D=E4=BC=9A=E8=AF=9D=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/modules/cases.js | 167 ++-- src/assets/images/case/stop.png | Bin 0 -> 5474 bytes src/views/portal/case/AICall.vue | 704 ++++++++------- .../portal/case/components/sendMessage.vue | 817 ++++++++++++------ 4 files changed, 1026 insertions(+), 662 deletions(-) create mode 100644 src/assets/images/case/stop.png diff --git a/src/api/modules/cases.js b/src/api/modules/cases.js index c0adadcc..572df882 100644 --- a/src/api/modules/cases.js +++ b/src/api/modules/cases.js @@ -1,14 +1,14 @@ /* 案例模块的相关处理*/ -import ajax from '@/utils/xajax.js' -import ajaxs from '@/api/ajax.js' +import ajax from "@/utils/xajax.js"; +import ajaxs from "@/api/ajax.js"; /**首页查询 * pageSize * orderField * orderAsc -*/ + */ const indexList = function (query) { - return ajax.post('/xboe/m/boe/cases/case-random', query); -} + return ajax.post("/xboe/m/boe/cases/case-random", query); +}; /* *案例分页搜索查询 是否推荐 *@param(String) keyWord 关键词 @@ -17,14 +17,14 @@ const indexList = function (query) { *@param(Boolean) breCommend 是否推荐 true或者false *@param(String) orgDomain 组织机构 *@param(String) majorType 专业分类 -* @param(String) majorDomain 专业领域 + * @param(String) majorDomain 专业领域 */ const queryList = function (query) { - return ajax.post('/xboe/m/boe/cases/queryList', query); -} + return ajax.post("/xboe/m/boe/cases/queryList", query); +}; const queryListV2 = function (query) { - return ajax.postJson('/xboe/m/boe/cases/queryListV2', query); -} + return ajax.postJson("/xboe/m/boe/cases/queryListV2", query); +}; /* 案例分页搜索查询 是否置顶 *@param(String) keyWord 关键词 @param(Boolean) isTop 是否置顶 true或false @@ -33,32 +33,32 @@ const queryListV2 = function (query) { * @param(String) majorDomain 专业领域 */ const isTopList = function (query) { - return ajax.post('/xboe/m/boe/cases/isTopList', query); -} + return ajax.post("/xboe/m/boe/cases/isTopList", query); +}; /* 设置置顶 取消置顶 @param(String) id @param(Integer) isTop 是否置顶 0:未置顶,1:已置顶 */ const updateTop = function (id, isTop) { return ajax.get(`/xboe/m/boe/cases/updateTop?id=${id}&isTop=${isTop}`); -} +}; /* 删除案例 *param(String) id 案例的id */ const del = function (id) { - return ajax.get('/xboe/m/boe/cases/delete?id=' + id); -} + return ajax.get("/xboe/m/boe/cases/delete?id=" + id); +}; /*案例详情 @param(String) id 案例的id @param(Boolean) addView 是否增加浏览量 */ const detail = function (id, addView) { - let pars = 'id=' + id; + let pars = "id=" + id; if (addView) { - pars += '&addView=' + addView + pars += "&addView=" + addView; } - return ajax.get('/xboe/m/boe/cases/detail?' + pars); -} + return ajax.get("/xboe/m/boe/cases/detail?" + pars); +}; /*推荐 *@param (String) id 案例的id *@param (String) title 案例的标题 @@ -66,61 +66,65 @@ const detail = function (id, addView) { *@param (String) recommentThat 推荐说明 */ const savaRecommend = function (data) { - return ajax.post('/xboe/m/boe/recommend/save', data); -} + return ajax.post("/xboe/m/boe/recommend/save", data); +}; /* 推荐列表 *没有参数 */ const query = function () { - return ajax.get('/xboe/m/boe/recommend/query'); -} + return ajax.get("/xboe/m/boe/recommend/query"); +}; /* *作者排行榜 @param pageSize 长度 */ const usernameList = function (pageSize) { return ajax.get(`/xboe/m/boe/cases/usernamelist?pageSize=${pageSize}`); -} +}; /* 人气榜 @param pageSize 长度 */ const queryPraises = function (pageSize) { return ajax.get(`/xboe/m/boe/cases/query-praises?pageSize=${pageSize}`); -} -const queryPraisesNew = function (pageSize,rankType) { - return ajax.get(`/xboe/m/boe/cases/queryPopularity?pageSize=${pageSize}&rankType=${rankType}`); -} +}; +const queryPraisesNew = function (pageSize, rankType) { + return ajax.get( + `/xboe/m/boe/cases/queryPopularity?pageSize=${pageSize}&rankType=${rankType}` + ); +}; const queryRecommendRank = function (pageSize) { return ajax.get(`/xboe/m/boe/cases/queryRecommendRank?pageSize=${pageSize}`); -} +}; /* 好评榜 @param pageSize 长度 */ const queryComments = function (pageSize) { return ajax.get(`/xboe/m/boe/cases/query-comments?pageSize=${pageSize}`); -} -const queryCommentsNew = function (pageSize,rankType) { - return ajax.get(`/xboe/m/boe/cases/queryHighOpinion?pageSize=${pageSize}&rankType=${rankType}`); -} +}; +const queryCommentsNew = function (pageSize, rankType) { + return ajax.get( + `/xboe/m/boe/cases/queryHighOpinion?pageSize=${pageSize}&rankType=${rankType}` + ); +}; /** * 专业分类 * */ const majorTypes = function () { - return ajax.get('/xboe/m/boe/cases/majorTypes'); -} + return ajax.get("/xboe/m/boe/cases/majorTypes"); +}; /** -* 详情新*/ + * 详情新*/ const details = function (id, addView) { - let pars = 'id=' + id; + let pars = "id=" + id; if (addView) { - pars += '&addView=' + addView + pars += "&addView=" + addView; } - return ajax.get('/xboe/m/boe/cases/details?' + pars); -} + return ajax.get("/xboe/m/boe/cases/details?" + pars); +}; /** * 二次查询 @@ -129,8 +133,8 @@ const details = function (id, addView) { * } * */ const ids = function (data) { - return ajax.postJson('/xboe/m/boe/cases/ids', data); -} + return ajax.postJson("/xboe/m/boe/cases/ids", data); +}; /** * 设置和取消优秀案例 @@ -140,9 +144,8 @@ const ids = function (data) { * } * */ const excellent = function (data) { - return ajax.post('/xboe/m/boe/cases/excellent', data) -} - + return ajax.post("/xboe/m/boe/cases/excellent", data); +}; /** *我的案例 @@ -152,8 +155,8 @@ const excellent = function (data) { * } * */ const mylist = function (query) { - return ajax.post('/xboe/m/boe/cases/mylist', query); -} + return ajax.post("/xboe/m/boe/cases/mylist", query); +}; /** * 导出 @@ -163,21 +166,26 @@ const mylist = function (query) { * } * */ const exportCases = function (query) { - return ajax.post('/xboe/m/boe/cases/export', query); -} + return ajax.post("/xboe/m/boe/cases/export", query); +}; /** * 导出案例后加的 * */ const exports = function (query) { - return ajax.post('/xboe/m/boe/cases/exportCase', query, { responseType: 'blob' }); -} + return ajax.post("/xboe/m/boe/cases/exportCase", query, { + responseType: "blob", + }); +}; /** * @param * 记录查看开始时间 * caseRecommendId读取的案例的id */ -const startReadTimer = (caseRecommendId) => ajax.get(`/xboe/m/boe/cases/recommend/startRead?caseRecommendId=${caseRecommendId}`); +const startReadTimer = (caseRecommendId) => + ajax.get( + `/xboe/m/boe/cases/recommend/startRead?caseRecommendId=${caseRecommendId}` + ); /** * @param @@ -187,34 +195,56 @@ const startReadTimer = (caseRecommendId) => ajax.get(`/xboe/m/boe/cases/recomm * browseDuration [浏览时间秒] * } */ -const endReadTimer = (data)=> ajax.postJson('/xboe/m/boe/cases/recommend/recordBrowseDuration',data) +const endReadTimer = (data) => + ajax.postJson("/xboe/m/boe/cases/recommend/recordBrowseDuration", data); /**年份查询 * -*/ + */ const caseYears = function (query = {}) { - return ajax.post('/xboe/m/boe/cases/caseYears', query); -} + return ajax.post("/xboe/m/boe/cases/caseYears", query); +}; //案例推荐榜单 const getQueryRecommendRank = function (params) { - return ajax.get(`/xboe/m/boe/cases/queryRecommendRank?pageSize=${params.pageSize}`) -} + return ajax.get( + `/xboe/m/boe/cases/queryRecommendRank?pageSize=${params.pageSize}` + ); +}; //案例上榜 -const riseIntoRank = (data) => ajax.post(`/xboe/m/boe/cases/riseIntoRank?caseId=${data.caseId}`) +const riseIntoRank = (data) => + ajax.post(`/xboe/m/boe/cases/riseIntoRank?caseId=${data.caseId}`); //取消上榜 -const cancelRiseIntoRank = (data) => ajax.post(`/xboe/m/boe/cases/cancelRiseIntoRank?caseId=${data.caseId}`) +const cancelRiseIntoRank = (data) => + ajax.post(`/xboe/m/boe/cases/cancelRiseIntoRank?caseId=${data.caseId}`); //调整榜单 -const adjustRank = (data) => ajax.post(`/xboe/m/boe/cases/adjustRank?caseIds=${data.caseIds}`) +const adjustRank = (data) => + ajax.post(`/xboe/m/boe/cases/adjustRank?caseIds=${data.caseIds}`); //收藏案例 -const queryFavoriteCaseOfIndex = (params) => ajax.get(`/xboe/m/boe/cases/queryFavoriteCaseOfIndex?pageIndex=${params.pageIndex}&pageSize=${params.pageSize}&orderField=${params.orderField}&orderAsc=${params.orderAsc}`) +const queryFavoriteCaseOfIndex = (params) => + ajax.get( + `/xboe/m/boe/cases/queryFavoriteCaseOfIndex?pageIndex=${params.pageIndex}&pageSize=${params.pageSize}&orderField=${params.orderField}&orderAsc=${params.orderAsc}` + ); //浏览记录 -const queryViewRecord = (data) => ajaxs.post(`/statApi/xboe/m/stat/userdynamic/list?pageIndex=${data.pageIndex}&pageSize=${data.pageSize}&contentType=${data.contentType}&aid=${data.aid}&hidden=${data.hidden}&eventKey=${data.eventKey}`) +const queryViewRecord = (data) => + ajaxs.post( + `/statApi/xboe/m/stat/userdynamic/list?pageIndex=${data.pageIndex}&pageSize=${data.pageSize}&contentType=${data.contentType}&aid=${data.aid}&hidden=${data.hidden}&eventKey=${data.eventKey}` + ); //浏览量TOP榜单 -const queryPopularityOfMajor = (params) => ajax.get(`/xboe/m/boe/cases/queryPopularityOfMajor?pageSize=${params.pageSize}&rankMonth=${params.rankMonth}&majorId=${params.majorId}`) +const queryPopularityOfMajor = (params) => + ajax.get( + `/xboe/m/boe/cases/queryPopularityOfMajor?pageSize=${params.pageSize}&rankMonth=${params.rankMonth}&majorId=${params.majorId}` + ); //浏览记录新 -const browsingHistory = (params) => ajax.get(`/xboe/m/boe/cases/browsingHistory?pageIndex=${params.pageIndex}&pageSize=5`) +const browsingHistory = (params) => + ajax.get( + `/xboe/m/boe/cases/browsingHistory?pageIndex=${params.pageIndex}&pageSize=5` + ); //获取所有的专业月份 -const queryAllTimePopularityOfMajor = () => ajax.get('/xboe/m/boe/cases/queryAllTimePopularityOfMajor') +const queryAllTimePopularityOfMajor = () => + ajax.get("/xboe/m/boe/cases/queryAllTimePopularityOfMajor"); +// 获取会话ID +const initChat = () => ajax.get("/xboe/m/boe/case/ai/initChat"); + export default { queryAllTimePopularityOfMajor, getQueryRecommendRank, @@ -249,5 +279,6 @@ export default { exports, startReadTimer, endReadTimer, - caseYears -} + caseYears, + initChat, +}; diff --git a/src/assets/images/case/stop.png b/src/assets/images/case/stop.png new file mode 100644 index 0000000000000000000000000000000000000000..2ac8648dca543f7b60428b26f9c3d0fbb254d169 GIT binary patch literal 5474 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案例专家

- - - - - + + + + + -
- -
- + -
+
-
- +
+
-
-
+ @@ -75,6 +101,8 @@ @update-suggestions="updateSuggestions" @new-conversation="startNewConversation" :disabled="isLoading" + :stopShow="stopShow" + :sendShow="sendShow" class="input-area-wrapper" ref="sendMessage" /> @@ -89,17 +117,17 @@ >
案例专家 -
+
- + diff --git a/src/views/portal/case/components/sendMessage.vue b/src/views/portal/case/components/sendMessage.vue index 941dbcfa..b2de3ea8 100644 --- a/src/views/portal/case/components/sendMessage.vue +++ b/src/views/portal/case/components/sendMessage.vue @@ -1,363 +1,621 @@ -