Commit c3093201 authored by 王炽's avatar 王炽

接口刷新

parent 70ba1d63
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
<view class="banner_content"> <view class="banner_content">
<image class="banner_img" :src="$baseUrl + `xingmaLab/1001/bannerImg0.png`" mode="aspectFill" /> <image class="banner_img" :src="$baseUrl + `xingmaLab/1001/bannerImg0.png`" mode="aspectFill" />
</view> </view>
<view v-for="(item, index) in cangguanList" :key="index" class="item_cangguan" <view v-for="(item, index) in cangguanList" :key="index" class="item_cangguan"
@click="handleItemClick_cangguan(item)"> @click="handleItemClick_cangguan(item)">
<image class="item_cangguan_img" :src="`${item.imgUrl}`" mode="widthFix" /> <image class="item_cangguan_img" :src="`${item.imgUrl}`" mode="widthFix" />
...@@ -92,29 +92,29 @@ ...@@ -92,29 +92,29 @@
padding="{{ [0, 12, 0, 12] }}" type="masonry"> padding="{{ [0, 12, 0, 12] }}" type="masonry">
<view v-for="(item, index) in cangpinList" :key="index" class="waterfall-item" <view v-for="(item, index) in cangpinList" :key="index" class="waterfall-item"
@click="handleItemClick_cangpin(item)"> @click="handleItemClick_cangpin(item)">
<view class="item-up-content"> <view class="item-up-content">
<image class="item-image" :src="item.imgUrl" mode="widthFix" /> <image class="item-image" :src="item.imgUrl" mode="widthFix" />
<view class="item-num"> <view class="item-num">
<text class="badge-num">N0.{{ item.bizNo }}</text> <text class="badge-num">N0.{{ item.bizNo }}</text>
</view> </view>
<view v-if="item.state == 1" class="item-badge"> <view v-if="item.state == 1" class="item-badge">
<text class="badge-text">精选推荐</text> <text class="badge-text">精选推荐</text>
</view>
</view> </view>
<view class="item-info"> </view>
<view class="item-info">
<view class="item-title">{{ item.content }}</view> <view class="item-title">{{ item.content }}</view>
<view class="item-meta"> <view class="item-meta">
<view class="creator-info"> <view class="creator-info">
<image class="creator-avatar" :src="item.avatar" mode="aspectFill" /> <image class="creator-avatar" :src="item.avatar" mode="aspectFill" />
<text class="creator-name">{{ item.nickname }}</text> <text class="creator-name">{{ item.nickname }}</text>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</grid-view> </grid-view>
</scroll-view> </scroll-view>
</view> </view>
<!-- 我的收藏列表 --> <!-- 我的收藏列表 -->
...@@ -147,10 +147,10 @@ ...@@ -147,10 +147,10 @@
<text class="badge-text">精选推荐</text> <text class="badge-text">精选推荐</text>
</view> </view>
</view> </view>
<view class="item-info"> <view class="item-info">
<view class="item-title">{{ item.content }}</view> <view class="item-title">{{ item.content }}</view>
<view class="item-meta"> <view class="item-meta">
<view class="creator-info"> <view class="creator-info">
<image class="creator-avatar" :src="item.avatar" mode="aspectFill" /> <image class="creator-avatar" :src="item.avatar" mode="aspectFill" />
<text class="creator-name">{{ item.nickname }}</text> <text class="creator-name">{{ item.nickname }}</text>
</view> </view>
...@@ -159,7 +159,7 @@ ...@@ -159,7 +159,7 @@
</view> </view>
</grid-view> </grid-view>
</scroll-view> </scroll-view>
</view> </view>
</view> </view>
</view> </view>
...@@ -186,11 +186,11 @@ ...@@ -186,11 +186,11 @@
<!-- 无次数弹窗 - 使用 Xingmalabnotimepop 组件 --> <!-- 无次数弹窗 - 使用 Xingmalabnotimepop 组件 -->
<Xingmalabnotimepop :visible="showNoTimePopup" title="发布次数已用完" @button-click="handleNoTimeButtonClick" <Xingmalabnotimepop :visible="showNoTimePopup" title="发布次数已用完" @button-click="handleNoTimeButtonClick"
@close="showNoTimePopup = false" /> @close="showNoTimePopup = false" />
</view> </view>
</template> </template>
<script setup> <script setup>
import { ref, onMounted } from 'vue' import { ref, onMounted, onUnmounted } from 'vue'
import { fetchRecordList, fetchRecordMyrecords, fetchFavoriteList } from '../../api/xingmaLab' import { fetchRecordList, fetchRecordMyrecords, fetchFavoriteList } from '../../api/xingmaLab'
import { onPageScroll } from "@dcloudio/uni-app"; import { onPageScroll } from "@dcloudio/uni-app";
import { showLoading, hideLoading, jump, JumpType } from '../../utils/index.js' import { showLoading, hideLoading, jump, JumpType } from '../../utils/index.js'
...@@ -219,9 +219,9 @@ const shoucangTotalPage = ref(0); ...@@ -219,9 +219,9 @@ const shoucangTotalPage = ref(0);
// onPageScroll((e) => { // onPageScroll((e) => {
// console.log('e.scrollTop=',e); // console.log('e.scrollTop=',e);
// const newVal = e.scrollTop; // const newVal = e.scrollTop;
// }); // });
const isGeting = ref(false); const isGeting = ref(false);
...@@ -310,16 +310,15 @@ const cangguanListIdx = ref(1); ...@@ -310,16 +310,15 @@ const cangguanListIdx = ref(1);
const cangguanTotalPage = ref(0); const cangguanTotalPage = ref(0);
const cangpinListIdx = ref(1); const cangpinListIdx = ref(1);
const cangpinTotalPage = ref(0); const cangpinTotalPage = ref(0);
onMounted(async () => { onMounted(async () => {
await xingmaLabStore.loadXingmaInfo(); await xingmaLabStore.loadXingmaInfo();
console.log('xingmaLabStore=', xingmaLabStore.xingmaInfo); console.log('xingmaLabStore=', xingmaLabStore.xingmaInfo);
//获取藏馆列表 //获取藏馆列表
const data1 = await fetchRecordList(cangguanListIdx.value, 4); const data1 = await fetchRecordList(cangguanListIdx.value, 4);
cangguanList.value = cangguanList.value.concat(data1.data.list); cangguanList.value = cangguanList.value.concat(data1.data.list);
cangguanTotalPage.value = data1.data.totalPage; cangguanTotalPage.value = data1.data.totalPage;
// console.log('data1=',data1);
//获取我的藏品列表 //获取我的藏品列表
const data2 = await fetchRecordMyrecords(cangpinListIdx.value, 8); const data2 = await fetchRecordMyrecords(cangpinListIdx.value, 8);
...@@ -340,6 +339,57 @@ onMounted(async () => { ...@@ -340,6 +339,57 @@ onMounted(async () => {
}) })
// 刷新数据:封装三个列表的刷新方法,供全局事件调用
const reloadCangguanList = async () => {
showLoading()
cangguanListIdx.value = 1;
cangguanList.value = [];
const data = await fetchRecordList(cangguanListIdx.value, 4);
cangguanList.value = data.data.list;
cangguanTotalPage.value = data.data.totalPage;
hideLoading()
}
const reloadCangpinList = async () => {
showLoading()
cangpinListIdx.value = 1;
cangpinList.value = [];
const data = await fetchRecordMyrecords(cangpinListIdx.value, 8);
cangpinList.value = data.data.list;
cangpinTotalPage.value = data.data.totalPage;
hideLoading()
}
const reloadShoucangList = async () => {
showLoading()
shoucangListIdx.value = 1;
shoucangList.value = [];
const data = await fetchFavoriteList(shoucangListIdx.value, 4);
shoucangList.value = data.data.list;
shoucangTotalPage.value = data.data.totalPage;
hideLoading()
}
// 监听其他页面派发的全局事件
const handleGlobalRefresh = async (payload) => {
console.log('收到全局刷新事件 xingmaLab:refresh,payload=', payload)
// 可根据 payload.type 刷新指定列表,这里默认全部刷新
await Promise.all([
reloadCangguanList(),
reloadCangpinList(),
reloadShoucangList()
])
}
// uni.$emit('xingmaLab:refresh', { type: 'all' }) // or type: 'cangpin' | 'shoucang' | 'cangguan'
onMounted(() => {
uni.$on('xingmaLab:refresh', handleGlobalRefresh)
})
onUnmounted(() => {
uni.$off('xingmaLab:refresh', handleGlobalRefresh)
})
const convertDobuleList = (list) => { const convertDobuleList = (list) => {
let newList = []; let newList = [];
newList.push([]); newList.push([]);
...@@ -355,16 +405,16 @@ const convertDobuleList = (list) => { ...@@ -355,16 +405,16 @@ const convertDobuleList = (list) => {
} }
const data = { const data = {
"success": true, "success": true,
"ok": false, "ok": false,
"code": 91624081, "code": 91624081,
"message": "nisi", "message": "nisi",
"data": { "data": {
"list": [ "list": [
{ {
"avatar": "//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png", "avatar": "//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png",
"bizNo": "788080001", "bizNo": "788080001",
"collection": false, "collection": false,
"content": "test", "content": "test",
"extra": "{\"avatar\": \"//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png\", \"content\": \"test\", \"imageUrl\": \"//yun.duiba.com.cn/aurora/assets/0aad1953812cfe06d1eaa26157a2b66b4d73f562.png\", \"nickname\": \"test\"}", "extra": "{\"avatar\": \"//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png\", \"content\": \"test\", \"imageUrl\": \"//yun.duiba.com.cn/aurora/assets/0aad1953812cfe06d1eaa26157a2b66b4d73f562.png\", \"nickname\": \"test\"}",
"gmtCreate": 1756288451000, "gmtCreate": 1756288451000,
...@@ -394,7 +444,7 @@ const data = { ...@@ -394,7 +444,7 @@ const data = {
{ {
"avatar": "//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png", "avatar": "//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png",
"bizNo": "788080001", "bizNo": "788080001",
"collection": false, "collection": false,
"content": "test", "content": "test",
"extra": "{\"avatar\": \"//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png\", \"content\": \"test\", \"imageUrl\": \"//yun.duiba.com.cn/aurora/assets/0aad1953812cfe06d1eaa26157a2b66b4d73f562.png\", \"nickname\": \"test\"}", "extra": "{\"avatar\": \"//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png\", \"content\": \"test\", \"imageUrl\": \"//yun.duiba.com.cn/aurora/assets/0aad1953812cfe06d1eaa26157a2b66b4d73f562.png\", \"nickname\": \"test\"}",
"gmtCreate": 1756288451000, "gmtCreate": 1756288451000,
...@@ -409,7 +459,7 @@ const data = { ...@@ -409,7 +459,7 @@ const data = {
{ {
"avatar": "//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png", "avatar": "//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png",
"bizNo": "788080001", "bizNo": "788080001",
"collection": false, "collection": false,
"content": "test", "content": "test",
"extra": "{\"avatar\": \"//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png\", \"content\": \"test\", \"imageUrl\": \"//yun.duiba.com.cn/aurora/assets/0aad1953812cfe06d1eaa26157a2b66b4d73f562.png\", \"nickname\": \"test\"}", "extra": "{\"avatar\": \"//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png\", \"content\": \"test\", \"imageUrl\": \"//yun.duiba.com.cn/aurora/assets/0aad1953812cfe06d1eaa26157a2b66b4d73f562.png\", \"nickname\": \"test\"}",
"gmtCreate": 1756288451000, "gmtCreate": 1756288451000,
...@@ -424,7 +474,7 @@ const data = { ...@@ -424,7 +474,7 @@ const data = {
{ {
"avatar": "//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png", "avatar": "//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png",
"bizNo": "788080001", "bizNo": "788080001",
"collection": false, "collection": false,
"content": "test", "content": "test",
"extra": "{\"avatar\": \"//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png\", \"content\": \"test\", \"imageUrl\": \"//yun.duiba.com.cn/aurora/assets/0aad1953812cfe06d1eaa26157a2b66b4d73f562.png\", \"nickname\": \"test\"}", "extra": "{\"avatar\": \"//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png\", \"content\": \"test\", \"imageUrl\": \"//yun.duiba.com.cn/aurora/assets/0aad1953812cfe06d1eaa26157a2b66b4d73f562.png\", \"nickname\": \"test\"}",
"gmtCreate": 1756288451000, "gmtCreate": 1756288451000,
...@@ -439,7 +489,7 @@ const data = { ...@@ -439,7 +489,7 @@ const data = {
{ {
"avatar": "//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png", "avatar": "//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png",
"bizNo": "788080001", "bizNo": "788080001",
"collection": false, "collection": false,
"content": "test", "content": "test",
"extra": "{\"avatar\": \"//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png\", \"content\": \"test\", \"imageUrl\": \"//yun.duiba.com.cn/aurora/assets/0aad1953812cfe06d1eaa26157a2b66b4d73f562.png\", \"nickname\": \"test\"}", "extra": "{\"avatar\": \"//yun.duiba.com.cn/aurora/assets/cefdded9d556c6d60f3ab7bbfa07ca2c59379cdf.png\", \"content\": \"test\", \"imageUrl\": \"//yun.duiba.com.cn/aurora/assets/0aad1953812cfe06d1eaa26157a2b66b4d73f562.png\", \"nickname\": \"test\"}",
"gmtCreate": 1756288451000, "gmtCreate": 1756288451000,
...@@ -450,13 +500,13 @@ const data = { ...@@ -450,13 +500,13 @@ const data = {
"owner": false, "owner": false,
"state": null, "state": null,
"userId": 225 "userId": 225
} }
], ],
"totalCount": 10, "totalCount": 10,
"hasPrev": false, "hasPrev": false,
"totalPage": 1, "totalPage": 1,
"hasNext": false "hasNext": false
} }
} }
// 藏馆列表数据 - 统一的数据源 // 藏馆列表数据 - 统一的数据源
// const cangguanList = ref([ // const cangguanList = ref([
...@@ -551,15 +601,39 @@ const handleBottomNavFabu = () => { ...@@ -551,15 +601,39 @@ const handleBottomNavFabu = () => {
} }
} }
let currentButtomNavType = 'cangguan';
let currentFrontNavType = '';
// 底部导航点击处理 // 底部导航点击处理
const handleBottomNavClick = (navType) => { const handleBottomNavClick = async (navType) => {
if (navType === 'cangguan') { if (navType == 'cangguan') {
// 点击"星妈会藏馆"时,切换到藏馆tab,展示单列列表 // 点击"星妈会藏馆"时,切换到藏馆tab,展示单列列表
activeTab.value = 'cangguan' activeTab.value = 'cangguan'
} else if (navType === 'wodecangguan') { if(currentButtomNavType != 'cangguan'){
currentButtomNavType = 'cangguan'
await reloadCangguanList();
}
} else if (navType == 'wodecangguan') {
// 点击"我的藏品"时,切换到我的藏馆tab,默认展示我的藏品 // 点击"我的藏品"时,切换到我的藏馆tab,默认展示我的藏品
activeTab.value = 'wodecangguan' activeTab.value = 'wodecangguan'
activeSubTab.value = 'collections'
if(currentButtomNavType != 'wodecangguan'){
currentButtomNavType = 'wodecangguan';
if(currentFrontNavType == ''){
activeSubTab.value = 'collections'
currentFrontNavType = 'collections'
await reloadCangpinList();
}else{
currentFrontNavType = activeSubTab.value;
if(activeSubTab.value == 'collections'){
await reloadCangguanList();
}else{
await reloadShoucangList();
}
}
}
} }
} }
......
import { defineStore } from "pinia"; import { defineStore } from "pinia";
import { fetchRecordIndex } from "../api/xingmaLab.js"; import { fetchRecordIndex, fetchRecordList, fetchFavoriteList, fetchRecordMyrecords } from "../api/xingmaLab.js";
export const useXingmaLabStore = defineStore("xingmaLab", { export const useXingmaLabStore = defineStore("xingmaLab", {
state: () => { state: () => {
return { return {
// 星妈Lab接口返回的完整数据 // 星妈Lab接口返回的完整数据
xingmaInfo: null, xingmaInfo: null,
// 加载状态 // 藏馆接口返回的完整数据
isLoading: false, cangguanInfo: null,
// 收藏接口返回的完整数据
shoucangInfo: null,
// 藏品接口返回的完整数据
cangpinInfo: null,
// 加载状态(各接口独立)
isLoadingIndex: false,
isLoadingCangguan: false,
isLoadingShoucang: false,
isLoadingCangpin: false,
}; };
}, },
actions: { actions: {
...@@ -16,7 +25,7 @@ export const useXingmaLabStore = defineStore("xingmaLab", { ...@@ -16,7 +25,7 @@ export const useXingmaLabStore = defineStore("xingmaLab", {
*/ */
async loadXingmaInfo() { async loadXingmaInfo() {
try { try {
this.isLoading = true; this.isLoadingIndex = true;
const { data } = await fetchRecordIndex(); const { data } = await fetchRecordIndex();
console.log("xingmaInfo data", data); console.log("xingmaInfo data", data);
...@@ -24,27 +33,135 @@ export const useXingmaLabStore = defineStore("xingmaLab", { ...@@ -24,27 +33,135 @@ export const useXingmaLabStore = defineStore("xingmaLab", {
this.xingmaInfo = data; this.xingmaInfo = data;
console.log('保存的星妈Lab数据:', this.xingmaInfo); console.log('保存的星妈Lab数据:', this.xingmaInfo);
} else { } else {
console.warn('星妈Lab数据格式不正确:', data); console.log('星妈Lab数据格式不正确:', data);
} }
} catch (error) { } catch (error) {
console.error('获取星妈Lab数据失败:', error); console.log('获取星妈Lab数据失败:', error);
} finally { } finally {
this.isLoading = false; this.isLoadingIndex = false;
} }
}, },
/** /**
* 重置数据 * 获取藏馆数据
*/
async loadCangguanInfo(pageIndex = 1, pageSize = 4) {
try {
this.isLoadingCangguan = true;
const { data } = await fetchRecordList(pageIndex, pageSize);
console.log("cangguanInfo data", data);
if (data) {
this.cangguanInfo = data;
console.log('保存的藏馆数据:', this.cangguanInfo);
} else {
console.log('藏馆数据格式不正确:', data);
}
} catch (error) {
console.log('获取藏馆数据失败:', error);
} finally {
this.isLoadingCangguan = false;
}
},
/**
* 获取收藏数据
*/
async loadShoucangInfo(pageIndex = 1, pageSize = 4) {
try {
this.isLoadingShoucang = true;
const { data } = await fetchFavoriteList(pageIndex, pageSize);
console.log("shoucangInfo data", data);
if (data) {
this.shoucangInfo = data;
console.log('保存的收藏数据:', this.shoucangInfo);
} else {
console.log('收藏数据格式不正确:', data);
}
} catch (error) {
console.log('获取收藏数据失败:', error);
} finally {
this.isLoadingShoucang = false;
}
},
/**
* 获取藏品数据
*/
async loadCangpinInfo(pageIndex = 1, pageSize = 8) {
try {
this.isLoadingCangpin = true;
const { data } = await fetchRecordMyrecords(pageIndex, pageSize);
console.log("cangpinInfo data", data);
if (data) {
this.cangpinInfo = data;
console.log('保存的藏品数据:', this.cangpinInfo);
} else {
console.log('藏品数据格式不正确:', data);
}
} catch (error) {
console.log('获取藏品数据失败:', error);
} finally {
this.isLoadingCangpin = false;
}
},
/**
* 重置星妈Lab数据
*/ */
resetXingmaInfo() { resetXingmaInfo() {
this.xingmaInfo = null; this.xingmaInfo = null;
}, },
/** /**
* 获取当前数据 * 重置藏馆数据
*/
resetCangguanInfo() {
this.cangguanInfo = null;
},
/**
* 重置收藏数据
*/
resetShoucangInfo() {
this.shoucangInfo = null;
},
/**
* 重置藏品数据
*/
resetCangpinInfo() {
this.cangpinInfo = null;
},
/**
* 获取星妈Lab数据
*/ */
getXingmaInfo() { getXingmaInfo() {
return this.xingmaInfo; return this.xingmaInfo;
}, },
/**
* 获取藏馆数据
*/
getCangguanInfo() {
return this.cangguanInfo;
},
/**
* 获取收藏数据
*/
getShoucangInfo() {
return this.shoucangInfo;
},
/**
* 获取藏品数据
*/
getCangpinInfo() {
return this.cangpinInfo;
},
}, },
}); });
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment