yann 5 ماه پیش
والد
کامیت
5a41705d87

+ 8 - 0
components/header/header.js

@@ -10,6 +10,14 @@ Component({
     data: {
       index:0
     },
+    observers:{
+        // 是否是预售、新品、上架
+        position:function(value){
+           this.setData({ 
+            specialProds:value === "new" || value === "hot" || value === "presale"
+           })
+        }
+    },
     methods: {
         backHome(){
             wx.navigateBack(-1);

+ 16 - 2
components/header/header.wxml

@@ -1,13 +1,27 @@
 <!--components/header/header.wxml-->
 <view class="header">
+
     <view class="header-bg"></view>
+
     <view class="logo logo-at-left">
+
+      <!-- 首页logo -->
       <image src="/images/index/logo.png" class="logo-image" wx:if="{{position === 'index'}}" bindtap="backHome"></image>
-      <image src="/images/mall/back.png" mode="" wx:else="{{position != 'index'}}" class="back" bindtap="backHome"/>
+
+      <!-- 返回按钮 -->
+      <image src="/images/mall/back.png" mode="" wx:if="{{specialProds}}" class="back" bindtap="backHome"/>
+
+      <!-- 我的logo -->
+      <image src="/images/my/Qlogo.png" mode="" class="my-logo" wx:if="{{position === 'my'}}"/>
+      
     </view>
-    <view class="mark-icon" wx:if="{{position != 'index'}}">
+
+    <!-- 热门/上架/预售logo -->
+    <view class="mark-icon" wx:if="{{specialProds}}">
        <image class="mark-image" src="/images/mall/{{position}}.png" mode="widthFix"/>
     </view>
+
+    <!-- 首页显示内容 -->
     <view class="search-and-cart" wx:if="{{position === 'index'}}">
       <view class="search">
         <image src="/images/index/search.png" class="search-icon"></image>

+ 4 - 0
components/header/header.wxss

@@ -60,4 +60,8 @@
     right: 30rpx;
     height: 65rpx;
     width: 146rpx;
+  }
+  .header .my-logo{
+    width: 305rpx;
+    height: 114rpx;
   }

BIN
images/my/Qlogo.png


BIN
images/my/addressIcon.png


+ 36 - 3
pages/my/personalCenter/personalCenter.js

@@ -1,3 +1,5 @@
+import { API } from "../../../service/api";
+
 // pages/my/personalCenter/personalCenter.js
 Page({
 
@@ -5,9 +7,40 @@ Page({
    * 页面的初始数据
    */
   data: {
-
+    avatarUrl:'https://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRna42FI242Lcia07jQodd2FJGIYQfG0LAJGFxM4FbnQP6yfMxBgJ0F3YRqJCJ1aPAK2dQagdusBZg/0',
+    nickName:''
+  },
+  // 获取用户信息
+  getUserInfo(){
+      API.getUserInfo().then(res=>{
+          let {avatarUrl,nickName} = res.userProfileDTO;
+          this.setData({
+              avatarUrl:avatarUrl?avatarUrl:this.data.avatarUrl,
+              nickName
+          })
+      })
+  },
+  // 修改头像回调
+  onChooseAvatar(e) {
+      console.log(e);
+    const { avatarUrl } = e.detail 
+    API.updateUserAvater({avatarBase64:avatarUrl}).then(res=>{
+        let {avatarUrl} = res.userProfileDTO;
+        this.setData({
+            avatarUrl
+        })
+    })
+  },
+  // 监听昵称的输入
+  inputChange(name){
+    let nickName = name.detail.value;
+    API.updateUserNickname({nickName}).then(res=>{
+       let {nickName} = res.userProfileDTO;
+       this.setData({
+         nickName
+       })
+    })
   },
-
   /**
    * 生命周期函数--监听页面加载
    */
@@ -26,7 +59,7 @@ Page({
    * 生命周期函数--监听页面显示
    */
   onShow() {
-
+    this.getUserInfo();
   },
 
   /**

+ 4 - 1
pages/my/personalCenter/personalCenter.json

@@ -1,3 +1,6 @@
 {
-  "usingComponents": {}
+  "navigationStyle": "custom",
+  "usingComponents": {
+    "header":"/components/header/header"
+  }
 }

+ 29 - 1
pages/my/personalCenter/personalCenter.wxml

@@ -1,2 +1,30 @@
 <!--pages/my/personalCenter/personalCenter.wxml-->
-<text>pages/my/personalCenter/personalCenter.wxml</text>
+<!-- 头部 -->
+<header position="my"></header>
+
+<!-- 内容 -->
+<view class="content">
+    <view class="userInfo">
+        <button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
+            <image class="avatar" src="{{avatarUrl}}"></image>
+        </button> 
+        <input type="nickname" class="weui-input" placeholder="还没有昵称" value="{{nickName}}" bindinput="inputChange"/>
+    </view>
+
+    <view class="myOrder">
+       <text class="title">我的订单</text>
+       <view class="operate">
+           <text>全部订单</text>
+           <text>待发货</text>
+           <text>待收货</text>
+       </view>
+       <view class="waistline"></view>
+       <view class="navigation">
+            <view class="left">
+                <image class="navIcon" src="/images/my/addressIcon.png" mode="widthFix"/>
+                <text class="name">地 址</text>
+            </view>
+            <image class="gonav" src="/images/mall/back.png" mode="widthFix"/>
+       </view>
+    </view>
+</view>

+ 75 - 1
pages/my/personalCenter/personalCenter.wxss

@@ -1 +1,75 @@
-/* pages/my/personalCenter/personalCenter.wxss */
+/* pages/my/personalCenter/personalCenter.wxss */
+.content{
+    height: 100vh;
+    background: #CFEAE5;
+    margin-top: -38rpx;
+    overflow: hidden;
+}
+.content .userInfo{
+    margin-top: 5rpx;
+}
+.content .avatar-wrapper{
+    width: 97rpx;
+    height: 97rpx;
+    border-radius: 50%;
+    padding: 0;
+    margin: 0 auto;
+}
+.content .avatar-wrapper .avatar{
+    width: 97rpx;
+    height: 97rpx;
+}
+.content .weui-input{
+    max-width: 100%;
+    color: #000000;
+    font-weight: 500;
+    font-size: 40rpx;
+    text-align: center;
+    margin-top: 30rpx;
+}
+
+/* 我的订单 */
+.content .myOrder{
+    width: calc(100% - 80rpx);
+    margin: 40rpx auto 0 auto;
+    background: #FFFFFF;
+    border-radius: 30rpx;
+    overflow: hidden;
+}
+.content .myOrder .title{
+    margin: 30rpx 0 0 40rpx;
+    display: inline-block;
+}
+.content .myOrder .operate{
+    display: flex;
+}
+.content .myOrder .operate text{
+    flex: 1;
+    text-align: center;
+    border-right: 2rpx solid #CCCCCC;
+    line-height: 50rpx;
+    margin: 30rpx 0;
+}
+.content .myOrder .waistline{
+    height: 10rpx;
+    background: #CFEAE5;
+}
+.content .myOrder .navigation{
+    height: 150rpx;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+    padding: 0 30rpx;
+}
+.content .myOrder .navigation .navIcon{
+    width: 100rpx;
+    vertical-align: middle;
+    margin-right: 20rpx;
+}
+.content .myOrder .navigation .name{
+    letter-spacing: 20rpx;
+}
+.content .myOrder .navigation .gonav{
+    width: 30rpx;
+    transform: rotate(180deg);
+}

+ 20 - 1
pages/order/confirmOrder/confirmOrder.js

@@ -39,9 +39,28 @@ Page({
         userAddressId:this.data.address.userAddressId
       }
       API.createOrder(data).then(res=>{
-
+        this.requestPayment(res.orderPaySignDTO);
       })
   },
+  // 拉起微信支付
+  requestPayment(paymentParams) {
+    wx.requestPayment({
+      timeStamp: paymentParams.timeStamp,
+      nonceStr: paymentParams.nonceStr,
+      package: paymentParams.prepayId,
+      signType: "MD5",
+      paySign: paymentParams.wxpaySign,
+      success(res) {
+        console.log('支付成功', res);
+        wx.showToast({ title: '支付成功' });
+        // 跳转到订单详情或返回
+      },
+      fail(err) {
+        console.error('支付失败', err);
+        wx.showToast({ title: '支付取消', icon: 'none' });
+      }
+    });
+  },
   /**
    * 生命周期函数--监听页面加载
    */

+ 12 - 0
service/api.js

@@ -278,4 +278,16 @@ export const API = {
     createOrder: function(playload){
         return http.post("/api/store/order/create",playload)
     },
+    // 获取用户信息
+    getUserInfo: function(){
+        return http.get("/api/store/user-profile",{})
+    },
+    // 更新用户头像
+    updateUserAvater: function(playload){
+        return http.post("/api/store/user-profile/upload-avatar",playload);
+    },
+    // 更新用户昵称
+    updateUserNickname: function(playload){
+        return http.post("/api/store/user-profile/upload-nickname",playload)
+    }
 }