Browse Source

小程序:商家端-商品添加

panyong 2 years ago
parent
commit
273055887c

+ 34 - 29
htmldev/wxMini/mixin/pages.js

@@ -1,25 +1,28 @@
 const { request } = require('../api/request')
 
 module.exports = {
-  data: {
-    searchForm: {
-      key_words: ''
-    },
-    pagenum: 0,
-    pagesize: 20,
-    finished: false, // 所有数据是否加载完
-    isRefresh: false, // 是否下拉刷新
-    isFetchLock: false, // 接口调用加锁
-    list: [],
-    freshing: false
+  data() {
+    return {
+      pagenum: 1,
+      pagesize: 20,
+      finished: false, // 所有数据是否加载完
+      isRefresh: false, // 是否下拉刷新
+      isFetchLock: false, // 接口调用加锁
+      listData: [],
+      freshing: false
+    }
   },
   methods: {
     handleKeyWords(event) {
-      this.setData({
-        'searchForm.key_words': event.detail
-      })
+      const { formkey } = event.target.dataset
+
+      if (formkey) {
+        this.setData({
+          [`searchForm.${formkey}`]: event.detail.value
+        })
+      }
     },
-    async fetOrderList() {
+    async fetchOrderList() {
       const that = this
       const isRefresh = that.data.isRefresh
 
@@ -32,30 +35,30 @@ module.exports = {
       }
 
       that.setData({
-        isFetchLock: true,
-        pagenum: that.data.pagenum + 1
+        isFetchLock: true
       })
       try {
         const { status, data, msg } = await request({
-          url: that.data.api,
+          url: that.data.listUrl,
           method: 'POST',
           data: {
-            'page': that.data.pageNum,
-            'page_size': that.data.pageSize,
-            key_words: that.data.searchForm.key_words
+            'page': that.data.pagenum,
+            'page_size': that.data.pagesize,
+            ...that.data.searchForm
           },
           showLoading: true
         })
         if (status) {
           const { list } = data
           if (Array.isArray(list)) {
-            const _list = isRefresh ? [].concat(list) : that.data.list.concat(list)
+            const _list = isRefresh ? [].concat(list) : that.data.listData.concat(list)
 
             that.setData({
-              list: _list,
-              finished: list.length < 10,
+              listData: _list,
+              finished: list.length < that.data.pagesize,
               isRefresh: false,
-              isFetchLock: false
+              isFetchLock: false,
+              pagenum: that.data.pagenum + 1
             })
           }
         } else {
@@ -66,21 +69,23 @@ module.exports = {
         }
       } catch (e) {}
       if (that.data.freshing) {
-        that.data.freshing = false
+        that.setData({
+          freshing: false
+        })
       }
       if (isRefresh && wx.stopPullDownRefresh) {
         wx.stopPullDownRefresh()
       }
     },
-    refresh() {
+    refreshOrderList() {
       this.setData({
-        pagenum: 0,
+        pagenum: 1,
         pagesize: 20,
         finished: false,
         isRefresh: true,
         isFetchLock: false
       }, () => {
-        this.fetOrderList()
+        this.fetchOrderList()
       })
     }
   }

+ 53 - 32
htmldev/wxMini/pages/home/home.js

@@ -1,12 +1,21 @@
+const pages = require('../../mixin/pages')
+const { getProductCategoryList } = require('../../api/common')
 let leftHeight = 0
 let rightHeight = 0
 let query = null
+
 Page({
 
   /**
    * 页面的初始数据
    */
   data: {
+    ...pages.data(),
+    listUrl: '/api/user/home/product/list',
+    searchForm: {
+      key_words: '',
+      category_id: ''
+    },
     background: ['demo-text-1', 'demo-text-2', 'demo-text-3'],
     txtlist: [
       '这是第一条公告内容',
@@ -35,43 +44,18 @@ Page({
         path: 'news'
       }
     ],
-    category: [
-      {
-        name: '全部',
-        id: '1'
-      },
-      {
-        name: '分类',
-        id: '2'
-      },
-      {
-        name: '分类',
-        id: '3'
-      },
-      {
-        name: '分类',
-        id: '4'
-      },
-      {
-        name: '分类',
-        id: '5'
-      },
-      {
-        name: '分类',
-        id: '6'
-      }
-    ],
-    currentCategory: '2',
+    categoryList: [],
     list: [],
     leftList: [],
     rightList: []
   },
-
+  ...pages.methods,
   /**
    * 生命周期函数--监听页面加载
    */
-  onLoad(options) {
-
+  async onLoad(options) {
+    await this.fetchProductCategoryList()
+    this.fetchOrderList()
   },
 
   /**
@@ -106,14 +90,20 @@ Page({
    * 页面相关事件处理函数--监听用户下拉动作
    */
   onPullDownRefresh() {
-
+    if (this.data.freshing) {
+      return
+    }
+    this.setData({
+      freshing: true
+    })
+    this.bindCallBack()
   },
 
   /**
    * 页面上拉触底事件的处理函数
    */
   onReachBottom() {
-
+    this.fetchOrderList()
   },
 
   /**
@@ -121,6 +111,37 @@ Page({
    */
   onShareAppMessage() {
 
+  },
+  bindCallBack() {
+    this.refreshOrderList()
+  },
+  async fetchProductCategoryList() {
+    try {
+      const { status, data, msg } = await getProductCategoryList()
+      if (status && Array.isArray(data) && data.length > 0) {
+        this.setData({
+          categoryList: data.map(item => {
+            return {
+              ...item,
+              text: item.category_name
+            }
+          }),
+          'searchForm.category_id': data[0].id
+        })
+      } else {
+        wx.showToast({
+          title: msg,
+          icon: 'none'
+        })
+      }
+    } catch (err) {}
+  },
+  handleTab(event) {
+    const { name } = event.detail
+
+    this.setData({
+      'searchForm.category_id': name
+    })
   },
   async isLeft() {
     const {

+ 16 - 4
htmldev/wxMini/pages/home/home.wxml

@@ -7,7 +7,9 @@
       <input
         placeholder-class="app_header-search-placeholder"
         value="{{searchForm.key_words}}"
-        placeholder="搜索"></input>
+        placeholder="搜索"
+        data-formkey="key_words"
+        bind:input="handleKeyWords"></input>
     </view>
     <view class="leaving-a-message" bind:tap="jumpLeavingAMessage">
       <image src="../../image/common/message@2x.png"></image>
@@ -79,9 +81,19 @@
       bind:tap="openMarketing"></image>
   </view>
   <view class="excellent-goods-title">优秀产品</view>
-  <van-tabs active="{{ currentCategory }}" color="transparent" title-active-color="#FFFFFF"
-            title-inactive-color="#858597" tab-class="my-tab-class" tab-active-class="my-tab-active-class">
-    <van-tab title="{{item.name}}" wx:for="{{category}}" wx:key="id" name="{{item.id}}">
+  <van-tabs
+    active="{{ searchForm.category_id }}"
+    color="transparent"
+    title-active-color="#FFFFFF"
+    title-inactive-color="#858597"
+    tab-class="my-tab-class"
+    tab-active-class="my-tab-active-class"
+    bind:click="handleTab">
+    <van-tab
+      title="{{item.category_name}}"
+      wx:for="{{categoryList}}"
+      wx:key="id"
+      name="{{item.id}}">
     </van-tab>
   </van-tabs>
   <!--瀑布流-->

+ 1 - 0
htmldev/wxMini/pages/home/home.wxss

@@ -180,6 +180,7 @@
 
 .my-tab-class {
   width: 140rpx;
+  max-width: 140rpx;
   height: 56rpx;
   margin-left: 23rpx;
   border-radius: 40rpx;

+ 6 - 2
htmldev/wxMini/pages/partner/partner.js

@@ -1,10 +1,14 @@
+const pages = require('../../mixin/pages')
+
 Page({
 
   /**
    * 页面的初始数据
    */
-  data: {},
-
+  data: {
+    ...pages.data()
+  },
+  ...pages.methods,
   /**
    * 生命周期函数--监听页面加载
    */

+ 3 - 1
htmldev/wxMini/pages/partner/partner.wxml

@@ -7,7 +7,9 @@
       <input
         placeholder-class="app_header-search-placeholder"
         value=""
-        placeholder="搜索"></input>
+        placeholder="搜索"
+        data-formkey="key_words"
+        bind:input="handleKeyWords"></input>
     </view>
     <view
       class="leaving-a-message"