feat(home): 更新首页模型列表和创建项目功能

- 从后端获取模型列表数据,替换静态数据
- 优化模型卡片组件,使用动态获取的模型信息- 添加创建普通问卷的功能
- 调整场景列表数据结构
- 移除 ModelCard组件中的多余 console.log
This commit is contained in:
du.meimei
2025-05-26 10:50:56 +08:00
parent 1a160b1513
commit 7c15a533e2
5 changed files with 38 additions and 58 deletions

View File

@@ -1,10 +1,10 @@
<template>
<div class="model-item" :style="{ backgroundImage: `url(${model.bg})` }">
<div class="model-item" :style="{ backgroundImage: `url(${model.image})` }">
<div class="flex align-items-center">
<img :src="model.icon" alt="" style="height: 23px; margin-right: 8px" />
<p class="model-item-title">{{ model.title }}</p>
</div>
<p class="model-item-desc">{{ model.desc }}</p>
<p class="model-item-desc">{{ model.description }}</p>
<div
class="view-link"
@mouseover="hoverIndex = index"
@@ -30,7 +30,6 @@ defineProps({
}
})
const getText = (index) => {
console.log(index);
if (hoverIndex.value === index) {
return index === 2 ? "敬请期待" : "去查看";
}

View File

@@ -13,63 +13,45 @@
@open="handleCreateModule(item)"
/>
</div>
<create ref="createRef"
style="width: 1px;height: 0"
@update:ai-assistant-visible="getValue">
</create>
</div>
</template>
<script setup>
import { ref } from 'vue'
import { useRouter } from 'vue-router'
import { addSpecSurvey } from '@/api/home'
import ModelCard from './ModelCard.vue'
import { onMounted, ref } from 'vue';
import { useRouter } from 'vue-router';
import { addSpecSurvey, getSceneListHome } from '@/api/home';
import ModelCard from './ModelCard.vue';
import create from '@/views/ProjectManage/create/Index.vue'
const router = useRouter()
const loading = ref(false)
const modelsList = ref([
{
icon: require('@/assets/img/home/kanoicon.png'),
bg: require('@/assets/img/home/kanobg.png'),
title: 'KANO 模型',
type: '2',
desc: '通过对用户需求分类和优先排序,明确细分市场对不同配置的需求划分,指导产品功能优化和迭代。',
},
{
icon: require('@/assets/img/home/maxicon.png'),
bg: require('@/assets/img/home/maxbg.png'),
title: 'Maxdiff 模型',
type: '3',
desc: '通过了解消费者对一组选项的偏好程度,批量评估多个属性或功能的重要性排序,帮助确定产品开发的优先级。',
},
{
icon: require('@/assets/img/home/pkicon.png'),
bg: require('@/assets/img/home/pkbg.png'),
title: 'PK 模型',
type: '4',
desc: '通过一对一PK互动的方式对少量包装、海报等素材进行智能测款科学筛选最优设计。',
},
{
icon: require('@/assets/img/home/psmicon.png'),
bg: require('@/assets/img/home/psmbg.png'),
title: 'PSM 模型',
type: '1',
desc: '通过了解消费者对产品不同价格的容忍度,评估未上市新品的合理价格感知、价格容忍度极限并分析最佳价格点。',
},
])
const modelsList = ref([])
const createRef = ref(null)
onMounted(() => {
getModelList()
})
const getModelList = () => {
console.log('getSceneList')
getSceneListHome().then(res => {
console.log(res);
modelsList.value = res.data.models
})
}
const handleCreateModule = async (item) => {
console.log('handleCreateModule');
console.log(item.type);
// if (loading.value) return
// loading.value = true
if (item.type === '4'){
// pk模型 不允许创建
if (item.sort === 103) {
return
}
const res = await addSpecSurvey({ type: item.type })
await router.push({
path: '/survey/planet/design',
query: { sn: res.data.sn },
})
if ([31].includes(item.code)) {
if (createRef.value) {
item.hasTitle = true
item.title+='问卷'
createRef.value.createNormalSurvey(item)
}
}
}
</script>

View File

@@ -241,9 +241,9 @@ onMounted(() => {
// 🟩 初始化 Swiper 并赋值给 mySwiper
mySwiper = new Swiper(swiperContainer.value, {
loop: false,
autoplay: {
delay: 13000,
},
// autoplay: {
// delay: 13000,
// },
pagination: {
el: pagination.value,
clickable: true,

View File

@@ -50,7 +50,6 @@
<script setup>
import { onMounted, ref } from 'vue';
// 导入组件以便使用 ref 引用
import create from '@/views/ProjectManage/create/Index.vue'
import {useRouter} from 'vue-router';
import { getSceneListHome } from '@/api/home';
@@ -103,8 +102,8 @@ const getSceneList=()=>{
console.log('getSceneList')
getSceneListHome().then(res=>{
console.log(res);
sceneList.value=[]
sceneList.value = fixedSceneList.concat(res.data)
sceneList.value = []
sceneList.value = fixedSceneList.concat(res.data.items)
})
}
/**

View File

@@ -531,7 +531,7 @@ function createNormalSurvey(item) {
temp_sn.value = item.sn;
groupInfo.value.sn = '';
groupInfo.value.group_id = 0;
groupInfo.value.project_name = '';
groupInfo.value.project_name = item.hasTitle ? item.title : '';
groupInfo.value.remarks = '';
groupInfo.value.tag = [];
groupInfo.value.scene_code_info = `${item.code}`;