3 Revize 8bc5c2892a ... 08d03cfbe0

Autor SHA1 Zpráva Datum
  IlhamTahir 08d03cfbe0 feat: 完成宠物列表接口对接 před 1 rokem
  IlhamTahir e46919a938 fix: carousal před 1 rokem
  IlhamTahir e286106b11 fix: 修改文章描述样式 před 1 rokem

+ 10 - 0
src/api/pet.ts

@@ -0,0 +1,10 @@
+import type { CreatePetRequest, Pet } from '@/model/pet'
+import httpClient from '@/api/httpClient'
+
+export function createPet(createPetRequest: CreatePetRequest) {
+  return httpClient.post('/pets', createPetRequest)
+}
+
+export function getOwnPets() {
+  return httpClient.get<Pet[]>('/pets/own')
+}

+ 1 - 1
src/model/base.ts

@@ -10,7 +10,7 @@ export interface BaseModel {
   updateTime: string
 }
 
-export interface AuditBaseModel extends BaseModel {
+export interface TraceableModel extends BaseModel {
   createBy: User
   updateBy: User
 }

+ 19 - 0
src/model/pet.ts

@@ -0,0 +1,19 @@
+import type { TraceableModel } from '@/model/base'
+
+export interface Pet extends TraceableModel {
+  birthday: string
+  bodyType: string
+  gender: number
+  isActive: boolean
+  isLactation: boolean
+  isPregnant: boolean
+  isSterilization: boolean
+  name: string
+  photo: string
+  type: string
+  weight: number
+}
+
+export interface CreatePetRequest extends Omit<Pet, keyof TraceableModel> {
+
+}

+ 2 - 2
src/model/user.ts

@@ -1,6 +1,6 @@
-import type { AuditBaseModel, BaseFilterRequest } from '@/model/base'
+import type { BaseFilterRequest, TraceableModel } from '@/model/base'
 
-export interface User extends AuditBaseModel {
+export interface User extends TraceableModel {
   username: string
   locked: boolean
   enabled: boolean

+ 14 - 18
src/pages/feed-plan/index.vue

@@ -1,10 +1,11 @@
 <script setup lang="ts">
-import avator from '@/static/image/pet-parameters/avator.png'
+import type { Pet } from '@/model/pet'
+import { getOwnPets } from '@/api/pet'
+import avatar from '@/static/image/pet-parameters/avator.png'
 import addBtn from '@/static/image/pet-plan/add_btn.png'
 import card from '@/static/image/pet-plan/card.png'
 import editBtn from '@/static/image/pet-plan/edit.png'
 import userAddBtn from '@/static/image/pet-plan/user_add_btn.png'
-import ToolApi from '@/utils'
 
 interface User {
   name: string
@@ -13,19 +14,14 @@ interface User {
   isClick: boolean
   plan: { image: string, name: string, weight: string, energy: string, label: string[] }[]
 }
-const safeHeight = ToolApi.getSafeHeight()
-// 用户存在情况
-// const userList = ref<User[]>([
-//   { name: '子龙', image: avator, label: ['1岁', '孟加拉豹猫', '8kg'], plan: [
-//     { image: miniGoods, name: 'MINI主食包', weight: '500', energy: '1200kcal', label: ['湿粮', '呵护肠胃'] },
-//     { image: nutritionGoods, name: '营养加焙烘焙粮', weight: '500', energy: '1200kcal', label: ['湿粮', '呵护肠胃'] },
-//   ], isClick: true },
-//   { name: '广坤', image: avator, label: ['12岁', '孟加拉豹猫', '8kg'], plan: [
-//     { image: miniGoods, name: 'MINI主食包', weight: '600', energy: '1300kcal', label: ['湿粮', '呵护肠胃'] },
-//     { image: nutritionGoods, name: '营养加焙烘焙粮', weight: '1000', energy: '1300kcal', label: ['湿粮', '呵护肠胃'] },
-//   ], isClick: false },
-// ])
-// 用户不存在情况
+
+const pets = ref<Pet[]>([])
+async function fetchPets() {
+  pets.value = await getOwnPets()
+}
+
+onMounted(fetchPets)
+
 const userList = ref<User[]>([])
 const clickUser = computed(() => {
   return userList.value.filter(user => user.isClick === true)
@@ -46,9 +42,9 @@ function handleEdit() {
 </script>
 
 <template>
-  <view class="flex flex-col bg-[#F5F6F7] overflow-y-auto" :style="`height:calc(100vh - ${safeHeight}px)`">
+  <view class="flex flex-col bg-[#F5F6F7] overflow-y-auto h-screen">
     <!--  喂养计划未注册  -->
-    <view v-if="userList.length === 0" class="w-[calc(100% - 32px)] min-h-[135px]  rounded-lg m-[16px] relative">
+    <view v-if="pets.length === 0" class="w-[calc(100% - 32px)] min-h-[135px]  rounded-lg m-[16px] relative">
       <image :src="card" class="w-full h-full absolute z-20" />
       <view class="z-20 absolute w-full mt-[35px] flex flex-col">
         <image :src="addBtn" class="w-[47px] h-[47px] mx-auto" @click="handleAdd" />
@@ -75,7 +71,7 @@ function handleEdit() {
       </view>
 
       <view v-for="(item, index) in clickUser" :key="index" class="w-[calc(100% - 32px)] min-h-[129px] rounded-lg m-[16px] relative bg-[white] p-[16px] flex items-center">
-        <image :src="avator" class="w-[64px] h-[64px] rounded-full" />
+        <image :src="avatar" class="w-[64px] h-[64px] rounded-full" />
         <view class="ml-[16px] min-h-[54px] flex-1">
           <text class="font-600">
             {{ item.name }}

+ 1 - 1
src/pages/pet-manual/components/CardList.vue

@@ -46,7 +46,7 @@ function handleLoadMore() {
         <view class="text-[14px]">
           {{ item.title }}
         </view>
-        <view class="mt-2 flex-1 text-[11px] text-[#999] whitespace-pre-line">
+        <view class="mt-2 flex-1 text-[11px] leading-3 text-[#999] whitespace-pre-line line-clamp-3 w-full overflow-hidden">
           {{ item.description }}
         </view>
         <view class="mt-3 text-[10px] text-[#D8D8D8]">

+ 1 - 1
src/pages/pet-manual/index.vue

@@ -198,7 +198,7 @@ init()
           <swiper class="swiper-box" @change="change">
             <swiper-item v-for="(item, index) in info" :key="index">
               <view class="swiper-item w-full h-full flex items-center justify-center">
-                <image :src="item.imageUrl" mode="heightFix" class="w-full h-full" @tap="handleJumpUrl(item)" />
+                <image :src="item.imageUrl" mode="widthFix" @tap="handleJumpUrl(item)" />
               </view>
             </swiper-item>
           </swiper>