闫增涛
2024-03-21 3baf9a943cdf11d4cdfb52b3756458529d0dcf2a
Merge refs/remotes/origin/master into refs/heads/master
16个文件已修改
591 ■■■■ 已修改文件
packageBookService/pages/bookServices/detail/components/tree/index.js 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/detail/index.js 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packagePersonal/pages/userSetting/index.js 241 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packagePersonal/pages/userSetting/index.json 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
packagePersonal/pages/userSetting/index.wxml 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
packagePersonal/pages/userSetting/index.wxss 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookExhibitionDetails/index.js 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookExhibitionDetails/index.wxml 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookExhibitionDetails/index.wxss 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookExhibitionList/index.js 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookExhibitionList/index.wxml 15 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/bookExhibitionList/index.wxss 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/cart/index.js 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/cart/index.wxss 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/personalCenter/index.js 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
pages/retrievalPage/index.js 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
packageBookService/pages/bookServices/detail/components/tree/index.js
@@ -297,6 +297,9 @@
    },
    // 加入购物车
    async onCloudShoppingCart() {
      let requests = []
      const item = this.data.cloudShoppingCart
      console.log(item, 'item');
packageBookService/pages/bookServices/detail/index.js
@@ -567,6 +567,17 @@
  // 图书添加购物车
  async addBookShopcCar() {
    const token = wx.getStorageSync('jsek-token')
    if (!token) {
      return wx.getUserProfile({
        desc: '用户登录',
        success: (res) => {
          console.log(res);
        }
      })
    }
    const shoppingCartGetId = []
    let query = {
@@ -1013,14 +1024,14 @@
  async allAddShoppiingCar() {
    const child = this.selectComponent('#learn-resource')
    const token = wx.getStorageSync('jsek-token')
    // if (!token) {
    //   return wx.getUserProfile({
    //     desc: '用户登录',
    //     success: (res) => {
    //       console.log(res);
    //     }
    //   })
    // }
    if (!token) {
      return wx.getUserProfile({
        desc: '用户登录',
        success: (res) => {
          console.log(res);
        }
      })
    }
    let shopList = this.handleTreeData(this.data.learn).filter((item) => this.resourceIsBuy(item))
    this.getShoppingCartProductGet()
    if (!shopList.length) return wx.showToast({
packagePersonal/pages/userSetting/index.js
@@ -7,7 +7,18 @@
  data: {
    userInfo: {},
    defaultAvatarUrl: 'https://cdn-we-retail.ym.tencent.com/miniapp/usercenter/icon-user-center-avatar@2x.png',
    visible: false
    userInfoBox: false,
    editType: '',
    userInfoForm: {
      phone: '',
      email: '',
      captcha: '',
      code: '',
    },
    phoneError: false,
    emailError: false,
    imgCode: '',
    countDown: 0,
  },
  /**
@@ -79,7 +90,235 @@
      }
    });
  },
  //修改用户类型
  editUserInfo(e) {
    console.log(e)
    let { info } = e.currentTarget.dataset
    if (!this.data.userInfoBox) {
      this.setData({
        userInfoBox: true,
        editType: info,
        "userInfoForm.captcha": "",
        "userInfoForm.code": ""
      });
    }
    this.getImgCapcha()
  },
  onVisibleChange(e) {
    this.setData({
      userInfoBox: e.detail.visible,
      countDown: 0,
    });
  },
  //输入手机号
  onPhoneInput(e) {
    console.log(e)
    const { phoneError } = this.data;
    const isPhoneNumber = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(e.detail.value);
    if (phoneError === isPhoneNumber) {
      this.setData({
        phoneError: !isPhoneNumber,
        "userInfoForm.phone": e.detail.value,
      });
    }
  },
  onEmailInput(e) {
    const { emailError } = this.data;
    const isPhoneNumber = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/.test(e.detail.value);
    if (emailError === isPhoneNumber) {
      this.setData({
        emailError: !isPhoneNumber,
        "userInfoForm.email": e.detail.value,
      });
    }
  },
  getImgCapcha() {
    app.MG.identity.getImgCode().then((res) => {
      this.setData({
        imgCode: 'data:image/png;base64,' + res,
      });
    })
  },
  //图形验证码
  onCaptchaInput(e) {
    this.setData({
      "userInfoForm.captcha": e.detail.value,
    });
  },
  //短信邮箱验证码
  onCodeInput(e) {
    this.setData({
      "userInfoForm.code": e.detail.value,
    });
  },
  getPhoneCode() {
    if (this.data.userInfoForm.phone && this.data.userInfoForm.captcha) {
      app.MG.identity
        .getPhoneCode({
          phoneNumber: this.data.userInfoForm.phone,
          imageCaptcha: this.data.userInfoForm.captcha,
          appRefCode: app.config.appRefCode
        })
        .then((res) => {
          if (res == '验证码发送成功') {
            wx.showToast({
              title: res,
              icon: 'none',
              duration: 1000
            })
            // 开启短信验证倒计时
            this.getSecond(60)
          } else {
            wx.showToast({
              title: res,
              icon: 'none',
              duration: 1000
            })
            this.getImgCapcha()
          }
        })
    } else {
      wx.showToast({
        title: '请填写手机号或图形验证码',
        icon: 'none',
        duration: 1000
      })
    }
  },
  getSecond(time) {
    let timer = null
    if (!timer) {
      let countDown = time;
      this.setData({
        countDown: time,
      });
      timer = setInterval(() => {
        countDown--
        this.setData({
          countDown: countDown,
        });
        if (this.data.countDow == 0) {
          clearInterval(timer)
          timer = null
        }
      }, 1000)
    }
  },
  getEmailCode() {
    console.log(this.data.userInfoForm.email)
    if (this.data.userInfoForm.email && this.data.userInfoForm.captcha) {
      app.MG.identity
        .getEmailCode({
          sendEmail: this.data.userInfoForm.email,
          captcha: this.data.userInfoForm.captcha,
          appRefCode: app.config.appRefCode
        })
        .then((res) => {
          if (res == true) {
            wx.showToast({
              title: '验证码已发送',
              icon: 'none',
              duration: 1000
            })
            // 开启短信验证倒计时
            this.getSecond(60)
          } else {
            wx.showToast({
              title: '邮箱验证码发送失败',
              icon: 'none',
              duration: 1000
            })
            this.getImgCapcha()
          }
        })
    } else {
      wx.showToast({
        title: '请填写邮箱或图形验证码',
        icon: 'none',
        duration: 1000
      })
    }
  },
  confirmInfo() {
    if (this.data.changeType == 'phone') {
      let query = {
        phoneNumber: this.data.userInfoForm.phone,
        phoneCaptcha: this.data.userInfoForm.code
      }
      app.MG.identity.userSetPhoneNumber(query).then((res) => {
        if (res == '验证码过期或错误') {
          wx.showToast({
            title: res + ',请稍后重试',
            icon: 'none',
            duration: 1000
          })
        } else if (res == '此手机号码已被其它账号绑定') {
          wx.showToast({
            title: res + ',请更换其他手机号。',
            icon: 'none',
            duration: 1000
          })
        } else {
          wx.showToast({
            title: res,
            icon: 'none',
            duration: 1000
          })
          this.setData({
            userInfoBox: false,
          });
          this.getUserInfo()
        }
      })
    } else if (this.data.editType == 'email') {
      let query = {
        eMail: this.data.userInfoForm.email,
        captcha: this.data.userInfoForm.code
      }
      app.MG.identity.bindingEmail(query).then((res) => {
        if (res == '验证码过期') {
          wx.showToast({
            title: res + ',请稍后重试。',
            icon: 'none',
            duration: 1000
          })
        } else if (res == '此邮箱已被其它账号绑定') {
          wx.showToast({
            title: res + ',请更换其他邮箱。',
            icon: 'none',
            duration: 1000
          })
        } else if (res == '验证码无效') {
          wx.showToast({
            title: res,
            icon: 'none',
            duration: 1000
          })
        } else {
          wx.showToast({
            title: res,
            icon: 'none',
            duration: 1000
          })
          this.setData({
            userInfoBox: false,
          });
          this.getUserInfo()
        }
      })
    }
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
packagePersonal/pages/userSetting/index.json
@@ -2,6 +2,8 @@
  "navigationBarTitleText": "设置",
  "usingComponents": {
    "t-icon": "tdesign-miniprogram/icon/icon",
    "t-avatar": "tdesign-miniprogram/avatar/avatar"
    "t-avatar": "tdesign-miniprogram/avatar/avatar",
    "t-popup": "tdesign-miniprogram/popup/popup",
    "t-input": "tdesign-miniprogram/input/input"
  }
}
packagePersonal/pages/userSetting/index.wxml
@@ -13,28 +13,71 @@
  </view>
  <view class="itemList">
    <view class="label">手机号码</view>
    <view class="content">{{userInfo.phoneNumber || '未绑定手机号'}}</view>
    <view class="content" data-info="{{'phone'}}" bindtap="editUserInfo">{{userInfo.phoneNumber || '未绑定手机号'}}</view>
    <t-icon name="chevron-right" size="40rpx" color="#C2C2C2" />
  </view>
  <view class="itemList">
    <view class="label">邮箱</view>
    <view class="content">{{userInfo.Email}}</view>
    <view class="content" data-info="{{'email'}}" bindtap="editUserInfo">{{userInfo.Email}}</view>
    <t-icon name="chevron-right" size="40rpx" color="#C2C2C2" />
  </view>
</view>
<t-popup visible="{{visible}}" bind:visible-change="onVisibleChange" placement="bottom">
  <view class="block">
    <view class="header">
      <view class="title">请选择您的用户类型</view>
    </view>
    <view class="body">
  <t-popup visible="{{userInfoBox}}" bind:visible-change="onVisibleChange" placement="bottom">
    <view class="block">
      <view class="body">
        <view class="from-item" wx:if="{{editType == 'phone'}}">
          <view class="label"> 手机号: </view>
          <view class="item-content">
            <view class="inputBox1">
              <t-input placeholder="输入手机号码" borderless value="{{userInfoForm.phone}}" type="number" tips="{{phoneError ? '手机号输入不正确' : ''}}" bindchange="onPhoneInput" />
            </view>
          </view>
        </view>
        <view class="from-item" wx:if="{{editType == 'email'}}">
          <view class=" label"> 邮箱: </view>
          <view class="item-content">
            <view class="inputBox1">
              <t-input placeholder="输入邮箱" borderless value="{{userInfoForm.email}}" type="number" tips="{{emailError ? '邮箱输入不正确' : ''}}" bindchange="onEmailInput" />
            </view>
          </view>
        </view>
        <view class="from-item">
          <view class="label"> 图形验证码: </view>
          <view class="item-content">
            <view class="inputBox">
              <t-input placeholder="输入图形验证码" borderless value="{{userInfoForm.captcha}}" type="number" bindchange="onCaptchaInput" />
            </view>
            <view class="code">
              <image src="{{imgCode}}" class="imgCode hover" bindtap="getImgCapcha" />
            </view>
          </view>
      <view wx:for="{{userTypeList}}" wx:for-item="item" wx:for-index="index" wx:key="index" data-info="{{item}}" bindtap="tabUserTypeClick" class="{{item.value === userTypeActive ? 'activeItem item' : 'item'}}">
        {{ item.lable }}
        </view>
        <view class="from-item" wx:if="{{editType == 'phone'}}">
          <view class="label"> 短信验证码: </view>
          <view class="item-content">
            <view class="inputBox">
              <t-input placeholder="输入短信验证码" borderless value="{{userInfoForm.code}}" type="number" bindchange="onCodeInput" />
            </view>
            <view class="code">
              <button class="btn" bindtap="getPhoneCode">{{countDown > 0 ? countDown : '获取短信验证码'}}</button>
            </view>
          </view>
        </view>
        <view class="from-item" wx:if="{{editType == 'email'}}">
          <view class="label"> 邮箱验证码: </view>
          <view class="item-content">
            <view class="inputBox">
              <t-input placeholder="输入邮箱验证码" borderless value="{{userInfoForm.code}}" type="number" bindchange="onCodeInput" />
            </view>
            <view class="code">
              <button class="btn" bindtap="getEmailCode">获取邮箱验证码</button>
            </view>
          </view>
        </view>
      </view>
    </view>
    <view class="footer">
      <button class="submit" bindtap="submit">确定</button>
      <button class="submit" bindtap="confirmInfo">确定</button>
    </view>
  </view>
</t-popup>
  </t-popup>
</view>
packagePersonal/pages/userSetting/index.wxss
@@ -11,9 +11,10 @@
  justify-content: space-between !important;
}
.label {
.itemList .label {
  font-weight: bold;
  width: 180rpx;
  font-size: 32rpx;
}
.contentImg {
@@ -34,4 +35,87 @@
.content {
  flex: 1;
  color: #5C5C5C;
  font-size: 32rpx;
}
.block {
  width: 100vw;
  background: #fff;
  border-top-left-radius: 16rpx;
  border-top-right-radius: 16rpx;
}
.block .body {
  padding: 40rpx;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
.block .body .from-item {
  margin-bottom: 20rpx;
  display: flex;
  align-items: center;
}
.block .body .from-item .label {
  width: 170rpx;
  height: 72rpx;
  line-height: 72rpx;
  font-size: 28rpx;
}
.block .body .from-item .item-content {
  padding: 10rpx;
  flex: 1;
  display: flex;
}
.inputBox1 {
  width: 540rox;
  height: 72rpx;
  border: 2rpx solid #D9D9D9;
  flex: 1;
}
.block .body .inputBox {
  width: 280rpx;
  height: 72rpx;
  border: 2rpx solid #D9D9D9;
}
.t-input {
  padding: 10rpx !important;
}
.imgCode {
  height: 72rpx;
  width: 200rpx;
}
.code {
  width: 200rpx;
  height: 72rpx;
  margin-left: 20rpx;
}
.btn {
  width: 200rpx;
  height: 72rpx;
  padding: 0 10rpx !important;
  background: #ff6c00;
  border: 2rpx solid #ff6c00;
  color: #fff;
  font-size: 28rpx;
}
.footer {
  width: 80%;
  margin: 10rpx auto;
}
.submit {
  background: #ff6c00;
  color: #fff;
  border-radius: 50rpx;
}
pages/bookExhibitionDetails/index.js
@@ -14,7 +14,7 @@
    bookExhibitionList: [],
    navBarHeight: '',
    barHeight: '',
    bookName: ''
    subtitleName: '',
  },
  /**
@@ -32,7 +32,8 @@
    this.setData({
      bookName: options.bookName
      bookName: options.bookName,
      subtitleName: options.subtitleName
    })
    const passId = options.id
@@ -138,15 +139,15 @@
      this.setData({
        bookExhibitionList: res.datas
      })
      console.log(this.data.bookExhibitionList, 88888);
      console.log(this.data.bookExhibitionList, 'bookExhibitionList');
    })
  },
  onBookDetails(event) {
    const item = event.currentTarget.dataset.item;
    console.log(item, 'item');
    // wx.navigateTo({
    //   url: '/pages/bookExhibitionDetails/index?id?name=' + item.id + item.name // 假设跳转到详情页面,并传递了id参数
    // });
    wx.navigateTo({
      url: '/packageBookService/pages/bookServices/detail/index?id=' + item.id + '&name=' + item.name
    });
  },
  goBack() {
    wx.navigateBack();
pages/bookExhibitionDetails/index.wxml
@@ -4,11 +4,11 @@
  <view>
    <t-icon name="chevron-left" size="30" data-name="{{item}}" bind:click="goBack" />
  </view>
  <view class="navbar-title">{{bookName}}</view>
  <view class="navbar-title">{{subtitleName}}</view>
</view>
<view class="headBox">
  <text class="titleBox">{{bookName}}</text>
  <view class="titleBox">{{bookName}}</view>
  <view class="informationBox">
    <text class="informationNameBox">发布人:{{bookCreator}}</text>
    <text class="informationTimeBox">发布日期:{{bookBeginDate}}</text>
@@ -33,6 +33,6 @@
      <image class="booksImageBox" src="{{item.icon}}" mode="" />
    </view>
    <view class="booksTextBox"> <text>{{item.name}}</text></view>
    <view class="boosAuthor">{{item.author}}</view>
  </view>
</view>
pages/bookExhibitionDetails/index.wxss
@@ -24,25 +24,13 @@
}
.titleBox {
  height: 60rpx;
  font-weight: 800;
  font-size: 45rpx;
  display: flex;
  justify-content: center;
  padding: 0 30rpx;
  /* text-indent: 6%; */
  padding: 10rpx 30rpx;
  /* overflow: hidden;
  text-overflow: ellipsis;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1; */
  margin: 0 130rpx;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 1;
  overflow: hidden;
  text-overflow: ellipsis;
}
.informationBox {
@@ -108,13 +96,21 @@
  font-weight: bold;
  width: 280rpx;
  margin: 30rpx 25rpx;
  /* overflow: hidden;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap; */
  white-space: nowrap;
}
.outsideBooksBox {
  display: flex;
  flex-wrap: wrap;
}
.boosAuthor {
  font-family: PingFang SC, PingFang SC;
  font-weight: 400;
  font-size: 22rpx;
  color: #949494;
  margin: 30rpx 25rpx;
}
pages/bookExhibitionList/index.js
@@ -58,8 +58,8 @@
      options: [],
    },
    navBarHeight: '',
    barHeight: ''
    barHeight: '',
    windowHeight: '',
  },
@@ -68,6 +68,34 @@
    * 生命周期函数--监听页面加载
    */
  onLoad(options) {
    // 获取屏幕高度
    wx.getSystemInfo({
      success: function (res) {
        // this.setData({
        //   windowHeight: res.windowHeight
        // })
        // 获取节点的类名
        var query = wx.createSelectorQuery();
        query.select('.assembleContent').boundingClientRect();
        query.exec(function (res) {
          console.log(res, 'res');
          let node = res[0];
          node.setStyle({
            backgroundColor: '#0256b9',
          })
          // // 修改节点样式
          // if (node) {
          //   node.setStyle({
          //     backgroundColor: 'red',
          //     color: 'white'
          //   });
          // }
        });
      }
    });
    // console.log(this.data.filteredItems, 88888);
    const systInfo = wx.getSystemInfoSync();
    const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息
@@ -348,7 +376,7 @@
    const item = event.currentTarget.dataset.item;
    console.log(item);
    wx.navigateTo({
      url: '/pages/bookExhibitionDetails/index?id=' + item.id + '&bookName=' + item.name // 假设跳转到详情页面,并传递了id参数
      url: '/pages/bookExhibitionDetails/index?id=' + item.id + '&bookName=' + item.name + '&subtitleName=' + item.subtitleName // 假设跳转到详情页面,并传递了id参数
    });
  },
  // 搜索框
pages/bookExhibitionList/index.wxml
@@ -41,13 +41,22 @@
<view class="assembleContent">
  <view class="titleBox">
    <view class="frameBox"></view>
    <image class="titleTextBox" src="/static/images/bookExhibitionList/zhuantitaolun.png" mode="aspectFit" />
    <view class="titleTextBox">
      <image src="/static/images/bookExhibitionList/zhuantitaolun.png" mode="heightFix" />
    </view>
  </view>
  <view class="outside">
    <view wx:if="{{bookExhibitionList.length }}">
      <t-empty icon="folder-open" description="暂无数据" />
    </view>
    <view class="contentBox" wx:for="{{bookExhibitionList}}" wx:key="index" wx:for-item="item" wx:for-index="index" bindtap="onBookExhibitionDetails" data-item="{{item}}">
      <image wx:if="{{item.icon}}" src="{{item.icon}}" mode="aspectFit" />
      <image wx:else="" src="/static/images/bookExhibitionList/banner.png" mode="" />
      <view class="imageBox">
        <image wx:if="{{item.icon}}" src="{{item.icon}}" mode="widthFix" />
        <image wx:else src="/static/images/bookExhibitionList/banner.png" mode="heightFix" />
      </view>
      <view class="textBox" title="{{item.subtitleName}}"> <text>{{item.subtitleName}}</text></view>
    </view>
pages/bookExhibitionList/index.wxss
@@ -4,12 +4,10 @@
  background-color: #fff;
  display: flex;
  align-items: center;
}
.navbar-title {
  white-space: nowrap;
  /* overflow: hidden; */
  text-overflow: ellipsis;
  color: #0F1214;
  font-size: 40rpx;
@@ -23,47 +21,42 @@
  flex-wrap: wrap;
  justify-content: space-between;
  margin: 15px;
}
.contentBox {
  width: 330rpx;
  /* height: 231rpx; */
  /* border: 1px #000 solid; */
  margin: 10px 0;
  background-color: #fff;
}
image {
  width: 327rpx;
.contentBox .imageBox {
  width: 330rpx;
  height: 128rpx;
}
image {
  width: 100%;
  height: 100%;
}
.textBox {
  font-family: PingFang SC, PingFang SC;
  width: 280rpx;
  /* height: 75rpx; */
  font-size: 25rpx;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  /* text-align: center; */
  margin: 20rpx;
}
.example-search {
  /* width: 300px; */
  background-color: #fff;
  /* padding: 16rpx 32rpx; */
}
.iconBox {
@@ -112,6 +105,8 @@
  padding-top: 30rpx;
}
.frameBox {
  width: 7rpx;
  height: 54rpx;
@@ -121,8 +116,15 @@
.titleTextBox {
  margin-left: 5px;
  width: 150rpx;
  width: 200rpx;
  height: 37rpx;
  /*宽 3.7   高1 */
}
.titleTextBox image {
  width: 100%;
  height: 100%;
  image-rendering: -webkit-optimize-contrast;
}
.classification {
@@ -137,17 +139,12 @@
.assembleContent {
  background-color: #F2F3F8;
}
/* .t-dropdown-menu__item--active {
  color: #0F1214;
} */
.t-dropdown-menu:after,
.t-dropdown-menu::after {
  height: 0px;
}
.t-dropdown-item__body,
.t-dropdown-item__footer,
@@ -169,7 +166,6 @@
.t-dropdown-menu__item--active {
  height: 68rpx !important;
  background: #F6F6F6 !important;
  /* border-radius: 40rpx 40rpx 0 0; */
}
.t-dropdown-menu__item--active,
@@ -201,8 +197,9 @@
  /* background-color: #FF6C00 !important; */
/* } */
/* .menu--t-dropdown-menu::after {
/*
 */
.menu--t-dropdown-menu::after {
  background-color: var(--td-component-border, var(--td-gray-color-4, #fff)) !important;
}
 */
}
pages/cart/index.js
@@ -22,6 +22,8 @@
  },
  onShow() {
    this.shoppingCartGet();
    this.setData({ totalPrice: 0.00, selectedCount: 0, checkAll: false, })
  },
  onDelete(e) {
    const item = e.currentTarget.dataset.item;
pages/cart/index.wxss
@@ -28,7 +28,7 @@
  padding: 30rpx;
  background: #F2F3F8;
  border-radius: 18rpx 18rpx 18rpx 18rpx;
  padding-bottom: 230rpx;
  padding-bottom: 325rpx;
  /* height: 260rpx; */
}
pages/personalCenter/index.js
@@ -318,6 +318,12 @@
    }
  },
  onPageScroll(e) {
    this.setData({
      isWhite: e.scrollTop > 20 ? true : false
    })
  },
  /**
   * 用户点击右上角分享
   */
pages/retrievalPage/index.js
@@ -526,7 +526,7 @@
    console.log(e.currentTarget.dataset.item);
    const item = e.currentTarget.dataset.item
    wx.navigateTo({
      url: '/packageBookService/pages/bookServices/detail/index?id=' + item.id + '&name' + item.name
      url: '/packageBookService/pages/bookServices/detail/index?id=' + item.id + '&name=' + item.name
    })