| | |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="main"> |
| | | <div class="main" v-show="state.applicationScenarios && state.applicationScenarios.length < 3"> |
| | | <div |
| | | class="main_item flex cursor-pointer" |
| | | v-for="(item, index) in state.applicationScenarios" |
| | | v-for="item in state.applicationScenarios" |
| | | :key="item.section_id" |
| | | :class="{ main_item_active: item.section_id === state.scenariosIndex }" |
| | | :class="{ main_item_active: item.section_id === activeSectionAId }" |
| | | @click="changeScenarios(item)" |
| | | > |
| | | <div :class="['iconfont icon-' + item.Icon]"></div> |
| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | | <div class="block main" v-show="state.applicationScenarios && state.applicationScenarios.length > 3"> |
| | | <el-carousel height="80"> |
| | | <el-carousel-item v-for="group in groupedArray" :key="group" class="set-carousel-item"> |
| | | <div |
| | | class="main_item flex cursor-pointer" |
| | | v-for="item in group" |
| | | :key="item.section_id" |
| | | :class="{ main_item_active: item.section_id === activeSectionAId }" |
| | | @click="changeScenarios(item)" |
| | | > |
| | | <div :class="['iconfont icon-' + item.Icon]"></div> |
| | | <div class="right"> |
| | | <h4>{{ item.section_name }}</h4> |
| | | <p>{{ item.section_title }}</p> |
| | | </div> |
| | | </div> |
| | | </el-carousel-item> |
| | | </el-carousel> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script setup lang="ts"> |
| | | import { onMounted, reactive } from 'vue'; |
| | | import { computed, onMounted, reactive } from 'vue'; |
| | | import { getSectionList } from '/@/api/ai/chat'; |
| | | import router from '/@/router'; |
| | | import { activeRoomId, activeSectionAId, setRoomConfig, sectionAList } from '/@/stores/chatRoom'; |
| | | |
| | | let state = reactive({ |
| | | applicationScenarios: [], |
| | | scenariosIds: [], |
| | | scenariosIndex: 0, |
| | | }); |
| | | const emits = defineEmits<{ |
| | | (event: 'tagListClick', data): void; |
| | | }>(); |
| | | const changeScenarios = async (item) => { |
| | | state.scenariosIndex = item.section_id; |
| | | |
| | | // router.push({ |
| | | // name: 'Scenario', |
| | | // query: { ID: item.section_id }, |
| | | // }); |
| | | activeSectionAId.value = item.section_id; |
| | | setRoomConfig(activeRoomId.value, 'isAnswerByLLM', false); |
| | | }; |
| | | const getMainSectionList = async () => { |
| | | const res = await getSectionList(); |
| | | let result = res.sections; |
| | | const iconList = ['biaodan', 'putong', 'zhongduancanshuchaxun', 'shidu']; |
| | | let result = []; |
| | | const iconList = [ |
| | | 'biaodan', |
| | | 'putong', |
| | | 'zhongduancanshuchaxun', |
| | | 'shidu', |
| | | 'fuwenbenkuang', |
| | | 'fuwenben', |
| | | 'jiliandongxuanzeqi', |
| | | 'jinridaiban', |
| | | 'gongju', |
| | | ]; |
| | | res.sections.forEach((sectionItem, index) => { |
| | | sectionItem.Icon = iconList[index]; |
| | | }); |
| | | state.applicationScenarios = res.sections; |
| | | // state.scenariosIds = result.map((item) => item.section_id); |
| | | sectionAList.value = res.sections; |
| | | res.sections?.[0] && changeScenarios(res.sections[0]); |
| | | }; |
| | | const groupedArray = computed(() => { |
| | | const groups = []; |
| | | let i = 0; |
| | | while (state.applicationScenarios.length > i) { |
| | | groups.push(state.applicationScenarios.slice(i, (i += 4))); |
| | | } |
| | | return groups; |
| | | }); |
| | | |
| | | // 查看更多 |
| | | const lookMore = () => { |
| | | router.push({ |
| | | name: 'Scenario', |
| | | query: { |
| | | ID: activeSectionAId.value, |
| | | }, |
| | | }); |
| | | }; |
| | | onMounted(() => { |
| | |
| | | width: 100%; |
| | | border-radius: 5px; |
| | | border: 1px solid #d9dbde; |
| | | display: flex; |
| | | padding: 8px; |
| | | flex-wrap: wrap; |
| | | |
| | | &_item { |
| | | width: 50%; |
| | | border-radius: 5px; |
| | |
| | | } |
| | | } |
| | | } |
| | | .set-carousel-item { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | } |
| | | } |
| | | .set-page { |
| | | display: flex; |
| | | justify-content: center; |
| | | align-items: center; |
| | | margin: 10px 0px; |
| | | } |
| | | } |
| | | :deep(.el-carousel__container) { |
| | | height: 200px !important; |
| | | } |
| | | </style> |
| | | import item from 'element-plus/es/components/space/src/item';import item from 'element-plus/es/components/space/src/item';import item |
| | | from 'element-plus/es/components/space/src/item'; |