黄琪勇 5 mēneši atpakaļ
vecāks
revīzija
5738050d5d

+ 1 - 1
miniprogram/config.ts

@@ -1,4 +1,4 @@
-const environmentVariable = "dev";
+const environmentVariable = "test";
 const apiUrlInfo = {
   dev: "https://dev.kt.colexiu.com",
   test: "https://test.kt.colexiu.com",

+ 20 - 13
miniprogram/pages/address/addAddress.less

@@ -11,21 +11,19 @@
 
   .popup-container {
     position: fixed;
+    bottom: 0;
     left: 0;
     right: 0;
-    top: 50%;
-    transform: translateY(-50%);
     z-index: 999999;
-    margin: 0 40rpx;
     padding: 40rpx;
     background: #FFFFFF;
-    border-radius: 32rpx;
+    border-radius: 32rpx 32rpx 0rpx 0rpx;
 
     .tit {
       font-weight: 600;
-      font-size: 34rpx;
+      font-size: 36rpx;
       color: #131415;
-      line-height: 44rpx;
+      line-height: 50rpx;
       text-align: center;
     }
 
@@ -40,22 +38,31 @@
         border-bottom: 2rpx solid #F2F2F2;
 
         .fromTit {
+          width: 168rpx;
           flex-shrink: 0;
-          font-weight: 600;
-          font-size: 28rpx;
+          font-weight: 400;
+          font-size: 30rpx;
           color: #666666;
-          line-height: 40rpx;
+          line-height: 42rpx;
           position: relative;
         }
 
         .fromIpt {
           margin-left: 20rpx;
           flex-grow: 1;
+          .index--van-cell{
+            padding-right: 0;
+          }
+          .index--van-cell__right-icon-wrap {
+            margin-right: -6rpx !important;
+            color: #cccccc !important;
+          }
           .van-field {
             padding: 0;
             --cell-line-height: 80rpx;
 
             .van-cell__right-icon {
+              margin-right: -6rpx;
               color: #cccccc;
             }
           }
@@ -72,13 +79,13 @@
     }
 
     .closeBtn {
-      right: 26rpx;
-      top: 30rpx;
+      right: 24rpx;
+      top: 34rpx;
       position: absolute;
       width: 64rpx;
       height: 64rpx;
-      background: url("https://oss.dayaedu.com/ktyq/1739246513167.png") no-repeat;
-      background-size: 52rpx 52rpx;
+      background: url("https://oss.dayaedu.com/ktyq/1739847605228.png") no-repeat;
+      background-size: 32rpx 32rpx;
       background-position: center center;
     }
 

+ 4 - 8
miniprogram/pages/address/addAddress.ts

@@ -227,10 +227,6 @@ Component({
             defaultStatus: false,
             postCode: "",
           })
-          wx.showToast({
-            title: '保存成功',
-            icon: 'none'
-          })
         } else {
           const { data } = await api_userReceiveAddressSave({
             phoneNumber: params.phoneNumber,
@@ -243,12 +239,12 @@ Component({
             postCode: "",
           })
           id = data.data
-          wx.showToast({
-            title: '保存成功',
-            icon: 'none'
-          })
         }
         wx.hideLoading()
+        wx.showToast({
+          title: '保存成功',
+          icon: 'none'
+        })
         this.triggerEvent('addAddress', { addressInfo: { id, name: params.name, phoneNumber: params.phoneNumber, addressDes: params.provinceName + params.cityName + (params.regionName || "") + params.detailAddress } }, {})
         this.onDialogClose()
       } catch {

+ 7 - 7
miniprogram/pages/address/addAddress.wxml

@@ -2,30 +2,30 @@
   <view class="popup-mask" bind:tap="onDialogClose"></view>
   <view class="popup-container">
     <view class="closeBtn" bind:tap="onDialogClose"></view>
-    <view class="tit">{{ editId?"编辑收货信息":"新建收货地址" }}</view>
+    <view class="tit">{{ editId?"编辑收货信息":"添加收货地址" }}</view>
     <view class="fromBox">
       <view class="fromCon">
         <text class="fromTit">收货人</text>
         <view class="fromIpt">
-          <van-field maxlength="11" model:value="{{ name }}" input-align="right" placeholder="请填写收货人姓名" border="{{ false }}" />
+          <van-field maxlength="11" model:value="{{ name }}" input-align="left" placeholder="请输入收货人姓名" border="{{ false }}" />
         </view>
       </view>
       <view class="fromCon">
-        <text class="fromTit">联系电话</text>
+        <text class="fromTit">手机号码</text>
         <view class="fromIpt">
-          <van-field maxlength="11" model:value="{{ phoneNumber }}" type="{{ 'number' }}" input-align="right" placeholder="请输入联系电话" border="{{ false }}" />
+          <van-field maxlength="11" model:value="{{ phoneNumber }}" type="{{ 'number' }}" input-align="left" placeholder="请输入手机号码" border="{{ false }}" />
         </view>
       </view>
       <view class="fromCon">
-        <text class="fromTit">选择地区</text>
+        <text class="fromTit">所在地区</text>
         <view class="fromIpt">
-          <van-field placeholder="请选择地区" value="{{  provinceName  + cityName  + regionName}}" input-align="right" bind:tap="onShowAreaList" border="{{ false }}" is-link readonly />
+          <van-field placeholder="请选择您的所在地区" value="{{  provinceName  + cityName  + regionName}}" input-align="left" bind:tap="onShowAreaList" border="{{ false }}" is-link readonly />
         </view>
       </view>
       <view class="fromCon">
         <text class="fromTit">详细地址</text>
         <view class="fromIpt">
-          <van-field maxlength="100" autosize type="textarea" model:value="{{ detailAddress }}" input-align="right" placeholder="请填写街道、小区、门牌号等信息" border="{{ false }}" />
+          <van-field maxlength="100" autosize="{{ { maxHeight: 50} }}" type="textarea" model:value="{{ detailAddress }}" input-align="left" placeholder="请输入详细地址与门牌号等" border="{{ false }}" />
         </view>
       </view>
     </view>

+ 2 - 2
miniprogram/pages/download/download.ts

@@ -87,9 +87,9 @@ Page({
    */
   onShareAppMessage() {
     return {
-      title: '音乐数字AI器乐工具',
+      title: ' 器乐数字ai助手',
       path: '/pages/index/index',
-      imageUrl: 'https://oss.dayaedu.com/ktyq/1733311074676.png'
+      imageUrl: 'https://oss.dayaedu.com/ktyq/1739929620914.png'
     }
   }
 })

BIN
miniprogram/pages/index/images/editIcon.png


+ 134 - 13
miniprogram/pages/index/index.less

@@ -181,7 +181,6 @@ page {
       color: #131415;
       line-height: 50rpx;
       text-align: center;
-      margin-bottom: 40rpx;
     }
 
     .iconClose {
@@ -200,7 +199,7 @@ page {
         width: 160rpx;
         height: 160rpx;
         flex-shrink: 0;
-        margin-right: 32rpx;
+        margin-right: 24rpx;
         border-radius: 6px;
         overflow: hidden;
 
@@ -250,7 +249,7 @@ page {
           .originPrice {
             margin-left: 12rpx;
             font-weight: 400;
-            font-size: 28rpx;
+            font-size: 24rpx;
             color: #AAAAAA;
           }
         }
@@ -258,9 +257,9 @@ page {
         .current-s {
           margin-top: 16rpx;
           font-weight: 400;
-          font-size: 26rpx;
+          font-size: 28rpx;
           color: #777777;
-          line-height: 36rpx;
+          line-height: 40rpx;
           width: 100%;
           white-space: nowrap;
           overflow: hidden;
@@ -281,14 +280,15 @@ page {
     }
 
     .memberBox {
-      margin: 48rpx 26rpx;
+      margin: 40rpx 26rpx 48rpx;
       background: #F5F6F7;
       border-radius: 20rpx;
       border: 3rpx solid transparent;
 
-      &.showMemberInfoTip{
+      &.showMemberInfoTip {
         border-color: #FD4502;
       }
+
       .memberCon {
         padding: 24rpx;
         display: flex;
@@ -297,8 +297,8 @@ page {
 
         .memberImg {
           margin-top: 4rpx;
-          width: 44rpx;
-          height: 44rpx;
+          width: 28rpx;
+          height: 32rpx;
           flex-shrink: 0;
         }
 
@@ -358,11 +358,11 @@ page {
 
     .btnSections {
       margin-top: 20rpx;
-      padding: 0 26rpx;
+      padding: 0 32rpx;
 
       button {
         width: 100%;
-        line-height: 88rpx;
+        line-height: 84rpx;
         background: url("https://oss.dayaedu.com/ktyq/1739528494657.png") no-repeat;
         background-size: 100% 100%;
         font-weight: 500;
@@ -441,9 +441,9 @@ page {
           }
 
           &.selected {
-            background: rgba(255,240,238,0.5);
+            background: rgba(255, 240, 238, 0.5);
             color: #FE462E;
-            border-color: rgba(254,70,46,0.5);
+            border-color: rgba(254, 70, 46, 0.5);
           }
 
           .iconSale {
@@ -459,6 +459,127 @@ page {
   }
 }
 
+.memberPopup {
+  z-index: 10;
+
+  .popup-mask {
+    z-index: 11;
+  }
+
+  .popup-container {
+    z-index: 11;
+
+    .memberListCon {
+      margin-top: 40rpx;
+      overflow: hidden;
+      max-height: 500rpx;
+      min-height: 400rpx;
+
+      .memberInfo {
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        background: #F6F6F6;
+        border-radius: 20rpx;
+        padding: 24rpx 18rpx 32rpx 24rpx;
+        margin: 0 26rpx 24rpx;
+        border: 3rpx solid transparent;
+
+        &.active {
+          background: linear-gradient( 315deg, #FFEEE9 0%, #FFF6EC 100%);
+          border-color: rgba(255,170,157,0.56);
+        }
+
+        &:last-child {
+          margin-bottom: 40rpx;
+        }
+
+        .radioImg {
+          flex-shrink: 0;
+          width: 30rpx;
+          height: 30rpx;
+        }
+
+        .infoConBox {
+          margin: 0 10rpx 0 24rpx;
+          flex-grow: 1;
+          overflow: hidden;
+
+          .infoCon {
+            display: flex;
+            align-items: center;
+            font-weight: 600;
+            font-size: 28rpx;
+            color: #131415;
+            line-height: 40rpx;
+
+            .name {
+              white-space: nowrap;
+              overflow: hidden;
+              text-overflow: ellipsis;
+            }
+
+            .phone {
+              flex-shrink: 0;
+              margin-left: 16rpx;
+            }
+          }
+
+          .schoolInfoCon {
+            margin-top: 14rpx;
+            line-height: 1;
+
+            .schoolInfoDes {
+              font-weight: 400;
+              font-size: 24rpx;
+              color: rgba(19, 20, 21, 0.4);
+              line-height: 32rpx;
+              word-break: break-all;
+            }
+          }
+        }
+
+        .operate {
+          width: 62rpx;
+          height: 62rpx;
+          display: flex;
+          justify-content: center;
+          align-items: center;
+          flex-shrink: 0;
+
+          image {
+            width: 34rpx;
+            height: 34rpx;
+          }
+        }
+      }
+    }
+
+    .btnSections {
+      margin-top: 20rpx;
+      padding: 0 32rpx;
+
+      button {
+        width: 100%;
+        line-height: 84rpx;
+        background: url("https://oss.dayaedu.com/ktyq/1739528494657.png") no-repeat;
+        background-size: 100% 100%;
+        font-weight: 500;
+        font-size: 32rpx;
+        color: #FFFFFF;
+        padding-top: 0;
+        padding-bottom: 0;
+        border-radius: 78rpx;
+
+        &[disabled][type=primary] {
+          color: #fff;
+          opacity: 0.7;
+        }
+      }
+    }
+  }
+}
+
 .showMoreContainer {
   position: fixed;
   bottom: 0;

+ 61 - 13
miniprogram/pages/index/index.ts

@@ -1,8 +1,19 @@
 // index.ts
 
-import { api_shopProduct, api_shopInstruments, api_getUserBeneficiaryPage } from "../../api/login";
+import { api_shopProduct, api_shopInstruments, api_getUserBeneficiaryPage, api_userBeneficiaryRemove } from "../../api/login";
 import { debounce } from '../../utils/util'
 
+const GRADE_ENUM = {
+  '1': '一年级',
+  '2': '二年级',
+  '3': '三年级',
+  '4': '四年级',
+  '5': '五年级',
+  '6': '六年级',
+  '7': '七年级',
+  '8': '八年级',
+  '9': '九年级'
+} as any
 // 获取应用实例
 const app = getApp<IAppOption>()
 // pages/orders/orders.ts
@@ -29,6 +40,8 @@ Page({
     isOverSaled: false, // 是否所有商品都没有库存
     selected: {} as any,
     selectedInstruments: {} as any,
+    memberPopupShow: false,
+    memberList: [],
     memberInfo: {} as any, // 会员信息
     isShowMemberInfoTip: false, // 会员信息提示
     isFromPreviewImage: false,
@@ -82,12 +95,12 @@ Page({
   // 格式化类型
   formatPeriod(num: number, type: string) {
     const template: any = {
-      DAY: "天",
-      MONTH: "月",
-      YEAR: "年"
+      DAY: "天",
+      MONTH: "月",
+      YEAR: "年"
     }
     if (type === "YEAR" && num >= 99) {
-      return '永久'
+      return '永久'
     }
     return num + template[type]
   },
@@ -147,6 +160,29 @@ Page({
       popupShow: false
     })
   },
+  onAdd() {
+    wx.navigateTo({
+      url: `/pages/member/addMember`
+    });
+  },
+  onEdit(e: any) {
+    const { dataset } = e.currentTarget
+    wx.navigateTo({
+      url: `/pages/member/addMember?id=${dataset.id}`
+    });
+  },
+  onCloseMember() {
+    this.setData({
+      memberPopupShow: false
+    })
+  },
+  onSelect(e: any) {
+    const { dataset } = e.currentTarget
+    const item = dataset.item;
+    // api_userBeneficiaryRemove(item.id)
+    // return
+    this.setData({ memberInfo: item ? { id: item.id, name: item.name, phone: item.phone, schoolInfo: item.provinceName + item.cityName + (item.regionName || "") + item.schoolAreaName + GRADE_ENUM[item.currentGradeNum] + item.currentClass + "班" } : {}, memberPopupShow: false })
+  },
   async onMemberInfo() {
     this.setData({
       isShowMemberInfoTip: false
@@ -156,9 +192,10 @@ Page({
       const pageRows = resData?.data?.data?.rows || []
       // 当有权益人的时候跳转到权益人选择列表页面,当没有权益人的时候到添加权益人页面
       if (pageRows.length) {
-        wx.navigateTo({
-          url: `/pages/member/memberList?id=${this.data.memberInfo.id}`
-        });
+        this.setData({
+          memberPopupShow: true,
+          memberList: pageRows
+        })
       } else {
         // 当redirectUrl等于index的时候证明是首次添加,需要给上一个页面
         wx.navigateTo({
@@ -230,7 +267,7 @@ Page({
   /**
    * 生命周期函数--监听页面显示
    */
-  onShow() {
+  async onShow() {
     this.initPosInfo()
     if (!this.data.isFromPreviewImage && !this.data.popupShow) {
       this.onInit()
@@ -242,6 +279,17 @@ Page({
         isFromPreviewImage: false
       })
     }
+    if (this.data.memberPopupShow) {
+      try {
+        const resData = await api_getUserBeneficiaryPage()
+        const pageRows = resData?.data?.data?.rows || []
+        this.setData({
+          memberList: pageRows
+        })
+      } catch (e) {
+        console.log(e, 'e')
+      }
+    }
     this.setData({
       serviceShow: true
     })
@@ -316,16 +364,16 @@ Page({
   },
   onShareAppMessage() {
     return {
-      title: '音乐数字AI器乐工具',
+      title: ' 器乐数字ai助手',
       path: '/pages/index/index',
-      imageUrl: 'https://oss.dayaedu.com/ktyq/1733311074676.png'
+      imageUrl: 'https://oss.dayaedu.com/ktyq/1739929620914.png'
     }
   },
   onShareTimeline() {
     return {
-      title: '音乐数字AI器乐工具',
+      title: ' 器乐数字ai助手',
       path: '/pages/index/index',
-      imageUrl: 'https://oss.dayaedu.com/ktyq/1733311074676.png'
+      imageUrl: 'https://oss.dayaedu.com/ktyq/1739929620914.png'
     }
   }
 })

+ 42 - 2
miniprogram/pages/index/index.wxml

@@ -89,7 +89,35 @@
         <view class="btnSections"><button type="primary" disabled="{{ isOverSaled }}" bind:tap="onSubmit">立即获取</button></view>
       </view>
     </view>
-
+    <view class="popup-section memberPopup" wx:if="{{memberPopupShow}}">
+      <view class="popup-mask" bind:tap="onCloseMember"></view>
+      <view class="popup-container">
+        <view class="topTit">选择会员</view>
+        <image bind:tap="onCloseMember" src="./images/icon-close.png" class="iconClose"></image>
+        <scroll-view scroll-y class="memberListCon">
+          <view wx:for="{{ memberList }}" wx:key="index" bind:tap="onSelect" data-item="{{ item }}" class="memberInfo {{ item.id === memberInfo.id?'active':'' }}">
+            <image class="radioImg" wx:if="{{item.id === memberInfo.id}}" src="../member/images/radioAct.png"></image>
+            <image class="radioImg" wx:else src="../member/images/radio.png"></image>
+            <view class="infoConBox">
+              <view class="infoCon">
+                <text class="name">{{item.name}}</text>
+                <text class="phone">{{item.phone}}</text>
+              </view>
+              <view class="schoolInfoCon">
+                <text class="schoolInfoDes">{{
+                  item.provinceName + item.cityName + item.regionName + item.schoolAreaName  + my.GRADE_ENUM[item.currentGradeNum] + item.currentClass + "班"
+                  }}
+                </text>
+              </view>
+            </view>
+            <view class="operate" catch:tap="onEdit" data-id="{{ item.id }}">
+              <image src="./images/editIcon.png"></image>
+            </view>
+          </view>
+        </scroll-view>
+        <view class="btnSections"><button type="primary" bind:tap="onAdd">新建会员信息</button></view>
+      </view>
+    </view>
     <!-- <view class="showMoreContainer {{ !isShowOperation ? '' : 'hide' }}">
       <image src="./images/icon-up-scroll.png" class="iconUpScroll" />
     </view> -->
@@ -103,7 +131,19 @@
   var formatValue = function (value) {
     return parseFloat(value).toFixed(2);
   }
+  var GRADE_ENUM = {
+    '1': '一年级',
+    '2': '二年级',
+    '3': '三年级',
+    '4': '四年级',
+    '5': '五年级',
+    '6': '六年级',
+    '7': '七年级',
+    '8': '八年级',
+    '9': '九年级'
+  }
   module.exports = {
-    formatValue: formatValue
+    formatValue: formatValue,
+    GRADE_ENUM: GRADE_ENUM
   }
 </wxs>

+ 2 - 2
miniprogram/pages/login/login.ts

@@ -144,9 +144,9 @@ Page({
    */
   onShareAppMessage() {
     return {
-      title: '音乐数字AI器乐工具',
+      title: ' 器乐数字ai助手',
       path: '/pages/index/index',
-      imageUrl: 'https://oss.dayaedu.com/ktyq/1733311074676.png'
+      imageUrl: 'https://oss.dayaedu.com/ktyq/1739929620914.png'
     }
   }
 })

+ 10 - 3
miniprogram/pages/member/addMember.less

@@ -103,12 +103,19 @@
         .fromIpt {
           margin-left: 48rpx;
           flex-grow: 1;
-
+          .index--van-cell{
+            padding-right: 0;
+          }
+          .index--van-cell__right-icon-wrap {
+            margin-right: -6rpx !important;
+            color: #cccccc !important;
+          }
           .van-field {
             padding: 0;
             --cell-line-height: 80rpx;
 
             .van-cell__right-icon {
+              margin-right: -6rpx;
               color: #cccccc;
             }
           }
@@ -286,7 +293,7 @@
     align-items: center;
 
     image {
-      width: 225rpx;
+      width: 216rpx;
       height: 150rpx;
     }
 
@@ -296,7 +303,7 @@
       color: #AAAAAA;
       line-height: 40rpx;
       text-align: center;
-      padding-top: -24rpx;
+      margin-top: -24rpx;
     }
   }
 }

+ 17 - 31
miniprogram/pages/member/addMember.ts

@@ -69,7 +69,6 @@ Page({
     showSchool: false,
     schoolLoading: false,
     schoolAreaList: [] as any,
-    tempChangeSchoolAreaId: '', // 临时改变的学校id
     schoolAreaId: '', //学校
     schoolAreaName: '',
     schoolAreaIndex: 0,
@@ -137,10 +136,6 @@ Page({
         const schoolAreaIndex = this.data.schoolAreaList.findIndex(((item: any) => {
           return item.value === this.data.schoolAreaId
         }))
-        // 获取学校列表之后 需要给tempChangeSchoolAreaId赋值 因为tempChangeSchoolAreaId默认选中第一个
-        this.setData({
-          tempChangeSchoolAreaId: params.schoolAreaId
-        })
         // 筛选出年级 赋值班级
         const gradeIndex = (this.data.gradeList[0]?.values || []).findIndex((item: any) => {
           return item.value === params.currentGradeNum
@@ -210,7 +205,6 @@ Page({
       showArea: false,
 
       searchName: "",
-      tempChangeSchoolAreaId: '',
       schoolAreaId: '',
       schoolAreaName: '',
       schoolAreaIndex: 0,
@@ -301,12 +295,6 @@ Page({
       showSchool: false
     })
   },
-  onChangeSchool(e: any) {
-    const { value } = e.detail.value
-    this.setData({
-      tempChangeSchoolAreaId: value
-    })
-  },
   onSearchChange(e: any) {
     this.setData({
       searchName: e.detail
@@ -317,14 +305,16 @@ Page({
   },
   /** 确定选择学校 */
   onSubmitSchool() {
-    if (!this.data.tempChangeSchoolAreaId) {
+    const schoolAreaVal = this.selectComponent("#schoolAreaId")?.getValues() || []
+    const schoolAreaId = schoolAreaVal[0]?.value
+    if (!schoolAreaId) {
       wx.showToast({
         title: '未选中值',
         icon: 'none'
       })
       return
     }
-    const schoolAreaIndex = this.data.schoolAreaList.findIndex((item: any) => item.value === this.data.tempChangeSchoolAreaId)
+    const schoolAreaIndex = this.data.schoolAreaList.findIndex((item: any) => item.value === schoolAreaId)
     const detail = this.data.schoolAreaList[schoolAreaIndex]
     if (detail.value == this.data.schoolAreaId) {
       this.setData({
@@ -377,15 +367,15 @@ Page({
         })
       })
 
-      let tempSchoolId = ''
-      if (tempList.length > 0) {
-        const first = tempList[0]
-        tempSchoolId = first.value || ''
-      }
-
+      const schoolAreaIndex = tempList.findIndex((item: any) => item.value === this.data.schoolAreaId)
       this.setData({
-        schoolAreaList: tempList,
-        tempChangeSchoolAreaId: tempSchoolId
+        schoolAreaIndex,
+        schoolAreaList: tempList
+      }, () => {
+        const schoolRef = this.selectComponent("#schoolAreaId")
+        if (schoolRef && schoolAreaIndex > -1) {
+          schoolRef.setIndexes([schoolAreaIndex])
+        }
       })
     } catch {
       // 
@@ -642,10 +632,6 @@ Page({
           schoolAreaId: params.schoolAreaId,
           defaultStatus: false
         })
-        wx.showToast({
-          title: '保存成功',
-          icon: 'none'
-        })
       } else {
         const { data } = await api_userBeneficiarySave({
           "phone": params.phone,
@@ -659,13 +645,13 @@ Page({
         if (this.data.redirectUrl === "index") {
           prevPage.setData({ memberInfo: { id: data.data.id, name: params.name, phone: params.phone, schoolInfo: params.provinceName + params.cityName + (params.regionName || "") + params.schoolAreaName + params.gradeName + params.className } });
         }
-        wx.showToast({
-          title: '保存成功',
-          icon: 'none'
-        })
       }
       wx.hideLoading()
-      wx.navigateBack()
+      wx.showToast({
+        title: '保存成功',
+        icon: 'none'
+      })
+      setTimeout(() => { wx.navigateBack() }, 1000)
     } catch {
       wx.hideLoading()
       // 

+ 2 - 2
miniprogram/pages/member/addMember.wxml

@@ -85,10 +85,10 @@
             <view slot="action" class="searchBtn" bind:tap="onSearch">搜索</view>
           </van-search>
         </view>
-        <van-picker wx:if="{{schoolAreaList.length}}" loading="{{ schoolLoading }}" columns="{{ schoolAreaList }}" bind:change="onChangeSchool" visible-item-count="6" default-index="{{ schoolAreaIndex }}">
+        <van-picker id="schoolAreaId" wx:if="{{schoolAreaList.length}}" loading="{{ schoolLoading }}" columns="{{ schoolAreaList }}" visible-item-count="6" default-index="{{ schoolAreaIndex }}">
         </van-picker>
         <view wx:else class="empty-box">
-          <image src="https://oss.dayaedu.com/ktyq/1739278149891.png"></image>
+          <image src="https://oss.dayaedu.com/ktyq/1739875042508.png"></image>
           <view class="empty-text">暂无数据</view>
         </view>
       </block>

BIN
miniprogram/pages/member/images/radioAct1.png


BIN
miniprogram/pages/orders/images/add.png


BIN
miniprogram/pages/orders/images/address.png


BIN
miniprogram/pages/orders/images/quota.png


+ 557 - 207
miniprogram/pages/orders/order-detail.less

@@ -58,134 +58,509 @@
   }
 }
 
-.memberBox {
-  margin: 0 24rpx;
-  background: #ffffff;
+.order-content {
+  margin: 20rpx 26rpx 0;
   border-radius: 20rpx;
-  border: 3rpx solid transparent;
+  padding: 24rpx;
+  display: flex;
+  flex-direction: column;
+  background-color: #FFFFFF;
 
-  &.showMemberInfoTip {
-    border-color: #FD4502;
+  &:first-child {
+    margin-top: 0;
   }
+}
 
-  .memberCon {
-    padding: 24rpx;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
+.titTip {
+  font-weight: 600;
+  font-size: 28rpx;
+  color: #131415;
+  line-height: 40rpx;
+  position: relative;
+}
 
-    .memberImg {
-      width: 44rpx;
-      height: 44rpx;
-    }
+.quotaCon {
+  display: flex;
+  align-items: center;
 
-    .info {
-      flex-grow: 1;
-      margin-left: 16rpx;
-      font-weight: 600;
-      font-size: 28rpx;
-      color: #131415;
-      line-height: 40rpx;
-    }
+  .quota {
+    margin-left: 12rpx;
+    width: 102rpx;
+    height: 36rpx;
+  }
+}
 
-    .chevronImg {
-      flex-shrink: 0;
-      width: 32rpx;
-      height: 32rpx;
-    }
+.tip {
+  margin-top: 12rpx;
+  font-weight: 400;
+  font-size: 24rpx;
+  color: #888888;
+  line-height: 34rpx;
+}
 
-    .memberInfoCon {
-      overflow: hidden;
+.instrumentsListBox {
+  margin-top: 24rpx;
+  width: 100%;
+  height: 350rpx;
+  position: relative;
+
+  .instrumentsListCon {
+    width: calc(100% + 50rpx);
+    height: 100%;
+    position: absolute;
+    white-space: nowrap;
+    display: flex;
+    overflow-x: auto;
+    -webkit-overflow-scrolling: touch;
+
+    &::-webkit-scrollbar {
+      display: none;
     }
 
-    .infoCon {
+    .instrumentItem {
+      width: 200rpx;
+      background: #FFFFFF;
+      border-radius: 16rpx;
+      border: 2rpx solid #EAEAEA;
+      margin-right: 16rpx;
+      overflow: hidden;
+      flex-shrink: 0;
       display: flex;
-      align-items: center;
-      font-weight: 600;
-      font-size: 28rpx;
-      color: #131415;
-      line-height: 40rpx;
-      .tip {
-        flex-shrink: 0;
-        width: 44rpx;
-        height: 44rpx;
+      flex-direction: column;
+      position: relative;
+
+      &:last-child {
+        margin-right: 26rpx;
       }
-      .name{
-        margin-left: 16rpx;
+
+      .itemSel {
+        position: absolute;
+        right: 12rpx;
+        top: 12rpx;
+        width: 32rpx;
+        height: 32rpx;
+      }
+
+      .itemPic {
+        width: 200rpx;
+        height: 202rpx;
+      }
+
+      .itemName {
+        margin: 6rpx 0 0 12rpx;
+        font-weight: 400;
+        font-size: 26rpx;
+        color: #131415;
+        line-height: 40rpx;
         white-space: nowrap;
         overflow: hidden;
         text-overflow: ellipsis;
       }
-      .phone {
-        flex-shrink: 0;
-        margin-left: 16rpx;
+
+      .itemSalePrice {
+        margin: 6rpx 0 0 12rpx;
+        font-weight: bold;
+        font-size: 28rpx;
+        color: #000000;
+        line-height: 40rpx;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+
+        .stuff {
+          margin-right: 2rpx;
+        }
+
+        .numberDisplay--integer {
+          line-height: 1;
+          font-size: 32rpx;
+        }
+
+        .numberDisplay--decimal {
+          font-size: 24rpx;
+        }
       }
+
+      .itemOriginalPrice {
+        margin: 6rpx 0 0 12rpx;
+        font-weight: 400;
+        font-size: 24rpx;
+        color: #AAAAAA;
+        line-height: 36rpx;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
+      }
+    }
+  }
+}
+
+.memberBox {
+  margin-top: 16rpx;
+  background: linear-gradient(315deg, #FFEEE9 0%, #FFF6EC 100%);
+  border-radius: 20rpx;
+  border: 3rpx solid #FD4502;
+
+  .memberCon {
+    padding: 24rpx;
+    display: flex;
+    justify-content: space-between;
+    position: relative;
+
+    .memberImg {
+      margin-top: 4rpx;
+      width: 28rpx;
+      height: 36rpx;
+      flex-shrink: 0;
     }
 
-    .schoolInfoCon {
-      margin-top: 20rpx;
+    .infoBox {
+      margin-left: 12rpx;
       display: flex;
-      align-items: center;
+      flex-direction: column;
+      flex-grow: 1;
+      margin-right: 42rpx;
+      overflow: hidden;
 
-      .schoolInfo {
-        margin-right: 8rpx;
-        border-radius: 4rpx;
-        border: 1.6rpx solid rgba(243, 131, 9, 0.5);
-        padding: 0rpx 6rpx;
+      .topInfo {
+        font-weight: 600;
+        font-size: 28rpx;
+        color: #131415;
+        line-height: 40rpx;
+      }
+
+      .info {
+        margin-top: 14rpx;
         font-weight: 400;
-        font-size: 20rpx;
-        color: #F38309;
-        line-height: 32rpx;
-        flex-shrink: 0;
+        font-size: 24rpx;
+        color: rgba(19, 20, 21, 0.4);
+        line-height: 34rpx;
+        white-space: nowrap;
+        overflow: hidden;
+        text-overflow: ellipsis;
       }
 
-      .schoolInfoDes {
-        margin-right: 10rpx;
+      .infoCon {
+        margin-top: 8rpx;
+        display: flex;
+        align-items: center;
         font-weight: 400;
         font-size: 24rpx;
-        color: #777777;
-        line-height: 32rpx;
+        color: rgba(19, 20, 21, 0.5);
+        line-height: 34rpx;
+
+        .name {
+          white-space: nowrap;
+          overflow: hidden;
+          text-overflow: ellipsis;
+        }
+
+        .phone {
+          flex-shrink: 0;
+          margin-left: 16rpx;
+        }
+      }
+
+      .infoAddress {
+        font-weight: 600;
+        font-size: 26rpx;
+        color: #131415;
+        line-height: 36rpx;
         white-space: nowrap;
         overflow: hidden;
         text-overflow: ellipsis;
       }
     }
+
+    .chevronImg {
+      position: absolute;
+      right: 24rpx;
+      top: 50%;
+      transform: translateY(-50%);
+      width: 32rpx;
+      height: 32rpx;
+    }
   }
 }
 
-.order-content {
-  margin: 20rpx 26rpx 0;
-  border-radius: 20rpx;
-  padding: 24rpx 24rpx 32rpx;
+.priceDetails {
   display: flex;
-  flex-direction: column;
-  background-color: #FFFFFF;
+  justify-content: space-between;
+  align-items: center;
+  margin-top: 28rpx;
 
-  &:first-child {
-    margin-top: 0;
+  &.sumTip {
+    padding-top: 24rpx;
+    border-top: 2rpx solid #F2F2F2;
+
+    .titPic {
+      font-weight: 400;
+      font-size: 24rpx;
+      color: #777777;
+    }
+  }
+
+  .priceLeft {
+    >text {
+      &:nth-child(1) {
+        font-weight: 400;
+        font-size: 26rpx;
+        color: #777777;
+        line-height: 36rpx;
+      }
+
+      &:nth-child(2) {
+        margin-left: 16rpx;
+        font-weight: 400;
+        font-size: 24rpx;
+        color: #AAAAAA;
+        line-height: 34rpx;
+      }
+    }
+  }
+
+  .priceRight {
+    display: flex;
+    justify-content: flex-end;
+    align-items: flex-end;
+    font-weight: bold;
+    font-size: 28rpx;
+    color: #000000;
+    line-height: 44rpx;
+
+    &.discountTip {
+      color: #FD4502;
+    }
+
+    .stuff {
+      margin-right: 4rpx;
+    }
+
+    .numberDisplay--integer {
+      line-height: 1;
+      font-size: 32rpx;
+    }
+
+    .numberDisplay--decimal {
+      font-size: 24rpx;
+    }
   }
 }
 
-.titTip {
-  font-weight: 600;
-  font-size: 28rpx;
-  color: #131415;
-  line-height: 40rpx;
-  margin-bottom: 32rpx;
-  position: relative;
+.popup-section {
 
-  &::after {
-    content: "";
-    display: inline-block;
-    position: absolute;
-    left: -24rpx;
-    top: 50%;
-    transform: translateY(-50%);
-    z-index: 1;
-    width: 6rpx;
-    height: 24rpx;
-    background: #24CD72;
-    border-radius: 0rpx 4rpx 4rpx 0rpx;
+  .popup-mask {
+    position: fixed;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background-color: rgba(0, 0, 0, 0.6);
+    z-index: 9;
+  }
+
+  .popup-container {
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    right: 0;
+    z-index: 10;
+    width: 100%;
+    background: #FFFFFF;
+    border-radius: 32rpx 32rpx 0rpx 0rpx;
+    padding: 40rpx 0 56rpx;
+    box-sizing: border-box;
+
+    .topTit {
+      font-weight: 600;
+      font-size: 36rpx;
+      color: #131415;
+      line-height: 50rpx;
+      text-align: center;
+      margin-bottom: 40rpx;
+    }
+
+    .iconClose {
+      position: absolute;
+      right: 40rpx;
+      top: 50rpx;
+      width: 32rpx;
+      height: 32rpx;
+    }
+
+    .btnSections {
+      margin-top: 20rpx;
+      padding: 0 26rpx;
+
+      image {
+        width: 28rpx;
+        height: 28rpx;
+        margin-right: 16rpx;
+      }
+
+      button {
+        width: 100%;
+        line-height: 88rpx;
+        background: url("https://oss.dayaedu.com/ktyq/1739528494657.png") no-repeat;
+        background-size: 100% 100%;
+        font-weight: 500;
+        font-size: 32rpx;
+        color: #FFFFFF;
+        padding-top: 0;
+        padding-bottom: 0;
+        border-radius: 78rpx;
+
+        &[disabled][type=primary] {
+          color: #fff;
+          opacity: 0.7;
+        }
+      }
+    }
+  }
+}
+
+.addressPopup {
+  z-index: 10;
+
+  .popup-mask {
+    z-index: 11;
+  }
+
+  .popup-container {
+    z-index: 11;
+
+    .memberListCon {
+      overflow: hidden;
+      max-height: 500rpx;
+      min-height: 400rpx;
+
+      .memberListInfo {
+        background: #F6F6F6;
+        border-radius: 20rpx;
+        margin: 0 26rpx 24rpx;
+        padding: 28rpx 24rpx;
+        border: 3rpx solid transparent;
+
+        &.active {
+          background: linear-gradient(315deg, #FFEEE9 0%, #FFF6EC 100%);
+          border-color: rgba(255, 170, 157, 0.56);
+        }
+
+        .schoolInfoCon {
+          font-weight: 600;
+          font-size: 28rpx;
+          color: #131415;
+          line-height: 40rpx;
+          white-space: nowrap;
+          overflow: hidden;
+          text-overflow: ellipsis;
+        }
+
+        .infoCon {
+          margin-top: 16rpx;
+          font-weight: 400;
+          font-size: 26rpx;
+          color: rgba(19, 20, 21, 0.5);
+          line-height: 36rpx;
+          display: flex;
+          align-items: center;
+          padding-bottom: 28rpx;
+          border-bottom: 2rpx solid rgba(0, 0, 0, 0.06);
+
+          .name {
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+          }
+
+          .phone {
+            flex-shrink: 0;
+            margin-left: 16rpx;
+          }
+        }
+
+        .operate {
+          margin-top: 28rpx;
+          display: flex;
+          justify-content: space-between;
+          align-items: center;
+
+          .radioCon {
+            display: flex;
+            align-items: center;
+
+            .radioImg {
+              width: 28rpx;
+              height: 28rpx;
+            }
+
+            .radioName {
+              margin-left: 8rpx;
+              font-weight: 400;
+              font-size: 24rpx;
+              color: #777777;
+              line-height: 34rpx;
+            }
+          }
+
+          .operateCon {
+            display: flex;
+            font-weight: 400;
+            font-size: 24rpx;
+            color: #333333;
+            line-height: 34rpx;
+
+            view:last-child {
+              margin-left: 60rpx;
+            }
+          }
+        }
+      }
+      .empty-box {
+        height: 400rpx;
+        display: flex;
+        flex-direction: column;
+        justify-content: center;
+        align-items: center;
+      
+        image {
+          width: 375rpx;
+          height: 250rpx;
+        }
+      
+        .empty-text {
+          font-weight: 400;
+          font-size: 28rpx;
+          color: #AAAAAA;
+          line-height: 40rpx;
+          text-align: center;
+          margin-top: -24rpx;
+        }
+      }
+    }
+
+    .btnSections {
+      margin-top: 20rpx;
+      padding: 0 26rpx;
+
+      button {
+        width: 100%;
+        line-height: 88rpx;
+        background: url("https://oss.dayaedu.com/ktyq/1739528494657.png") no-repeat;
+        background-size: 100% 100%;
+        font-weight: 500;
+        font-size: 32rpx;
+        color: #FFFFFF;
+        padding-top: 0;
+        padding-bottom: 0;
+        border-radius: 78rpx;
+
+        &[disabled][type=primary] {
+          color: #fff;
+          opacity: 0.7;
+        }
+      }
+    }
   }
 }
 
@@ -235,19 +610,24 @@
       flex-shrink: 0;
       font-family: DINAlternate, DINAlternate;
       font-weight: bold;
-      font-size: 28rpx;
+      font-size: 24rpx;
       color: #131415;
       line-height: 48rpx;
       display: flex;
 
       .stuff {
         margin-right: 6rpx;
-        font-size: 28rpx;
+        font-size: 24rpx;
       }
 
-      .priceZ {
+      .numberDisplay--integer {
+        line-height: 1;
         font-size: 32rpx;
       }
+
+      .numberDisplay--decimal {
+        font-size: 24rpx;
+      }
     }
   }
 
@@ -274,107 +654,7 @@
 
 }
 
-.discountCon {
-  margin-top: 42rpx;
-  display: flex;
-  justify-content: space-between;
-  align-items: center;
-
-  .discountTip {
-    display: flex;
-    align-items: center;
-
-    image {
-      width: 32rpx;
-      height: 32rpx;
-    }
-
-    text {
-      margin-left: 8rpx;
-      font-weight: 400;
-      font-size: 28rpx;
-      color: #333333;
-      line-height: 40rpx;
-    }
-  }
-
-  .discount {
-    font-weight: bold;
-    font-size: 32rpx;
-    color: #FD4502;
-    line-height: 48rpx;
-    display: flex;
-
-    text {
-      &:first-child {
-        margin-right: 6rpx;
-        font-size: 28rpx;
-      }
-    }
-  }
-}
-
-.totalPic {
-  border-top: 2rpx solid #EEEEEE;
-  margin-top: 32rpx;
-  padding-top: 20rpx;
-  display: flex;
-  justify-content: flex-end;
-  align-items: flex-end;
-  font-weight: bold;
-  font-size: 32rpx;
-  color: #000000;
-  line-height: 56rpx;
-
-  .titPic {
-    font-weight: 600;
-    font-size: 24rpx;
-    color: #777777;
-  }
-
-  .stuff {
-    margin-left: 16rpx;
-    margin-right: 4rpx;
-  }
-
-  .numberDisplay--integer {
-    line-height: 1;
-    font-size: 48rpx;
-  }
-
-  .numberDisplay--decimal {
-    font-size: 32rpx;
-  }
-}
-
-.memberInfo {
-  display: flex;
-  justify-content: space-between;
-  margin-bottom: 32rpx;
-  &:last-child{
-    margin-bottom: 0;
-  }
 
-  text {
-    &:nth-child(1) {
-      flex-shrink: 0;
-      font-weight: 400;
-      font-size: 28rpx;
-      color: #666666;
-      line-height: 40rpx;
-    }
-
-    &:nth-child(2) {
-      margin-left: 30rpx;
-      word-break: break-all;
-      text-align: right;
-      font-weight: 400;
-      font-size: 28rpx;
-      color: #000000;
-      line-height: 40rpx;
-    }
-  }
-}
 
 .order-time {
   margin: 24rpx 26rpx 0;
@@ -412,9 +692,9 @@
   width: 100%;
   background-color: #FFFFFF;
   border-radius: 32rpx 32rpx 0rpx 0rpx;
-  padding: 32rpx 40rpx 56rpx 48rpx;
+  padding: 24rpx 32rpx 56rpx 32rpx;
   display: flex;
-  justify-content: space-between;
+  justify-content: flex-end;
   align-items: center;
   box-sizing: border-box;
 
@@ -441,14 +721,25 @@
     display: flex;
   }
 
+  .priceCon {
+    margin-right: 32rpx;
+  }
+
   .price {
     display: flex;
     align-items: flex-end;
     font-weight: bold;
     font-size: 32rpx;
-    color: #000000;
+    color: #FE462E;
     line-height: 56rpx;
 
+    .goodsNum {
+      margin-right: 10rpx;
+      font-weight: 600;
+      font-size: 24rpx;
+      color: #777777;
+    }
+
     .desc {
       font-weight: 600;
       font-size: 24rpx;
@@ -456,12 +747,12 @@
     }
 
     .stuff {
-      margin-right: 4rpx;
+      margin-right: 6rpx;
     }
 
     .numberDisplay--integer {
       line-height: 1;
-      font-size: 48rpx;
+      font-size: 52rpx;
     }
 
     .numberDisplay--decimal {
@@ -469,23 +760,82 @@
     }
   }
 
-  .discountVal {
-    font-weight: 600;
-    font-size: 24rpx;
-    color: #FD4502;
-    line-height: 34rpx;
-  }
-
   button {
     margin: 0;
-    width: 280rpx;
-    height: 88rpx;
-    background: url("https://oss.dayaedu.com/ktyq/1739342836131.png") no-repeat;
+    width: 220rpx;
+    height: 84rpx;
+    background: url("https://oss.dayaedu.com/ktyq/1739864864169.png") no-repeat;
     background-size: 100% 100%;
     border-radius: 78rpx;
     font-weight: 600;
     font-size: 32rpx;
     color: #FFFFFF;
-    line-height: 88rpx;
+    line-height: 84rpx;
+  }
+}
+
+.del-popup-section {
+  .popup-mask {
+    position: fixed;
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    background-color: rgba(0, 0, 0, 0.6);
+    z-index: 99999;
+  }
+
+  .popup-container {
+    position: fixed;
+    left: 0;
+    right: 0;
+    top: 50%;
+    transform: translateY(-50%);
+    z-index: 999999;
+    margin: 0 100rpx;
+    padding: 50rpx 0 40rpx 0;
+    background: #FFFFFF;
+    border-radius: 32rpx;
+
+    .tit {
+      font-weight: 600;
+      font-size: 32rpx;
+      color: #000000;
+      line-height: 44rpx;
+      text-align: center;
+    }
+
+    .titCon {
+      margin-top: 40rpx;
+      font-weight: 400;
+      font-size: 32rpx;
+      color: #777777;
+      line-height: 44rpx;
+      text-align: center;
+    }
+
+    .btnCon {
+      display: flex;
+      justify-content: center;
+      margin-top: 50rpx;
+
+      view {
+        font-weight: 400;
+        font-size: 28rpx;
+        color: #000000;
+        line-height: 36rpx;
+        padding: 16rpx 72rpx;
+        border-radius: 36rpx;
+        border: 2rpx solid #DCDCDC;
+
+        &:last-child {
+          margin-left: 32rpx;
+          background: url("https://oss.dayaedu.com/ktyq/1739864864169.png") no-repeat;
+          background-size: 100% 100%;
+          color: #fff;
+          border-color: transparent;
+        }
+      }
+    }
   }
 }

+ 124 - 22
miniprogram/pages/orders/order-detail.ts

@@ -1,5 +1,5 @@
 // pages/orders/order-detail.ts
-import { api_executeOrder, api_executePayment, api_queryByParamName, api_userPaymentOrderUnpaid, api_getUserReceiveAddressPage } from "../../api/login";
+import { api_executeOrder, api_executePayment, api_queryByParamName, api_userPaymentOrderUnpaid, api_getUserReceiveAddressPage, api_shopInstruments, api_userReceiveAddressRemove } from "../../api/login";
 
 // 获取应用实例
 const app = getApp<IAppOption>()
@@ -10,7 +10,12 @@ Page({
   data: {
     popupShow: false,
     isAddressInfoTip: false,
+    addressPopupShow: false,
+    addressDelPopupShow: false,
+    addressEditId: "",
+    addressList: [] as any[],
     addressInfo: {} as any,
+    selectedId: "",
     serviceShow: true,
     status: 'ing',
     statusList: {
@@ -23,6 +28,7 @@ Page({
     goodsInfo: {} as any,
     instrumentsInfo: {} as any,
     memberInfo: {} as any,
+    instrumentsList: [] as any[],
     paymentType: null as any, // 支付类型
     paymentChannel: null as any,
   },
@@ -45,7 +51,13 @@ Page({
       });
     }
   },
-  onShow() {
+  async onShow() {
+    try {
+      const instrumentsData = await api_shopInstruments({ appId: app.globalData.appId })
+      this.setData({
+        instrumentsList: instrumentsData?.data?.data || []
+      })
+    } catch { }
     this.setData({
       serviceShow: true
     })
@@ -55,20 +67,95 @@ Page({
       serviceShow: false
     })
   },
+  onCloseAddress() {
+    this.setData({
+      addressPopupShow: false
+    })
+  },
+  onSelectInstrumentsGoods(e: any) {
+    const { dataset } = e.currentTarget
+    let item = this.data.instrumentsList[dataset.index]
+    if (item?.id === this.data.instrumentsInfo?.id) {
+      item = {}
+    }
+    this.setData({
+      instrumentsInfo: item || {}
+    })
+  },
+  onSelectAddress(e: any) {
+    const { dataset } = e.currentTarget
+    const item = dataset.item;
+    this.setData({ addressInfo: { id: item.id, name: item.name, phoneNumber: item.phoneNumber, addressDes: item.provinceName + item.cityName + (item.regionName || "") + item.detailAddress }, addressPopupShow: false })
+  },
+  handleAddAddress() {
+    this.setData({
+      addressEditId: "",
+      popupShow: true
+    })
+  },
+  onDel(e: any) {
+    const { dataset } = e.currentTarget
+    this.setData({
+      selectedId: dataset.id
+    })
+    this.setData({
+      addressDelPopupShow: true
+    })
+  },
+  onDialogClose() {
+    this.setData({
+      addressDelPopupShow: false
+    })
+  },
+  onEdit(e: any) {
+    const { dataset } = e.currentTarget
+    this.setData({
+      addressEditId: dataset.id,
+      popupShow: true
+    })
+  },
+  async onDialogOk() {
+    try {
+      const { data } = await api_userReceiveAddressRemove(this.data.selectedId)
+      if (data.code === 200) {
+        this.setData({
+          addressDelPopupShow: false
+        })
+        const resData = await api_getUserReceiveAddressPage()
+        const pageRows = resData?.data?.data?.rows || []
+        this.setData({
+          addressList: pageRows
+        })
+        // 当删的是当前选中的
+        if (this.data.selectedId === this.data.addressInfo.id) {
+          let item: any
+          if (this.data.addressList.length) {
+            item = this.data.addressList[0]
+          }
+          this.setData({ addressInfo: item ? { id: item.id, name: item.name, phoneNumber: item.phoneNumber, addressDes: item.provinceName + item.cityName + (item.regionName || "") + item.detailAddress } : {} })
+        }
+      }
+    } catch (e: any) { }
+  },
   async onAddressInfo() {
     this.setData({
       isAddressInfoTip: false
     })
+    if (this.data.goodsInfo.orderNo) {
+      return
+    }
     try {
       const resData = await api_getUserReceiveAddressPage()
       const pageRows = resData?.data?.data?.rows || []
       // 当有收货地址的时候跳转到收货地址选择列表页面,当没有收货地址的时候到添加收货地址
       if (pageRows.length) {
-        wx.navigateTo({
-          url: `/pages/address/addressList?id=${this.data.addressInfo.id}`
-        });
+        this.setData({
+          addressPopupShow: true,
+          addressList: pageRows
+        })
       } else {
         this.setData({
+          addressEditId: "",
           popupShow: true
         })
       }
@@ -76,7 +163,26 @@ Page({
       console.log(e, 'e')
     }
   },
-  onAddAddress(e: any) {
+  async onAddAddress(e: any) {
+    if (this.data.addressPopupShow) {
+      try {
+        const resData = await api_getUserReceiveAddressPage()
+        const pageRows = resData?.data?.data?.rows || []
+        this.setData({
+          addressList: pageRows
+        })
+        if (this.data.addressEditId === this.data.addressInfo.id) {
+          // 编辑 完了刷新数据
+          const item = this.data.addressList.find(((item: any) => {
+            return item.id === this.data.addressInfo.id
+          }))
+          this.setData({ addressInfo: item ? { id: item.id, name: item.name, phoneNumber: item.phoneNumber, addressDes: item.provinceName + item.cityName + (item.regionName || "") + item.detailAddress } : {} })
+        }
+      } catch (e) {
+        console.log(e, 'e')
+      }
+      return
+    }
     const { addressInfo } = e.detail
     this.setData({
       addressInfo
@@ -176,21 +282,11 @@ Page({
         if (data.code === 200) {
           const { paymentConfig, paymentType, orderNo } = data.data
           this.onExecutePay(paymentConfig, paymentType, orderNo)
-        } else if (data.code === 5200) {
-          wx.hideLoading()
-          wx.showToast({
-            title: data.message,
-            icon: 'none'
-          })
         } else if (data.code === 5435) {
-          wx.hideLoading()
-          wx.showToast({
-            title: data.message,
-            icon: 'none'
-          })
+          this.onPayError(data.message)
           setTimeout(() => { wx.navigateBack() }, 1000)
-        } else {
-          this.onPayError()
+        }else {
+          this.onPayError(data.message)
         }
       }
     } catch {
@@ -213,7 +309,10 @@ Page({
         wx.hideLoading()
         if (res.data.code === 200) {
           this.onPay(paymentType, res.data.data.reqParams, orderNo)
-        } else {
+        } else if (res.data.code === 5435) {
+          this.onPayError(res.data.message)
+          setTimeout(() => { wx.navigateBack() }, 1000)
+        }else {
           this.onPayError(res.data.message)
         }
       },
@@ -249,6 +348,9 @@ Page({
         that.setData({
           goodsInfo
         })
+        wx.redirectTo({
+          url: '/pages/orders/order-result?orderNo=' + orderNo
+        })
       }
     })
   },
@@ -258,9 +360,9 @@ Page({
    */
   onShareAppMessage() {
     return {
-      title: '音乐数字AI器乐工具',
+      title: ' 器乐数字ai助手',
       path: '/pages/index/index',
-      imageUrl: 'https://oss.dayaedu.com/ktyq/1733311074676.png'
+      imageUrl: 'https://oss.dayaedu.com/ktyq/1739929620914.png'
     }
   }
 })

+ 116 - 63
miniprogram/pages/orders/order-detail.wxml

@@ -1,7 +1,7 @@
 <!--pages/orders/order-detail.wxml-->
 <page-meta page-style="{{ popupShow ? 'overflow: hidden;' : '' }}" style="height: 100vh;">
   <view class="container">
-    <navigation-bar title="订单确认"></navigation-bar>
+    <navigation-bar title="确认订单"></navigation-bar>
 
     <scroll-view class="record-list" type="list" scroll-y>
       <!-- <view class="order-status">
@@ -12,29 +12,7 @@
       <view class="tips">{{ statusList[status].content }}</view>
     </view> -->
 
-      <view wx:if="{{ instrumentsInfo.id }}" class="memberBox {{isAddressInfoTip?'showMemberInfoTip':''}}">
-        <view wx:if="{{ !addressInfo.id }}" class="memberCon" bind:tap="onAddressInfo">
-          <image class="memberImg" src="./images/member.png"></image>
-          <text class="info">请填写收货信息</text>
-          <image class="chevronImg" src="../index/images/chevron.png"></image>
-        </view>
-        <view wx:else class="memberCon" bind:tap="onAddressInfo">
-          <view class="memberInfoCon">
-            <view class="infoCon">
-              <image class="tip" src="./images/member.png" />
-              <text class="name">{{addressInfo.name}}</text>
-              <text class="phone">{{addressInfo.phoneNumber}}</text>
-            </view>
-            <view class="schoolInfoCon">
-              <text class="schoolInfo">收货地址</text><text class="schoolInfoDes">{{addressInfo.addressDes}}</text>
-            </view>
-          </view>
-          <image class="chevronImg" src="../index/images/chevron.png"></image>
-        </view>
-      </view>
-
       <view class="order-content">
-        <view class="titTip">订单详情</view>
         <view class="item-content first-item-content">
           <image class='goods-icon' src="{{ goodsInfo.pic }}" mode="" />
           <view class="goods-desc">
@@ -42,60 +20,88 @@
               <view class="goods-name">{{ goodsInfo.name }}</view>
               <view class="goods-price">
                 <text class="stuff">¥</text>
-                <text class="priceZ">{{ my.formatValue(goodsInfo.originalPrice) }}</text>
+                <numberDisplay number="{{ goodsInfo.salePrice }}" />
               </view>
             </view>
             <view class="goods-type">
-              <view class="goods-card">{{ goodsInfo.typeName }}</view>
-              <view class="goods-num">x1</view>
+              <view class="goods-card">{{ "时长: "+goodsInfo.typeName }}</view>
+              <view class="goods-num">原价¥{{ my.formatValue(goodsInfo.originalPrice) }}</view>
             </view>
           </view>
         </view>
-        <view wx:if="{{ instrumentsInfo.id }}" class="item-content">
-          <image class='goods-icon' src="{{ instrumentsInfo.pic }}" mode="" />
-          <view class="goods-desc">
-            <view class="goodsInfo">
-              <view class="goods-name">{{ instrumentsInfo.name }}</view>
-              <view class="goods-price">
+      </view>
+      <view wx:if="{{ instrumentsList.length }}" class="order-content">
+        <view class="titTip quotaCon">
+          <text>乐器超值换购</text>
+          <image class="quota" src="./images/quota.png" />
+        </view>
+        <view class="tip">以下乐器图片仅作示意,具体产品请以实物为准</view>
+        <view class="instrumentsListBox">
+          <view scroll-x class="instrumentsListCon">
+            <view class="instrumentItem" wx:for="{{ instrumentsList }}" wx:key="index" bind:tap="onSelectInstrumentsGoods" data-index="{{ index }}">
+              <image wx:if="{{ item.id == instrumentsInfo.id  }}" class="itemSel" src="../member/images/radioAct1.png"></image>
+              <image wx:else class="itemSel" src="../member/images/radio.png"></image>
+              <image class="itemPic" src="{{ item.pic }}"></image>
+              <view class="itemName">{{item.name}}</view>
+              <view class="itemSalePrice">
                 <text class="stuff">¥</text>
-                <text class="priceZ">{{ my.formatValue(instrumentsInfo.originalPrice) }}</text>
+                <numberDisplay number="{{ item.salePrice }}" />
               </view>
-            </view>
-            <view class="goods-type">
-              <view class="goods-card"></view>
-              <view class="goods-num">x1</view>
+              <view class="itemOriginalPrice">原价¥{{ my.formatValue(item.originalPrice) }}</view>
             </view>
           </view>
         </view>
-        <view wx:if="{{goodsInfo.originalPrice + (instrumentsInfo.originalPrice || 0) - (goodsInfo.salePrice + (instrumentsInfo.salePrice || 0)) > 0 }}" class="discountCon">
-          <view class="discountTip">
-            <image src="./images/discount.png"></image>
-            <text>优惠活动</text>
+        <view wx:if="{{ instrumentsInfo.id }}" class="memberBox">
+          <view wx:if="{{ !addressInfo.id }}" class="memberCon" bind:tap="onAddressInfo">
+            <image class="memberImg" src="./images/address.png"></image>
+            <view class="infoBox">
+              <text class="topInfo">添加收货地址</text>
+              <text class="info">在此填写您的收货信息,我们将尽快为您发货</text>
+            </view>
+            <image class="chevronImg" src="../index/images/chevron.png"></image>
           </view>
-          <view class="discount">
-            <text>-¥</text>
-            <text>{{my.formatValue(goodsInfo.originalPrice + (instrumentsInfo.originalPrice || 0) - (goodsInfo.salePrice + (instrumentsInfo.salePrice || 0)))}}</text>
+          <view wx:else class="memberCon" bind:tap="onAddressInfo">
+            <image class="memberImg" src="./images/address.png"></image>
+            <view class="infoBox">
+              <text class="infoAddress">{{ addressInfo.addressDes }}</text>
+              <view class="infoCon">
+                <text class="name">{{addressInfo.name}}</text>
+                <text class="phone">{{addressInfo.phoneNumber}}</text>
+              </view>
+            </view>
+            <image class="chevronImg" src="../index/images/chevron.png"></image>
           </view>
         </view>
-        <view class="totalPic">
-          <text class="titPic">合计</text>
-          <text class="stuff">¥</text>
-          <numberDisplay number="{{ goodsInfo.salePrice + (instrumentsInfo.salePrice || 0) }}" />
-        </view>
       </view>
       <view class="order-content">
-        <view class="titTip">会员信息</view>
-        <view class="memberInfo">
-          <text>姓名</text>
-          <text>{{ memberInfo.name }}</text>
+        <view class="titTip">价格明细</view>
+        <view class="priceDetails">
+          <view class="priceLeft">
+            <text>商品总价</text>
+            <text>{{ "共"+ (instrumentsInfo.id?'2':'1') +"件" }}</text>
+          </view>
+          <view class="priceRight">
+            <text class="stuff">¥</text>
+            <numberDisplay number="{{ goodsInfo.originalPrice + (instrumentsInfo.originalPrice || 0) }}" />
+          </view>
         </view>
-        <view class="memberInfo">
-          <text>联系电话</text>
-          <text>{{ memberInfo.phone }}</text>
+        <view wx:if="{{ goodsInfo.originalPrice + (instrumentsInfo.originalPrice || 0) - (goodsInfo.salePrice + (instrumentsInfo.salePrice || 0)) > 0 }}" class="priceDetails">
+          <view class="priceLeft">
+            <text>优惠金额</text>
+          </view>
+          <view class="priceRight discountTip">
+            <text class="stuff">-¥</text>
+            <numberDisplay number="{{ goodsInfo.originalPrice + (instrumentsInfo.originalPrice || 0) - (goodsInfo.salePrice + (instrumentsInfo.salePrice || 0)) }}" />
+          </view>
         </view>
-        <view class="memberInfo">
-          <text>学校信息</text>
-          <text>{{ memberInfo.schoolInfo }}</text>
+        <view class="priceDetails sumTip">
+          <view class="priceLeft">
+          </view>
+          <view class="priceRight">
+            <text class="titPic">共计:</text>
+            <text class="stuff">¥</text>
+            <numberDisplay number="{{ goodsInfo.salePrice + (instrumentsInfo.salePrice || 0) }}" />
+          </view>
         </view>
       </view>
 
@@ -114,15 +120,62 @@
     <view class="order-btn">
       <view class="priceCon">
         <view class="price">
-          <view class="desc">待支付:</view>
+          <view class="goodsNum">{{ "共"+ (instrumentsInfo.id?'2':'1') +"件" }}</view>
+          <view class="desc">需支付:</view>
           <text class="stuff">¥</text>
           <numberDisplay number="{{ goodsInfo.salePrice + (instrumentsInfo.salePrice || 0) }}" />
         </view>
-        <text wx:if="{{goodsInfo.originalPrice + (instrumentsInfo.originalPrice || 0) - (goodsInfo.salePrice + (instrumentsInfo.salePrice || 0)) > 0 }}" class="discountVal">已优惠 ¥{{my.formatValue(goodsInfo.originalPrice + (instrumentsInfo.originalPrice || 0) - (goodsInfo.salePrice + (instrumentsInfo.salePrice || 0)))}}</text>
       </view>
-      <button type="primary" bind:tap="onSubmit">{{ goodsInfo.orderNo ? '继续支付' : '去支付' }}</button>
+      <button type="primary" bind:tap="onSubmit">{{ goodsInfo.orderNo ? '继续支付' : '支付' }}</button>
+    </view>
+    <addAddress popupShow='{{popupShow}}' bind:addAddress="onAddAddress" editId="{{addressEditId}}"></addAddress>
+    <view class="popup-section addressPopup" wx:if="{{addressPopupShow}}">
+      <view class="popup-mask" bind:tap="onCloseAddress"></view>
+      <view class="popup-container">
+        <view class="topTit">收货地址</view>
+        <image bind:tap="onCloseAddress" src="../index/images/icon-close.png" class="iconClose"></image>
+        <scroll-view scroll-y class="memberListCon">
+          <block wx:if="{{ addressList.length }}">
+            <view wx:for="{{ addressList }}" wx:key="index" bind:tap="onSelectAddress" data-item="{{ item }}" class="memberListInfo {{ item.id === addressInfo.id?'active':'' }}">
+              <view class="schoolInfoCon">{{item.provinceName + item.cityName + item.regionName + item.detailAddress}}</view>
+              <view class="infoCon">
+                <text class="name">{{item.name}}</text>
+                <text class="phone">{{item.phoneNumber}}</text>
+              </view>
+              <view class="operate">
+                <view class="radioCon">
+                  <image class="radioImg" wx:if="{{item.id === addressInfo.id}}" src="../member/images/radioAct.png"></image>
+                  <image class="radioImg" wx:else src="../member/images/radio.png"></image>
+                  <text class="radioName">{{item.id === addressInfo.id?"已选择":"未选择"}}</text>
+                </view>
+                <view class="operateCon">
+                  <view catch:tap="onDel" data-id="{{ item.id }}">删除</view>
+                  <view catch:tap="onEdit" data-id="{{ item.id }}">修改</view>
+                </view>
+              </view>
+            </view>
+          </block>
+          <view wx:else class="empty-box">
+            <image src="https://oss.dayaedu.com/ktyq/1739278149891.png"></image>
+            <view class="empty-text">暂无内容</view>
+          </view>
+        </scroll-view>
+        <view class="btnSections"><button type="primary" bind:tap="handleAddAddress">
+            <image src="./images/add.png" />新增地址
+          </button></view>
+      </view>
+    </view>
+    <view class="del-popup-section" wx:if="{{addressDelPopupShow}}">
+      <view class="popup-mask" bind:tap="onDialogClose"></view>
+      <view class="popup-container">
+        <view class="tit">温馨提示</view>
+        <view class="titCon">是否要删除该收货地址?</view>
+        <view class="btnCon">
+          <view bind:tap="onDialogClose">取消</view>
+          <view bind:tap="onDialogOk">确认</view>
+        </view>
+      </view>
     </view>
-    <addAddress popupShow='{{popupShow}}' bind:addAddress="onAddAddress"></addAddress>
     <!-- 客服 -->
     <!-- <service wx:if="{{serviceShow}}"></service> -->
   </view>

+ 87 - 184
miniprogram/pages/orders/order-result.less

@@ -19,11 +19,20 @@
     background-size: 100% 100%;
   }
 
+  .topTitle {
+    font-weight: 400;
+    font-size: 24rpx;
+    color: rgba(0, 0, 0, 0.5);
+    line-height: 34rpx;
+    text-align: center;
+  }
+
   .record-list {
     padding-top: 24rpx;
     flex-grow: 1;
     overflow: hidden;
-    &.waitList{
+
+    &.waitList {
       padding-bottom: 200rpx;
     }
   }
@@ -57,102 +66,11 @@
     margin-top: 20rpx;
     font-weight: 400;
     font-size: 26rpx;
-    color: rgba(0,0,0,0.5);
+    color: rgba(0, 0, 0, 0.5);
     line-height: 36rpx;
   }
 }
 
-.memberBox {
-  margin: 0 24rpx;
-  background: #ffffff;
-  border-radius: 20rpx;
-  border: 3rpx solid transparent;
-
-  &.showMemberInfoTip {
-    border-color: #FD4502;
-  }
-
-  .memberCon {
-    padding: 24rpx;
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-
-    .memberImg {
-      width: 44rpx;
-      height: 44rpx;
-    }
-
-    .info {
-      flex-grow: 1;
-      margin-left: 16rpx;
-      font-weight: 600;
-      font-size: 28rpx;
-      color: #131415;
-      line-height: 40rpx;
-    }
-
-    .chevronImg {
-      flex-shrink: 0;
-      width: 32rpx;
-      height: 32rpx;
-    }
-
-    .memberInfoCon {
-      overflow: hidden;
-    }
-
-    .infoCon {
-      display: flex;
-      align-items: center;
-      font-weight: 600;
-      font-size: 28rpx;
-      color: #131415;
-      line-height: 40rpx;
-
-      .tip {
-        flex-shrink: 0;
-        width: 44rpx;
-        height: 44rpx;
-      }
-      .name{
-        margin-left: 16rpx;
-        white-space: nowrap;
-        overflow: hidden;
-        text-overflow: ellipsis;
-      }
-      .phone {
-        flex-shrink: 0;
-        margin-left: 16rpx;
-      }
-    }
-
-    .schoolInfoCon {
-      margin-top: 20rpx;
-
-      .schoolInfo {
-        margin-right: 8rpx;
-        border-radius: 4rpx;
-        border: 1.6rpx solid rgba(243, 131, 9, 0.5);
-        padding: 2rpx 6rpx;
-        font-weight: 400;
-        font-size: 20rpx;
-        color: #F38309;
-        line-height: 32rpx;
-        flex-shrink: 0;
-      }
-
-      .schoolInfoDes {
-        margin-right: 10rpx;
-        font-weight: 400;
-        font-size: 24rpx;
-        color: #777777;
-        line-height: 32rpx;
-      }
-    }
-  }
-}
-
 .order-content {
   margin: 20rpx 26rpx 0;
   border-radius: 20rpx;
@@ -165,7 +83,8 @@
     margin-top: 0;
   }
 }
-.bottomBlock{
+
+.bottomBlock {
   width: 100%;
   height: 60rpx;
 }
@@ -177,20 +96,6 @@
   line-height: 40rpx;
   margin-bottom: 32rpx;
   position: relative;
-
-  &::after {
-    content: "";
-    display: inline-block;
-    position: absolute;
-    left: -24rpx;
-    top: 50%;
-    transform: translateY(-50%);
-    z-index: 1;
-    width: 6rpx;
-    height: 24rpx;
-    background: #24CD72;
-    border-radius: 0rpx 4rpx 4rpx 0rpx;
-  }
 }
 
 .item-content {
@@ -263,91 +168,82 @@
 
     .goods-card {
       font-weight: 400;
-      font-size: 26rpx;
+      font-size: 24rpx;
       color: #777777;
       line-height: 36rpx;
     }
 
     .goods-num {
       font-weight: 400;
-      font-size: 26rpx;
-      color: #777777;
+      font-size: 24rpx;
+      color: #AAAAAA;
       line-height: 36rpx;
     }
   }
 
 }
 
-.discountCon {
-  margin-top: 42rpx;
+.priceDetails {
   display: flex;
   justify-content: space-between;
   align-items: center;
+  margin-top: 28rpx;
 
-  .discountTip {
-    display: flex;
-    align-items: center;
-
-    image {
-      width: 32rpx;
-      height: 32rpx;
-    }
+  &.sumTip {
+    padding-top: 24rpx;
+    border-top: 2rpx solid #F2F2F2;
 
-    text {
-      margin-left: 8rpx;
+    .titPic {
       font-weight: 400;
-      font-size: 28rpx;
-      color: #333333;
-      line-height: 40rpx;
+      font-size: 24rpx;
+      color: #777777;
     }
   }
 
-  .discount {
-    font-weight: bold;
-    font-size: 32rpx;
-    color: #FD4502;
-    line-height: 48rpx;
-    display: flex;
+  .priceLeft {
+    >text {
+      &:nth-child(1) {
+        font-weight: 400;
+        font-size: 26rpx;
+        color: #777777;
+        line-height: 36rpx;
+      }
 
-    text {
-      &:first-child {
-        margin-right: 6rpx;
-        font-size: 28rpx;
+      &:nth-child(2) {
+        margin-left: 16rpx;
+        font-weight: 400;
+        font-size: 24rpx;
+        color: #AAAAAA;
+        line-height: 34rpx;
       }
     }
   }
-}
 
-.totalPic {
-  border-top: 2rpx solid #EEEEEE;
-  margin-top: 32rpx;
-  padding-top: 20rpx;
-  display: flex;
-  justify-content: flex-end;
-  align-items: flex-end;
-  font-weight: bold;
-  font-size: 32rpx;
-  color: #000000;
-  line-height: 56rpx;
+  .priceRight {
+    display: flex;
+    justify-content: flex-end;
+    align-items: flex-end;
+    font-weight: bold;
+    font-size: 28rpx;
+    color: #000000;
+    line-height: 44rpx;
 
-  .titPic {
-    font-weight: 600;
-    font-size: 24rpx;
-    color: #777777;
-  }
+    &.discountTip {
+      color: #FD4502;
+    }
 
-  .stuff {
-    margin-left: 16rpx;
-    margin-right: 4rpx;
-  }
+    .stuff {
+      margin-right: 4rpx;
+    }
 
-  .numberDisplay--integer {
-    line-height: 1;
-    font-size: 48rpx;
-  }
+    .numberDisplay--integer {
+      line-height: 1;
+      font-size: 32rpx;
+    }
 
-  .numberDisplay--decimal {
-    font-size: 32rpx;
+    .numberDisplay--decimal {
+      font-size: 24rpx;
+    }
   }
 }
 
@@ -355,24 +251,29 @@
   display: flex;
   justify-content: space-between;
   margin-bottom: 32rpx;
-  &:last-child{
+
+  &:last-child {
     margin-bottom: 0;
   }
-  .orderInfoRight{
+
+  .orderInfoRight {
     display: flex;
     align-items: center;
     font-weight: 400;
     font-size: 28rpx;
     color: #000000;
     line-height: 40rpx;
-    .copy{
-      margin-left: 20rpx;
+
+    .copy {
+      border-left: 2rpx solid #D2D2D2;
+      margin-left: 12rpx;
+      padding-left: 12rpx;
       font-weight: 400;
       font-size: 28rpx;
-      color: #0AAF20;
       line-height: 40rpx;
     }
   }
+
   >text {
     &:nth-child(1) {
       flex-shrink: 0;
@@ -432,7 +333,7 @@
   border-radius: 32rpx 32rpx 0rpx 0rpx;
   padding: 32rpx 40rpx 56rpx 48rpx;
   display: flex;
-  justify-content: space-between;
+  justify-content: flex-end;
   align-items: center;
   box-sizing: border-box;
 
@@ -458,15 +359,24 @@
   .more {
     display: flex;
   }
-
+  .priceCon {
+    margin-right: 32rpx;
+  }
   .price {
     display: flex;
     align-items: flex-end;
     font-weight: bold;
     font-size: 32rpx;
-    color: #000000;
+    color: #FE462E;
     line-height: 56rpx;
 
+    .goodsNum {
+      margin-right: 10rpx;
+      font-weight: 600;
+      font-size: 24rpx;
+      color: #777777;
+    }
+
     .desc {
       font-weight: 600;
       font-size: 24rpx;
@@ -474,12 +384,12 @@
     }
 
     .stuff {
-      margin-right: 4rpx;
+      margin-right: 6rpx;
     }
 
     .numberDisplay--integer {
       line-height: 1;
-      font-size: 48rpx;
+      font-size: 52rpx;
     }
 
     .numberDisplay--decimal {
@@ -487,23 +397,16 @@
     }
   }
 
-  .discountVal {
-    font-weight: 600;
-    font-size: 24rpx;
-    color: #FD4502;
-    line-height: 34rpx;
-  }
-
   button {
     margin: 0;
-    width: 280rpx;
-    height: 88rpx;
-    background: url("https://oss.dayaedu.com/ktyq/1739342836131.png") no-repeat;
+    width: 220rpx;
+    height: 84rpx;
+    background: url("https://oss.dayaedu.com/ktyq/1739864864169.png") no-repeat;
     background-size: 100% 100%;
     border-radius: 78rpx;
     font-weight: 600;
     font-size: 32rpx;
     color: #FFFFFF;
-    line-height: 88rpx;
+    line-height: 84rpx;
   }
 }

+ 25 - 15
miniprogram/pages/orders/order-result.ts

@@ -27,18 +27,18 @@ Page({
     statusList: {
       WAIT_PAY: {
         logo: './images/ing.png',
-        title: '待支付',
-        content: '为了确保您的订单顺利进行,请尽快完成支付'
+        title: '待支付',
+        content: '请尽快完成支付,以确保订单顺利进行'
       },
       PAID: {
         logo: './images/success.png',
-        title: '完成',
-        content: '订单流程已结束,感谢您的支持与参与!'
+        title: '交易完成',
+        content: '您的订单已完成,感谢您的信任与支持'
       },
       CLOSED: {
         logo: './images/error.png',
-        title: '取消',
-        content: '您的订单已被关闭,如有需要请重新下单'
+        title: '交易取消',
+        content: '您的订单已取消,如需购买请重新下单'
       },
       WAIT_USE: {
         logo: './images/wait.png',
@@ -143,15 +143,18 @@ Page({
   },
   // 格式化类型
   formatPeriod(num: number, type: string) {
+    if (!num || !type) {
+      return ''
+    }
     const template: any = {
-      DAY: "天卡",
-      MONTH: "月卡",
-      YEAR: "年"
+      DAY: "天",
+      MONTH: "月",
+      YEAR: "年"
     }
     if (type === "YEAR" && num >= 99) {
-      return '永久'
+      return '永久'
     }
-    return num + template[type]
+    return "时长: " + num + template[type]
   },
   onCopy(e: { currentTarget: any }) {
     wx.setClipboardData({
@@ -260,7 +263,7 @@ Page({
             title: data.message,
             icon: 'none'
           })
-        } else if (data.code === 5435) {
+        } else if ([5435, 5436, 5437, 5439, 5442, 5443, 5408, 5427, 5432].includes(data.code)) {
           wx.hideLoading()
           wx.showToast({
             title: data.message,
@@ -268,7 +271,7 @@ Page({
           })
           setTimeout(() => { wx.navigateBack() }, 1000)
         } else {
-          this.onPayError()
+          this.onPayError(data.message)
         }
       }
     } catch {
@@ -291,6 +294,13 @@ Page({
         wx.hideLoading()
         if (res.data.code === 200) {
           this.onPay(paymentType, res.data.data.reqParams, orderNo)
+        } else if ([5435, 5436, 5437, 5439, 5442, 5443, 5408, 5427, 5432].includes(res.data.code)) {
+          wx.hideLoading()
+          wx.showToast({
+            title: res.data.message,
+            icon: 'none'
+          })
+          setTimeout(() => { wx.navigateBack() }, 1000)
         } else {
           this.onPayError(res.data.message)
         }
@@ -336,9 +346,9 @@ Page({
    */
   onShareAppMessage() {
     return {
-      title: '音乐数字AI器乐工具',
+      title: ' 器乐数字ai助手',
       path: '/pages/index/index',
-      imageUrl: 'https://oss.dayaedu.com/ktyq/1733311074676.png'
+      imageUrl: 'https://oss.dayaedu.com/ktyq/1739929620914.png'
     }
   }
 })

+ 58 - 45
miniprogram/pages/orders/order-result.wxml

@@ -1,34 +1,19 @@
 <!--pages/orders/order-detail.wxml-->
 <view class="container">
-  <navigation-bar title=""></navigation-bar>
-
+  <navigation-bar title="{{statusList[status].title}}"></navigation-bar>
+  <view class="topTitle">
+    {{statusList[status].content}}
+  </view>
   <scroll-view class="record-list {{ status==='WAIT_PAY'?'waitList':'' }}" type="list" scroll-y>
-    <view class="order-status">
+    <!-- <view class="order-status">
       <view class="status">
         <image src="{{ statusList[status].logo }}"></image>
         <text>{{ statusList[status].title }}</text>
       </view>
       <view class="tips">{{ statusList[status].content }}</view>
-    </view>
-
-    <view wx:if="{{ instrumentsInfo.id }}" class="memberBox {{isAddressInfoTip?'showMemberInfoTip':''}}">
-      <view class="memberCon">
-        <view class="memberInfoCon">
-          <view class="infoCon">
-            <image class="tip" src="./images/member.png" />
-            <text class="name">{{addressInfo.name}}</text>
-            <text class="phone">{{addressInfo.phoneNumber}}</text>
-          </view>
-          <view class="schoolInfoCon">
-            <text class="schoolInfo">收货地址</text><text class="schoolInfoDes">{{addressInfo.addressDes}}</text>
-          </view>
-        </view>
-        <!-- <image class="chevronImg" src="../index/images/chevron.png"></image> -->
-      </view>
-    </view>
+    </view> -->
 
     <view class="order-content">
-      <view class="titTip">订单详情</view>
       <view class="item-content first-item-content">
         <image class='goods-icon' src="{{ goodsInfo.pic }}" mode="" />
         <view class="goods-desc">
@@ -36,12 +21,12 @@
             <view class="goods-name">{{ goodsInfo.name }}</view>
             <view class="goods-price">
               <text class="stuff">¥</text>
-              <text class="priceZ">{{ my.formatValue(goodsInfo.originalPrice) }}</text>
+              <text class="priceZ">{{ my.formatValue(goodsInfo.salePrice) }}</text>
             </view>
           </view>
           <view class="goods-type">
             <view class="goods-card">{{ goodsInfo.typeName }}</view>
-            <view class="goods-num">x1</view>
+            <view class="goods-num">{{ "原价¥"+my.formatValue(goodsInfo.originalPrice) }}</view>
           </view>
         </view>
       </view>
@@ -52,48 +37,76 @@
             <view class="goods-name">{{ instrumentsInfo.name }}</view>
             <view class="goods-price">
               <text class="stuff">¥</text>
-              <text class="priceZ">{{ my.formatValue(instrumentsInfo.originalPrice) }}</text>
+              <text class="priceZ">{{ my.formatValue(instrumentsInfo.salePrice) }}</text>
             </view>
           </view>
           <view class="goods-type">
             <view class="goods-card"></view>
-            <view class="goods-num">x1</view>
+            <view class="goods-num">{{ "原价¥"+my.formatValue(instrumentsInfo.originalPrice) }}</view>
           </view>
         </view>
       </view>
-      <view wx:if="{{goodsInfo.originalPrice + (instrumentsInfo.originalPrice || 0) - (goodsInfo.salePrice + (instrumentsInfo.salePrice || 0)) > 0 }}" class="discountCon">
-        <view class="discountTip">
-          <image src="./images/discount.png"></image>
-          <text>优惠活动</text>
+    </view>
+    <view class="order-content">
+      <view class="titTip">价格明细</view>
+      <view class="priceDetails">
+        <view class="priceLeft">
+          <text>商品总价</text>
+          <text>{{ "共"+ (instrumentsInfo.id?'2':'1') +"件" }}</text>
         </view>
-        <view class="discount">
-          <text>-¥</text>
-          <text>{{my.formatValue(goodsInfo.originalPrice + (instrumentsInfo.originalPrice || 0) - (goodsInfo.salePrice + (instrumentsInfo.salePrice || 0)))}}</text>
+        <view class="priceRight">
+          <text class="stuff">¥</text>
+          <numberDisplay number="{{ goodsInfo.originalPrice + (instrumentsInfo.originalPrice || 0) }}" />
         </view>
       </view>
-      <view class="totalPic">
-        <text class="titPic">合计</text>
-        <text class="stuff">¥</text>
-        <numberDisplay number="{{ goodsInfo.salePrice + (instrumentsInfo.salePrice || 0) }}" />
+      <view wx:if="{{ goodsInfo.originalPrice + (instrumentsInfo.originalPrice || 0) - (goodsInfo.salePrice + (instrumentsInfo.salePrice || 0)) > 0 }}" class="priceDetails">
+        <view class="priceLeft">
+          <text>优惠金额</text>
+        </view>
+        <view class="priceRight discountTip">
+          <text class="stuff">-¥</text>
+          <numberDisplay number="{{ goodsInfo.originalPrice + (instrumentsInfo.originalPrice || 0) - (goodsInfo.salePrice + (instrumentsInfo.salePrice || 0)) }}" />
+        </view>
+      </view>
+      <view class="priceDetails sumTip">
+        <view class="priceLeft">
+        </view>
+        <view class="priceRight">
+          <text class="titPic">共计:</text>
+          <text class="stuff">¥</text>
+          <numberDisplay number="{{ goodsInfo.salePrice + (instrumentsInfo.salePrice || 0) }}" />
+        </view>
+      </view>
+    </view>
+    <view class="order-content" wx:if="{{ instrumentsInfo.id }}">
+      <view class="titTip">收货信息</view>
+      <view class="memberInfo">
+        <text>收货人</text>
+        <text>{{ addressInfo.name }}</text>
+      </view>
+      <view class="memberInfo">
+        <text>手机号码</text>
+        <text>{{ addressInfo.phoneNumber }}</text>
+      </view>
+      <view class="memberInfo">
+        <text>收货地址</text>
+        <text>{{ addressInfo.addressDes }}</text>
       </view>
     </view>
     <view class="order-content">
-      <view class="titTip">会员信息</view>
+      <view class="titTip">订单信息</view>
       <view class="memberInfo">
-        <text>姓名</text>
+        <text>会员名称</text>
         <text>{{ memberInfo.name }}</text>
       </view>
       <view class="memberInfo">
-        <text>联系电话</text>
+        <text>手机号码</text>
         <text>{{ memberInfo.phone }}</text>
       </view>
       <view class="memberInfo">
         <text>学校信息</text>
         <text>{{ memberInfo.schoolInfo }}</text>
       </view>
-    </view>
-    <view class="order-content">
-      <view class="titTip">订单信息</view>
       <view class="memberInfo">
         <text>订单编号</text>
         <view class="orderInfoRight">
@@ -102,7 +115,7 @@
         </view>
       </view>
       <view class="memberInfo">
-        <text>下单时间</text>
+        <text>创建时间</text>
         <text>{{ orderInfo.createTime }}</text>
       </view>
     </view>
@@ -122,11 +135,11 @@
   <view wx:if="{{status==='WAIT_PAY'}}" class="order-btn">
     <view class="priceCon">
       <view class="price">
-        <view class="desc">待支付:</view>
+        <view class="goodsNum">{{ "共"+ (instrumentsInfo.id?'2':'1') +"件" }}</view>
+        <view class="desc">需支付:</view>
         <text class="stuff">¥</text>
         <numberDisplay number="{{ goodsInfo.salePrice + (instrumentsInfo.salePrice || 0) }}" />
       </view>
-      <text wx:if="{{goodsInfo.originalPrice + (instrumentsInfo.originalPrice || 0) - (goodsInfo.salePrice + (instrumentsInfo.salePrice || 0)) > 0 }}" class="discountVal">已优惠 ¥{{my.formatValue(goodsInfo.originalPrice + (instrumentsInfo.originalPrice || 0) - (goodsInfo.salePrice + (instrumentsInfo.salePrice || 0)))}}</text>
     </view>
     <button type="primary" bind:tap="onSubmit">{{ '继续支付'  }}</button>
   </view>

+ 2 - 2
miniprogram/pages/orders/order-result1.ts

@@ -313,9 +313,9 @@ Page({
   },
   onShareAppMessage() {
     return {
-      title: '音乐数字AI器乐工具',
+      title: ' 器乐数字ai助手',
       path: '/pages/index/index',
-      imageUrl: 'https://oss.dayaedu.com/ktyq/1733311074676.png'
+      imageUrl: 'https://oss.dayaedu.com/ktyq/1739929620914.png'
     }
   }
 })

+ 68 - 39
miniprogram/pages/orders/orders.less

@@ -33,7 +33,7 @@
   display: flex;
   align-items: center;
   justify-content: space-between;
-  padding: 32rpx 60rpx 36rpx;
+  padding: 32rpx 60rpx 38rpx;
   position: relative;
   font-weight: 600;
   font-size: 30rpx;
@@ -52,12 +52,12 @@
         position: absolute;
         left: 50%;
         transform: translateX(-50%);
-        bottom: -6rpx;
+        bottom: -20rpx;
         z-index: -1;
-        width: 32rpx;
-        height: 8rpx;
-        background: #000000;
-        border-radius: 4rpx;
+        width: 56rpx;
+        height: 18rpx;
+        background: url("https://oss.dayaedu.com/ktyq/1739867325778.png") no-repeat;
+        background-size: 100% 100%;
       }
     }
   }
@@ -94,21 +94,26 @@
       font-size: 26rpx;
       color: #AAAAAA;
       line-height: 36rpx;
+      white-space: nowrap;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      margin-right: 20rpx;
     }
 
     >text {
-      font-weight: 600;
+      flex-shrink: 0;
+      font-weight: 400;
       font-size: 28rpx;
-      color: #131415;
-      line-height: 40rpx;
+      color: #777777;
+      line-height: 48rpx;
     }
 
     .red {
-      color: #FD4502;
+      color: #FE462E;
     }
 
     .closed {
-      color: #AAAAAA;
+      color: #777777;
     }
   }
 
@@ -116,8 +121,35 @@
     margin-bottom: 16rpx;
     display: flex;
     justify-content: space-between;
-    .imgCon{
+
+    .imgCon {
       display: flex;
+      margin-right: 28rpx;
+      overflow: hidden;
+
+      .goodsDes {
+        overflow: hidden;
+        view {
+          &:nth-child(1) {
+            margin-top: 10rpx;
+            font-weight: 400;
+            font-size: 28rpx;
+            color: #131415;
+            line-height: 48rpx;
+            white-space: nowrap;
+            overflow: hidden;
+            text-overflow: ellipsis;
+          }
+
+          &:nth-child(2) {
+            margin-top: 10rpx;
+            font-weight: 400;
+            font-size: 24rpx;
+            color: #777777;
+            line-height: 36rpx;
+          }
+        }
+      }
     }
 
     .goods-icon {
@@ -130,6 +162,7 @@
     }
 
     .goods-desc {
+      flex-shrink: 0;
       display: flex;
       flex-direction: column;
     }
@@ -138,6 +171,7 @@
       display: flex;
       justify-content: space-between;
       padding-top: 4rpx;
+
       .goods-price {
         flex-shrink: 0;
         font-family: DINAlternate, DINAlternate;
@@ -189,31 +223,18 @@
   }
 
   .item-footer {
-    border-top: 2rpx solid #EEEEEE;
-    margin-top:8rpx;
+    margin-top: 8rpx;
     padding-top: 16rpx;
     display: flex;
-    justify-content: space-between;
+    justify-content: flex-end;
     align-items: center;
 
     .order-price {
-      font-size: 28rpx;
-      color: #999999;
-      line-height: 48rpx;
-
-      .price-first {
-        font-weight: bold;
-        color: #FE2451;
-        font-size: 28rpx;
-      }
-
-      .price {
-        font-family: DINAlternate, DINAlternate;
-        font-weight: bold;
-        font-size: 36rpx;
-        color: #FE2451;
-        line-height: 48rpx;
-      }
+      font-weight: 400;
+      font-size: 24rpx;
+      color: #FD4502;
+      line-height: 34rpx;
+      margin-right: 24rpx;
     }
 
     button {
@@ -231,12 +252,20 @@
     }
 
     .sure {
-      background: #000000;
+      background: #FFF0EE;
       border-radius: 36rpx;
+      border: 2rpx solid rgba(254, 70, 46, 0.5);
       font-family: PingFangSC, PingFang SC;
-      font-weight: 500;
-      font-size: 26rpx;
-      color: #FFFFFF;
+      font-weight: 400;
+      font-size: 24rpx;
+      color: #FE462E;
+      line-height: 54rpx;
+    }
+
+    .lookDetails {
+      color: #333333;
+      border-color: #DCDCDC;
+      background: transparent;
     }
   }
 }
@@ -248,8 +277,8 @@
   transform: translate(-50%, -80%);
 
   image {
-    width: 375rpx;
-    height: 250rpx;
+    width: 392rpx;
+    height: 272rpx;
   }
 
   .empty-text {
@@ -258,6 +287,6 @@
     color: #AAAAAA;
     line-height: 40rpx;
     text-align: center;
-    padding-top: -24rpx;
+    margin-top: -24rpx;
   }
 }

+ 25 - 14
miniprogram/pages/orders/orders.ts

@@ -109,7 +109,6 @@ Page({
           item.statusName = this.formatOrderStatus(item.wechatStatus)
           const studentPaymentOrderDetails = item.studentPaymentOrderDetails || [];
           studentPaymentOrderDetails.forEach((student: any) => {
-            student.originalPrice = this.formatPrice(student.paymentCashAmount, 'ALL');
             const prices: any = this.formatPrice(student.paymentCashAmount)
             student.integerPart = prices.integerPart
             student.decimalPart = prices.decimalPart
@@ -138,10 +137,10 @@ Page({
   formatOrderStatus(status: string) {
     // 订单状态 WAIT_PAY:待付款,  WAIT_USE:待使用, SUCCESS:已完成, CLOSE:已取消
     const template: any = {
-      WAIT_PAY: '待支付',
+      WAIT_PAY: '待支付',
       WAIT_USE: '待使用',
-      PAID: '已完成',
-      CLOSED: '取消',
+      PAID: '交易成功',
+      CLOSED: '交易取消',
       REFUNDING: '退款中',
       REFUNDED: '已退款'
     }
@@ -165,14 +164,14 @@ Page({
       return ''
     }
     const template: any = {
-      DAY: "天",
-      MONTH: "月",
-      YEAR: "年"
+      DAY: "天",
+      MONTH: "月",
+      YEAR: "年"
     }
     if (type === "YEAR" && num >= 99) {
-      return '永久'
+      return '永久'
     }
-    return num + template[type]
+    return "时长: " + num + template[type]
   },
   /** 加载更多 */
   loadMore() {
@@ -236,8 +235,12 @@ Page({
       if (data.code === 200) {
         const { paymentConfig, paymentType, orderNo } = data.data.paymentConfig
         this.onExecutePay(paymentConfig, paymentType, orderNo)
-      } else {
-        this.onPayError()
+      } else if ([5435, 5436, 5437, 5439, 5442, 5443, 5408, 5427, 5432].includes(data.code)) {
+        wx.hideLoading()
+        wx.showToast({
+          title: data.message,
+          icon: 'none'
+        })
         setTimeout(() => {
           this.setData(
             {
@@ -250,6 +253,8 @@ Page({
             }
           );
         }, 1000)
+      } else {
+        this.onPayError(data.message)
       }
     } catch {
       wx.hideLoading()
@@ -269,7 +274,12 @@ Page({
         wx.hideLoading()
         if (res.data.code === 200) {
           this.onPaying(paymentType, res.data.data.reqParams, orderNo)
-        } else {
+        } else if ([5435, 5436, 5437, 5439, 5442, 5443, 5408, 5427, 5432].includes(res.data.code)) {
+          wx.hideLoading()
+          wx.showToast({
+            title: res.data.message,
+            icon: 'none'
+          })
           setTimeout(() => {
             this.setData(
               {
@@ -282,6 +292,7 @@ Page({
               }
             );
           }, 1000)
+        } else {
           this.onPayError(res.data.message)
         }
       },
@@ -412,9 +423,9 @@ Page({
   },
   onShareAppMessage() {
     return {
-      title: '音乐数字AI器乐工具',
+      title: ' 器乐数字ai助手',
       path: '/pages/index/index',
-      imageUrl: 'https://oss.dayaedu.com/ktyq/1733311074676.png'
+      imageUrl: 'https://oss.dayaedu.com/ktyq/1739929620914.png'
     }
   }
 })

+ 22 - 11
miniprogram/pages/orders/orders.wxml

@@ -1,6 +1,6 @@
 <!--pages/orders/orders.wxml-->
 <view class="container">
-  <navigation-bar title="我的订单"></navigation-bar>
+  <navigation-bar title="订单"></navigation-bar>
 
   <view class="record-content">
     <view class="record-tab">
@@ -13,12 +13,16 @@
         <view class="list-item-group">
           <view class="list-item" wx:for="{{recordList}}" wx:key="index" data-orderno="{{item.orderNo}}" data-wechatstatus="{{item.wechatStatus}}" bind:tap="onDetail">
             <view class="item-top">
+              <view class="item-mid">{{ "订单编号: " + item.orderNo }}</view>
               <text class="{{ item.wechatStatus == 'WAIT_PAY' || item.wechatStatus == 'WAIT_USE' || item.wechatStatus == 'REFUNDING' ? 'red' : item.wechatStatus === 'CLOSED' ? 'closed' : '' }}">{{ item.statusName }}</text>
-              <view class="item-mid">{{ item.createTime }}</view>
             </view>
             <view class="item-content">
               <view class="imgCon">
                 <image class='goods-icon' wx:for="{{item.studentPaymentOrderDetails}}" wx:key="studentIndex" src="{{item.goodsUrl}}" mode="" />
+                <view class="goodsDes" wx:if="{{item.studentPaymentOrderDetails.length===1}}">
+                  <view>{{item.studentPaymentOrderDetails[0].goodsName}}</view>
+                  <view>{{item.studentPaymentOrderDetails[0].typeName}}</view>
+                </view>
               </view>
               <view class="goods-desc">
                 <view class="goodsInfo">
@@ -32,17 +36,20 @@
                 </view>
               </view>
             </view>
-            <view wx:if="{{ item.wechatStatus == 'WAIT_PAY' }}" class="item-footer">
-              <view class="order-price">
-                <!-- 订单金额:<text class="price-first">¥ </text><text class="price">{{item.amount}}</text> -->
+            <view class="item-footer">
+              <view wx:if="{{ (my.sumArray(item.studentPaymentOrderDetails, 'originalPrice') - my.sumArray(item.studentPaymentOrderDetails, 'paymentCashAmount'))>0 }}" class="order-price">
+                {{
+                 "已优惠 ¥ " + my.formatValue(my.sumArray(item.studentPaymentOrderDetails, 'originalPrice') - my.sumArray(item.studentPaymentOrderDetails, 'paymentCashAmount'))
+                }}
               </view>
               <!-- <block wx:if="{{ item.wechatStatus == 'REFUNDING' || (item.wechatStatus == 'WAIT_USE' && tabIdx == 5) }}" wx:key="block">
                 <button wx:if="{{ item.wechatStatus == 'REFUNDING' }}" type="primary" wx:if="{{ item.wechatStatus == 'REFUNDING' }}" catch:tap="onRefounded" data-id="{{item.id}}" disabled="{{ cancelRefoundStatus }}">取消退款</button>
                 <button wx:else type="primary" catch:tap="onRefounded" data-id="{{item.id}}" disabled="{{ cancelRefoundStatus }}">申请退款</button>
               </block> -->
               <!-- <block wx:else wx:key="block"> -->
-                <button class="sure" type="primary" catch:tap="onPay" data-id="{{item.id}}">继续支付</button>
-                <!-- <button type="primary" wx:else catch:tap="onOne" data-id="{{item.id}}">再次购买</button> -->
+              <button wx:if="{{ item.wechatStatus == 'WAIT_PAY' }}" class="sure" type="primary" catch:tap="onPay" data-id="{{item.id}}">继续支付</button>
+              <button wx:else class="sure lookDetails" type="primary">查看详情</button>
+              <!-- <button type="primary" wx:else catch:tap="onOne" data-id="{{item.id}}">再次购买</button> -->
               <!-- </block> -->
             </view>
           </view>
@@ -50,8 +57,8 @@
       </block>
       <block wx:else>
         <view class="empty-box">
-          <image src="https://oss.dayaedu.com/ktyq/1739278149891.png"></image>
-          <view class="empty-text">暂无订单</view>
+          <image src="https://oss.dayaedu.com/ktyq/1739875042508.png"></image>
+          <view class="empty-text">当前暂无订单</view>
         </view>
       </block>
     </scroll-view>
@@ -64,11 +71,15 @@
 
 <wxs module="my">
   var sumArray = function (value, key) {
-    return value.reduce(function(num, item){
+    return value.reduce(function (num, item) {
       return item[key] + num
     }, 0)
   }
+  var formatValue = function (value) {
+    return parseFloat(value).toFixed(2);
+  }
   module.exports = {
-    sumArray: sumArray
+    sumArray: sumArray,
+    formatValue: formatValue
   }
 </wxs>

+ 2 - 2
miniprogram/pages/protocol/register.ts

@@ -93,9 +93,9 @@ Page({
    */
   onShareAppMessage() {
     return {
-      title: '音乐数字AI器乐工具',
+      title: ' 器乐数字ai助手',
       path: '/pages/index/index',
-      imageUrl: 'https://oss.dayaedu.com/ktyq/1733311074676.png'
+      imageUrl: 'https://oss.dayaedu.com/ktyq/1739929620914.png'
     }
   }
 })

+ 1 - 1
project.config.json

@@ -42,6 +42,6 @@
     "ignore": [],
     "include": []
   },
-  "appid": "wxafd9b0a1dea63f15",
+  "appid": "wx0b978a5479d57792",
   "projectname": "orchestra-music-activation"
 }