123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /** @format */
- import { getGoodsListApi } from "~/api/model/goods"
- import { PageSizeEnum } from "~/enums/sizeEnum"
- import { getCategoryListApi } from "~/api/model/common"
- import { updateURLParameter } from "~/utils/object"
- type FeatureType = "Newest" | "Trending" | " Exlusive"
- export function useData() {
- const categories = ref<any>([])
- const goodsList = ref<any>([])
- const selectedCategory = ref()
- const page_size = ref(15)
- const currentPage = ref(PageSizeEnum.PAGE)
- const total = ref()
- const top_data = ref({
- entityQty: 0,
- })
- const form = ref<any>({
- orderby: "",
- trendingCollections: [],
- recommend: [],
- texture: [],
- categoryId: "",
- })
- const getCategories = async () => {
- const route = useRoute()
- const slug = route.params.id
- const data = await getCategoryListApi({ slug, all: true, np: 1 })
- top_data.value = data.shift()
- categories.value = data
- top_data.value.entityQty = data.reduce((total: number, item: any) => {
- total += item.entityQty
- return total
- }, 0)
- }
- const getGoodsList = async (
- params?: any,
- pageNo = currentPage.value,
- pageSize = page_size.value
- ) => {
- const data: any = await getGoodsListApi({
- ...params,
- pageNo,
- pageSize,
- })
- total.value = data.total
- currentPage.value = data.current
- data.records.forEach((item: any) => {
- if (form.value.recommend.length && item.recommend) {
- if (item.recommend.includes(form.value.recommend[0]))
- item.recommend = form.value.recommend[0]
- }
- })
- goodsList.value = data.records
- }
- const handleSelectedCategory = (value: any) => {
- selectedCategory.value = value
- form.value.categoryId = selectedCategory.value
- getGoodsList(form.value, PageSizeEnum.PAGE, page_size.value)
- // 将地址栏中的secondKey参数改为选中的值key
- const route = useRoute()
- const secondLevel = route.query.secondKey
- if (secondLevel) {
- updateURLParameter("secondKey", value)
- }
- }
- const handleSelectedFilters = (type: any, value: any) => {
- if (type === "clearAll") {
- form.value.recommend = []
- form.value.texture = []
- form.value.trendingCollections = []
- } else {
- ;(form.value as any)[type] = value
- }
- getGoodsList(form.value, PageSizeEnum.PAGE, page_size.value)
- }
- const handleOrderBy = (value: any) => {
- ;(form.value as any).orderby = value
- getGoodsList(form.value, PageSizeEnum.PAGE, page_size.value)
- }
- const changePage = (current: number, size: number) => {
- if (!selectedCategory.value) {
- const route = useRoute()
- selectedCategory.value = route.query.key
- }
- form.value.categoryId = selectedCategory.value
- getGoodsList(form.value, current, size)
- const dom: any = document.getElementById("app-scroller")
- dom.scrollTo({
- top: 400,
- behavior: "smooth",
- })
- }
- return {
- goodsList,
- getCategories,
- categories,
- selectedCategory,
- page_size,
- changePage,
- currentPage,
- total,
- top_data,
- form,
- getGoodsList,
- handleSelectedCategory,
- handleSelectedFilters,
- handleOrderBy,
- }
- }
|