Browse Source

首页,更多商品接口调试

yuwenjun1997 3 years ago
parent
commit
b1878a4b58

+ 12 - 21
components/views/cm-coupon-area/cm-coupon-area.vue

@@ -4,17 +4,15 @@
             @change="onChange"
             :current="current"
             :circular="true"
-            :swiperHeight="500"
-            :data="testList"
-            :rows="2"
+            :swiperHeight="swiperHeight"
+            :data="couponList"
+            :rows="swiperRows"
             :columns="1"
             :gapY="16"
             :autoplay="false"
         >
             <template v-slot:slide="{ row }">
-                <view class="swiper-slide">
-                    <cm-coupon :couponData="row" controlType="receive"></cm-coupon>
-                </view>
+                <view class="swiper-slide"><cm-coupon :couponData="row" controlType="receive"></cm-coupon></view>
             </template>
         </cm-simple-swiper>
     </view>
@@ -26,29 +24,22 @@ import { fetchReceivedCouponList } from '@/services/api/coupon.js'
 export default {
     name: 'cm-coupon-area',
     props: {
-        list: {
+        couponList: {
             type: Array,
             default: () => []
         }
     },
     data() {
         return {
-            current: 0,
-            testList: []
+            current: 0
         }
     },
-    async created() {
-        try {
-            const params = {
-                status: 0,
-                userId: this.$store.getters.userId,
-                pageNum: 1,
-                pageSize: 10
-            }
-            const res = await fetchReceivedCouponList(params)
-            this.testList = res.data.list
-        } catch (e) {
-            //TODO handle the exception
+    computed: {
+        swiperRows() {
+            return this.couponList.length === 1 ? 1 : 2
+        },
+        swiperHeight() {
+            return 250 * this.swiperRows
         }
     },
     methods: {

+ 83 - 60
components/views/cm-floor-template/cm-floor-template.vue

@@ -1,33 +1,28 @@
 <template>
-    <view class="floor-template">
-        <cm-floor-title title="楼层名称"></cm-floor-title>
+    <view class="floor-template" v-if="floorData">
+        <cm-floor-title :title="floorData.title" @click="$emit('more', floorData)"></cm-floor-title>
         <!-- banner区域 -->
-        <view class="floor-banner-area" :class="'template-' + 7">
+        <view class="floor-banner-area" :class="'template-' + templateType" v-if="templateType !== '8'">
             <view
                 class="banner-item"
                 :class="'banner-item-' + (index + 1)"
                 v-for="(item, index) in bannerList"
                 :key="index"
             >
-                <image :src="item.image" class="banner"></image>
+                <image :src="item.image" class="banner" @click="$emit('onBannerClick', item)"></image>
             </view>
         </view>
         <!-- 商品区域 -->
         <view class="floor-product-area">
-            <!-- <view class="product-list default-list">
-                <view class="product-item" v-for="(item, index) in productList" :key="index">
-                    <cm-product :data="item"></cm-product>
-                </view>
-            </view> -->
-            <view class="simple-swiper">
+            <view class="simple-swiper" v-if="withSwiperLayout">
                 <cm-simple-swiper
                     @change="onChange"
                     :current="current"
                     :circular="true"
-                    :swiperHeight="940"
+                    :swiperHeight="swiperHeight"
                     :data="productList"
                     :columns="3"
-                    :rows="2"
+                    :rows="swiperRows"
                     :gapX="16"
                     :gapY="16"
                     padding="0 8rpx"
@@ -35,11 +30,29 @@
                 >
                     <template v-slot:slide="{ row }">
                         <div class="product-list">
-                            <view class="product-item"><cm-product :data="row"></cm-product></view>
+                            <view class="product-item" @click="$emit('onProductClick', row.heheProduct)">
+                                <cm-product :data="row.heheProduct"></cm-product>
+                            </view>
                         </div>
                     </template>
                 </cm-simple-swiper>
             </view>
+            <view class="product-list default-list" v-else>
+                <view
+                    class="product-item"
+                    v-for="(item, index) in productList"
+                    :key="index"
+                    @click="$emit('onProductClick', item.heheProduct)"
+                >
+                    <cm-product :data="item.heheProduct"></cm-product>
+                </view>
+            </view>
+        </view>
+        <!-- banner区域 -->
+        <view class="floor-banner-area template-8" v-if="templateType === '8'">
+            <view class="banner-item banner-item-1">
+                <image :src="item.image" class="banner" @click="$emit('onBannerClick', item)"></image>
+            </view>
         </view>
     </view>
 </template>
@@ -49,62 +62,66 @@ export default {
     props: {
         floorData: {
             type: Object,
-            default: () => {}
+            default: () => null
         }
     },
     data() {
         return {
-            // banner区域
-            templateType: 1,
-            bannerList: [
-                {
-                    image: ''
-                },
-                {
-                    image: ''
-                },
-                {
-                    image: ''
-                },
-                {
-                    image: ''
-                },
-                {
-                    image: ''
-                }
-            ],
             // 商品区域
-            current: 0,
-            product: {
-                activeStatus: 0,
-                clubTaxPoint: 10,
-                collageProduct: null,
-                collageStatus: 0,
-                couponsLogo: true,
-                includedTax: '1',
-                invoiceType: '2',
-                mainImage: 'https://img-b.caimei365.com/group1/M00/03/20/Cmgy62BHH8aAFiGIAAGHr5DovGA124.jpg',
-                name: '【测试用】Dermaheal HSR 德玛莉肌活丝蕴凝颜精华液',
-                normalPrice: null,
-                price: 2,
-                productId: 6419,
-                recommend: '0',
-                unit: '片'
-            }
+            current: 0
         }
     },
     computed: {
+        // 楼层id
+        templateType() {
+            return this.floorData?.floorContent.templateType
+        },
+        // banner图列表
+        bannerList() {
+            return this.splitBannersMap()
+        },
+        // 商品列表
         productList() {
-            let list = []
-            for (let i = 0; i < 10; i++) {
-                list.push(this.product)
-            }
-            return list
+            return this.floorData?.floorImageList
+        },
+        // 使用轮播图布局
+        withSwiperLayout() {
+            return [5, 9].indexOf(parseInt(this.templateType)) > -1
+        },
+        // 轮播图行数
+        swiperRows() {
+            if (this.templateType === '5') return 2
+            if (this.templateType === '9') return 1
+            return 2
+        },
+        // 轮播图高度
+        swiperHeight() {
+            return 480 * this.swiperRows
         }
     },
     methods: {
+        // 从楼层数据中拆分出banner与link的关系
+        splitBannersMap() {
+            const bannerList = []
+            if (this.floorData) {
+                const floorContent = this.floorData?.floorContent
+                for (let key in floorContent) {
+                    const linkValue = floorContent[key]
+                    if (key.indexOf('appletsAdsImage') > -1 && linkValue) {
+                        const obj = Object.create(null)
+                        obj.id = parseInt(key[key.length - 1])
+                        const subKey = 'adsLink' + obj.id
+                        obj.image = linkValue
+                        obj.link = floorContent[subKey]
+                        bannerList.push(obj)
+                    }
+                }
+            }
+            return bannerList.sort((a, b) => a.id - b.id)
+        },
+
+        // 轮播图切换事件
         onChange(e) {
-            console.log(e)
             this.current = e.current
         }
     }
@@ -135,6 +152,7 @@ export default {
 // banner 区域
 .floor-banner-area {
     padding: 0 16rpx;
+    padding-bottom: 8rpx;
     &::after {
         display: block;
         content: '';
@@ -209,6 +227,7 @@ export default {
         }
     }
     &.template-8 {
+        padding-top: 8rpx;
         .banner-item-1 {
             @extend .size-type-1;
         }
@@ -221,11 +240,15 @@ export default {
 .floor-product-area {
     padding: 0 16rpx;
     .product-list {
-        @extend .cm-flex-between;
-        flex-wrap: wrap;
-        padding: 0 8rpx;
+        // @extend .cm-flex-between;
+        // flex-wrap: wrap;
+        display: grid;
+        grid-template-columns: repeat(3, 1fr);
+        grid-template-rows: repeat(2, 1fr);
+        grid-row-gap: 16rpx;
+
         .product-item {
-            padding: 8rpx 0;
+            @extend .cm-flex-center;
         }
     }
     .simple-swiper {

+ 15 - 38
components/views/cm-navbar/cm-navbar.vue

@@ -1,6 +1,6 @@
 <template>
-    <view class="navbar">
-        <view class="navbar-item" v-for="(item, index) in list" :key="index" @click.stop="$emit('click', item)">
+    <view class="navbar" v-if="modal.length > 0">
+        <view class="navbar-item" v-for="(item, index) in navbarList" :key="index" @click.stop="$emit('click', item)">
             <image class="navbar-icon" :src="item.image" mode="widthFix"></image>
             <view class="navbar-label" v-text="item.name"></view>
         </view>
@@ -10,42 +10,19 @@
 <script>
 export default {
     name: 'cm-navbar',
-    data() {
-        return {
-            list: [
-                {
-                    name: '护肤品',
-                    image: 'https://picsum.photos/200/200'
-                },
-                {
-                    name: '护肤品',
-                    image: 'https://picsum.photos/200/200'
-                },
-                {
-                    name: '护肤品',
-                    image: 'https://picsum.photos/200/200'
-                },
-                {
-                    name: '护肤品',
-                    image: 'https://picsum.photos/200/200'
-                },
-                {
-                    name: '护肤品',
-                    image: 'https://picsum.photos/200/200'
-                },
-                {
-                    name: '护肤品',
-                    image: 'https://picsum.photos/200/200'
-                },
-                {
-                    name: '护肤品',
-                    image: 'https://picsum.photos/200/200'
-                },
-                {
-                    name: '护肤品',
-                    image: 'https://picsum.photos/200/200'
-                }
-            ]
+    props: {
+        modal: {
+            type: Array,
+            default: []
+        }
+    },
+    computed: {
+        navbarList() {
+            return this.modal.map(item => {
+                item.id = item.bigTypeId
+                item.image = item.crmIcon
+                return item
+            })
         }
     }
 }

+ 97 - 15
pages/tabBar/home/home.vue

@@ -12,7 +12,7 @@
         <cm-banner :list="bannerList" :current="current" @change="index => (current = index)"></cm-banner>
 
         <!-- 金刚区菜单 -->
-        <cm-navbar></cm-navbar>
+        <cm-navbar :modal="navbarList" @click="onNavbarClick"></cm-navbar>
 
         <!-- 加入我们 -->
         <view class="grid"></view>
@@ -27,18 +27,24 @@
         <view class="grid"></view>
 
         <!-- 优惠券专区 -->
-        <view class="coupon-area">
-            <cm-floor-title title="优惠券专区"></cm-floor-title>
-            <cm-coupon-area></cm-coupon-area>
+        <view class="coupon-area" v-if="couponList.length > 0">
+            <cm-floor-title title="优惠券专区" @click="onMoreCoupon"></cm-floor-title>
+            <cm-coupon-area :couponList="couponList"></cm-coupon-area>
         </view>
 
         <!-- 楼层区域 -->
-        <cm-floor-template></cm-floor-template>
+        <view class="cm-floor" v-for="floorData in floorList" :key="floorData.id">
+            <cm-floor-template
+                :floorData="floorData"
+                @onBannerClick="onBannerClick"
+                @more="onMoreProduct"
+            ></cm-floor-template>
+        </view>
     </view>
 </template>
 
 <script>
-import { fetchCarousel } from '@/services/api/common.js'
+import { fetchHomeCarousel, fetchHomeNavbar, fetchHomeFloorData, fetchHomeCouponList } from '@/services/api/home.js'
 import { fetchProductFloorList } from '@/services/api/goods.js'
 import { shareDataResult } from '@/common/share.helper.js'
 import { mapActions, mapGetters } from 'vuex'
@@ -47,6 +53,10 @@ export default {
         return {
             isRequest: true,
             bannerList: [],
+            navbarList: [],
+            floorInfo: {},
+            floorList: [],
+            couponList: [],
             current: 0,
             isRefresh: false
         }
@@ -69,23 +79,91 @@ export default {
     },
     methods: {
         ...mapActions('cart', ['fetchCartKindCount']),
+
         // 搜索
         handleToSearch() {},
+
+        // 金刚区菜单导航
+        onNavbarClick(navbar) {
+            this.$setStorage('NAVBAR', {
+                type: 'navbar',
+                id: navbar.id
+            })
+            this.$router.navigateTo('goods/goods-list')
+        },
+
+        // 更多优惠券
+        onMoreCoupon() {
+            this.$router.navigateTo('coupon/coupon-receive')
+        },
+
+        // 商品楼层轮播图点击事件
+        onBannerClick(banner) {
+            console.log(banner)
+        },
+
+        // 更多商品
+        onMoreProduct(floor) {
+            this.$setStorage('NAVBAR', {
+                type: 'floor',
+                id: floor.id
+            })
+            this.$router.navigateTo('goods/goods-list')
+        },
+
+        // 加入我们
+        handleJoinUs() {
+            this.$router.navigateTo('others/join-us')
+        },
+
         // 初始化首页信息
         async initHomeInfo() {
+            this.fetchCarousel()
+            this.fetchNavbar()
+            this.fetchFloorData()
+            this.fetchCouponList()
+            this.isRequest = false
+        },
+
+        // 获取轮播图列表
+        async fetchCarousel() {
             try {
-                const resultCarousel = await fetchCarousel()
-                const resultData = await fetchProductFloorList({ userId: this.userId })
-                this.bannerList = resultCarousel.data
+                const resultCarousel = await fetchHomeCarousel() // 轮播图
+                this.bannerList = resultCarousel.data.map(item => item.image)
             } catch (e) {
-                console.log(e)
-            } finally {
-                this.isRequest = false
+                console.log('获取轮播图列表失败')
             }
         },
-        // 加入我们
-        handleJoinUs() {
-            this.$router.navigateTo('others/join-us')
+
+        // 获取金刚区菜单
+        async fetchNavbar() {
+            try {
+                const resultNavbar = await fetchHomeNavbar() // 轮播图
+                this.navbarList = resultNavbar.data
+            } catch (e) {
+                console.log('获取金刚区菜单失败')
+            }
+        },
+
+        // 获取楼层信息
+        async fetchFloorData() {
+            try {
+                const resultFloorData = await fetchHomeFloorData({ userId: this.userId }) // 商品楼层信息
+                this.floorInfo = resultFloorData.data.page
+                this.floorList = resultFloorData.data.floorList
+            } catch (e) {
+                console.log('获取楼层信息失败')
+            }
+        },
+
+        // 获取优惠券列表
+        async fetchCouponList() {
+            try {
+                const resultCouponData = await fetchHomeCouponList({ userId: this.userId })
+                this.couponList = resultCouponData.data
+            } catch (e) {
+                console.log('获取优惠券列表失败')
+            }
         }
     }
 }
@@ -176,5 +254,9 @@ export default {
     .coupon-area {
         padding-top: 24rpx;
     }
+
+    .cm-floor {
+        margin-bottom: 60rpx;
+    }
 }
 </style>

+ 2 - 2
pages/views/goods/components/goods-params-section/goods-params-section.vue

@@ -69,7 +69,7 @@ export default {
     background-color: #fff;
     .section {
         @extend .cm-flex-between;
-        font-size: 24rpx;
+        font-size: 28rpx;
 
         .label {
             color: #666;
@@ -85,7 +85,7 @@ export default {
             }
         }
         .iconfont {
-            font-size: 24rpx;
+            font-size: 28rpx;
             color: #666;
         }
     }

+ 1 - 0
pages/views/goods/components/goods-price/goods-price.vue

@@ -91,6 +91,7 @@ export default {
         margin-left: 24rpx;
         @extend .cm-flex-center;
         justify-content: flex-start;
+        margin-top: 10rpx;
         .tag-pt {
             @extend .cm-flex-center;
             height: 32rpx;

+ 17 - 2
pages/views/goods/config/config.js

@@ -5,13 +5,13 @@ export const navbarButtonGroup = {
         left: ['领券单独购买', '¥1000.00'],
         right: ['领券拼团购买', '¥1000.00']
     },
-    
+
     // 仅拼团
     group: {
         left: ['单独购买', '¥1000.00'],
         right: ['拼团购买', '¥1000.00']
     },
-    
+
     // 限时活动
     timeLimit: {
         left: ['加入购物车'],
@@ -24,3 +24,18 @@ export const navbarButtonGroup = {
         right: ['立即购买']
     }
 }
+
+export function makeQuery() {
+    return {
+        userId: '',
+        homeFloorId: '',
+        homeTypeId: '',
+        listType: '',
+        productIds: '',
+        smallTypeId: '',
+        sortType: '',
+        name: '',
+        pageNum: 1,
+        pageSize: 12
+    }
+}

+ 5 - 8
pages/views/goods/goods-detail.vue

@@ -186,15 +186,11 @@ export default {
         },
         // 顶部tab切换
         onTabChange(index) {
+            // const selector = `.product-detail #anchor-${index}`
+            const offset = this.anchorList[index].top
             uni.pageScrollTo({
-                selector: `#anchor-${index}`,
-                duration: 300,
-                success: () => {
-                    uni.pageScrollTo({
-                        scrollTop: this.scorllTop - 40 - 10,
-                        duration: 300
-                    })
-                }
+                scrollTop: this.scorllTop + offset - 40 - 10,
+                duration: 300
             })
         },
         // 初始化锚点
@@ -206,6 +202,7 @@ export default {
                     .boundingClientRect(data => {
                         this.anchorList = data
                         this.setCurrentTabIndex()
+                        console.log(this.anchorList)
                     })
                     .exec()
             },

+ 69 - 48
pages/views/goods/goods-list.vue

@@ -9,75 +9,93 @@
         </view>
         <!-- 商品列表 -->
         <view class="product-list">
-            <view class="product-item" v-for="(item,index) in productList" :key="index">
-                <cm-product :data="item"></cm-product>
+            <view class="product-item" v-for="(product, index) in productList" :key="product.productId">
+                <cm-product :data="product"></cm-product>
             </view>
-            <view class="product-item" v-for="i in emptyList" :key="i"></view>
         </view>
+        <!-- 加载更多 -->
+        <cm-loadmore :hasNextPage="hasNextPage" :isLoading="isLoading" :visiable="!isRequest"></cm-loadmore>
         <!-- 回到顶部 -->
         <tui-scroll-top :scrollTop="scrollTop" :bottom="30" :duration="600"></tui-scroll-top>
     </view>
 </template>
 
 <script>
+import { fetchProductList } from '@/services/api/goods.js'
+import { debounce } from '@/common/utils.js'
+import { mapGetters } from 'vuex'
+import { makeQuery } from '@/pages/views/goods/config/config.js'
 export default {
     data() {
         return {
             isRequest: true,
             scrollTop: 0,
-            keyword: '1212',
-            product: {
-                activeStatus: 0,
-                clubTaxPoint: 10,
-                collageProduct: null,
-                collageStatus: 0,
-                couponsLogo: true,
-                includedTax: '1',
-                invoiceType: '2',
-                mainImage: 'https://img-b.caimei365.com/group1/M00/03/20/Cmgy62BHH8aAFiGIAAGHr5DovGA124.jpg',
-                name: '【测试用】Dermaheal HSR 德玛莉肌活丝蕴凝颜精华液',
-                normalPrice: null,
-                price: 2,
-                productId: 6419,
-                recommend: '0',
-                unit: '片'
-            }
+            keyword: '',
+            listQuery: makeQuery(),
+            navInfo: {},
+            productList: [],
+            hasNextPage: true,
+            total: 0,
+            isLoading: false
         }
     },
-
     computed: {
-        productList() {
-            let list = []
-            for (let i = 0; i < 20; i++) {
-                list.push(this.product)
-            }
-            console.log(list)
-            return list
-        },
-        emptyList() {
-            let count = this.productList.length
-            const len = 3 - (count % 3)
-            if (len < 3) {
-                return len
-            } else {
-                return 0
-            }
-        }
-    },
-    watch: {
-        keyword(nval) {
-            console.log(nval)
-        }
+        ...mapGetters(['userId'])
     },
     onPageScroll(e) {
         this.scrollTop = e.scrollTop
     },
+    onReachBottom() {
+        this.loadMore()
+    },
+    onLoad() {
+        this.initQueryList()
+    },
     methods: {
         onSearch() {},
         onCancel() {},
         onFilter(e) {
             console.log(e)
-        }
+        },
+
+        // 初始化查询参数
+        initQueryList() {
+            this.listQuery.userId = this.userId
+            this.navInfo = this.$getStorage('NAVBAR')
+            if (this.navInfo.type === 'navbar') {
+                // 从金刚区菜单进入
+                this.listQuery.homeTypeId = this.navInfo.id
+                this.listType = 2
+            } else if (this.navInfo.type === 'floor') {
+                // 从楼层进入
+                this.homeFloorId = this.navInfo.id
+                this.listType = 3
+            } else if (this.navInfo.type === 'second') {
+                // 从二级菜单进入
+                this.smallTypeId = this.navInfo.id
+            }
+            this.fetchProductList()
+        },
+
+        // 加载更多
+        loadMore() {
+            if (!this.hasNextPage) return
+            this.fetchProductList()
+        },
+
+        // 获取商品列表
+        fetchProductList: debounce(async function() {
+            try {
+                const resultProductData = await fetchProductList(this.listQuery)
+                this.productList = [...this.productList, ...resultProductData.data.results]
+                this.hasNextPage = resultProductData.data.hasNextPage
+                this.total = resultProductData.data.totalRecord
+                this.listQuery.pageNum++
+                this.isRequest = false
+            } catch (e) {
+                console.log('获取商品列表失败')
+            }
+        }, 200)
     }
 }
 </script>
@@ -87,12 +105,15 @@ export default {
     box-sizing: border-box;
     min-height: 100vh;
     .product-list {
-        @extend .cm-flex-between;
-        flex-wrap: wrap;
-        padding: 8rpx 24rpx;
+        // @extend .cm-flex-between;
+        // flex-wrap: wrap;
+        display: grid;
+        grid-template-columns: repeat(3, 1fr);
+        // grid-template-rows: repeat(2, 1fr);
+        grid-row-gap: 12rpx;
+        padding: 0 24rpx;
         .product-item {
             width: 224rpx;
-            padding: 8rpx 0;
         }
     }
 }

+ 2 - 17
services/api/common.js

@@ -1,22 +1,5 @@
 import request from '@/services/http.request.js'
 
-/* 商城首页轮播图 */
-export function fetchCarousel() {
-    return request({
-        url: '/product/carousel',
-        method: 'GET'
-    })
-}
-
-/* 商城首页初始化数据查询 */
-export function fetchHomeData(params) {
-    return request({
-        url: '/home/modules',
-        method: 'GET',
-        params
-    })
-}
-
 /* 获取地址 */
 export function fetchCityList(params) {
     return request({
@@ -34,3 +17,5 @@ export function sendMobileVerification(params) {
         params
     })
 }
+
+

+ 36 - 0
services/api/home.js

@@ -0,0 +1,36 @@
+import request from '@/services/http.request.js'
+
+/* 获取首页轮播图 */
+export function fetchHomeCarousel() {
+    return request({
+        url: '/product/carousel',
+        method: 'GET'
+    })
+}
+
+/* 商品首页金刚区分类 */
+export function fetchHomeNavbar(params) {
+    return request({
+        url: '/product/home/type',
+        method: 'GET',
+        params
+    })
+}
+
+/* 获取首页商品楼层信息 */
+export function fetchHomeFloorData(params) {
+    return request({
+        url: '/product/home/init',
+        method: 'GET',
+        params
+    })
+}
+
+/* 获取首页优惠券 */
+export function fetchHomeCouponList(params) {
+    return request({
+        url: '/coupon/home',
+        method: 'GET',
+        params
+    })
+}

+ 2 - 2
services/config.env.js

@@ -1,8 +1,8 @@
 export let APP_API_URI = ''
 if (process.env.NODE_ENV === 'development') {
     // 开发环境
-    // APP_API_URI = 'http://127.0.0.1:8011'	 //本地联调地址
-    APP_API_URI = 'https://mall2c-b.caimei365.com'
+    APP_API_URI = 'http://192.168.2.68:8011'	 //本地联调地址
+    // APP_API_URI = 'https://mall2c-b.caimei365.com'
     // APP_API_URI = 'https://mall2c.caimei365.com'
 } else {
     // 生产环境

+ 2 - 2
services/http.interceptor.js

@@ -30,7 +30,6 @@ http.interceptors.request.use((config) => {
 })
 
 http.interceptors.response.use((response) => {
-    uni.hideLoading()
     /* 对响应成功做点什么 可使用async await 做异步操作*/
     const code = response.data.code
     // 未登录
@@ -38,17 +37,18 @@ http.interceptors.response.use((response) => {
         console.log('未登录/登录已失效')
         return Promise.reject(response)
     }
-
     // 服务端返回的状态码不等于-1,则reject()
     if (code != 0) {
         toast(response.data.msg || '网络异常')
         return Promise.reject(response.data)
     }
     console.log(response.data)
+    uni.hideLoading()
     return Promise.resolve(response.data)
 }, (response) => {
     /*  对响应错误做点什么 (statusCode !== 200)*/
     console.log(response)
+    uni.hideLoading()
     return Promise.reject(response)
 })
 

+ 2 - 3
services/http.request.js

@@ -1,8 +1,7 @@
 import http from '@/services/http.interceptor.js'
-// 引入拦截器
 
-export default (options = {}) => {
-    return http.request({
+export default async (options = {}) => {
+    return await http.request({
         method: options.method || 'GET', // 请求方法必须大写 [GET|POST|PUT|DELETE|CONNECT|HEAD|OPTIONS|TRACE]
         url: options.url,
         data: options.data,