From d49d62cc5e07ba11a49aa0ebbeeb3aa374f8aca4 Mon Sep 17 00:00:00 2001 From: Cxx0822 <1556464090@qq.com> Date: Sat, 12 Sep 2026 16:27:12 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E7=82=B9=E8=B5=9E?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/index/index.vue | 15 +++++++-- src/store/record.ts | 67 ++++++++++++++++++++++++--------------- src/types/family.ts | 1 + 3 files changed, 54 insertions(+), 29 deletions(-) diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index 8bbab26..ae635cb 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -63,7 +63,10 @@ - + {{ item.like_count }} @@ -154,8 +157,14 @@ function getUserInfo() { } } -function toggleLike(item: IRecord) { +async function toggleLike(item: IRecord) { + if (item.liked) { + await recordStore.deleteRecordLikeApi(item.id, userStore.currentUser.id) + } else { + await recordStore.addRecordLikeApi(item.id, userStore.currentUser.id) + } + paging.value.refresh() } function gridCols(count: number): string { @@ -177,7 +186,7 @@ function queryList(pageNo, pageSize) { mask: true }) - recordStore.getRecordListByPageApi(pageNo, pageSize).then(res => { + recordStore.getRecordListByPageApi(pageNo, pageSize, userStore.currentUser.id).then(res => { paging.value.complete(res.records); }).catch(res => { paging.value.complete(false); diff --git a/src/store/record.ts b/src/store/record.ts index 57ab8f0..992d29b 100644 --- a/src/store/record.ts +++ b/src/store/record.ts @@ -31,9 +31,6 @@ export const useRecordStore = defineStore('record', { this.isRefresh = !this.isRefresh }, - async refreshRecord() { - this.recordList = await this.getRecordListApi() - }, getEmptyForm(): IRecordForm { return { user_id: 0, @@ -42,34 +39,14 @@ export const useRecordStore = defineStore('record', { video_list: [] } }, - async getRecordListApi() { - return new Promise((resolve, reject) => { - wx.request({ - url: `${this.baseUrl}/family-api/records`, - method: 'GET', - header: { 'Content-Type': 'application/json' }, - data: { - skip: 0, - limit: 20 - }, - success: (res) => { - if (res.statusCode >= 200 && res.statusCode < 300) { - resolve(res.data) - } else { - reject({ status: res.statusCode, data: res.data }) - } - }, - fail: (err) => reject(err), - }) - }) - }, - async getRecordListByPageApi(page: number, size: number) { + async getRecordListByPageApi(page: number, size: number, userId: number) { return new Promise((resolve, reject) => { wx.request({ url: `${this.baseUrl}/family-api/records/page`, method: 'GET', header: { 'Content-Type': 'application/json' }, data: { + user_id: userId, page: page, size: size }, @@ -136,6 +113,44 @@ export const useRecordStore = defineStore('record', { fail: (err) => reject(err), }) }) - } + }, + async addRecordLikeApi(recordId: number, userId: number) { + return new Promise((resolve, reject) => { + wx.request({ + url: `${this.baseUrl}/family-api/likes`, + method: 'POST', + header: { 'Content-Type': 'application/json' }, + data: { + record_id: recordId, + user_id: userId + }, + success: (res) => { + if (res.statusCode >= 200 && res.statusCode < 300) { + resolve(res.data) + } else { + reject({ status: res.statusCode, data: res.data }) + } + }, + fail: (err) => reject(err), + }) + }) + }, + async deleteRecordLikeApi(recordId: number, userId: number) { + return new Promise((resolve, reject) => { + wx.request({ + url: `${this.baseUrl}/family-api/likes?record_id=${recordId}&user_id=${userId}`, + method: 'DELETE', + header: { 'Content-Type': 'application/json' }, + success: (res) => { + if (res.statusCode >= 200 && res.statusCode < 300) { + resolve(res.data) + } else { + reject({ status: res.statusCode, data: res.data }) + } + }, + fail: (err) => reject(err), + }) + }) + }, }, }) diff --git a/src/types/family.ts b/src/types/family.ts index b0b9a43..393dd3b 100644 --- a/src/types/family.ts +++ b/src/types/family.ts @@ -22,6 +22,7 @@ export interface IRecord { image_list: string[] video_list: string[] like_count: number + liked: boolean comment_count: number comments: IComment[] create_time: string