This commit is contained in:
2026-09-13 01:51:09 +08:00
parent b1a664a768
commit afd0973ce5
32 changed files with 935 additions and 171 deletions
+17 -6
View File
@@ -2,6 +2,7 @@ import { request, redirectToLogin } from '../../utils/request'
import * as auth from '../../utils/auth'
import { PagedResult, ClothesItem, QuotaItem } from '../../types/models'
import { QuotaType } from '../../utils/config'
import { normalizePaged, mergePaged, hasMorePaged } from '../../utils/paged'
const CATEGORIES = [
{ name: '全部', value: '' },
@@ -22,6 +23,7 @@ Page({
uploadRemain: 0,
loading: true,
refreshing: false,
loadingMore: false, // 上拉加载独立闸门,避免与首次 loading 互相干扰
page: 1,
pageSize: 20,
hasMore: true,
@@ -56,7 +58,7 @@ Page({
},
onReachBottom() {
if (!this.data.hasMore || this.data.loading) return
if (!this.data.hasMore || this.data.loading || this.data.loadingMore) return
this.fetchList(this.data.page + 1)
},
@@ -65,24 +67,33 @@ Page({
const params: Record<string, any> = { page, page_size: this.data.pageSize }
if (cat) params.category_main = cat
// 请求序号:快速切分类/下拉刷新时旧响应可能后到,序号不匹配的响应直接丢弃
const seq = ((this as any).reqSeq || 0) + 1
;(this as any).reqSeq = seq
if (page > 1) this.setData({ loadingMore: true })
return request<PagedResult<ClothesItem>>({ url: '/clothes', data: params })
.then((res) => {
const list = res.list.map((it) => ({
if ((this as any).reqSeq !== seq) return
const { list: raw, total } = normalizePaged<ClothesItem>(res)
const list = raw.map((it) => ({
...it,
_statusText: !it.category_main && !it.processed_image ? 'AI 处理中' : '',
_statusType: 'blue',
}))
const merged = page === 1 ? list : this.data.list.concat(list)
const merged = mergePaged(this.data.list, list, page === 1)
this.setData({
list: merged,
total: res.total,
hasMore: merged.length < res.total,
total,
hasMore: hasMorePaged(merged, total, this.data.pageSize),
loading: false,
loadingMore: false,
page,
})
})
.catch(() => {
this.setData({ loading: false })
if ((this as any).reqSeq !== seq) return
this.setData({ loading: false, loadingMore: false })
})
},