You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
11 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{"remainingRequest":"/Users/linhuakun/Downloads/nodejs/codewhy/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/linhuakun/Downloads/nodejs/codewhy/src/views/category/Category.vue?vue&type=script&lang=js&","dependencies":[{"path":"/Users/linhuakun/Downloads/nodejs/codewhy/src/views/category/Category.vue","mtime":1607666509054},{"path":"/Users/linhuakun/Downloads/nodejs/codewhy/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/Users/linhuakun/Downloads/nodejs/codewhy/node_modules/babel-loader/lib/index.js","mtime":499162500000},{"path":"/Users/linhuakun/Downloads/nodejs/codewhy/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/Users/linhuakun/Downloads/nodejs/codewhy/node_modules/vue-loader/lib/index.js","mtime":499162500000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:Ly8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KLy8KCgogaW1wb3J0IFRhYk1lbnUgZnJvbSAiQC92aWV3cy9jYXRlZ29yeS9jaGlsZENvbXBzL1RhYk1lbnUiOwogaW1wb3J0IFRhYkNvbnRlbnREZXRhaWwgZnJvbSAiQC92aWV3cy9jYXRlZ29yeS9jaGlsZENvbXBzL1RhYkNvbnRlbnREZXRhaWwiOwogaW1wb3J0IFRhYkNvbnRlbnRDYXRlZ29yeSBmcm9tICJAL3ZpZXdzL2NhdGVnb3J5L2NoaWxkQ29tcHMvVGFiQ29udGVudENhdGVnb3J5IjsKCgogaW1wb3J0IFNjcm9sbCBmcm9tICJAL2NvbXBvbmVudHMvY29tbW9uL1Njcm9sbC9TY3JvbGwiOwogaW1wb3J0IE5hdkJhciBmcm9tICJAL2NvbXBvbmVudHMvY29tbW9uL25hdmJhci9OYXZCYXIiOwogaW1wb3J0IFRhYkNvbnRyb2wgZnJvbSAiQC9jb21wb25lbnRzL2NvbnRlbnQvdGFiQ29udHJvbC9UYWJDb250cm9sIjsKCiBpbXBvcnQge2dldENhdGVnb3J5LCBnZXRTdWJjYXRlZ29yeSxnZXRDYXRlZ29yeURldGFpbH0gZnJvbSAiQC9uZXR3b3JrL2NhdGVnb3J5IjsKIGltcG9ydCB7UE9QLCBTRUxMLCBORVd9IGZyb20gIkAvY29tbW9uL2NvbnN0IgogaW1wb3J0IHt0YWJDb250cm9sTWl4aW4saXRlbUxpc3RlbmVyTWl4aW59IGZyb20gIkAvY29tbW9uL21peGluIjsKCiBleHBvcnQgZGVmYXVsdCB7CiAgbmFtZTogIkNhdGVnb3J5IiwKICBjb21wb25lbnRzOnsKICAgIFRhYk1lbnUsCiAgICBUYWJDb250ZW50RGV0YWlsLAogICAgVGFiQ29udGVudENhdGVnb3J5LAoKICAgIFNjcm9sbCwKICAgIE5hdkJhciwKICAgIFRhYkNvbnRyb2wsCiAgfSwKICAgbWl4aW5zOlt0YWJDb250cm9sTWl4aW4saXRlbUxpc3RlbmVyTWl4aW5dLAogIGRhdGEoKXsKICAgIHJldHVybnsKICAgICAgY2F0ZWdvcnlEYXRhOnsKICAgICAgfSwKICAgICAgY3VycmVudEluZGV4Oi0xLAogICAgICBjYXRlZ29yaWVzOltdLAogICAgICBzYXZlWTowLAogICAgfQogIH0sCiAgY3JlYXRlZCgpIHsKICAgIHRoaXMuX2dldENhdGVnb3J5KCkKICB9LAogICBjb21wdXRlZDp7CiAgICAgc2hvd1N1YmNhdGVnb3J5KCkgewogICAgICAgLy/nu5nlsI/lm77niYfkvKDlgLwKICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCA9PT0gLTEpIHJldHVybiB7fQogICAgICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnlEYXRhW3RoaXMuY3VycmVudEluZGV4XS5zdWJjYXRlZ29yaWVzCiAgICAgfSwKICAgICBzaG93Q2F0ZWdvcnlEZXRhaWwoKSB7CiAgICAgICAvLzQw5byg5ZWG5ZOB5pWw5o2u5Lyg5YC8CiAgICAgICBpZiAodGhpcy5jdXJyZW50SW5kZXggPT09IC0xKSByZXR1cm4gW10KICAgICAgIHJldHVybiB0aGlzLmNhdGVnb3J5RGF0YVt0aGlzLmN1cnJlbnRJbmRleF0uY2F0ZWdvcnlEZXRhaWxbdGhpcy5jdXJyZW50VHlwZV0KICAgICB9LAogICB9LAogIG1ldGhvZHM6ewogICAgX2dldENhdGVnb3J5KCl7CiAgICAgIC8v6I635Y+W5LiJ56eN57G75Z6L5ZWG5ZOB55qE5pWw5o2uCiAgICAgIGdldENhdGVnb3J5KCkudGhlbihyZXMgPT4gewogICAgICAgIHRoaXMuY2F0ZWdvcmllcyA9IHJlcy5kYXRhLmRhdGEuY2F0ZWdvcnkubGlzdAogICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jYXRlZ29yaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YVtpXSA9IHsKICAgICAgICAgICAgLy9zdWJjYXRlZ29yaWVz6KGo56S65a2Q57G75Zu+54mH77yM5bCP5Z6L5Zu+54mHIHN1YmNsYXNzK2NhdGVnb3J5CiAgICAgICAgICAgIHN1YmNhdGVnb3JpZXM6IHt9LAogICAgICAgICAgICBjYXRlZ29yeURldGFpbDogewogICAgICAgICAgICAgICdwb3AnOiBbXSwKICAgICAgICAgICAgICAnbmV3JzogW10sCiAgICAgICAgICAgICAgJ3NlbGwnOiBbXQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8v6buY6K6k5oOF5Ya15LiLaW5kZXg9MAogICAgICAgIHRoaXMuX2dldFN1YmNhdGVnb3JpZXMoMCkKICAgICAgfSkKICAgIH0sCiAgICBfZ2V0U3ViY2F0ZWdvcmllcyhpbmRleCl7CgogICAgICB0aGlzLmN1cnJlbnRJbmRleD1pbmRleDsKCiAgICAgIGNvbnN0IG1haWxLZXk9dGhpcy5jYXRlZ29yaWVzW2luZGV4XS5tYWl0S2V5OwoKICAgICAgZ2V0U3ViY2F0ZWdvcnkobWFpbEtleSkudGhlbihyZXM9PnsKICAgICAgICAvL+iOt+WPluWIhuexu+WVhuWTgeaVsOaNrgogICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhW2luZGV4XS5zdWJjYXRlZ29yaWVzPXJlcy5kYXRhLmRhdGEKICAgICAgICAvLy4uLuihqOekuuWkmuS4quWPguaVsAogICAgICAgIHRoaXMuY2F0ZWdvcnlEYXRhPXsuLi50aGlzLmNhdGVnb3J5RGF0YX0KICAgICAgICB0aGlzLl9nZXRDYXRlZ29yeURldGFpbChQT1ApCiAgICAgICAgdGhpcy5fZ2V0Q2F0ZWdvcnlEZXRhaWwoU0VMTCkKICAgICAgICB0aGlzLl9nZXRDYXRlZ29yeURldGFpbChORVcpCiAgICAgIH0pCgogICAgfSwKICAgIF9nZXRDYXRlZ29yeURldGFpbCh0eXBlKSB7CiAgICAgIC8vIDEu6I635Y+W6K+35rGC55qEbWluaVdhbGxrZXkKICAgICAgY29uc3QgbWluaVdhbGxrZXkgPSB0aGlzLmNhdGVnb3JpZXNbdGhpcy5jdXJyZW50SW5kZXhdLm1pbmlXYWxsa2V5OwogICAgICAvLyAyLuWPkemAgeivt+axgizkvKDlhaVtaW5pV2FsbGtleeWSjHR5cGUKICAgICAgZ2V0Q2F0ZWdvcnlEZXRhaWwobWluaVdhbGxrZXksIHR5cGUpLnRoZW4ocmVzID0+IHsKICAgICAgICAvLyAzLuWwhuiOt+WPlueahOaVsOaNruS/neWtmOS4i+adpe+8jOS4i+mdojQw5Liq5ZWG5ZOB5bGV56S6CiAgICAgICAgdGhpcy5jYXRlZ29yeURhdGFbdGhpcy5jdXJyZW50SW5kZXhdLmNhdGVnb3J5RGV0YWlsW3R5cGVdID0gcmVzLmRhdGEKICAgICAgICB0aGlzLmNhdGVnb3J5RGF0YSA9IHsuLi50aGlzLmNhdGVnb3J5RGF0YX0KICAgICAgfSkKICAgIH0sCiAgICBzZWxlY3RJdGVtKGluZGV4KSB7CiAgICAgIHN3aXRjaCAoaW5kZXgpIHsKICAgICAgICBjYXNlIDA6CiAgICAgICAgICB0aGlzLmN1cnJlbnRUeXBlID0gJ3BvcCcKICAgICAgICAgIGJyZWFrCiAgICAgICAgY2FzZSAxOgogICAgICAgICAgdGhpcy5jdXJyZW50VHlwZSA9ICduZXcnCiAgICAgICAgICBicmVhawogICAgICAgIGNhc2UgMjoKICAgICAgICAgIHRoaXMuY3VycmVudFR5cGUgPSAnc2VsbCcKICAgICAgICAgIGJyZWFrCiAgICAgIH0KICAgICAgLy/kuInnp43nsbvlnovnmoTliIfmjaIKICAgICAgdGhpcy5fZ2V0U3ViY2F0ZWdvcmllcyhpbmRleCkKICAgIH0KICB9LAogICBhY3RpdmF0ZWQoKXsKICAgICB0aGlzLiRyZWZzLnNjcm9sbC5yZWZyZXNoKCkKICAgICB0aGlzLiRyZWZzLnNjcm9sbC5zY3JvbGxUbygwLHRoaXMuc2F2ZVksMCkKICAgfSwKICAgZGVhY3RpdmF0ZWQoKXsKICAgICB0aGlzLnNhdmVZID0gdGhpcy4kcmVmcy5zY3JvbGwuZ2V0U2Nyb2xsWSgpCiAgICAgLy/liKTmlq3lvZPliY3lk6rkuKrlm77niYfliqDovb3nm5HlkKwKICAgICB0aGlzLiRidXMuJG9mZignaXRlbUltZ0xvYWQnLHRoaXMuaXRlbUltZ0xpc3RlbmVyKQogICB9Cn0K"},{"version":3,"sources":["Category.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"Category.vue","sourceRoot":"src/views/category","sourcesContent":["<template>\n <div id=\"category\" >\n <NavBar class=\"nav-bar\"><div slot=\"center\">商品分类</div></NavBar>\n <div class=\"content\">\n <TabMenu :categories=\"categories\"\n @selectItem=\"selectItem\">\n\n </TabMenu>\n <div id=\"home\">\n <scroll id=\"tab-content\"\n :data=\"[categoryData]\"\n ref=\"scroll\"\n :probe-type=\"3\">\n <tab-content-category :subcategories=\"showSubcategory\" ></tab-content-category>\n <tab-control\n :titles=\"['综合','新品','销量']\"\n @tabClick=\"tabClick\"\n ref=\"tabControl\"></tab-control>\n <tab-content-detail :category-detail=\"showCategoryDetail\"></tab-content-detail>\n </scroll>\n </div>\n </div>\n </div>\n</template>\n\n<script>\n\n import TabMenu from \"@/views/category/childComps/TabMenu\";\n import TabContentDetail from \"@/views/category/childComps/TabContentDetail\";\n import TabContentCategory from \"@/views/category/childComps/TabContentCategory\";\n\n\n import Scroll from \"@/components/common/Scroll/Scroll\";\n import NavBar from \"@/components/common/navbar/NavBar\";\n import TabControl from \"@/components/content/tabControl/TabControl\";\n\n import {getCategory, getSubcategory,getCategoryDetail} from \"@/network/category\";\n import {POP, SELL, NEW} from \"@/common/const\"\n import {tabControlMixin,itemListenerMixin} from \"@/common/mixin\";\n\n export default {\n name: \"Category\",\n components:{\n TabMenu,\n TabContentDetail,\n TabContentCategory,\n\n Scroll,\n NavBar,\n TabControl,\n },\n mixins:[tabControlMixin,itemListenerMixin],\n data(){\n return{\n categoryData:{\n },\n currentIndex:-1,\n categories:[],\n saveY:0,\n }\n },\n created() {\n this._getCategory()\n },\n computed:{\n showSubcategory() {\n //给小图片传值\n if (this.currentIndex === -1) return {}\n return this.categoryData[this.currentIndex].subcategories\n },\n showCategoryDetail() {\n //40张商品数据传值\n if (this.currentIndex === -1) return []\n return this.categoryData[this.currentIndex].categoryDetail[this.currentType]\n },\n },\n methods:{\n _getCategory(){\n //获取三种类型商品的数据\n getCategory().then(res => {\n this.categories = res.data.data.category.list\n for (let i = 0; i < this.categories.length; i++) {\n this.categoryData[i] = {\n //subcategories表示子类图片小型图片 subclass+category\n subcategories: {},\n categoryDetail: {\n 'pop': [],\n 'new': [],\n 'sell': []\n }\n }\n }\n //默认情况下index=0\n this._getSubcategories(0)\n })\n },\n _getSubcategories(index){\n\n this.currentIndex=index;\n\n const mailKey=this.categories[index].maitKey;\n\n getSubcategory(mailKey).then(res=>{\n //获取分类商品数据\n this.categoryData[index].subcategories=res.data.data\n //...表示多个参数\n this.categoryData={...this.categoryData}\n this._getCategoryDetail(POP)\n this._getCategoryDetail(SELL)\n this._getCategoryDetail(NEW)\n })\n\n },\n _getCategoryDetail(type) {\n // 1.获取请求的miniWallkey\n const miniWallkey = this.categories[this.currentIndex].miniWallkey;\n // 2.发送请求,传入miniWallkey和type\n getCategoryDetail(miniWallkey, type).then(res => {\n // 3.将获取的数据保存下来下面40个商品展示\n this.categoryData[this.currentIndex].categoryDetail[type] = res.data\n this.categoryData = {...this.categoryData}\n })\n },\n selectItem(index) {\n switch (index) {\n case 0:\n this.currentType = 'pop'\n break\n case 1:\n this.currentType = 'new'\n break\n case 2:\n this.currentType = 'sell'\n break\n }\n //三种类型的切换\n this._getSubcategories(index)\n }\n },\n activated(){\n this.$refs.scroll.refresh()\n this.$refs.scroll.scrollTo(0,this.saveY,0)\n },\n deactivated(){\n this.saveY = this.$refs.scroll.getScrollY()\n //判断当前哪个图片加载监听\n this.$bus.$off('itemImgLoad',this.itemImgListener)\n }\n}\n</script>\n\n<style scoped>\n#category {\n height: 100vh;\n position: relative;\n}\n\n.nav-bar {\n background-color: var(--color-tint);\n font-weight: 700;\n color: #fff;\n}\n\n.content {\n position: absolute;\n left: 0;\n right: 0;\n top: 44px;\n bottom: 49px;\n overflow: hidden;\n display: flex;\n}\n\n#home{\n height: 100vh;\n flex: 1;\n position: relative;\n}\n\n#tab-content {\n left: 0;\n right: 0;\n top:0;\n bottom: 49px;\n overflow: hidden;\n position: absolute;\n}\n\n.tab-control{\n z-index: 100;\n flex: 1;\n position: relative;\n\n}\n\n</style>\n"]}]}