From 457cc6cf166d3b6c22be4f78c1db8802a7fbb4c7 Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期一, 07 四月 2025 17:53:19 +0800 Subject: [PATCH] DigitalHuman --- src/views/project/ch/home/component/waterRight/center.vue | 128 ++++++++++++++++++++++-------------------- 1 files changed, 66 insertions(+), 62 deletions(-) diff --git a/src/views/project/ch/home/component/waterRight/center.vue b/src/views/project/ch/home/component/waterRight/center.vue index b0ca19b..7542aa9 100644 --- a/src/views/project/ch/home/component/waterRight/center.vue +++ b/src/views/project/ch/home/component/waterRight/center.vue @@ -6,101 +6,90 @@ <span class="split"></span> <span class="change cursor-pointer" @click="advanceExampleClick">楂樼骇绀轰緥 ></span> </div> - <div class="cursor-pointer"> - <span class="mr-1 changeBatch" @click="batchChange">鎹竴鎵�</span> - <i class="iconfont icon-shuaxin"></i> + <div class="cursor-pointer" @click="batchChange"> + <span class="mr-1 changeBatch">鎹竴鎵�</span> + <i class="myiconfont icon-shuaxin"></i> </div> </div> - <div class="main"> - <div - class="main_item flex items-center cursor-pointer" - v-for="(item, index) in state.exampleContent" - :key="index" - :class="{ main_item_active: item.sample_id === activeSampleId }" - @click="changeExample(item)" - > - <div class="left flex items-center justify-center" :class="['color' + index]"> - <img :src="item.Icon" alt="" /> - </div> - <div class="right"> - <h4>{{ item.sample_title }}</h4> - <p>{{ item.sample_question }}</p> - </div> - </div> + <el-carousel height="80" :interval="6000" indicator-position="none"> + <el-carousel-item v-for="(group, index) in state.m_groupArr" :key="index" class="set-carousel-item"> + <div + class="main_item flex items-center cursor-pointer" + v-for="(item, index) in group" + :key="index" + :class="{ main_item_active: item.sample_id === activeSampleId }" + @click="changeExample(item)" + > + <div class="left flex items-center justify-center" :class="['color' + index]"> + <img :src="item.Icon" alt="" /> + </div> + <div class="right"> + <h4>{{ item.sample_title }}</h4> + <p>{{ item.sample_question }}</p> + </div> + </div> + </el-carousel-item> + </el-carousel> </div> </div> </template> <script setup lang="ts"> -import { computed, onMounted, reactive, ref } from 'vue'; -import { getSelectSample } from '/@/api/ai/chat'; -import { activeRoomId, activeSampleId, activeSectionAId, setRoomConfig } from '/@/stores/chatRoom'; -import emitter from '/@/utils/mitt'; +import { reactive } from 'vue'; +import { activeRoomId, activeSampleId, exampleSceneList, setRoomConfig } from '/@/stores/chatRoom'; let state = reactive({ exampleContent: [], - exampleRandomContent: [], + isShowExample: false, + m_groupArr: [], }); -const exampleList = ref([]); //妯$増鍒楄〃 const emits = defineEmits<{ (event: 'advanceExampleClick', data): void; - (event:'updateChatInput',val):void; + (event: 'updateChatInput', val): void; }>(); -onMounted(() => { - getSelectListSample(); -}); -const groupedArray = computed(() => { +const initGroupedArr = () => { const groups = []; let i = 0; - while (state.exampleRandomContent.length > i) { - groups.push(state.exampleRandomContent.slice(i, (i += 4))); + while (state.exampleContent.length > i) { + groups.push(state.exampleContent.slice(i, (i += 4))); } - return groups; -}); -//鑾峰彇妯$増鍒楄〃 -const getSelectListSample = async () => { - const res = await getSelectSample({ - section_b_id: '', - }); - // console.log(res, 63); - state.exampleRandomContent = res.samples; - const array = []; - res.samples.forEach((sample, index) => { - sample.Icon = '/static/images/wave/ChatImg.png'; - sample.BgColor = randomHexColor(); - if (index < 4) { - array.push(sample); - } - }); - exampleList.value = res.samples; - state.exampleContent = array; + state.m_groupArr = groups; }; const changeExample = (item) => { - emits('updateChatInput',item.sample_question) + emits('updateChatInput', item.sample_question); setRoomConfig(activeRoomId.value, 'isAnswerByLLM', false); activeSampleId.value = item.sample_id; - activeSectionAId.value = item.section_a_id; }; //鎹竴鎵� const batchChange = () => { - const index = Math.floor(Math.random() * groupedArray.value.length); - state.exampleContent = groupedArray.value[index]; + let groups = state.m_groupArr; + // 鎵撲贡鎵规椤哄簭 + for (let i = groups.length - 1; i > 0; i--) { + const j = Math.floor(Math.random() * (i + 1)); + [groups[i], groups[j]] = [groups[j], groups[i]]; + } + state.m_groupArr = groups; }; //鎵撳紑楂樼骇绀轰緥 const advanceExampleClick = () => { emits('advanceExampleClick', true); }; - -//闅忔満鐢熸垚棰滆壊 -const randomHexColor = () => { - return `#${Math.floor(Math.random() * 16777215) - .toString(16) - .padEnd(6, '0')}`; +const tagListClick = (tagList) => { + let result = []; + tagList.forEach((tag) => { + exampleSceneList.value.forEach((sample) => { + if (tag == sample.group_id) { + result.push(sample); + } + }); + }); + state.exampleContent = result; + initGroupedArr(); }; defineExpose({ - getSelectListSample, + tagListClick, }); </script> <style scoped lang="scss"> @@ -144,6 +133,7 @@ width: calc(50% - 16px); margin: 8px; padding: 12px; + height: 84px; border: 1px solid #d9dbde; border-radius: 5px; background-color: transparent; @@ -178,6 +168,9 @@ font-weight: 500; height: 16px; transition: background-color 0.2s; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } p { font-size: 12px; @@ -202,6 +195,10 @@ } } } + .set-carousel-item { + display: flex; + flex-wrap: wrap; + } } } @@ -220,4 +217,11 @@ :deep(.el-drawer__body) { overflow-x: hidden; } +:deep(.el-carousel--horizontal) { + width: 100%; +} +:deep(.el-carousel__container) { + width: 100%; + height: 200px !important; +} </style> -- Gitblit v1.9.3