Ver código fonte

Merge remote-tracking branch 'origin/front2' into develop

# Conflicts:
#	fore-end/app.js
#	fore-end/app.json
#	fore-end/app.wxss
#	fore-end/components/commodity_card/commodity_card.js
#	fore-end/components/commodity_card/commodity_card.json
#	fore-end/components/commodity_card/commodity_card.wxml
#	fore-end/components/commodity_card/commodity_card.wxss
#	fore-end/pages/append/append.wxml
#	fore-end/pages/classify/classify.js
#	fore-end/pages/classify/classify.wxml
#	fore-end/pages/classify/classify.wxss
#	fore-end/pages/home/home.js
#	fore-end/pages/home/home.json
#	fore-end/pages/home/home.wxml
#	fore-end/pages/home/home.wxss
#	fore-end/pages/user/user.js
#	fore-end/pages/user/user.wxml
#	fore-end/pages/user/user.wxss
#	fore-end/project.config.json
#	fore-end/project.private.config.json
#	fore-end/utils/util.js
May1145 1 ano atrás
pai
commit
372188d06e
48 arquivos alterados com 1032 adições e 77 exclusões
  1. 14 0
      fore-end/API/categories.js
  2. 14 0
      fore-end/API/classifyGoods.js
  3. 11 0
      fore-end/API/goods.js
  4. 4 4
      fore-end/app.js
  5. 7 9
      fore-end/app.json
  6. 28 0
      fore-end/app.wxss
  7. BIN
      fore-end/assets/home_img/head_portrait.jpg
  8. BIN
      fore-end/assets/home_img/search.png
  9. BIN
      fore-end/assets/home_img/search_active.png
  10. BIN
      fore-end/assets/recommend_img/recom_1.jpg
  11. BIN
      fore-end/assets/recommend_img/recom_2.jpg
  12. BIN
      fore-end/assets/recommend_img/recom_3.jpg
  13. 24 0
      fore-end/components/avatar/avatar.js
  14. 4 0
      fore-end/components/avatar/avatar.json
  15. 7 0
      fore-end/components/avatar/avatar.wxml
  16. 22 0
      fore-end/components/avatar/avatar.wxss
  17. 6 5
      fore-end/components/commodity_card/commodity_card.js
  18. 3 1
      fore-end/components/commodity_card/commodity_card.json
  19. 14 1
      fore-end/components/commodity_card/commodity_card.wxml
  20. 35 1
      fore-end/components/commodity_card/commodity_card.wxss
  21. 21 0
      fore-end/package-lock.json
  22. 15 0
      fore-end/package.json
  23. 3 0
      fore-end/pages/append/append.json
  24. 1 0
      fore-end/pages/append/append.wxss
  25. 19 2
      fore-end/pages/classify/classify.js
  26. 13 1
      fore-end/pages/classify/classify.wxml
  27. 31 1
      fore-end/pages/classify/classify.wxss
  28. 78 0
      fore-end/pages/classify_detail/classify_detail.js
  29. 5 0
      fore-end/pages/classify_detail/classify_detail.json
  30. 8 0
      fore-end/pages/classify_detail/classify_detail.wxml
  31. 21 0
      fore-end/pages/classify_detail/classify_detail.wxss
  32. 66 0
      fore-end/pages/details/details.js
  33. 5 0
      fore-end/pages/details/details.json
  34. 27 0
      fore-end/pages/details/details.wxml
  35. 57 0
      fore-end/pages/details/details.wxss
  36. 59 32
      fore-end/pages/home/home.js
  37. 3 1
      fore-end/pages/home/home.json
  38. 54 1
      fore-end/pages/home/home.wxml
  39. 115 1
      fore-end/pages/home/home.wxss
  40. 66 0
      fore-end/pages/search/search.js
  41. 6 0
      fore-end/pages/search/search.json
  42. 43 0
      fore-end/pages/search/search.wxml
  43. 87 0
      fore-end/pages/search/search.wxss
  44. 1 10
      fore-end/pages/user/user.js
  45. 1 0
      fore-end/pages/user/user.wxss
  46. 9 0
      fore-end/project.config.json
  47. 21 1
      fore-end/project.private.config.json
  48. 4 6
      fore-end/utils/util.js

+ 14 - 0
fore-end/API/categories.js

@@ -0,0 +1,14 @@
+const { http } = require('../utils/util')
+
+const API = {
+    getCategoryURL: '/category',
+}
+
+function getCategoryAPI(data) {
+    // return http( API.getCategoryURL, {data: data})
+    return http({url: API.getCategoryURL, data: data})
+}
+
+module.exports = {
+    getCategoryAPI
+}

+ 14 - 0
fore-end/API/classifyGoods.js

@@ -0,0 +1,14 @@
+const { http } = require('../utils/util')
+
+const API = {
+    getCategoryGoods: '/goods/category/{page}/{pageSize}'
+}
+
+function getClassifyGoods(data) {
+    // return http( API.getCategoryGoods, {data: data})
+    return http({url: API.getCategoryGoods, data: data})
+}
+
+module.exports = {
+    getClassifyGoods
+}

+ 11 - 0
fore-end/API/goods.js

@@ -0,0 +1,11 @@
+const { http } = require('../utils/util')
+
+function getGoods() {
+    return http({url: '/goods/recommend', data: this.data}).then((res) => {
+        console.log(res);
+    })
+}
+
+module.exports = {
+    getGoods
+}

+ 4 - 4
fore-end/app.js

@@ -20,7 +20,7 @@ const ui_w = 360;
 // 获取屏幕的宽度
 var clientWidth = wx.getSystemInfoSync().windowWidth;
 var loginOption = {
-	
+
 	header :{
 		"Content-Type": 'application/x-www-form-urlencoded',
 	},
@@ -42,7 +42,7 @@ var infoOption = {
 		wx.login({
 			success: (res) => {
 				//获取用户昵称和头像
-			  
+
 				//和微信接口服务校验
 			  console.log("code: "+res.code);
 			  var url = 'https://api.weixin.qq.com/sns/jscode2session?appid=' + wxInfo.appid + '&secret=' + wxInfo.appSecret + '&js_code=' + res.code + '&grant_type=authorization_code'
@@ -115,11 +115,11 @@ var infoOption = {
 				  })
 				}
 			  })
-			
+
 		})
 
 	}
-    
+
   },
   globalData: {
     userInfo: null

+ 7 - 9
fore-end/app.json

@@ -12,7 +12,8 @@
         "van-field": "@vant/weapp/field/index",
 		"van-toast": "@vant/weapp/toast/index",
 		"van-card": "@vant/weapp/card/index",
-		"van-swipe-cell": "@vant/weapp/swipe-cell/index"
+		"van-swipe-cell": "@vant/weapp/swipe-cell/index",
+        "van-search": "@vant/weapp/search/index"
     },
     "pages": [
         "pages/home/home",
@@ -22,20 +23,17 @@
         "pages/user/user",
         "pages/userchange/userchange",
         "pages/myOrder/myOrder",
-        "pages/register/register"
+        "pages/register/register",
+        "pages/details/details",
+        "pages/search/search",
+        "pages/classify_detail/classify_detail"
     ],
     "window": {
         "backgroundTextStyle": "light",
         "navigationBarBackgroundColor": "#fff",
-        "navigationBarTitleText": "Weixin",
+        "navigationBarTitleText": "WeChatTrading",
         "navigationBarTextStyle": "black"
     },
-    "networkTimeout": {
-        "request": 1000000,
-        "connectSocket": 100000,
-        "uploadFile": 100000,
-        "downloadFile": 100000
-    },
     "tabBar": {
         "list": [
             {

+ 28 - 0
fore-end/app.wxss

@@ -8,3 +8,31 @@
   padding: 200rpx 0;
   box-sizing: border-box;
 } 
+
+page {
+    padding: 20rpx;
+    /* padding右边不起效果解决办法 */
+    box-sizing:border-box;
+    background-color: #f5f5f5;
+    --themeColor: #FFC300;/*定义全局颜色*/
+}
+
+/* text样式 */
+.text {
+    font-size: 40rpx;
+    font-weight: 600;
+}
+
+.text_small {
+    font-size: 30rpx;
+    font-weight: 400;
+}
+
+/* 文字下方黄色横线 */
+.color_block {
+    width: 90rpx;
+    height: 20rpx;
+    background-color: var(--themeColor);
+    opacity: 0.8;
+    z-index: -1;
+}

BIN
fore-end/assets/home_img/head_portrait.jpg


BIN
fore-end/assets/home_img/search.png


BIN
fore-end/assets/home_img/search_active.png


BIN
fore-end/assets/recommend_img/recom_1.jpg


BIN
fore-end/assets/recommend_img/recom_2.jpg


BIN
fore-end/assets/recommend_img/recom_3.jpg


+ 24 - 0
fore-end/components/avatar/avatar.js

@@ -0,0 +1,24 @@
+// components/avatar/avatar.js
+Component({
+
+    /**
+     * 组件的属性列表
+     */
+    properties: {
+
+    },
+
+    /**
+     * 组件的初始数据
+     */
+    data: {
+
+    },
+
+    /**
+     * 组件的方法列表
+     */
+    methods: {
+
+    }
+})

+ 4 - 0
fore-end/components/avatar/avatar.json

@@ -0,0 +1,4 @@
+{
+    "component": true,
+    "usingComponents": {}
+}

+ 7 - 0
fore-end/components/avatar/avatar.wxml

@@ -0,0 +1,7 @@
+<!--components/avatar/avatar.wxml-->
+<view class="seller">
+    <view class="avater">
+        <image src="/assets/home_img/head_portrait.jpg" mode="" class="avatar_pic"/>
+    </view>
+    <view class="seller_name">deter</view>
+</view>

+ 22 - 0
fore-end/components/avatar/avatar.wxss

@@ -0,0 +1,22 @@
+/* components/avatar/avatar.wxss */
+.seller {
+    position: absolute;
+    top: 450rpx;
+    left: 12rpx;
+}
+
+.avater{
+    float: left;
+}
+
+.avatar_pic {
+    width: 45rpx !important;
+    height: 45rpx !important;
+    border-radius: 20rpx;
+}
+
+.seller_name {
+    float: left;
+    margin-left: 10rpx;
+    font-weight: 300;
+}

+ 6 - 5
fore-end/components/commodity_card/commodity_card.js

@@ -1,8 +1,5 @@
 // components/commodity_card/commodity_card.js
 Component({
-		options:{
-			multipleSlots:true
-		},
     /**
      * 组件的属性列表
      */
@@ -21,6 +18,10 @@ Component({
      * 组件的方法列表
      */
     methods: {
-
+        detailTo() {
+            wx.navigateTo({
+              url: '/pages/details/details',
+            })
+        }
     }
-})
+})

+ 3 - 1
fore-end/components/commodity_card/commodity_card.json

@@ -1,4 +1,6 @@
 {
     "component": true,
-    "usingComponents": {}
+    "usingComponents": {
+        "avatar": "/components/avatar/avatar"
+    }
 }

+ 14 - 1
fore-end/components/commodity_card/commodity_card.wxml

@@ -1,2 +1,15 @@
 <!--components/commodity_card/commodity_card.wxml-->
-<text>components/commodity_card/commodity_card.wxml</text>
+<view class="commodity">
+    <view class="commodity_show" bind:tap="detailTo">
+        <image src="/assets/recommend_img/recom_1.jpg" alt="" class="commodity_image"/>
+        <text class="commodity_name">产品名称</text>
+        <text class="price">¥49.9</text>
+        <avatar></avatar>
+    </view>
+    <view class="commodity_show">
+        <image src="/assets/recommend_img/recom_2.jpg" mode="" class="commodity_image"/>
+    </view>
+    <view class="commodity_show">
+        <image src="/assets/recommend_img/recom_3.jpg" mode="" class="commodity_image"/>
+    </view>
+</view>

+ 35 - 1
fore-end/components/commodity_card/commodity_card.wxss

@@ -1 +1,35 @@
-/* components/commodity_card/commodity_card.wxss */
+/* components/commodity_card/commodity_card.wxss */
+.commodity {
+    display: flex;
+    flex-wrap: wrap; /*自动换行*/
+    margin-top: 10rpx;
+}
+
+.commodity_show {
+    display: flex;
+    position: relative;
+    width: 48%;
+    height: 500rpx;
+    padding: 7rpx;
+    justify-content: center;
+}
+
+.commodity_image {
+    width: 340rpx;
+    height: 340rpx;
+    border-radius: 20rpx;
+}
+
+.commodity_name {
+    position: absolute;
+    top: 360rpx;
+    left: 15rpx;
+}
+
+.price {
+    position: absolute;
+    top: 400rpx;
+    left: 12rpx;
+    color: #a08016;
+    font-weight: 600;
+}

+ 21 - 0
fore-end/package-lock.json

@@ -0,0 +1,21 @@
+{
+  "name": "fore-end",
+  "version": "1.0.0",
+  "lockfileVersion": 3,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "fore-end",
+      "version": "1.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "@vant/weapp": "^1.11.1"
+      }
+    },
+    "node_modules/@vant/weapp": {
+      "version": "1.11.1",
+      "resolved": "https://registry.npmjs.org/@vant/weapp/-/weapp-1.11.1.tgz",
+      "integrity": "sha512-2QddSq3MsozbTBAgEmW1rhzsEJNWPF2VS427M5pOOn0a7/f6lW+tymwdTcOQCzQONavhFwBv6Lebbs/UjE3Yig=="
+    }
+  }
+}

+ 15 - 0
fore-end/package.json

@@ -0,0 +1,15 @@
+{
+  "name": "fore-end",
+  "version": "1.0.0",
+  "description": "",
+  "main": ".eslintrc.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "keywords": [],
+  "author": "",
+  "license": "ISC",
+  "dependencies": {
+    "@vant/weapp": "^1.11.1"
+  }
+}

+ 3 - 0
fore-end/pages/append/append.json

@@ -0,0 +1,3 @@
+{
+    "usingComponents": {}
+}

+ 1 - 0
fore-end/pages/append/append.wxss

@@ -0,0 +1 @@
+/* pages/append/append.wxss */

+ 19 - 2
fore-end/pages/classify/classify.js

@@ -1,20 +1,37 @@
 // pages/classify/classify.js
+const { http } = require('../../utils/util')
+
+const API = {
+    getCategoryURL: '/category'
+}
+
 Page({
 
     /**
      * 页面的初始数据
      */
     data: {
-
+        classifyList: []
     },
 
     /**
      * 生命周期函数--监听页面加载
      */
     onLoad(options) {
-
+        this.getClassifyList()
     },
 
+    getClassifyList() {
+        http({url: API.getCategoryURL, data: this.data}).then((res) => {
+            wx.setStorageSync('classifyList',res);
+            let classifyList = wx.getStorageSync('classifyList')
+            this.setData({
+                classifyList: [...res],
+                imgUrl: classifyList[0].Pic,
+                classifyName: classifyList[0].Name
+            })
+        })
+    },
     /**
      * 生命周期函数--监听页面初次渲染完成
      */

+ 13 - 1
fore-end/pages/classify/classify.wxml

@@ -1,2 +1,14 @@
 <!--pages/classify/classify.wxml-->
-<text>pages/classify/classify.wxml</text>
+<view>
+    <!-- 标题 -->
+    <view class="classify_topic">分类</view>
+    <!-- 展示分类 -->
+    <view class="classify_list">
+        <view class="categories" wx:for="{{classifyList}}" wx:key="Id">
+            <view class="categories_card">
+                <van-image width="90" height="90" fit="cover" src="{{item.Pic}}" />
+            </view>
+            <view class="text">{{item.Name}}</view>
+        </view>
+    </view>
+</view>

+ 31 - 1
fore-end/pages/classify/classify.wxss

@@ -1 +1,31 @@
-/* pages/classify/classify.wxss */
+/* pages/classify/classify.wxss */
+image {
+    width: 180rpx;
+    height: 180rpx;
+    border-radius: 20rpx;
+}
+
+/* 标题 */
+.classify_topic {
+    font-size: 80rpx;
+    font-weight: 800;
+    color: #808080;
+    margin: 70rpx;
+    text-align: center;
+}
+
+.classify_list {
+    margin-top: 40rpx;
+    margin-left: 10rpx;
+    display: flex;
+    padding: 30rpx;
+    justify-content: space-between;
+    flex-wrap: wrap;
+    box-sizing: border-box;
+}
+
+/* 展示分类 */
+.text {
+    margin-left: 42rpx;
+    margin-top: 15rpx;
+}

+ 78 - 0
fore-end/pages/classify_detail/classify_detail.js

@@ -0,0 +1,78 @@
+// pages/classify_detail/classify_detail.js
+// const { http } = require('../../utils/util')
+const { getClassifyGoods } = require('../../API/classifyGoods')
+
+Page({
+
+    /**
+     * 页面的初始数据
+     */
+    data: {
+        classifyShow: [],
+        page: 1,
+        pageSize: 6
+    },
+
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad(options) {
+        this.getGoods()
+        // console.log(options);
+        // var id = options;
+    },
+
+    getGoods() {
+        getClassifyGoods(this.data).then((res) => {
+            console.log(res);
+        })
+    },
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload() {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh() {
+
+    },
+
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom() {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage() {
+
+    }
+})

+ 5 - 0
fore-end/pages/classify_detail/classify_detail.json

@@ -0,0 +1,5 @@
+{
+    "usingComponents": {
+        "commodity_card": "/components/commodity_card/commodity_card"
+    }
+}

+ 8 - 0
fore-end/pages/classify_detail/classify_detail.wxml

@@ -0,0 +1,8 @@
+<!--pages/classify_detail/classify_detail.wxml-->
+<view class="title">
+    <text class="text">分类一</text>
+</view>
+<!-- 商品展示 -->
+<view class="goodsShow">
+    <commodity_card></commodity_card>
+</view>

+ 21 - 0
fore-end/pages/classify_detail/classify_detail.wxss

@@ -0,0 +1,21 @@
+/* pages/classify_detail/classify_detail.wxss */
+.title {
+    position: fixed;
+    width: 100%;
+    height: 60rpx;
+    margin-top: -20rpx;
+    margin-left: -20rpx;
+    z-index: 100;
+    background-color:  var(--themeColor);
+}
+
+.text {
+    line-height: 60rpx;
+    margin-left: 315rpx;
+}
+
+.goodsShow {
+    margin-top: 50rpx;
+    height: 1500rpx;
+}
+

+ 66 - 0
fore-end/pages/details/details.js

@@ -0,0 +1,66 @@
+// pages/details/details.js
+Page({
+
+    /**
+     * 页面的初始数据
+     */
+    data: {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad(options) {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload() {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh() {
+
+    },
+
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom() {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage() {
+
+    }
+})

+ 5 - 0
fore-end/pages/details/details.json

@@ -0,0 +1,5 @@
+{
+    "usingComponents": {
+        "commodity-card": "/components/commodity_card/commodity_card"
+    }
+}

+ 27 - 0
fore-end/pages/details/details.wxml

@@ -0,0 +1,27 @@
+<!--pages/details/details.wxml-->
+<!-- 商品图片展示 -->
+<view class="detail_pic">
+    <van-image width="350" height="300" fit="cover" radius="10" src="/assets/recommend_img/recom_1.jpg" />
+</view>
+
+<!-- 用户展示 -->
+<view class="seller">
+    <!-- 用户信息:头像 产品名称、价格 卖家昵称 联系卖主按钮 -->
+    <view class="seller_msg">
+        <van-image round width="70" height="70" fit="cover" src="/assets/home_img/head_portrait.jpg" />
+        <text class="commodity_name">产品名称</text>
+        <text class="price">¥49.9</text>
+        <text class="seller_name">deter</text>
+        <van-button color="#FFC300" custom-style="border-radius: 20rpx; color: #000000; font-size: 35rpx; position: absolute; top: 30rpx; right: 10rpx;">联系卖主</van-button>
+    </view>
+    <!-- 卖的商品信息 -->
+    <view class="sell_msg">
+        <text class="sell_title">女士夏秋套装\n</text>
+        <view class="sell_detail" style="width: 100%; overflow: hidden; white-space: nowrap; text-overflow: ellipsis;">女士T恤+短裤+鞋,未穿过,出售,价格可谈,女士T恤+短裤+鞋,未穿过,出售,价格可谈</view>
+    </view>
+</view>
+
+<!-- 推荐商品 -->
+<view class="recommend">
+    <commodity-card></commodity-card>
+</view>

+ 57 - 0
fore-end/pages/details/details.wxss

@@ -0,0 +1,57 @@
+/* pages/details/details.wxss */
+.detail_pic {
+    display: flex;
+    justify-content: center;
+}
+
+/* 用户展示 */
+.seller {
+    margin-top: 20rpx;
+    width: 100%;
+}
+
+.seller_msg {
+    position: relative;
+}
+
+.commodity_name {
+    position: absolute;
+    top: 10rpx;
+    left: 160rpx;
+    font-weight: 600;
+}
+
+.price {
+    position: absolute;
+    top: 55rpx;
+    left: 160rpx;
+    color: #a08016;
+    font-weight: 600;
+}
+
+.seller_name {
+    position: absolute;
+    top: 90rpx;
+    left: 160rpx;
+    font-weight: 300;
+}
+
+/* 商品信息展示 */
+.sell_msg {
+    margin-top: 15rpx;
+    margin-left: 10rpx;
+}
+
+.sell_title {
+    font-size: 35rpx;
+}
+
+.sell_detail {
+    font-size: 25rpx;
+    color: #808080;
+}
+
+/* 推荐商品 */
+.recommend {
+    margin-top: 30rpx;
+}

+ 59 - 32
fore-end/pages/home/home.js

@@ -1,47 +1,62 @@
+// pages/home/home.js
+const { getCategoryAPI } = require('../../API/categories')
+const { getClassifyGoods } = require('../../API/classifyGoods')
 
 
-// pages/home/home.js
 Page({
 
     /**
-     * 页面初始数据
+     * 页面初始数据
      */
     data: {
-        commentPage: {
-            pageNum: 1,
-            //一个页面一次请求获取多少,展示多少
-            pageSize: 10
-        },
-        commentList: [],
+        //存放分类列表
+        classifyList: [],
+        //用于存放页面上划高度
+        scrollTop: 0,
     },
 
-    // init() {
-    //     getCommentList(this.commentPage).then(
-    //         (res) => {
-    //             // code message data
-    //             const {data} = res
-    //             this.setData({
-    //                 commentList : data
-    //             })
-    //         }
-    //     ).catch(
-    //         (err) => {
-    //             console.log(err);
-    //             //处理错误状态
-    //         }
-    //     ).finally(
-    //         () => {
-
-    //         }
-    //     )
-    // },
+    userTo() {
+        wx.switchTab({
+          url: '/pages/user/user',
+        })
+    },
+    classifyTo() {
+        wx.switchTab({//tabBar页面跳转要用wx.switchTab
+          url: '/pages/classify/classify',
+        })
+    },
+    searchTo() {
+        wx.navigateTo({
+          url: '/pages/search/search',
+        })
+    },
+    //获取点击分类的id
+    detailClassifyTo({ currentTarget }) {
+        const id = currentTarget.dataset.num;
+        wx.navigateTo({
+            url: '/pages/classify_detail/classify_detail?classify_id=' + id,
+        })
+    },
     /**
      * 生命周期函数--监听页面加载
      */
-    // onLoad(options) {
-    //     this.init()
-    // },
+    onLoad(options) {
+        this.getClassifyList();
+    },
+
+    getClassifyList() {
+        getCategoryAPI(this.data).then((data) => {
+            this.setData({
+                classifyList: data
+            })
+        })
+    },
 
+    getGoodsList() {
+        getClassifyGoods(this.data).then((data) => {
+            console.log(data);
+        })
+    },
     /**
      * 生命周期函数--监听页面初次渲染完成
      */
@@ -89,5 +104,17 @@ Page({
      */
     onShareAppMessage() {
 
+    },
+
+    /**
+     * 监听页面滑动
+     */
+    onPageScroll(data) {
+        // console.log(data.scrollTop);
+        this.setData({
+            scrollTop: data.scrollTop
+        })
     }
-})
+})
+
+

+ 3 - 1
fore-end/pages/home/home.json

@@ -1,3 +1,5 @@
 {
-    "usingComponents": {}
+    "usingComponents": {
+        "commodity_card": "/components/commodity_card/commodity_card"
+    }
 }

+ 54 - 1
fore-end/pages/home/home.wxml

@@ -1,2 +1,55 @@
 <!--pages/home/home.wxml-->
-<text>pages/home/home.wxml</text>
+<!-- 头部 -->
+<view class="head">
+    <view bind:tap="userTo">
+        <!-- 头像 -->
+        <view class="head-portrait-bg">
+            <van-image width="100rpx" height="100rpx" fit="cover" src="/assets/home_img/head_portrait.jpg" radius="20rpx"></van-image>
+        </view>
+        <!-- 昵称 -->
+        <view class="username">deter</view>
+    </view>
+    <!-- 消息提示 -->
+    <view>
+        <van-icon name="bell" custom-style="margin" class="head_bell" size="50rpx" info="9" color="var(--themeColor)"/>
+    </view>
+</view>
+<!-- 搜索框 -->
+<view class="search_box {{scrollTop > 85 ? 'addClass' : ''}}">
+    <input type="search" name="" placeholder="搜索..." class="search_text" bind:tap="searchTo"/>
+    <button class="search_button" plain="true">
+        <van-icon class="search_icon" name="search" size="50rpx"/>
+    </button>
+</view>
+
+<!-- 分类展示 -->
+<view class="categories">
+    <!-- categories -->
+    <view style="position: relative;">
+        <view class="text">分类</view>
+        <view class="color_block categories_block "></view>
+    </view>
+    <!-- 点击前往分类页面 -->
+    <view class="text_small" bind:tap="classifyTo">更多分类</view>
+</view>
+
+ <!-- 分类推荐 -->
+<scroll-view scroll-x style='display: flex;white-space:nowrap; margin-top: 80rpx;'>
+    <view class="categories_card" wx:for="{{classifyList}}" wx:for-item="item" wx:key="index">
+        <view bind:tap="detailClassifyTo" data-num='{{item.Id}}'>
+            <van-image width="75" height="75" radius="20rpx" src="{{item.Pic}}" />
+            <view class="name_show">{{item.Name}}</view>
+        </view>
+    </view>
+</scroll-view>
+
+<!-- 商品展示 -->
+<view style="position: relative;">
+    <view class="display_text text">推荐商品</view>
+    <view class="color_block recommend_block"></view>
+</view>
+
+<!-- 商品卡片 -->
+<commodity_card></commodity_card>
+
+<van-toast id="van-toast" />

+ 115 - 1
fore-end/pages/home/home.wxss

@@ -1 +1,115 @@
-/* pages/home/home.wxss */
+/* pages/home/home.wxss */
+/* 头部区域 */
+.head {
+    height: 130rpx;
+}
+
+.head-portrait-bg {
+    float: left;
+    width: 104rpx;
+    height: 104rpx;
+    background-color: #DDDEDF;
+    border-radius: 20rpx;
+}
+
+.head-portrait-img {
+    width: 100rpx;
+    height: 100rpx;
+    border-radius: 20rpx;
+}
+
+.username {
+    float: left;
+    width: 100rpx;
+    margin-top: 30rpx;
+    margin-left: 20rpx;
+    font-size: 18px;
+}
+
+.head_bell {
+    float: left;
+    margin-top: -75rpx;
+    margin-left: 650rpx;
+}
+/* ------------------------------ */
+
+/* 搜索栏 */
+.search_box {
+    width: 100%;
+    height: 80rpx;
+    background-color: #E8E7E7;
+    border-radius: 20rpx;
+}
+
+.addClass {
+    position: fixed;
+    top: 0rpx;
+    z-index: 100;
+    margin-right: 20rpx;
+}
+
+.search_text {
+    float: left;
+    padding-left: 15rpx;
+    padding-top: 15rpx;
+}
+
+.search_icon {
+    margin-bottom: 1rpx;
+}
+.search_button {
+    float: right;
+    width: 80rpx;
+    height: 80rpx;
+    margin-right: 10rpx;
+}
+/* 去除button边框 */
+button[plain]{ border:0 }
+/* ------------------------------ */
+
+/* 分类栏 */
+.categories {
+    margin-top: 18rpx;
+}
+
+.categories view:nth-child(1) {
+    float: left;
+    margin-right: 75rpx;
+}
+
+.categories view:nth-child(2) {
+    float: right;
+    margin-top: 12rpx;
+}
+
+.categories_block {
+    position: absolute;
+    top: 18rpx;
+}
+
+/* 分类卡片展示 */
+.categories_card {
+    display: inline-block;
+    margin-right: 10rpx;
+}
+
+.name_show {
+    position: absolute;
+    top: 93rpx;
+    width: 150rpx;
+    height: 60rpx;
+    background-color: #eeeeee;
+    opacity: 0.7;
+    text-align: center;
+    line-height: 60rpx;
+}
+/* ------------------------------ */
+
+/* 商品 */
+.recommend_block {
+    position: absolute;
+    width: 170rpx;
+    top: 32rpx
+}
+
+/* ------------------------------ */

+ 66 - 0
fore-end/pages/search/search.js

@@ -0,0 +1,66 @@
+// pages/search/search.js
+Page({
+
+    /**
+     * 页面的初始数据
+     */
+    data: {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面加载
+     */
+    onLoad(options) {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面初次渲染完成
+     */
+    onReady() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面显示
+     */
+    onShow() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面隐藏
+     */
+    onHide() {
+
+    },
+
+    /**
+     * 生命周期函数--监听页面卸载
+     */
+    onUnload() {
+
+    },
+
+    /**
+     * 页面相关事件处理函数--监听用户下拉动作
+     */
+    onPullDownRefresh() {
+
+    },
+
+    /**
+     * 页面上拉触底事件的处理函数
+     */
+    onReachBottom() {
+
+    },
+
+    /**
+     * 用户点击右上角分享
+     */
+    onShareAppMessage() {
+
+    }
+})

+ 6 - 0
fore-end/pages/search/search.json

@@ -0,0 +1,6 @@
+{
+    "usingComponents": {
+        "van-search": "@vant/weapp/search/index",
+        "avater": "/components/avatar/avatar"
+    }
+}

+ 43 - 0
fore-end/pages/search/search.wxml

@@ -0,0 +1,43 @@
+<!--pages/search/search.wxml-->
+<!-- 搜素框 -->
+<view class="search_box">
+    <view class="base_search">
+        <van-icon name="search" size="50rpx" color="#696969" style="margin-top: 15rpx; margin-left: -430rpx;"/>
+        <input type="search" name="" placeholder="搜索..." class="search_text"/>
+    </view>
+    <!-- 搜索按钮 -->
+    <view class="search_button">搜索</view>
+</view>
+
+<!-- 搜索历史 -->
+<view class="history">
+    <view class="history_title">搜索历史</view>
+    <!-- 清空 -->
+    <view class="empty">
+        <van-icon name="delete-o" />\t
+        <text>清空</text>
+    </view>
+    <!-- 历史记录展示 -->
+    <view class="history_show">
+        <view class="history_card">
+            <text space="nbsp">  iPhone手机  </text>
+        </view>
+    </view>
+</view>
+
+<!-- 猜你喜欢界面 -->
+<view class="prefer">
+    <!-- 标题 -->
+    <view style="font-size: 35rpx; margin-left: 8rpx; color: #494545;">猜你喜欢</view>
+    <!-- 刷新 -->
+    <view class="refresh">
+        <van-icon name="replay" color="#494545"/>
+    </view>
+    <!-- 商品卡片展示 -->
+    <view class="commodity">
+        <view class="commodity_card">
+            <image src="https://img.js.design/assets/smartFill/img352164da74c4b8.jpeg" mode="" class="commodity_img"/>
+            <avater class="avater"></avater>
+        </view>
+    </view>
+</view>

+ 87 - 0
fore-end/pages/search/search.wxss

@@ -0,0 +1,87 @@
+/* pages/search/search.wxss */
+.base_search {
+    width: 80%;
+    height: 80rpx;
+    background-color: #E8E7E7;
+    border-radius: 20rpx;
+}
+
+.search_text {
+    float: left;
+    padding-left: 95rpx;
+    padding-top: 15rpx;
+}
+
+.search_button {
+    float: right;
+    margin-top: -64rpx;
+    margin-right: 20rpx;
+    font-size: 35rpx;
+    color: #494545;
+}
+
+/* 搜索历史 */
+.history {
+    width: 100%;
+    height: 200rpx;
+    margin-top: 20rpx;
+    color: #494545;
+}
+
+.history_title {
+    float: left;
+    margin-left: 8rpx;
+}
+
+.empty {
+    margin-left: 580rpx;
+}
+
+.history_show {
+    width: 100%;
+    height: 100rpx;
+    margin-top: 20rpx;
+}
+
+.history_card {
+    width: fit-content;
+    height: 65rpx;
+    background-color: #E8E7E7;
+    border-radius: 20rpx;
+    line-height: 65rpx;
+}
+
+/* 猜你喜欢 */
+.refresh {
+    float: right;
+    margin-top: -35rpx;
+}
+
+.commodity {
+    margin-top: 20rpx;
+    display: flex;
+    flex-wrap: wrap;
+}
+
+.commodity_card {
+    top: 10rpx;
+    position: relative;
+    display: flex;
+    width: 46%;
+    height: 380rpx;
+    padding: 10rpx;
+    justify-content: center;
+}
+
+.commodity_img {
+    height: 350rpx;
+    border-radius: 20rpx;
+}
+
+.avater {
+    position: absolute;
+    top: -160rpx;
+    left: 15rpx;
+    width: 150rpx;
+    color: white;
+}

+ 1 - 10
fore-end/pages/user/user.js

@@ -22,16 +22,7 @@ Page({
      * 生命周期函数--监听页面加载
      */
     onLoad(options) {
-		
-		// http('/user/info',infoOption).then(res => {
-		// 	console.log(res);
-		// 	this.setData({
-		// 		avatarUrl: 	res.avatar,
-		// 		nickName: res.name,
-		// 		personalSignatrue: res.sign,
-		// 	})
-		// })
-			
+
     },
 
     /**

+ 1 - 0
fore-end/pages/user/user.wxss

@@ -1,3 +1,4 @@
+<<<<<<< HEAD
 /* pages/user/user.wxss */
 page{
 	display: flex;

+ 9 - 0
fore-end/project.config.json

@@ -39,6 +39,15 @@
             "outputPath": ""
         },
         "ignoreUploadUnusedFiles": true
+        "setting": {
+            "packNpmManually": true,
+            "packNpmRelationList": [
+                {
+                    "packageJsonPath": "./package.json",
+                    "miniprogramNpmDistDir": "./miniprogram_npm"
+                }
+            ]
+        }
     },
     "compileType": "miniprogram",
     "libVersion": "2.19.4",

+ 21 - 1
fore-end/project.private.config.json

@@ -1,8 +1,28 @@
 {
     "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
-    "projectname": "WeChatUse",
+    "projectname": "WeChatTrading",
     "setting": {
         "compileHotReLoad": false,
         "urlCheck": false
+    },
+    "condition": {
+        "miniprogram": {
+            "list": [
+                {
+                    "name": "",
+                    "pathName": "pages/home/home",
+                    "query": "",
+                    "launchMode": "default",
+                    "scene": null
+                },
+                {
+                    "name": "",
+                    "pathName": "pages/classify_detail/classify_detail",
+                    "query": "classify_id=1",
+                    "launchMode": "default",
+                    "scene": null
+                }
+            ]
+        }
     }
 }

+ 4 - 6
fore-end/utils/util.js

@@ -24,20 +24,19 @@ function http(url, option) {
         wx.request({
           url: baseURL + url,
 		  ...option,
-		  
+
           success(res) {
-			//   const {data,code,message} = JSON.parse(res.data);
 				const {data,code,message} = res.data;
 			  if(code == 200){
 				// resolve(data);
 				resolve(res);
-			  }else{
-				Toast.fail(message);
+			  }else if(code == 500){
 				reject(res);
+			  }else{
+				  reject(res);
 			  }
           },
           fail(err) {
-			Toast.fail('系统异常');
             console.log(err);
             reject(err);
           }
@@ -86,7 +85,6 @@ function chooseImage(){
 	})
 }
 
-
 module.exports = {
     formatTime,
 	http,