|
|
@@ -1,26 +1,37 @@
|
|
|
<script setup lang="ts">
|
|
|
-import type { FeedFormQuestions, PetCard, StepInfo } from '@/model/pet-manual'
|
|
|
+import type { FeedFormQuestions, PetCard, StepInfo, UserList } from '@/model/pet-manual'
|
|
|
import FeedSlogan from '@/pages/feed-plan/components/FeedFlogan.vue'
|
|
|
import FeedForm from '@/pages/feed-plan/components/FeedForm.vue'
|
|
|
import ProgressBar from '@/pages/feed-plan/components/ProgressBar.vue'
|
|
|
+import avator from '@/static/image/pet-parameters/avator.png'
|
|
|
+import right from '@/static/image/pet-parameters/right.png'
|
|
|
|
|
|
const props = defineProps<{
|
|
|
list: FeedFormQuestions[]
|
|
|
stepInfo: StepInfo[]
|
|
|
+ userList: UserList
|
|
|
+}>()
|
|
|
+const emits = defineEmits<{
|
|
|
+ back: [void]
|
|
|
+ step: [number]
|
|
|
}>()
|
|
|
-const emits = defineEmits(['back', 'step'])
|
|
|
const step = ref(0)
|
|
|
+const addPage = ref(1)
|
|
|
+const isUserPage = ref(false)
|
|
|
const progressNumber = computed<number>(() => {
|
|
|
- return Math.ceil((step.value + 1) / props.list.length * 100)
|
|
|
+ return Math.ceil((step.value + 1) / (props.list.length + addPage.value) * 100)
|
|
|
})
|
|
|
const feedSloganBottom = computed<number>(() => {
|
|
|
- return props.list[step.value].formType === 3 ? 40 : 70
|
|
|
+ return props.list[step.value]?.formType === 3 ? 40 : 70
|
|
|
})
|
|
|
const feedProgressTitle = computed<string>(() => {
|
|
|
return step.value === 0 ? '返回' : '上一题'
|
|
|
})
|
|
|
|
|
|
function handlePrevious() {
|
|
|
+ if (step.value === props.list.length - 1 + addPage.value) {
|
|
|
+ isUserPage.value = false
|
|
|
+ }
|
|
|
if (step.value > 0) {
|
|
|
step.value -= 1
|
|
|
}
|
|
|
@@ -33,7 +44,11 @@ function handleAnswer(answer: PetCard) {
|
|
|
if (step.value === 2 || step.value === 7) {
|
|
|
emits('step', step.value)
|
|
|
}
|
|
|
- if (step.value < props.list.length - 1) {
|
|
|
+ if (step.value === props.list.length - 1) {
|
|
|
+ console.log(123)
|
|
|
+ isUserPage.value = true
|
|
|
+ }
|
|
|
+ if (step.value < props.list.length - 1 + addPage.value) {
|
|
|
step.value += 1
|
|
|
console.log(step.value, 'step')
|
|
|
}
|
|
|
@@ -42,11 +57,52 @@ function handleAnswer(answer: PetCard) {
|
|
|
|
|
|
<template>
|
|
|
<ProgressBar :progress="progressNumber" :title-name="feedProgressTitle" @previous="handlePrevious" />
|
|
|
- <FeedForm :form-type="props.list[step].formType" :answer-list="props.list[step].question" :title="props.list[step].title" @next="handleAnswer" />
|
|
|
+ <FeedForm v-if="!isUserPage" :form-type="props.list[step].formType" :answer-list="props.list[step].question" :title="props.list[step].title" @next="handleAnswer" />
|
|
|
<FeedSlogan :bottom="feedSloganBottom" />
|
|
|
+ <view v-if="isUserPage">
|
|
|
+ <view class="w-[calc(100% - 32px)] h-[96px] bg-[white] rounded-3 mt-[31px] p-[16px] mx-[16px] flex flex-col justify-center">
|
|
|
+ <view class="flex gap-4">
|
|
|
+ <image :src="avator" class="w-[64px] h-[64px] rounded-full" />
|
|
|
+ <view class="mt-[5px] ">
|
|
|
+ <text class="font-bold text-[16px] ">
|
|
|
+ {{ props.userList.username }}
|
|
|
+ </text>
|
|
|
+ <view class="mt-[8px] flex gap-2">
|
|
|
+ <view v-for="(item, index) in props.userList.type" :key="index" class="text-[12px] text-[#999] bg-[#F3F3F3] rounded-[3px] py-[2px] px-[8px]">
|
|
|
+ {{ item }}
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="w-[calc(100% - 32px)] mx-[16px] h-[56px] bg-[white] rounded-t-3 mt-4 flex items-center card_border_bottom p-4 justify-between">
|
|
|
+ <view>喂养目标</view>
|
|
|
+ <view class="flex justify-center items-center">
|
|
|
+ <text class="mr-3">
|
|
|
+ 增肥
|
|
|
+ </text>
|
|
|
+ <image :src="right" class="w-[24px] h-[24px]" />
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="w-[calc(100% - 32px)] mx-[16px] h-[56px] bg-[white] rounded-b-3 flex items-center p-4 justify-between">
|
|
|
+ <view>目标体重</view>
|
|
|
+ <view class="flex justify-center items-center">
|
|
|
+ <text class="mr-3">
|
|
|
+ 6kg
|
|
|
+ </text>
|
|
|
+ <image :src="right" class="w-[24px] h-[24px]" />
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <view class="flex items-center justify-center">
|
|
|
+ <button class="w-[176px] h-[47px] flex items-center justify-center bg-[#4545E5] border-none text-[white] rounded-3xl mt-[210px]">
|
|
|
+ 下一步
|
|
|
+ </button>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
</template>
|
|
|
|
|
|
<style scoped>
|
|
|
-
|
|
|
+.card_border_bottom{
|
|
|
+ border-bottom: 1px solid #E5E5E5;
|
|
|
+}
|
|
|
</style>
|
|
|
-+
|