89 lines
1.8 KiB
JavaScript
89 lines
1.8 KiB
JavaScript
// mouse.js
|
|
import { ref, onMounted, onUnmounted } from 'vue'
|
|
import { onReady, onReachBottom } from '@dcloudio/uni-app'
|
|
|
|
export const usePage = getPage => {
|
|
// 页码,默认为1
|
|
const page = ref(1)
|
|
|
|
// 页大小,默认为10
|
|
const limit = ref(10)
|
|
|
|
// 关键字
|
|
const keyword = ref('')
|
|
|
|
// 类别
|
|
const type = ref('')
|
|
|
|
// 分类ID
|
|
const sid = ref('')
|
|
|
|
// 是否新品,不为空的字符串即可
|
|
const news = ref('')
|
|
|
|
// 是否积分兑换商品
|
|
const isIntegral = ref('')
|
|
|
|
// 到底了
|
|
const loadend = ref(false)
|
|
|
|
// 加载中
|
|
const loading = ref(false)
|
|
|
|
const dataList = ref([])
|
|
|
|
const handleGetDataList = async () => {
|
|
console.log('--> % handleGetDataList % loading:\n', loading.value)
|
|
console.log('--> % handleGetDataList % loadend:\n', loadend.value)
|
|
if (loading.value || loadend.value) return
|
|
|
|
loading.value = true
|
|
const products = await getPage({
|
|
page: page.value,
|
|
limit: limit.value,
|
|
keyword: keyword.value,
|
|
type: type.value,
|
|
sid: sid.value,
|
|
news: news.value,
|
|
isIntegral: isIntegral.value,
|
|
})
|
|
console.log('--> % handleGetDataList % products:\n', products)
|
|
if (products) {
|
|
if (products.length <= 0) {
|
|
loadend.value = true
|
|
}
|
|
dataList.value = dataList.value.concat(products)
|
|
}
|
|
loading.value = false
|
|
}
|
|
|
|
const handleRefresh = () => {
|
|
loadend.value = false
|
|
loading.value = false
|
|
dataList.value = []
|
|
handleGetDataList()
|
|
}
|
|
|
|
onReady(() => {
|
|
console.log('onReady')
|
|
// handleGetDataList()
|
|
})
|
|
|
|
onReachBottom(() => {
|
|
if (loading.value) return
|
|
page.value += 1
|
|
})
|
|
|
|
// 通过返回值暴露所管理的状态
|
|
return {
|
|
type,
|
|
dataList,
|
|
page,
|
|
limit,
|
|
keyword,
|
|
loading,
|
|
loadend,
|
|
refresh: handleRefresh,
|
|
}
|
|
}
|