93 lines
2.7 KiB
TypeScript
93 lines
2.7 KiB
TypeScript
import { request } from '../../utils/request'
|
|
import { PagedResult, ClosetShareItem } from '../../types/models'
|
|
|
|
Page({
|
|
data: {
|
|
tabs: [
|
|
{ name: '我的分享' },
|
|
{ name: '分享给我的' },
|
|
],
|
|
activeTab: 0, // 0 我的分享 1 分享给我的
|
|
list: [] as ClosetShareItem[],
|
|
loading: true,
|
|
page: 1,
|
|
pageSize: 20,
|
|
hasMore: true,
|
|
},
|
|
|
|
onShow() {
|
|
this.syncTabBar()
|
|
this.refresh()
|
|
},
|
|
|
|
syncTabBar() {
|
|
const tabBar = (this as any).getTabBar && (this as any).getTabBar()
|
|
if (tabBar) tabBar.setData({ selected: 3 })
|
|
},
|
|
|
|
onTabTap(e: WechatMiniprogram.TouchEvent) {
|
|
const index = Number(e.currentTarget.dataset.index)
|
|
if (index === this.data.activeTab) return
|
|
this.setData({ activeTab: index, list: [], loading: true })
|
|
this.refresh()
|
|
},
|
|
|
|
refresh() {
|
|
this.setData({ page: 1, hasMore: true, loading: this.data.list.length === 0 })
|
|
this.fetchList(1)
|
|
},
|
|
|
|
onReachBottom() {
|
|
if (!this.data.hasMore || this.data.loading) return
|
|
this.fetchList(this.data.page + 1)
|
|
},
|
|
|
|
fetchList(page: number) {
|
|
const url = this.data.activeTab === 0 ? '/closet-share' : '/closet-share/received'
|
|
request<PagedResult<ClosetShareItem>>({ url, data: { page, page_size: this.data.pageSize } })
|
|
.then((res) => {
|
|
const list = res.list.map((it) => this.decorate(it))
|
|
const merged = page === 1 ? list : this.data.list.concat(list)
|
|
this.setData({
|
|
list: merged,
|
|
hasMore: merged.length < res.total,
|
|
loading: false,
|
|
page,
|
|
})
|
|
})
|
|
.catch(() => this.setData({ loading: false }))
|
|
},
|
|
|
|
decorate(it: ClosetShareItem) {
|
|
const now = Math.floor(Date.now() / 1000)
|
|
let status = it.status
|
|
if (status === 1 && it.expire_time > 0 && it.expire_time < now) status = 3
|
|
|
|
let expireText = '长期有效'
|
|
if (status === 2) expireText = '已取消'
|
|
else if (status === 3) expireText = '已过期'
|
|
else if (status === 4) expireText = '已封禁'
|
|
else if (it.expire_time > 0) {
|
|
const days = Math.ceil((it.expire_time - now) / 86400)
|
|
expireText = days > 0 ? `${days} 天后过期` : '已过期'
|
|
}
|
|
|
|
return {
|
|
...it,
|
|
_status: status,
|
|
_expireText: expireText,
|
|
_typeText: it.share_type === 1 ? '部分衣物' : '全量衣橱',
|
|
_invalid: status === 2 || status === 3 || status === 4,
|
|
}
|
|
},
|
|
|
|
onCreate() {
|
|
wx.navigateTo({ url: '/pages/closet-share-create/closet-share-create' })
|
|
},
|
|
|
|
onItemTap(e: WechatMiniprogram.TouchEvent) {
|
|
const uuid = e.currentTarget.dataset.uuid as string
|
|
wx.navigateTo({ url: `/pages/closet-share-detail/closet-share-detail?uuid=${uuid}` })
|
|
},
|
|
})
|