doum
3 天以前 988b4e04541d15c7586efb72f565960b4de4c492
mini-program/pages/search/search.vue
@@ -4,16 +4,16 @@
         <u-search placeholder="请输入商品名称搜索" height="36" searchIconColor="#999999" borderColor="#EEEEEE"
            bgColor="#F9F9FB" :showAction="false" v-model="goodsName" @search="search" />
      </view>
      <view class="history">
      <view class="history" v-if="historyList && historyList.length > 0">
         <view class="history-title">历史搜索</view>
         <view class="history-list">
            <view class="history-list-item">支重轮</view>
            <view class="history-list-item" v-for="(item, index) in historyList" :key="index" @click="seleContent(item.content)">{{item.content}}</view>
         </view>
      </view>
      <template v-if="isSearch">
         <view class="list">
            <image class="list-notfund" v-if="goodsList.length === 0" src="/static/images/default_search@2x.png" mode="widthFix"></image>
            <view class="commodity-item" v-for="(item, i) in goodsList" :key="i" v-else>
            <view class="commodity-item" v-for="(item, i) in goodsList" :key="i" v-else @click="jumpDetails(item.id)">
               <view class="commodity-item-image">
                  <image :src="item.imgurl" mode="widthFix"></image>
               </view>
@@ -32,31 +32,89 @@
                  </view>
                  <view class="commodity-item-shou">
                     <text>已售{{item.saleNum + item.realSaleNum}}</text>
                     <view class="commodity-item-shou-add">+</view>
                     <view class="commodity-item-shou-add" @click.stop="addCard(item)">+</view>
                  </view>
               </view>
            </view>
         </view>
      </template>
      <Login ref="login" />
   </view>
</template>
<script>
   import { mapState } from 'vuex'
   import Login from '@/components/login/login.vue'
   export default {
      components: { Login },
      computed: {
         ...mapState(['userInfo'])
      },
      data() {
         return {
            goodsName: '',
            goodsList: [],
            page: 1,
            next: true,
            isSearch: false
            isSearch: false,
            historyList: [],
            categoryId: null,
            applicableBrandId: null
         };
      },
      onLoad(option) {
         if (option.categoryId) {
            this.categoryId = option.categoryId
            this.isSearch = true
            this.getGoodsList()
         }
         if (option.applicableBrandId) {
            this.applicableBrandId = option.applicableBrandId
            this.isSearch = true
            this.getGoodsList()
         }
         this.gethistary()
      },
      onReachBottom() {
         this.getGoodsList()
      },
      methods: {
         addCard(e) {
            if (!this.userInfo) {
               this.$refs.login.open()
               return
            }
            this.$u.api.addCart({
               goodsId: e.id,
               goodsSkuId: e.goodsSkuResponseList[0].id,
               num: 1
            }).then(res => {
               if (res.code === 200) {
                  uni.showToast({ title: '添加成功', icon: 'success' })
               }
            })
         },
         jumpDetails(id) {
            uni.navigateTo({
               url: '/pages/details/details?id=' + id
            })
         },
         seleContent(val) {
            this.goodsName = val
            this.search()
         },
         gethistary() {
            if (!this.userInfo) return
            this.$u.api.searchHistoryList({
               memberId: this.userInfo.id
            }).then(res => {
               if (res.code === 200) {
                  this.historyList = res.data
               }
            })
         },
         search() {
            if (!this.goodsName) return;
            if (!this.isSearch) {
               this.isSearch = true
            }
@@ -73,10 +131,14 @@
               model: {
                  type: 0,
                  sortInfo: 3,
                  goodsName: this.goodsName
                  goodsName: this.goodsName,
                  memberId: this.userInfo.id,
                  categoryId: this.categoryId,
                  applicableBrandId: this.applicableBrandId
               }
            }).then(res => {
               if (res.code === 200) {
                  this.gethistary()
                  res.data.records.forEach(item => {
                     item.minPrice = item.minPrice.toFixed(2).split('.')
                  })
@@ -92,6 +154,11 @@
   }
</script>
<style>
   page {
      background-color: #F9F9FB;
   }
</style>
<style lang="scss" scoped>
   .box {
      width: 100%;
@@ -133,7 +200,7 @@
               margin-right: 24rpx;
               margin-bottom: 24rpx;
               &:last-child {
                  margin: 0 !important;
                  margin-right: 0 !important;
               }
            }
         }