From 0f62897b6c82b90f3d0cbac88b75be99e30b70d1 Mon Sep 17 00:00:00 2001
From: yangyin <1850366751@qq.com>
Date: 星期二, 05 十一月 2024 11:16:14 +0800
Subject: [PATCH] 暂时注释掉用户的复制功能

---
 src/components/chat/components/playBar/phrase/CommonPhrases.vue |  103 +++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 79 insertions(+), 24 deletions(-)

diff --git a/src/components/chat/components/playBar/phrase/CommonPhrases.vue b/src/components/chat/components/playBar/phrase/CommonPhrases.vue
index f6382c4..ad627dc 100644
--- a/src/components/chat/components/playBar/phrase/CommonPhrases.vue
+++ b/src/components/chat/components/playBar/phrase/CommonPhrases.vue
@@ -1,7 +1,7 @@
 <template>
 	<div class="container" :class="isHome ? 'top-[100%] mt-[8px]' : 'bottom-[100%] mb-[8px]'">
 		<div class="container_header">
-			<div class="title">甯哥敤璇�</div>
+			<div class="question">甯哥敤璇�</div>
 			<span class="ywifont ywicon-guanbi text-[15px] cursor-pointer text-[#767a97]" @click="closeCommonPhrases"></span>
 		</div>
 		<div class="container_content">
@@ -9,10 +9,10 @@
 				<div class="w-full h-full absolute top-0">
 					<div class="py-0 mt-0 box-border h-full">
 						<div style="overflow-anchor: none" v-for="(item, index) in commonPhrases" :key="index">
-							<div class="phase_item">
+							<div class="phase_item" @click="titleClick(item)">
 								<div class="flex flex-col">
-									<div class="title" @click="titleClick(item)">
-										{{ item.title }}
+									<div class="question">
+										{{ item.question }}
 									</div>
 									<!-- <div class="content">
 										{{ item.content }}
@@ -21,11 +21,11 @@
 								<div class="py-2">
 									<span
 										class="ywifont ywicon-bianji cursor-pointer text-[#767a97] pt-[4px] pr-[6px] pb-[2px] pl-0 rounded-lg !text-[13px]"
-										@click="editCommonPhrases(item)"
+										@click.stop="editCommonPhrases(item)"
 									></span>
 									<span
 										class="ywifont ywicon-shanchu3 cursor-pointer text-[red] pt-[4px] pr-[6px] pb-[2px] pl-0 rounded-lg"
-										@click="deleteCommonPhrases(item)"
+										@click.stop="deleteCommonPhrases(item)"
 									></span>
 								</div>
 							</div>
@@ -59,15 +59,16 @@
 </template>
 
 <script setup lang="ts">
-import { ElMessageBox } from 'element-plus';
-import { computed, reactive, ref } from 'vue';
-import { addUserSample } from '/@/api/ai/chat';
-import { activeGroupType } from '/@/stores/chatRoom';
+import { ElMessageBox, ElMessage } from 'element-plus';
+import { computed, onMounted, reactive, ref } from 'vue';
+import { addUserSample, deleteUserSample, listUserSample, updateUserSample } from '/@/api/ai/chat';
+import { activeGroupType, activeRoomId, activeSampleId, setRoomConfig } from '/@/stores/chatRoom';
 const state = reactive({
 	useCommonPhrasesDialog: false,
 	show_sample_title: false,
 	inputCommonPhrases: '',
 	sample_title: null,
+	sample_id: null,
 });
 const commonPhrases = ref([]);
 const props = defineProps(['isHome']);
@@ -85,7 +86,16 @@
 	isShow.value = false;
 };
 //#endregion
-
+//#region ====================== 鑾峰彇甯哥敤璇� ======================
+const getCommonPhrases = async () => {
+	const res = await listUserSample({
+		group_type: activeGroupType.value,
+	});
+	if (res.json_ok) {
+		commonPhrases.value = res.values;
+	}
+};
+//#endregion
 //#region ====================== 娣诲姞甯哥敤璇� ======================
 //鍏抽棴甯哥敤璇脊绐�
 const handleClose = () => {
@@ -99,21 +109,42 @@
 };
 const editCommonPhrases = (item) => {
 	state.useCommonPhrasesDialog = true;
-	state.inputCommonPhrases = item.content;
 	state.show_sample_title = true;
+	state.inputCommonPhrases = item.question;
+	state.sample_id = item.id;
 };
-const deleteCommonPhrases = (item) => {
-	ElMessageBox.confirm(`浣犵‘瀹氳鍒犻櫎甯哥敤璇悧?<div style="white-space: pre-line;">[${item.title}]</div>`, '鎻愮ず', {
+const deleteCommonPhrases = (row) => {
+	ElMessageBox.confirm(`浣犵‘瀹氳鍒犻櫎甯哥敤璇悧?`, '鎻愮ず', {
 		confirmButtonText: '纭畾',
 		cancelButtonText: '鍙栨秷',
-		type: 'warning',
 		dangerouslyUseHTMLString: true,
+		type: 'warning',
 	}).then(async () => {
-		commonPhrases.value = commonPhrases.value.filter((i) => i.id !== item.id);
+		const res = await deleteUserSample({
+			sample_id: row.id,
+		});
+		const foundIndex = commonPhrases.value.findIndex((item) => item === row);
+		foundIndex > -1 && commonPhrases.value.splice(foundIndex, 1);
 	});
 };
 //鎻愪氦甯哥敤璇�
 const submitCommonPhrases = async () => {
+	if (state.show_sample_title) {
+		const res = await updateUserSample({
+			sample_id: state.sample_id,
+			question: state.inputCommonPhrases,
+		});
+		if (res.json_ok) {
+			const foundIndex = commonPhrases.value.findIndex((item) => item.id === state.sample_id);
+			foundIndex > -1 && (commonPhrases.value[foundIndex].question = state.inputCommonPhrases);
+			handleClose();
+		}
+	} else {
+		addCommonPhrasesData();
+	}
+};
+//娣诲姞涓�鏉℃暟鎹簮
+const addCommonPhrasesData = async () => {
 	const res = await addUserSample({
 		question: state.inputCommonPhrases,
 		group_type: activeGroupType.value,
@@ -121,15 +152,36 @@
 	if (res.json_ok) {
 		commonPhrases.value.push({
 			id: res.sample_id,
-			title: state.inputCommonPhrases,
+			question: state.inputCommonPhrases,
 		});
-		state.useCommonPhrasesDialog = false;
+		handleClose();
 	}
 };
 //#endregion
 //#region ====================== 甯哥敤璇埌瀵硅瘽妗� ======================
-const titleClick = (item) => {};
+const emits = defineEmits<{
+	(event: 'updateCommonChatInput', val): void;
+}>();
+const titleClick = (item) => {
+	emits('updateCommonChatInput', item.question);
+	setRoomConfig(activeRoomId.value, 'isAnswerByLLM', false);
+	activeSampleId.value = item.id;
+};
+const commonChatByUser = (data) => {
+	const question = data.question;
+	const isCommon = commonPhrases.value.findIndex((item) => item.question === question) > -1;
+	if (isCommon) {
+		return ElMessage.warning('璇ラ棶棰樺凡瀛樺湪甯哥敤璇腑');
+	} else {
+		state.inputCommonPhrases = question;
+		addCommonPhrasesData();
+	}
+};
 //#endregion
+onMounted(() => {
+	getCommonPhrases();
+});
+defineExpose({ commonChatByUser, getCommonPhrases });
 </script>
 <style scoped lang="scss">
 .container {
@@ -153,7 +205,7 @@
 		align-items: center;
 		padding: 10px 6px;
 		color: #060607;
-		.title {
+		.question {
 			font-size: 14px;
 			color: #060607;
 			font-weight: 600;
@@ -187,16 +239,19 @@
 				&:hover {
 					background: #e5e7ed;
 				}
-				.title {
+				.question {
 					font-size: 14px;
-					color: #060607;
-					font-family: PingFang HK;
-					font-weight: 600;
+					color: #8d8e99;
+					font-weight: 400;
 					font-style: normal;
 					white-space: nowrap;
 					text-overflow: ellipsis;
 					overflow: hidden;
+					&:hover {
+						color: #060607;
+					}
 				}
+
 				.content {
 					font-size: 12px;
 					color: #5e6772;

--
Gitblit v1.9.3