<template>
|
<div class="pc-scenes">
|
<div class="title flex items-center justify-between">
|
<div class="flex item-center">
|
<span>应用场景</span>
|
</div>
|
<div class="cursor-pointer">
|
<el-button link class="changeBatch" @click="lookMore"
|
>查看更多
|
<el-icon>
|
<ArrowRight />
|
</el-icon>
|
</el-button>
|
</div>
|
</div>
|
|
<div class="main">
|
<div
|
class="main_item flex cursor-pointer"
|
v-for="(item, index) in state.applicationScenarios"
|
: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>
|
</div>
|
</div>
|
</template>
|
|
<script setup lang="ts">
|
import { onMounted, reactive } from 'vue';
|
import { getSectionList } from '/@/api/ai/chat';
|
import router from '/@/router';
|
import { activeSectionAId } from '/@/stores/chatRoom';
|
|
let state = reactive({
|
applicationScenarios: [],
|
scenariosIds: [],
|
});
|
const changeScenarios = async (item) => {
|
activeSectionAId.value = item.section_id
|
// router.push({
|
// name: 'Scenario',
|
// query: { ID: item.section_id },
|
// });
|
};
|
const getMainSectionList = async () => {
|
const res = await getSectionList();
|
let result = res.sections;
|
const iconList = ['biaodan', 'putong', 'zhongduancanshuchaxun', 'shidu'];
|
res.sections.forEach((sectionItem, index) => {
|
sectionItem.Icon = iconList[index];
|
});
|
state.applicationScenarios = res.sections;
|
|
res.sections?.[0]&&changeScenarios(res.sections[0])
|
// state.scenariosIds = result.map((item) => item.section_id);
|
};
|
|
// 查看更多
|
const lookMore = () => {
|
router.push({
|
name: 'Scenario',
|
});
|
};
|
onMounted(() => {
|
getMainSectionList();
|
});
|
</script>
|
<style scoped lang="scss">
|
.pc-scenes {
|
-webkit-box-sizing: border-box;
|
box-sizing: border-box;
|
margin-top: 24px;
|
width: 760px;
|
padding: 0;
|
font-size: 14px;
|
|
.title {
|
color: #999;
|
line-height: 14px;
|
|
.split {
|
height: 12px;
|
width: 2px;
|
background-color: #ccc;
|
margin: 0 10px;
|
}
|
|
span {
|
color: rgb(32, 33, 35);
|
font-size: 14px;
|
}
|
|
.changeBatch {
|
color: #999;
|
font-size: 12px;
|
transition: color 0.2s ease-in-out;
|
}
|
|
.change {
|
color: #999;
|
transition: color 0.2s ease-in-out;
|
}
|
}
|
|
.main {
|
margin-top: 12px;
|
width: 100%;
|
border-radius: 5px;
|
border: 1px solid #d9dbde;
|
display: flex;
|
padding: 8px;
|
flex-wrap: wrap;
|
|
&_item {
|
width: 50%;
|
border-radius: 5px;
|
padding: 18px 12px;
|
-webkit-transition: background-color 0.1s ease-in-out;
|
-o-transition: background-color 0.1s ease-in-out;
|
transition: background-color 0.1s ease-in-out;
|
position: relative;
|
img {
|
width: 16px;
|
height: 16px;
|
border: none;
|
}
|
.left {
|
width: 50px;
|
height: 50px;
|
border-radius: 5px;
|
}
|
|
.color0 {
|
background: linear-gradient(180deg, #f63c8b, #fd216c);
|
}
|
|
.color1 {
|
background: linear-gradient(180deg, #0ebfe1, #0ab2d3);
|
}
|
|
.color2 {
|
background: linear-gradient(180deg, #9647fe, #7b5be8);
|
}
|
|
.color3 {
|
background: linear-gradient(180deg, #fb894c, #ff7958);
|
}
|
|
.right {
|
flex: 1;
|
min-width: 0;
|
margin-left: 12px;
|
|
h4 {
|
color: #202123;
|
font-size: 13px;
|
font-weight: 500;
|
height: 16px;
|
transition: background-color 0.2s;
|
}
|
|
p {
|
font-size: 12px;
|
margin-top: 6px;
|
height: 34px;
|
line-height: 17px;
|
color: #8d8e99;
|
overflow: hidden;
|
-o-text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
-webkit-line-clamp: 2;
|
-webkit-box-orient: vertical;
|
}
|
}
|
}
|
&_item_active {
|
background-color: #ebeef3;
|
.right {
|
h4 {
|
color: #007aff;
|
}
|
}
|
}
|
}
|
}
|
</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';
|