<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      項目目錄

      BIJIAN

      app.json

      {
        "pages":[
          "pages/home/home",
          "pages/category/category",
          "pages/shopcar/shopcar",
          "pages/center/center",
          "pages/detail/detail",
          "pages/search/search",
          "pages/searchlist/searchlist",
          "pages/telform/telform",
          "pages/auth/auth"
        ],
        "window":{
          "backgroundTextStyle":"dark",
          "navigationBarBackgroundColor": "#14c145",
          "navigationBarTitleText": "購物",
          "navigationBarTextStyle":"white"
        },
        "tabBar": {
          "list": [{
            "pagePath": "pages/home/home",
            "text": "主頁",
            "iconPath": "images/home.png",
            "selectedIconPath": "images/home_light.png"
          },
          {
            "pagePath": "pages/category/category",
            "text": "分類",
            "iconPath": "images/search.png",
            "selectedIconPath": "images/search_light.png"
          },
          {
            "pagePath": "pages/shopcar/shopcar",
            "text": "購物車",
            "iconPath": "images/camera.png",
            "selectedIconPath": "images/camera_light.png"
          },
          {
            "pagePath": "pages/center/center",
            "text": "我的",
            "iconPath": "images/my.png",
            "selectedIconPath": "images/my_light.png"
          }]
        },
        "style": "v2",
        "sitemapLocation": "sitemap.json",
        "useExtendedLib": {
          "weui": true
        }
      }

      components

      search

      <!--components/search/Search.wxml-->
      <input placeholder="請搜索" bindtap="handleTap"/>
      /* components/search/Search.wxss */
      input{
        border:2rpx solid black;
        border-radius: 10rpx;
        margin:10rpx;
        padding:10rpx;
        height: 30rpx;
        background-color: white;
      }
      // components/search/Search.js
      Component({
        /**
         * 組件的屬性列表
         */
        properties: {
      
        },
      
        /**
         * 組件的初始數據
         */
        data: {
      
        },
      
        /**
         * 組件的方法列表
         */
        methods: {
          handleTap(){
            this.triggerEvent("event")
          }
        }
      })

      utils

      auth.js

      function CheckAuth(callback){
        if(wx.getStorageSync('tel')){
          callback()//處理業務
        }else{
          if(wx.getStorageSync('token')){
            wx.navigateTo({
              url: '/pages/telform/telform',
            })
          }else{
            wx.navigateTo({
              url: '/pages/auth/auth',
            })
          }
        }
      }
      export default CheckAuth

      request.js

      function request(params,isHeader=false){
        return new Promise((resolve,reject)=>{
          wx.showLoading({
            title: '正在加載中',
          })
          wx.request({
            ...params,
            url: 'http://localhost:5000'+params.url,
            success:(res)=>{
              if(isHeader){
                resolve({
                  list:res.data,
                  total:res.header['X-Total-Count']
                })
              }
              resolve(res.data)
            },
            fail:(err)=>{
              reject(err)
            },
            complete:()=>{
              
              wx.hideLoading({
                success: (res) => {},
              })
            }
          })
        })
      }
      export default request

      pages

      auth

      <!--pages/auth/auth.wxml-->
      <button type="primary" bindtap="handleAuth">微信授權</button>
      // pages/auth/auth.js
      Page({
        handleAuth(){
          wx.getUserProfile({
            desc: '用于完善會員資料',
            success:(res)=>{
              // console.log(res.userInfo)
              wx.setStorageSync('token', res.userInfo)
              wx.navigateTo({
                url: '/pages/telform/telform',
              })
            }
          })
        }
      })

      category

      <!--pages/category/category.wxml-->
      <mp-vtabs vtabs="{{vtabs}}" activeTab="{{activeTab}}" class="test">
        <!-- 必須要有title字段 -->
        <block wx:for="{{vtabs}}" wx:key="title" >
          <mp-vtabs-content tabIndex="{{index}}">
            <view class="vtabs-content-item">
              <view wx:for="{{item.goods}}" wx:key="id" class="item" 
              bindtap="handleTap" data-id="{{item.id}}" data-name="{{item.title}}">
                <image src="http://localhost:5000{{item.poster}}" mode="widthFix"/>
                <view>
                {{item.title}}</view>
              </view>
            </view>
          </mp-vtabs-content>
        </block>
      </mp-vtabs>
      /* pages/category/category.wxss */
      page{
        background-color: #FFFFFF;
        height: 100%;
      }
      
      .vtabs-content-item{
        display: flex;
        flex-wrap: wrap;
        height: 100vh;
      }
      
      .vtabs-content-item .item{
        width: 50%;
        padding:30rpx;
        box-sizing: border-box;
      }
      
      .item image{
        width: 200rpx;
      }
      
      .item view{
        text-align: center;
        font-size: 13px;
      }
      // pages/category/category.js
      import request from '../../utils/request'
      
      Page({
      
        /**
         * 頁面的初始數據
         */
        data: {
          vtabs:[],
          activeTab:0
        },
      
        /**
         * 生命周期函數--監聽頁面加載
         */
        onLoad(options) {
          request({
            url:"/categories?_embed=goods"
          }).then(res=>{
            // console.log(res)
            this.setData({
              vtabs:res
            })
          })
        },
      
        handleTap(event){
          // console.log(event.currentTarget.dataset)
          var id = event.currentTarget.dataset.id
          var name = event.currentTarget.dataset.name
          wx.navigateTo({
            url: `/pages/detail/detail?id=${id}&name=${name}`,
          })
        }
      })
      {
        "usingComponents": {
          "mp-vtabs": "@miniprogram-component-plus/vtabs",
          "mp-vtabs-content": "@miniprogram-component-plus/vtabs-content"
        },
        "navigationBarTitleText": "分類"
      }

      center

      <view class="userInfo">
        <image src="{{userInfo.avatarUrl}}" bindtap="handleTap"></image>
        <view>{{userInfo.nickName}}</view>
      </view>
      
      <mp-cells ext-class="my-cells" >
         <mp-cell value="完善信息">
          <mp-icon slot="icon" type="field" icon="me" color="#14c145" size="{{25}}"></mp-icon>
          <mp-icon slot="icon" type="field" icon="arrow"  size="{{10}}" slot="footer"></mp-icon>
         </mp-cell>
         <mp-cell value="個性設置">
          <mp-icon slot="icon" type="field" icon="like" color="#14c145" size="{{25}}"></mp-icon>
          <mp-icon slot="icon" type="field" icon="arrow"  size="{{10}}" slot="footer"></mp-icon>
        </mp-cell>         
      </mp-cells>
      /* pages/center/center.wxss */
      .userInfo{
        background-color: #14c145;
        text-align: center;
      }
      .userInfo image{
        width: 200rpx;
        height: 200rpx;
        border-radius: 100rpx;
      }
      // pages/center/center.js
      import CheckAuth from "../../utils/auth"
      
      Page({
      
        /**
         * 頁面的初始數據
         */
        data: {
          userInfo:null
        },
      
        /**
         * 生命周期函數--監聽頁面顯示
         */
        onShow() {
          CheckAuth(()=>{
            // console.log("我的")
            this.setData({
              userInfo:wx.getStorageSync('token')
            })
          })
        },
      
        handleTap(){
          //打開攝像頭/相冊
          wx.chooseImage({
            count: 1,
            sizeType: ['original', 'compressed'],
            sourceType: ['album', 'camera'],
            success : (res) => {
              // tempFilePath可以作為img標簽的src屬性顯示圖片
              const tempFilePaths = res.tempFilePaths
              // console.log(tempFilePaths)
              this.setData({
                userInfo:{
                  ...this.data.userInfo,
                  avatarUrl:tempFilePaths[0]
                }
              })
      
              wx.setStorageSync('token', {
                ...wx.getStorageSync('token'),
                avatarUrl:tempFilePaths[0]
              })
            }
          })
        }
      })
      {
        "usingComponents": {
          "mp-cells": "weui-miniprogram/cells/cells",
          "mp-cell": "weui-miniprogram/cell/cell",
          "mp-icon": "weui-miniprogram/icon/icon"
        },
        "navigationBarTitleText": "我的"
      }

      detail

      <!--pages/detail/detail.wxml-->
      <swiper>
        <swiper-item wx:for="{{info.slides}}" wx:key="index">
          <image src="http://localhost:5000{{item}}" mode="aspectFit" 
          bindtap="handleTap" data-current="http://localhost:5000{{item}}"/>
        </swiper-item>
      </swiper>
      
      <mp-sticky offset-top="0">
        <view class="detailtabbar">
          <view class="{{current===0?'active':''}}" 
          bindtap="handleActive" data-index="{{0}}">商品詳情</view>
          <view class="{{current===1?'active':''}}" 
          bindtap="handleActive" data-index="{{1}}">用戶評價</view>
        </view>
      </mp-sticky>
      
      <view wx:if="{{current===0}}">
        <view style="color: gray;">{{info.feature}}</view>
        <image wx:for="{{info.desc}}" wx:key="index" src="{{item}}" 
        mode="widthFix" style="width: 100%;"/>
      </view>
      
      <view wx:else>
        <view wx:for="{{commentList}}" wx:key="index" style="border-bottom: 5rpx solid gray;">
          <view class="user">
            <image src="http://localhost:5000{{item.userImageUrl}}" mode="widthFix" class="left"/>
            <view class="left">{{item.nickname}}</view>
            <view class="right">{{item.creationTime}}</view>
          </view>
          <view class="content">{{item.content}}</view>
          <view class="content">
              <image src="http://localhost:5000{{item.imgUrl}}" mode="widthFix"/>
          </view>
        </view>
      </view>
      
      <view class="bottom">
        <view style="background:#ffd591;" bindtap="handleChange">跳轉購物車</view>
        <view style="background:#F76260;" bindtap="handleAdd">加入購物車</view>
      </view>
      /* pages/detail/detail.wxss */
      swiper image{
        width: 100%;
        height: 200px;
      }
      swiper{
        height: 200px;
      }
      .detailtabbar{
        width: 100vw;
        height: 100rpx;
        line-height: 100rpx;
        text-align:center;
        display: flex;
        background-color: white;
        padding:20rpx;
      }
      .detailtabbar view{
        flex:1
      }
      .detailtabbar .active{
        border-bottom:3rpx solid red;
      }
      .user{
        overflow: hidden;
        padding:20rpx;
      }
      .user image{
        width: 100rpx;
        border-radius: 50%;
      }
      
      .user .left{
        float:left;
        height: 100rpx;
        line-height: 100rpx;
      }
      .user .right{
        float:right;
        height: 100rpx;
        line-height: 100rpx;
      
      }
      
      .content{
        padding:20rpx;
      }
      
      .content image{
        width: 200rpx;
      }
      
      .bottom{
        height: 100rpx;
        line-height: 100rpx;
        text-align: center;
        position: fixed;
        bottom: 0;
        left:0;
        width: 100%;
        background-color: white;
        display: flex;
      }
      
      .bottom view{
        flex:1;
        color:white;
      }
      // pages/detail/detail.js
      import request from "../../utils/request"
      import CheckAuth from "../../utils/auth"
      
      Page({
      
        /**
         * 頁面的初始數據
         */
        data: {
          info:null,
          current: 0,
          commentList: []
        },
      
        /**
         * 生命周期函數--監聽頁面加載
         */
        onLoad(options) {
          // console.log(options)
          wx.setNavigationBarTitle({
            title: options.name,
          })
          this.getDetailInfo(options.id)
          this.getCommentInfo()
        },
      
        getDetailInfo(id){
          request({
            url:`/goods/${id}`
          }).then(res=>{
            // console.log(res)
            this.setData({
              info:res
            })
          })
        },
      
        getCommentInfo(){
          request({
            url:"/comments"
          }).then(res=>{
            this.setData({
              commentList:res
            })
          })
        },
      
        handleTap(event){
          // console.log(event)
          // console.log(event.currentTarget.dataset.current)
          wx.previewImage({
            // 當前顯示圖片的http鏈接
            current:event.currentTarget.dataset.current,
            // 需要預覽的圖片http鏈接列表
            urls: this.data.info.slides.map(item=>`http://localhost:5000${item}`),
          })
        },
      
        handleActive(event){
          this.setData({
            current:event.currentTarget.dataset.index
          })
        },
      
        handleChange(){
          wx.switchTab({
            url: '/pages/shopcar/shopcar',
          })
        },
        /*
          1. 判斷本地存儲是否有手機號信息,如果有直接加入
          2. 沒有手機號,判斷是否有token信息,如果有,引導調整手機號綁定
          3 沒有token授權信息, 我們引導用戶授權頁面
        */
        handleAdd(){
          CheckAuth(()=>{
            let nickName = wx.getStorageSync('token').nickName
            let tel = wx.getStorageSync('tel')
            var goodId = this.data.info.id
            // console.log(nickName,tel,goodId)  // 晨曦生輝耀匕尖 789 1
            request({
              url:"/carts",
              data:{
                nickName,
                tel,
                goodId
              }
            }).then(res=>{
              // console.log(res)
              if(res.length===0){
                return request({
                  url:"/carts",
                  method:"post",
                  data:{
                    "username": nickName,
                    "tel": tel,
                    "goodId": goodId,
                    "number": 1,
                    "checked": false
                  }
                })
              }else{
                return request({
                  url:`/carts/${res[0].id}`,
                  method:"put",
                  data:{
                    ...res[0],
                    number:res[0].number + 1
                  }
                })
              }
            }).then(res=>{
              wx.showToast({
                title: '加入購物車成功',
              })
            })
          })
        }
      })
      {
        "usingComponents": {
          "mp-sticky": "@miniprogram-component-plus/sticky"
        }
      }

      home

      <swiper indicator-dots="{{true}}">
        <swiper-item wx:for="{{looplist}}" wx:key="index">
          <image src="http://localhost:5000{{item.url}}" mode="widthFix"/>
        </swiper-item>
      </swiper>
      
      <mp-sticky offset-top="0">
        <view style="width: 100vw;">
          <bijian-search bindevent="handleEvent"></bijian-search>
        </view>
      </mp-sticky>
      
      <view wx:for="{{goodlist}}" wx:key="index" class="goodbox" bindtap="handleChangePage" 
      data-id="{{item.id}}" data-name="{{item.title}}">
        <image src="http://localhost:5000{{item.poster}}" mode="widthFix"/>
        <view>
          <view>{{item.title}}</view>
          <view style="color: red;">價格:¥{{item.price}}</view>
          <view>好評率:{{item.goodcomment}}</view>
        </view>
      </view>
      /* pages/home/home.wxss */
      swiper image{
        width: 100%;
      }
      
      swiper{
        height: 297rpx;
      }
      
      .goodbox{
        overflow: hidden;
        padding: 20rpx;
      }
      
      .goodbox image{
        width: 200rpx;
        float: left;
      }
      // pages/home/home.js
      import request from "../../utils/request"
      
      Page({
      
        /**
         * 頁面的初始數據
         */
        data: {
          looplist:[],
          goodlist:[]
        },
      
        current:1,
        total:0,
      
        /**
         * 生命周期函數--監聽頁面加載
         */
        onLoad(options) {
          this.renderSwiper()
          this.renderGoods()
        },
      
        renderSwiper(){
          request({
            url:"/recommends"
          }).then(res=>{
            this.setData({
              looplist:res
            })
          })
        },
      
        renderGoods(){
          request({
            url:`/goods?_page=${this.current}&_limit=5`
          },true).then(res=>{
            this.total = Number(res.total),
            this.setData({
              goodlist:[...this.data.goodlist,...res.list]
            })
          })
        },
      
        /**
         * 頁面相關事件處理函數--監聽用戶下拉動作
         */
        onPullDownRefresh() {
          // console.log("下拉刷新")
          setTimeout(()=>{
            //更新數據了
            wx.stopPullDownRefresh() //停止下拉刷新
          },1000)
        },
      
        /**
         * 頁面上拉觸底事件的處理函數
         */
        onReachBottom() {
          if(this.data.goodlist.length===this.total){
            return
          }
          this.current++
          this.renderGoods()
        },
      
        /**
         * 用戶點擊右上角分享
         */
        onShareAppMessage() {
      
        },
      
        handleEvent(){
          wx.navigateTo({
            url: '/pages/search/search',
          })
        },
      
        handleChangePage(event){
          // console.log(event.currentTarget.dataset)
          var id = event.currentTarget.dataset.id
          var name = event.currentTarget.dataset.name
          wx.navigateTo({
            url: `/pages/detail/detail?id=${id}&name=${name}`,
          })
        }
      })
      {
        "usingComponents": {
          "bijian-search":"../../components/search/Search",
          "mp-sticky": "@miniprogram-component-plus/sticky"
        },
        "navigationBarTitleText": "主頁",
        "enablePullDownRefresh": true
      }

      search

      <!--pages/search/search.wxml-->
      <mp-searchbar bindselectresult="selectResult" search="{{search}}"></mp-searchbar>
      // pages/search/search.js
      import request from '../../utils/request'
      
      Page({
      
        /**
         * 頁面的初始數據
         */
        data: {
      
        },
      
        /**
         * 生命周期函數--監聽頁面加載
         */
        onLoad(options) {
          this.setData({
            search: this.search.bind(this)
          })
        },
      
        search(value){
          return Promise.all([
            request({
              url:`/categories?title_like=${value}`
            }),
            request({
              url:`/goods?title_like=${value}`
            })
          ]).then(res=>{
            return [...res[0].map(item=>({
              ...item,
              text:item.title,
              type:1
            })),...res[1].map(item=>({
              ...item,
              text:item.title,
              type:2
            }))]
          })
        },
      
        selectResult(event){
          // console.log(event.detail.item)
          if(event.detail.item.type===1){
            wx.navigateTo({
              // url: `/pages/searchlist/searchlist`,
              url: `/pages/searchlist/searchlist?id=${event.detail.item.id}&name=${event.detail.item.title}`,
            })
          }else{
            wx.navigateTo({
              url: `/pages/detail/detail?id=${event.detail.item.id}&name=${event.detail.item.name}`,
            })
          }
        }
      
      })
      {
        "usingComponents": {
          "mp-searchbar": "weui-miniprogram/searchbar/searchbar"
        },
        "navigationBarTitleText": "搜索"
      }

      searchlist

      <!--pages/searchlist/searchlist.wxml-->
      <view class="sortlist">
        <view>價格排序
          <mp-icon type="field" icon="refresh" color="black" size="{{25}}" bindtap="handlePrice"></mp-icon>
        </view>
        <view>好評排序
          <mp-icon type="field" icon="refresh" color="black" size="{{25}}" bindtap="handleComment"></mp-icon>
        </view>
      </view>
      
      <view class="goodcontainer">
        <view wx:for="{{goodList}}" wx:key="index" class="good" 
        data-id="{{item.id}}" data-name="{{item.title}}" bindtap="handleTap">
          <image src="http://localhost:5000{{item.poster}}" mode="widthFix"/>
          <view>{{item.title}}</view>
          <view style="color:red;">價格:¥{{item.price}}</view>
          <view>好評率:{{item.goodcomment}}</view>
        </view>
      </view>
      /* pages/searchlist/searchlist.wxss */
      .goodcontainer {
        display: flex;
        flex-wrap: wrap;
      }
      
      .good{
        width: 50%;
        padding:20rpx;
        box-sizing: border-box;
        text-align: center;
      }
      
      .good image{
        width: 100%;
      }
      
      .sortlist{
        display: flex;
      }
      .sortlist view{
        flex:1;
        text-align: center;
        height: 100rpx;
        line-height: 100rpx;
      }
      // pages/searchlist/searchlist.js
      import request from '../../utils/request'
      
      Page({
      
        /**
         * 頁面的初始數據
         */
        data: {
          goodList:[]
        },
      
        priceOrder:true,
        commentOrder:true,
      
        /**
         * 生命周期函數--監聽頁面加載
         */
        onLoad(options) {
          // console.log(options)
          wx.setNavigationBarTitle({
            title: options.name,
          })
          this.getList(options.id)
        },
      
        getList(id){
          request({
            url:`/categories/${id}?_embed=goods`
          }).then(res=>{
            // console.log(res.goods)
            this.setData({
              goodList:res.goods
            })
          })
        },
      
        handleTap(event){
          // console.log(event.currentTarget.dataset)
          var id = event.currentTarget.dataset.id
          var name = event.currentTarget.dataset.name
          wx.navigateTo({
            url: `/pages/detail/detail?id=${id}&name=${name}`,
          })
        },
      
        handlePrice(){
          this.priceOrder =!this.priceOrder
          this.setData({
            goodList:this.priceOrder?this.data.goodList.sort((item1,item2)=>item1.price-item2.price):this.data.goodList.sort((item1,item2)=>item2.price-item1.price)
          })
        },
      
        handleComment(){
          this.commentOrder =!this.commentOrder
          this.setData({
            goodList:this.commentOrder?this.data.goodList.sort((item1,item2)=>parseInt(item1.goodcomment)-parseInt(item2.goodcomment)):this.data.goodList.sort((item1,item2)=>parseInt(item2.goodcomment)-parseInt(item1.goodcomment))
          })
        }
      })
      {
        "usingComponents": {
          "mp-icon": "weui-miniprogram/icon/icon"
        }
      }

      shopcar

      <mp-cells title="配送地址" footer="左滑刪除" wx:if="{{cartList.length}}">
        <mp-slideview buttons="{{slideButtons}}" bindbuttontap="slideButtonTap" wx:for="{{cartList}}" wx:key="index" data-id="{{item.id}}">
        <mp-cell >
          <view slot="footer" class="cellfooter">
            <text bindtap="handleMinus" data-item="{{item}}">-</text>
            <text>{{item.number}}</text>
            <text bindtap="handleAdd" data-item="{{item}}">+</text>
          </view>
          <view class="content">
            <checkbox checked="{{item.checked}}" bindtap="handleTap" data-item="{{item}}"></checkbox>
            <image src="http://localhost:5000{{item.good.poster}}" mode="aspectFit"></image>
            <view style="font-size:13px;">
               <view>{{item.good.title}}</view>
               <view style="color:red;">¥{{item.good.price}}</view>
            </view>
          </view>
        </mp-cell>
        </mp-slideview>
      </mp-cells>
      <view wx:else style="text-align:center;">購物車為空</view>
      
      <wxs src="./shopcar.wxs" module="calObj"></wxs>
      <view class="footer">
        <checkbox-group bindchange="handleAllChecked">
          <checkbox value="aaaa" checked="{{calObj.check(cartList)}}"></checkbox>
        </checkbox-group>
        <view style="margin-right:20px;">全選</view>
        <view>合計:¥{{calObj.sum(cartList)}}</view>
        <button type="primary" size="mini">結算</button>
      </view>
      /* pages/shopcar/shopcar.wxss */
      .cellfooter text{
        width: 60rpx;
        display: inline-block;
        background-color: gainsboro;
        text-align: center;
      }
      
      .content{
        display: flex;
      
      }
      .content image{
        width: 150rpx;
        height: 150rpx;
      }
      
      .footer{
        position: fixed;
        left:0px;
        bottom: 0px;
        width: 100%;
        height: 80rpx;
        line-height: 80rpx;
        text-align: center;
        background-color: white;
        display: flex;
      }
      function sum(list){
        var total = 0
        for(var i=0;i<list.length;i++){
          if(list[i].checked){
            total+= list[i].good.price*list[i].number
          }
        }
      
        return total
      }
      
      function check(list){
        if(list.length===0) return false
        return list.every(function(item){
          return item.checked===true
        })
      }
      
      module.exports ={
        sum:sum,
        check:check
      }
      // pages/shopcar/shopcar.js
      import CheckAuth from "../../utils/auth"
      import request from "../../utils/request"
      
      Page({
      
        /**
         * 頁面的初始數據
         */
        data: {
          slideButtons: [{
            type: 'warn',
            text: '刪除'
          }],
          cartList: []
        },
      
        /**
         * 生命周期函數--監聽頁面加載
         */
        onLoad(options) {
          CheckAuth(()=>{
            let nickName = wx.getStorageSync('token').nickName
            let tel = wx.getStorageSync('tel')
            request({
              url:`/carts?_expand=good&username=${nickName}&tel=${tel}`
            }).then(res=>{
              // console.log(res) //[{...}]
              this.setData({
                cartList:res
              })
            })
          })
        },
      
        /**
         * 生命周期函數--監聽頁面顯示
         */
        onShow() {
          CheckAuth(()=>{
            console.log("顯示購物車")
          })
        },
      
        handleTap(event){
          // console.log(event)
          var item = event.currentTarget.dataset.item
          item.checked = !item.checked
          this.handleUpdate(item)
        },
        // -
        handleMinus(event){
          var item = event.currentTarget.dataset.item
          if(item.number===1){
            return 
          }
          item.number--
          this.handleUpdate(item)
        },
        // +
        handleAdd(event){
          var item = event.currentTarget.dataset.item
          item.number++
          this.handleUpdate(item)
        },
        // 更新
        handleUpdate(item){
          //更新當前的cartList
          this.setData({
            cartList:this.data.cartList.map(data=>{
              if(data.id===item.id){
                return item
              }
              return data
            })
          })
          //更新數據庫
          request({
            url: `/carts/${item.id}`,
            method: "put",
            data: {
              "username": item.username,
              "tel": item.tel,
              "goodId": item.goodId,
              "number": item.number,
              "checked": item.checked,
            }
          })
        },
        // 刪除
        slideButtonTap(event){
          // console.log("delete",event.currentTarget.dataset.id)
          var id = event.currentTarget.dataset.id
          this.setData({
            cartList:this.data.cartList.filter(item=>item.id!==id)
          })
          request({
            url:`/carts/${id}`,
            method:"delete"
          })
        },
        //全選
        handleAllChecked(event){  //數據庫操作擱置
          // console.log(event.detail.value)
          if(event.detail.value.length===0){ // 未全選
            this.setData({
              cartList:this.data.cartList.map(item=>({
                ...item,
                checked:false
              }))
            })
          }else{  // 全選
            this.setData({
              cartList:this.data.cartList.map(item=>({
                ...item,
                checked:true
              }))
            })
          }
        }
      })
      {
        "usingComponents": {
          "mp-cells": "weui-miniprogram/cells/cells",
          "mp-cell": "weui-miniprogram/cell/cell",
          "mp-slideview":"weui-miniprogram/slideview/slideview"
        },
        "navigationBarTitleText": "購物車"
      }

      telform

      <!--pages/telform/telform.wxml-->
      <mp-form-page title="bijian" subtitle="您的手機號將會與微信綁定">
        <mp-cells title="信息" >
          <mp-cell prop="mobile" title="手機號" ext-class=" weui-cell_vcode">
            <input bindinput="formInputChange" data-field="mobile" class="weui-input" 
            placeholder="請輸入手機號" />
            <view slot="footer" class="weui-vcode-btn">獲取驗證碼</view>
          </mp-cell>
        </mp-cells> 
        <view slot="button">
          <button class="weui-btn" type="primary" bindtap="submitForm">確定</button>
        </view>
      </mp-form-page>
      // pages/telform/telform.js
      import request from '../../utils/request'
      
      Page({
      
        /**
         * 頁面的初始數據
         */
        data: {
          tel:""
        },
      
        formInputChange(event){
          // console.log(event.detail.value)
          this.setData({
            tel:event.detail.value
          })
        },
      
        submitForm(){
          wx.setStorageSync('tel', this.data.tel)
          request({
            url:`/users?tel=${this.data.tel}&nickName=${wx.getStorageSync('token').nickName}`
          }).then(res=>{
            // console.log(res)
            if(res.length===0){
              request({
                url:`/users`,
                method:"post",
                data:{
                  ...wx.getStorageSync('token'),
                  tel:this.data.tel
                }
              }).then(res=>{
                wx.navigateBack({
                  delta:2
                })
              })
            }else{
              wx.navigateBack({
                delta:2
              })
            }
          })
        }
      })
      {
        "usingComponents": {
          "mp-form-page": "weui-miniprogram/form-page/form-page",
          "mp-form": "weui-miniprogram/form/form",
          "mp-cells": "weui-miniprogram/cells/cells",
          "mp-cell": "weui-miniprogram/cell/cell"
        },
        "navigationBarTitleText": "手機號綁定"
      }

       

      posted on 2023-07-14 18:22  晨曦生輝耀匕尖  閱讀(175)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 台湾佬自拍偷区亚洲综合| 国产午夜大地久久| 中文字幕有码无码AV| 最新亚洲av日韩av二区| 四虎影视国产精品永久在线| 免费观看欧美猛交视频黑人| 亚洲av成人一区在线| 蜜臀av午夜精品福利| av天堂久久精品影音先锋| 亚洲一区二区三成人精品| AV最新高清无码专区| 亚洲精品韩国一区二区| 丝袜老师办公室里做好紧好爽| 亚洲欧美偷拍另类A∨| 东宁县| 国产成人无码区免费内射一片色欲| 国产精品久久自在自线不卡| 最近免费中文字幕大全| 精品三级在线| 婷婷综合缴情亚洲| 黑色丝袜脚交视频麻豆| 国产稚嫩高中生呻吟激情在线视频| 日本高清不卡一区二区三| 中文字幕结果国产精品| 衣服被扒开强摸双乳18禁网站| 99久久免费精品国产色| 日韩丝袜欧美人妻制服| av性色av久久无码ai换脸| 一本色道国产在线观看二区 | 国产精品高清中文字幕| 亚洲综合久久精品国产高清| 91久久夜色精品国产网站| 色吊丝中文字幕在线观看| 日产精品一区二区三区免费| 国产中文字幕一区二区| 国产av精品一区二区三区| 色婷婷五月综合亚洲小说| 精品一区二区三区不卡| 亚洲av日韩av综合在线观看| 通渭县| 欧美亚洲另类制服卡通动漫|