feat(home): 更新首页模型列表和创建项目功能
- 从后端获取模型列表数据,替换静态数据 - 优化模型卡片组件,使用动态获取的模型信息- 添加创建普通问卷的功能 - 调整场景列表数据结构 - 移除 ModelCard组件中的多余 console.log
This commit is contained in:
@@ -1,10 +1,10 @@
|
|||||||
<template>
|
<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">
|
<div class="flex align-items-center">
|
||||||
<img :src="model.icon" alt="" style="height: 23px; margin-right: 8px" />
|
<img :src="model.icon" alt="" style="height: 23px; margin-right: 8px" />
|
||||||
<p class="model-item-title">{{ model.title }}</p>
|
<p class="model-item-title">{{ model.title }}</p>
|
||||||
</div>
|
</div>
|
||||||
<p class="model-item-desc">{{ model.desc }}</p>
|
<p class="model-item-desc">{{ model.description }}</p>
|
||||||
<div
|
<div
|
||||||
class="view-link"
|
class="view-link"
|
||||||
@mouseover="hoverIndex = index"
|
@mouseover="hoverIndex = index"
|
||||||
@@ -30,7 +30,6 @@ defineProps({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
const getText = (index) => {
|
const getText = (index) => {
|
||||||
console.log(index);
|
|
||||||
if (hoverIndex.value === index) {
|
if (hoverIndex.value === index) {
|
||||||
return index === 2 ? "敬请期待" : "去查看";
|
return index === 2 ? "敬请期待" : "去查看";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,63 +13,45 @@
|
|||||||
@open="handleCreateModule(item)"
|
@open="handleCreateModule(item)"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
<create ref="createRef"
|
||||||
|
style="width: 1px;height: 0"
|
||||||
|
@update:ai-assistant-visible="getValue">
|
||||||
|
</create>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { ref } from 'vue'
|
import { onMounted, ref } from 'vue';
|
||||||
import { useRouter } from 'vue-router'
|
import { useRouter } from 'vue-router';
|
||||||
import { addSpecSurvey } from '@/api/home'
|
import { addSpecSurvey, getSceneListHome } from '@/api/home';
|
||||||
import ModelCard from './ModelCard.vue'
|
import ModelCard from './ModelCard.vue';
|
||||||
|
import create from '@/views/ProjectManage/create/Index.vue'
|
||||||
|
|
||||||
const router = useRouter()
|
const modelsList = ref([])
|
||||||
const loading = ref(false)
|
const createRef = ref(null)
|
||||||
|
|
||||||
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: '通过了解消费者对产品不同价格的容忍度,评估未上市新品的合理价格感知、价格容忍度极限并分析最佳价格点。',
|
|
||||||
},
|
|
||||||
])
|
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
getModelList()
|
||||||
|
})
|
||||||
|
const getModelList = () => {
|
||||||
|
console.log('getSceneList')
|
||||||
|
getSceneListHome().then(res => {
|
||||||
|
console.log(res);
|
||||||
|
modelsList.value = res.data.models
|
||||||
|
})
|
||||||
|
}
|
||||||
const handleCreateModule = async (item) => {
|
const handleCreateModule = async (item) => {
|
||||||
console.log('handleCreateModule');
|
// pk模型 不允许创建
|
||||||
console.log(item.type);
|
if (item.sort === 103) {
|
||||||
// if (loading.value) return
|
|
||||||
// loading.value = true
|
|
||||||
if (item.type === '4'){
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const res = await addSpecSurvey({ type: item.type })
|
if ([31].includes(item.code)) {
|
||||||
await router.push({
|
if (createRef.value) {
|
||||||
path: '/survey/planet/design',
|
item.hasTitle = true
|
||||||
query: { sn: res.data.sn },
|
item.title+='问卷'
|
||||||
})
|
createRef.value.createNormalSurvey(item)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -241,9 +241,9 @@ onMounted(() => {
|
|||||||
// 🟩 初始化 Swiper 并赋值给 mySwiper
|
// 🟩 初始化 Swiper 并赋值给 mySwiper
|
||||||
mySwiper = new Swiper(swiperContainer.value, {
|
mySwiper = new Swiper(swiperContainer.value, {
|
||||||
loop: false,
|
loop: false,
|
||||||
autoplay: {
|
// autoplay: {
|
||||||
delay: 13000,
|
// delay: 13000,
|
||||||
},
|
// },
|
||||||
pagination: {
|
pagination: {
|
||||||
el: pagination.value,
|
el: pagination.value,
|
||||||
clickable: true,
|
clickable: true,
|
||||||
|
|||||||
@@ -50,7 +50,6 @@
|
|||||||
|
|
||||||
<script setup>
|
<script setup>
|
||||||
import { onMounted, ref } from 'vue';
|
import { onMounted, ref } from 'vue';
|
||||||
// 导入组件以便使用 ref 引用
|
|
||||||
import create from '@/views/ProjectManage/create/Index.vue'
|
import create from '@/views/ProjectManage/create/Index.vue'
|
||||||
import {useRouter} from 'vue-router';
|
import {useRouter} from 'vue-router';
|
||||||
import { getSceneListHome } from '@/api/home';
|
import { getSceneListHome } from '@/api/home';
|
||||||
@@ -104,7 +103,7 @@ const getSceneList=()=>{
|
|||||||
getSceneListHome().then(res=>{
|
getSceneListHome().then(res=>{
|
||||||
console.log(res);
|
console.log(res);
|
||||||
sceneList.value = []
|
sceneList.value = []
|
||||||
sceneList.value = fixedSceneList.concat(res.data)
|
sceneList.value = fixedSceneList.concat(res.data.items)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -531,7 +531,7 @@ function createNormalSurvey(item) {
|
|||||||
temp_sn.value = item.sn;
|
temp_sn.value = item.sn;
|
||||||
groupInfo.value.sn = '';
|
groupInfo.value.sn = '';
|
||||||
groupInfo.value.group_id = 0;
|
groupInfo.value.group_id = 0;
|
||||||
groupInfo.value.project_name = '';
|
groupInfo.value.project_name = item.hasTitle ? item.title : '';
|
||||||
groupInfo.value.remarks = '';
|
groupInfo.value.remarks = '';
|
||||||
groupInfo.value.tag = [];
|
groupInfo.value.tag = [];
|
||||||
groupInfo.value.scene_code_info = `${item.code}`;
|
groupInfo.value.scene_code_info = `${item.code}`;
|
||||||
|
|||||||
Reference in New Issue
Block a user